matlab中自由符号变量怎么看(matlab自由度计算)

今天给各位分享matlab中自由符号变量怎么看的知识,其中也会对matlab自由度计算进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

MATLAB的符号运算变量如何创建?

—— matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic

Math Toolbox

符号运算的功能

符号表达式,符号矩阵的创建

符号线性代数

因式分解,展开和简化

符号代数方程求解

符号微积分

符号微分方程

一,符号运算的基本操作

什么是符号运算

与数值运算的区别

※ 数值运算中必须先对变量赋值,然后才能参与运算.

※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达.

特点:

运算对象可以是没赋值的符号变量

可以获得任意精度的解

Symbolic Math Toolbox——符号运算工具包通过调用Maple软件实现符号计算的.

maple软件——主要功能是符号运算,

它占据符号软件的主导地位.

2. 符号变量与符号表达式

f = 'sin(x)+5x'

f —— 符号变量名

sin(x)+5x—— 符号表达式

' '—— 符号标识

符号表达式一定要用' ' 单引 号括起来matlab才能识别.

' ' 的内容可以是符号表达式,也可以是符号方程.

例:

f1='a x^2+b x+c' —— 二次三项式

f2= 'a x^2+b x+c=0' —— 方程

f3='Dy+y^2=1' ——微分方程

※符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算

3.符号矩阵的创建

数值矩阵A=[1,2;3,4]

A=[a,b;c,d] —— 不识别

用matlab函数sym创建矩阵(symbolic

的缩写)

命令格式:A=sym('[ ]')

※ 符号矩阵内容同数值矩阵

※ 需用sym指令定义

※ 需用' '标识

例如:A = sym('[a , 2*b ; 3*a , 0]')

A =

[ a, 2*b]

[3*a, 0]

这就完成了一个符号矩阵的创建.

注意:符号矩阵的每一行的两端都有方

括号,这是与 matlab数值矩阵的

一个重要区别.

用字符串直接创建矩阵

模仿matlab数值矩阵的创建方法

需保证同一列中各元素字符串有相

同的长度.

例:A =['[ a,2*b]'; '[3*a, 0]']

A =

[ a, 2*b]

[3*a, 0]

符号矩阵的修改

a.直接修改

可用 , 键找到所要修改的矩阵,直接修改

b.指令修改

用A1=sym(A, , ,'new') 来修改.

用A1=subs(A, 'new', 'old')来修改

A1=subs(S, 'old' ,'new')

例如:A =[ a, 2*b]

[3*a, 0]

A1=sym(A,2,2, '4*b')

A1 =[ a, 2*b]

[3*a, 4*b]

A(2,2)='4*b'

A3 = [ a, 2*b]

[3*a, 4*b]

A2=subs(A1, 'c', 'b')

A2 =[ a, 2*c]

[3*a, 4*c]

符号矩阵与数值矩阵的转换

将数值矩阵转化为符号矩阵

函数调用格式:sym(A)

A=[1/3,2.5;1/0.7,2/5]

A =

0.3333 2.5000

1.4286 0.4000

sym(A)

ans =

[ 1/3, 5/2]

[10/7, 2/5]

将符号矩阵转化为数值矩阵

函数调用格式: numeric(A)

A =

[ 1/3, 5/2]

[10/7, 2/5]

numeric(A)

ans =

0.3333 2.5000

1.4286 0.4000

二,符号运算

符号矩阵运算

数值运算中,所有矩阵运算操作指

令都比较直观,简单.例如:a=b+c;

a=a*b ;A=2*a^2+3*a-5等.

而符号运算就不同了,所有涉及符

号运算的操作都有专用函数来进行

符号矩阵运算的函数:

symadd(a,d) —— 符号矩阵的加

symsub(a,b) —— 符号矩阵的减

symmul(a,b) —— 符号矩阵的乘

symdiv(a,b) —— 符号矩阵的除

sympow(a,b) —— 符号矩阵的幂运算

symop(a,b) —— 符号矩阵的综合运算

例1:f= '2*x^2+3*x-5'; g= 'x^2+x-7';

h= symadd(f,g)

h=

3*x^2+4*x-12

例2:f='cos(x)';g= ' sin(2*x)';

symop(f,'/',g,'+',f,'*',g)

ans =

cos(x)/sin(2*x)+cos(x)*sin(2*x)

例1:f= 2*x^2+3*x-5; g= x^2+x-7;

syms x

f=2*x^2+3*x-5; g= x^2+x-7;

h=f+g

h = 3*x^2+4*x-12

例2:f=cos(x);g= sin(2*x);

syms x

f=cos(x);g=sin(2*x);

f/g+f*g

ans =

cos(x)/sin(x)+cos(x)*sin(x)

符号运算函数:

symsize —— 求符号矩阵维数

charploy —— 特征多项式

determ —— 符号矩阵行列式的值

eigensys —— 特征值和特征向量

inverse —— 逆矩阵

transpose —— 矩阵的转置

jordan —— 约当标准型

simple —— 符号矩阵简化

2. 任意精度的数学运算

在symbolic中有三种不同的算术运算:

数值类型 matlab的浮点算术运算

有理数类型 maple的精确符号运算

vpa类型 maple的任意精度算术

运算

浮点算术运算

1/2+1/3 --(定义输出格式format long)

ans =

0.83333333333333

符号运算

sym(1/2)+(1/3)

ans =

5/6 --精确解

任意精度算术运算

digits(n) —— 设置可变精度,缺省16位

vpa(x,n) —— 显示可变精度计算

digits(25)

vpa(1/2+1/3)

ans =

.8333333333333333333333333

vpa(5/6,40)

ans =

.8333333333333333333333333333333333333333

a=sym('[1/4,exp(1);log(3),3/7]')

a =

[ 1/4,exp(1)]

[log(3), 3/7]

vpa(a,10)

ans =

[.2500000000, 2.718281828]

[1.098612289, .4285714286]

3. 符号微积分与积分变换

diff(f) — 对缺省变量求微分

diff(f,v) — 对指定变量v求微分

diff(f,v,n) —对指定变量v求n阶微分

int(f) — 对f表达式的缺省变量求积分

int(f,v) — 对f表达式的v变量求积分

int(f,v,a,b) — 对f表达式的v变量在(a,b)

区间求定积分

int('被积表达式','积分变量','积分上限',

'积分下限')—— 定积分

——缺省时为不定积分

mtaylor(f,n) —— 泰勒级数展开

ztrans(f) —— Z变换

Invztrans(f) —— 反Z变换

Laplace(f) —— 拉氏变换

Invlaplace(f) —— 反拉氏变换

fourier(f) —— 付氏变换

Invfourier(f) —— 反付氏变换

例1.计算二重不定积分

F=int(int('x*exp(-x*y)','x'),'y')

F=

1/y*exp(-x*y)

例2.计算 f='x*exp(-x*10)'的Z变换

F=ztrans(f)

F=

z*exp(-10)/(z-exp(-10))^2

syms x y

F=int(int(x*exp(-x*y),x),y)

F =

1/y*exp(-x*y)

syms x

f=x*exp(-x*10);

F=ztrans(f)

F=ztrans(x*exp(-x*10);

F =

z*exp(-10)/(z-exp(-10))^2

例3. 计算指数函数eAt.

用拉氏反变换法计算eAt的公式为:

eAt = L-1[(SI-A)-1]

系统矩阵A=

eAt =

结果:

a=[0 1;-2 -3];

syms s

b=(s*eye(2)-a)

b =

[ s, -1]

[ 2, s+3]

B=inv(b)

[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)]

[ -2/(s^2+3*s+2), s/(s^2+3*s+2)]

b11=ilaplace(sym(b,1,1));b(1,1)=b11;

b12=ilaplace(sym(b,1,2));b(1,2)=b12;

b21=ilaplace(sym(b,2,1));b(2,1)=b21;

b22=ilaplace(sym(b,2,2));b(2,2)=b22;

b

b =

[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)]

[ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)]

4.符号代数方程求解

matlab符号运算能够解一般的线性方程,非线性方程及一般的代数方程,代数方程组.当方程组不存在符号解时,又无其他自由参数,则给出数值解.

命令格式:

solve(f) —— 求一个方程的解

Solve(f1,f2, …fn) —— 求n个方程的解

例1. f = ax2+bx+c 求解

f='a*x^2+b*x+c';

solve(f) —— 对缺省变量x求解

ans =

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

计算机

格式

一般格式

例2. 符号方程cos(x)=sin(x)

tan(2*x)=sin(x)求解

f1=solve('cos(x)=sin(x)'),

f1 =

1/4*pi

solve(f , 'b' ) —— 对指定变量b求解

ans =

-(a*x^2+c)/x

f3= matlab4.2的解

[ 0]

[ pi]

[ atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]

[ atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))]

[ atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi]

[ -atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))-pi]

f2=solve('tan(2*x)=sin(x)')

f2 = matlab4.2的解

[ 0]

[acos(1/2+1/2*3^(1/2))]

[acos(1/2 -1/2*3^(1/2))]

numeric(f3)

ans =

3.1416

0 + 0.8314i

0 - 0.8314i

1.9455

-1.9455

numeric(f2)

ans =

0 + 0.8314i

1.9455

matlab4.2与6.1的对比

例3. 解方程组 x+y+z=1

x-y+z=2

2x-y-z=1

g1='x+y+z=1',g2='x-y+z=2',g3='2*x-y-z=1'

f=solve(g1,g2,g3)

f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')

f =

z = 5/6, y = -1/2, x = 2/3

f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')

f =

x: [1x1 sym] f.x

ans =2/3

y: [1x1 sym] f.y

ans =-1/2

z: [1x1 sym] f.z

ans =5/6

[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')

x = 2/3

y =-1/2

z =5/6

5. 符号微分方程求解

—— 用一个函数可以方便地得到微

分方程的符号解

符号微分方程求解指令:dsolve

命令格式:dsolve(f,g)

f —— 微分方程,可多至12个微分方程的求

解;g为初始条件

默认自变量为 'x',可任意指定自变量't', 'u'等

微分方程的各阶导数项以大写字母D表示

y的一阶导数—— Dy

y的二阶导数—— D2y

y的 n 阶导数—— Dny

[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解

一阶微分方程

dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')

ans =

x(t) = sin(t), y(t) = cos(t)

二阶微分方程

dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')

ans =

cos(a*x)

例3.

y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')

ans =

exp(-x)*cos(x)+exp(-x)*sin(x)

ezplot(y) —— 方程解y(t)的时间曲线图

求该方程的解

三,maple函数——符号运算的扩展

maple——是专门进行数学运算的软件工具,

具有超强的符号运算能力,提供了

几乎包括所有数学领域的专用函数

matlab——依赖于maple的内核与函数库,扩

展了自己的符号运算功能.

matlab还设计了对maple库函数的调用功能

使得已有的maple数学功能,可以扩充matlab

中,作为自身符号运算能力的扩展.

1. maple内核访问函数

可以访问maple内核的matlab函数:

maple ——— 访问maple内核函数

mapleinit —— maple函数初始化

mpa ———— maple函数定义

mhelp ——— maple函数帮助命令

procread —— maple函数程序安装

. maple 的调用格式

maple('表达式')

—— 将表达式送至maple内核,

返回符号表达式结果.

maple ('函数',变量1,变量2)

——调用maple函数,传递给定

变量.

例1. 展开5阶 bernoulli 多项式,计算 x=3 时bernoulli 数.

a=maple('bernoulli(5,x)')

a =

-1/6*x+5/3*x^3+x^5-5/2*x^4

a=maple('bernoulli(5,3)')

a =

85

例2. 化简三角函数式sin2x+cos2x

a=maple('simplify(sin(x)^2+cos(x)^2);')

a =

1

例4. 求f(t)=e-3tsint的拉式变换

f=maple('laplace(exp(-3*t)*sin(t),t,s);')

f =

1/((s+3)^2+1)

例4. 寻找二次多项式的完全平方

f (x) = x2+2x+2

a=maple('completesquare(x^2+2*x+2)')

a =

completesquare(x^2+2*x+2)

将工具包装入内存

maple('with(student);')

a=maple('completesquare(x^2+2*x+2)')

a =

(x+1)^2+1

maple软件中的所有函数,在初始化时并没有完全装入内存,可用readlib指令把库函数读入内存,或用with指令将应用工具包装入内存.

调用格式

maple('readlib(函数名);')

maple('with(工具包名);')

例5.求sin(x2+y2)在x=0,y=0处泰勒级数展开式,8阶截断.

maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')

ans =

mtaylor(sin(x^2+y^2),[x = 0, y = 0],8)

maple('readlib(mtaylor);')

maple('mtaylor(sin(x^2+y^2),[x=0,y=0],8)')

ans =

x^2+y^2-1/6*x^6-1/2*y^2*x^4-1/2*y^4*x^2-1/6*y^6

2. mpa —— maple变量定义

任何一个matlab定义的函数f,可使用mpa语句直接调用,还可把 f 定义成maple变量v.

maple的工作空间与matlab工作空间是相互独立的, 所以f 与v是属于不同工作空间中的变量

mpa的调用格式:

mpa('v',f)

mpa v f

f为matlab工作空间中已存在的变量

例. 电磁力计算公式为

试I=0.5,x=0.1邻域展开泰勒级数,3阶截

断,令常数 ,

1.直接调用

maple('readlib(mtaylor);')

maple('mtaylor(k*I^2/x^2,[I=0.5,x=0.1],3);')

2.定义符号函数f(matlab6.1无map函数)

f='k*I^2/x^2';

maple('mtaylor(f,[I=0.5,x=0.1],3);')

ans =

mtaylor(f,[I = .5, x = .1],3)

mpa('u',f)

maple('mtaylor(u,[I=0.5,x=0.1],3);')

ans =

25.*k-.50e3*k*(x-.1)+.10e3*k*(I-.5)+7500.000000000000*k*(x-.1)^2+.1e3*k*(I-.5)^2-.20e4*k*(I-.5)*(x-.1)

注意:matlab符号运算时,可以识

别matlab定义的符号变量,但在调

用 maple 函数时,需将matlab变量

定义为maple变量后,所调用的函

数方可识别和执行

3.mhelp —— maple函数帮助命令

mhelp 是协助检索maple库函数的专用命令

调用格式:mhelp 相关词条

例如:

mhelp intro — maple介绍

mhelp maple — maple命令格式

mhelp tutorial —maple入门

mhelp index —maple检索

工具词条

函数词条

mhelp index 用于工具包检索

library ——maple标准库函数

packages —— 应用工具包

libmisc —— 其它库函数

statements —— maple语句描述

expressions —— maple表达式

datatypes —— maple数据格式

tables —— maple表格和阵列

procedures —— maple程序

misc —— maple其它应用

一般帮助文本主要包括以下部分

FUNCTION—— 函数功能说明

CALLING SEQUENCE—— 调用格式

PARAMETERS —— 调用参数说明

SYNOPSIS —— 语法说明

EXAMPLES —— 应用举例

SEE ALSO —— 相关词条

4.maple库函数

maple库函数共分四类

maple内部函数:驻留函数任何条件

下都可调用

mhelp index[internal]

maple的外部函数—读库定义部分:

调用时先执行读库命令,因此与内部函

数一样可直接调用

mhelp index[external]

maple的外部函数—读库装入部分

maple其余外部函数需要在使用前执行maple('readlib(函数名);')命令将其装入内存

mhelp index[libmisc]

maple的惰性函数—不能直接调用,还需一些函数如mod,evala,evalf 等才能调用

mhelp index[intert]

小 结

本节介绍了matlab语言的符号运算

功能,通过学习应该掌握:

掌握如何创建,修改符号矩阵

掌握符号运算功能

maple函数调用

mhelp检索

由线性代数我们知道A非奇异时,A的行列式不为0,此时方程的解是唯一的。

matlab中符号变量的设置

1、syms命令是创建多个符号变量的简捷写法,

syms a b positive

相当于

a = sym('a','positive');

b = sym('b','positive');

所以,这种写法,a和b都是正的。

2、如果只想声明b是正数,那就考虑分开写:

syms a

syms b positive

但是,如果先syms a b,经过一系列操作后,再声明syms b positive,也是有效的(但很显然只对声明为正之后的操作有效)。下面是一个例子:

 syms b

 Dt=sym('Dirac(t-b)') 

Dt = 

Dirac(t-b)

 

 laplace(Dt) 

ans = 

laplace(Dirac(-t+b),t,s)

 

 syms b positive

 laplace(Dt) 

ans = 

exp(-b*s)

值得特别指出的是,clear b并不会清除b的positive属性,例如在上面的代码后面,如果再进行下面的操作:

 clear b

 laplace(Dt) 

ans = 

exp(-b*s)

 

 syms b real

 laplace(Dt) 

ans = 

exp(-s*b)-exp(-s*b)*Heaviside(-b)

 

 syms b unreal

 laplace(Dt) 

ans = 

laplace(Dirac(-t+b),t,s)

也就是说,除非用命令改变b的属性(或者用clear mex或clear all之类的做法强制重启符号计算内核),前面声明的positive或real属性会一直有效。

3、2011b之前的MATLAB,对符号变量的限定只有三种选择:复数(unreal,默认),实数(real),或者正数(positive),因而无法实现你希望b=0的要求。2012a引入了三个函数:assume、assumeAlso和assumptions,可以对符号变量属性进行更多的限定,可以实现你的上述要求。更详细的信息请查阅这几个函数的文档。

4、据我所知,evalin用于指定在特定工作区内执行指定的命令(主要的作用在于从函数中访问基本工作区),像楼上所说的借助它对符号变量“进行更细腻的操作”则是闻所未闻。

希望对楼主有帮助,有问题可追问。

哪位高人能给我讲一下matlab的符号变量是什么意思?

符号变量就是用于符号运算的变量,例如分解一个关于X的多项式,那么X就是一个符号变量(应该他没有具体的数值),或者一个类似于[x,1,8,7]这样的向量也是符号变量的一种,符号变量一般都用于符号运算,如分解因式,微积分一类的运算

matlab 符号变量

误差肯定是有的

本来MATLAB就是向量运算,不有误差的,不连续运算

Matlab如何定义符号变量

如下面的例子,未定义就会出错。符号变量定义方法例如: sym x 或者 syms x ,两者有区别也有共同点。

其他变量的定义:

计算过程当中的存储数值的变量

可以不必定义,随时需要,随时定义,但是有时候如果变量很多,那么最好提前声明,声明的时候,可以直接赋予0值,并且注释,这样方便以后区分,避免混淆。

矩阵和向量

对于矩阵一般都是需要定义的,定义好矩阵之后,才方便访问/修改矩阵的指定元素,矩阵声明(定义)的方法,常用的 就是声明为零矩阵zeros(M,N),或者单位矩阵ones(M,N),eye(M,N)等。

MATLAB R2016a 工作区怎么显示出符号变量的值,明明有一个值,但仅仅显示1*1sym

构造一个sym型变量x:

x = sym('10')

x =10

查看x的类型:

class(x)

ans =sym

转换为double型:

y = double(x)

y =10

查看y的类型:

class(y)

ans =double

关于matlab中自由符号变量怎么看和matlab自由度计算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » matlab中自由符号变量怎么看(matlab自由度计算)
您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论