昆明理工大学上机安排3符号计算讲解.docx

上传人:b****2 文档编号:3198705 上传时间:2023-05-05 格式:DOCX 页数:21 大小:78.09KB
下载 相关 举报
昆明理工大学上机安排3符号计算讲解.docx_第1页
第1页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第2页
第2页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第3页
第3页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第4页
第4页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第5页
第5页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第6页
第6页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第7页
第7页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第8页
第8页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第9页
第9页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第10页
第10页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第11页
第11页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第12页
第12页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第13页
第13页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第14页
第14页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第15页
第15页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第16页
第16页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第17页
第17页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第18页
第18页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第19页
第19页 / 共21页
昆明理工大学上机安排3符号计算讲解.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

昆明理工大学上机安排3符号计算讲解.docx

《昆明理工大学上机安排3符号计算讲解.docx》由会员分享,可在线阅读,更多相关《昆明理工大学上机安排3符号计算讲解.docx(21页珍藏版)》请在冰点文库上搜索。

昆明理工大学上机安排3符号计算讲解.docx

昆明理工大学上机安排3符号计算讲解

符号计算学习要点

MATLAB的符号数学工具箱(SymbolicMathToolbox)将符号运算结合到MATLAB的数值运算环境中。

符号数学工具箱是以Maple软件内核为符号运算的引擎,当MATLAB进行符号运算时,就转入Maple去计算并将结果返回到MATLAB的命令窗口。

符号数学工具箱与其它工具箱不同,它不针对特殊专业或专业分支,而适用于广泛的用途;它使用字符串来进行符号分析,而不是数值分析。

它涉及微积分、简化、复合、求解代数方程及微分方程等,有丰富的线性代数工具,支持Fourier,Laplace,z变换及逆变换。

符号计算是数字运算的自然扩展,其特点包括:

不受计算误差的困扰;

计算可以给出完全正确的封闭解或任意精度的数值解;

计算的指令比较简单,所需要的时间较长。

自然科学理论分析中的公式、关系式及其推导是符号计算要解决的问题。

数值计算与符号计算的区别:

MATLAB数值计算的对象是数值,而符号计算的对象则是非数值的符号字符串。

例:

下面的代数方程的的根推导说明了符号计算的特点:

(以下例子要在计算机上运行,分析其结果;有些程序可能标点符号是在中文状态下输入的,请复制时改为英文状态下的标点)

一符号对象的创建

函数sym()和命令syms创建符号常量、变量、函数以及表达式,函数class()检验符号对象类型。

sym函数的用处之一是创建单个的符号变量。

这种创建方式不需要在前面有任何说明,使用非常快捷。

正因如此,此创建过程中,包含在表达式内的符号变量并未得到说明,也就不存在于工作空间。

syms函数与sym相反,它需要在具体创建一个符号表达式之前,将这个表达式所包含的全部符号变量创建完毕。

1符号对象的生成

符号计算工具箱定义了一种新的MATLAB数据类型,叫做符号对象。

在MATLAB内部,符号对象的数据存储格式是符号字符串。

sym函数用于创建符号对象,包括符号常量、符号变量和符号表达式。

【调用格式】

f=sym(arg)把数值、字符串或者表达式arg转换为符号对象f

f=sym(argn,flagn)把数值或者数值表达式argn转换为flagn格式的符号对象

f=sym('argv',flagv)把字符串'argv'按照flagv的格式转换为符号对象

symsargv1argv2...定义argv1、argv2等为符号对象

symsarg1arg2...flagv定义arg1、arg2等为flagv格式的符号对象

【说明】

1.对于数值或者数值表达式argn,flagn可以取以下值:

'd'最接近的十进制浮点精度表示

'e'带估计误差的有理表示

'f'十六进制浮点数表示

'r'最接近的有理表示,MATLAB的缺省表示方法

2.对于字符串变量名argv,flagv可以取以下“限定”项:

'positive'“正实数”符号变量

'real'“实数”符号变量

'unreal'“非实数”符号变量

3.syms是sym函数的简化书写方式,各符号对象之间只能用空格分开。

2符号常量

用sym函数可以定义符号常量对象,包括符号标量对象和符号常量数组对象,定义符号常量对象的同时也可以指定数值常量的表示方法。

例符号常量的定义

>>a=[1/3,sqrt(5),pi+sqrt

(2)];%定义数值数组

>>s1=sym([1/3,sqrt(5),pi+sqrt

(2)],'d');%用十进制方式表示符号常量

>>s2=sym([1/3,sqrt(5),pi+sqrt

(2)]);%用最接近的有理方式表示符号常量

>>s3=sym('[1/3,sqrt(5),pi+sqrt

(2)]');%绝对准确的符号数值表示,输入为字符串

3符号变量与符号表达式

1.定义符号变量和符号表达式

例符号变量和符号表达式的定义

>>x=sym('x','real');%定义实数符号变量x

>>symyreal;%定义实数符号变量y

>>z=x+i*y;%定义符号表达式对象z

>>conj(z)%符号变量求共轭复转置

>>f=z*conj(z);%符号表达式对象

>>f=simple(f)%符号表达式对象化简

f=

x^2+y^2

例符号变量与符号矩阵

>>symsabc;%定义符号变量a,b,c

>>A=[a,b,c;b,c,a;c,a,b];%定义符号矩阵A

>>sum(A(:

1));%求矩阵A第一列的元素的和

>>sum(A(1,:

))==sum(A(:

2))%符号对象的关系运算

>>det(A);%矩阵求行列式

>>symsalphabeta;%定义符号变量alpha和beta

>>A(1,3)=beta;%矩阵元素赋值

>>A=subs(A,a,alpha)%符号表达式的替换操作,矩阵A中的a用alpha代替

以上例子可以看出:

元素是符号对象的矩阵叫做符号矩阵;符号表达式是由以下部分组成的符号对象:

a.符号常量;

b.符号变量;

c.符号运算符;

d.专用函数。

4符号表达式中自变量的确定

在数学表达式或者数学函数中,一般都含有自变量。

为了便于进行数学运算,通常要显示指定表达式中的自变量,如果不指定自变量,MATLAB会根据上下文关系,识别表达式中默认的自变量(独立自由的符号变量)。

识别表达式中自变量的基本原则是:

按照字母表中靠近小写字母x的顺序识别,最靠近字母x的变量被第一个识别为自变量。

MATLAB还提供了自变量识别函数findsym。

【调用格式】

findsym(exp)识别表达式exp中所有的自由符号变量

findsym(exp,n)识别表达式exp中最靠近x的n个独立自由变量

【说明】

1.表达式可以是符号矩阵,此时变量识别是对整个矩阵进行的。

2.函数识别的是“独立的”“自由的”符号变量,符号常量或者非独立的符号变量无法被识别。

3.识别次序是按照靠近x的远近进行的,区分大小写,总认为大写字母距离x的距离大于所有小写字母。

例符号表达式中自变量的识别

>>symsabxXY;%定义符号变量

>>k=sym(2.5);

>>z=sym('c*sqrt(alpha)+y*sin(beta)');%定义符号表达式对象(变量)z

>>exp=a*z*X+k*Y+b^x%定义符号表达式变量exp

exp=

a*(c*alpha^(1/2)+y*sin(beta))*X+5/2*Y+b^x

>>findsym(exp)%自动识别所有自由独立变量,k为常量,z为非独立

>>findsym(exp,3)%识别exp中前3个靠近x的独立自由变量

5符号数学函数

在MATLAB中,可以定义表示数学函数的符号对象,既能建立具有详细运算关系的函数,又能建立抽象数学函数。

定义符号数学函数有2种方法:

1.用符号表达式

2.用函数M文件(在函数M文件中用符号变量作为输入变量)

例用符号表达式定义符号数学函数

>>symsxyz%定义函数自变量

>>r=sqrt(x^2+y^2+z^2);%定义函数r

>>t=atan(y/x);%定义函数t

>>f=sin(x*y)/(x*y);%定义函数f

例用函数M文件来定义符号数学函数,下列代码定义了函数sin(x)=sinc(x)/x。

创建M函数文件如下:

functionz=sinc(x)

%SINC符号函数

%sin(x)/x数学计算公式

%接受符号变量作为输入变量

ifisequal(x,sym(0))%如果自变量值为符号0,则函数值为1

z=1;

else

z=sin(x)/x;

end

例建立抽象的符号数学函数(可用help命令查看subs、limit函数的用法)

>>f=sym('f(x)')%建立抽象函数f(x)

>>symsxh;

>>df=(subs(f,x,x+h)-f)/h%建立抽象函数df,表示f(x)的导数表达式

df=

(f(x+h)-f(x))/h

>>g=subs(df,'f','sin')%建立sin(x)的导数函数的定义

g=

((sin)(x+h)-(sin)(x))/h

>>limit(g,h,0)%根据导数定义,求sin(x)的导数

ans=

cos(x)

二符号计算

符号计算有:

代数运算、函数运算、微积分运算、极限运算、级数求和、方程(组)求解等。

A代数运算

符号对象的基本代数运算

符号对象的基本代数运算和普通数值变量一样,可以使用算术运算符、关系运算符(仅能用==和!

=),其运算符的定义和数值运算相同。

例符号矩阵的基本代数运算,查看结果

>>symst;

>>G=[cos(t),sin(t);-sin(t),cos(t)];

>>A=G*G;%符号矩阵的乘法

>>A=simple(A);%化简为最简表达式

>>I=G'.*G;%符号数组乘法

>>I=simple(I);%化简为最简表达式

>>F=[cos(t),-sin(t);sin(t),cos(t)];

>>(F+G)/2;%符号矩阵加法和符号矩阵与标量的除法

B函数运算

数值计算使用的函数基本上也可以用于符号计算,包括三角函数(atan2除外)、指数函数、对数函数(log2、log10除外)、复数函数(angle除外)、线性代数函数和矩阵函数。

例符号矩阵的函数运算,运行下面语句查看结果(去掉分号)

>>H=hilb(3);%生成3×3的希尔伯特数值矩阵

>>H=sym(H);%将数值矩阵转为符号常数矩阵

>>inv(H);%符号矩阵求逆

>>det(H)%符号矩阵求行列式的值

>>symss

>>H(1,1)=s;%将符号元素赋值为符号变量s,使矩阵变为非奇异矩阵

>>Z=det(H)%带有符号变量的符号矩阵求行列式的值

>>sol=solve(Z)%求行列式的根

>>H=subs(H,s,sol);%将矩阵行列式的根代入符号矩阵,使矩阵变为奇异矩阵

>>det(H);%奇异矩阵的行列式值

>>inv(H);%奇异矩阵求逆

>>eig(H);%符号矩阵的特征值

C符号表达式分解、展开与化简

MATLAB提供了符号表达式的因式分解、展开和化简函数。

【调用格式】

collect(expr,v)合并符号表达式expr中符号对象v的同类项系数

expand(expr)对表达式expr进行多项式、三角函数、指数对数等函数展开

factor(expr)对符号表达式expr做因式分解

horner(expr)把多项式expr分解为嵌套形式

[n,d]=numden(expr)提取表达式最小分母公因子d和相应的分子多项式n

simplify(expr)用多种恒定变换对表达式expr进行综合化简

simple(expr)把expr化简为最简表达式

【说明】上述表达式expr可以是符号矩阵,此时函数对符号矩阵的每个元素进行相应操作。

例符号表达式的展开和分解

>>f=sym('(x^3-6*x^2+10*x-5)+(x-1)');%定义原始的符号表达式

>>fc=collect(f);%符号表达式合并同类项

>>ff=factor(f);%符号表达式因式分解

>>fh=horner(f);%符号表达式的嵌套分解

>>fe=expand(fh);%符号表达式的展开

>>factor(1025);%正整数的质数分解,1025=5×5×41

例写出矩阵

各元素的分子多项式和分母多项式

>>symsx;

>>A=[1/4,1/(2*x-1)+1/(x+1);2/(x^2-1),3*x+2];

>>[n,d]=numden(A);%提取表达式最小分母公因子d和相应的分子多项式n

>>pretty(simplify(n./d));

例化简

解:

用simplify进行多次化简也得不到最简结果,用simple化简可以得到最简结果

>>symsx;

>>f=(1+3/x+3/x^2+1/x^3)^(1/3);

>>sfy1=simplify(f);

>>sfy2=simplify(sfy1);

>>sp1=simple(f);

>>sp2=simple(sp1)

D符号表达式的置换操作

MATLAB提供了子表达式的置换函数。

通常在这几种情况下使用子表达式的置换函数:

第一,符号计算结果中多次出现同一个表达式,为了阅读方便,可以把这个表达式用符号变量来置换;第二,可以用符号常量对象置换表达式中的自变量,实现表达式求值;第三,通过置换某些表达式可以生成新的表达式。

1.自动置换函数

【调用格式】

[RS,vn]=subexpr(S,vn)用符号变量vn置换S中的子表达式,并重写S为RS。

[RS,vn]=subexpr(S,'vn')

例对一元三次方程

的符号解进行子表达式的置换。

>>t=solve('a*x^3+b*x^2+c*x+d=0');

>>[r,s]=subexpr(t,'s')

2.通用置换函数

【调用格式】

RS=subs(S,old,new)用new置换S中old,生成RS

【说明】

(1)old是被替换的子表达式,可以是符号变量,也可以是字符串表达式。

(2)new是替换old的值,可以是符号常量、符号变量、符号表达式,也可以是数值。

(3)如果要替换多个子表达式,则old和new为细胞数组。

例通用置换函数。

>>symsax;

>>f=a*cos(x)+1;

>>f1=subs(f,'cos(x)',sym('y'));%用符号变量替换

>>f2=subs(f,{a,x},{3,sym('pi/4')})%用符号常量替换,

>>f3=subs(f,{a,x},{3,pi/4});%用双精度数替换

>>f4=subs(f,{a,x},{0:

3,0:

pi/3:

pi});%用双精度数组替换

>>f5=subs(f,x,sym('exp(-t)'))%用符号表达式替换

E符号函数的反函数

【调用格式】

g=finverse(f,v)求指定自变量为v的函数f(v)的反函数g(v)

g=finverse(f)求函数f对缺省的自变量(由findsym确定)的反函数g

例求

的反函数。

>>symsx;f=(x^2+1)^(1/2);

>>g=finverse(f);

F符号函数的复合函数

【调用格式】

fg=compose(f,g,x,y,z)对f(x)和g(y)求复合函数fg(z)=f(g(y))|y=z

fg=compose(f,g)对f(⋅)和g(⋅)求复合函数fg=(fg(⋅)),自变量由findsym确定

例求复合函数。

>>symsxyztu;

>>f=1/(1+x^2);g=sin(y);h=x^t;p=exp(-y/u);

>>compose(f,g);

>>compose(f,g,t);

>>compose(h,g,x,z)

>>compose(h,g,t,z);

>>compose(h,p,x,y,z);

>>compose(h,p,t,u,z)

G符号微分和雅可比矩阵

求导数、高阶导数、偏导数是常见的数学运算,MATLAB提供这方面的符号微分函数。

【调用格式】

df=diff(f,v,n)求

,即求函数f(v)对的n阶导数

R=jacobian(f,v)求多元向量函数f(v)的雅可比矩阵,即

>>symsatx;

>>f=[a,t^2;t*sin(x),log(x)];

>>dfx=diff(f,x)%矩阵f对x的一阶导数,也可写为diff(f)

>>df2t=diff(f,t,2);%矩阵f对t的二阶导数

>>dfxt=diff(diff(f,x),t)

,求其雅可比矩阵

>>symsxyz;

>>f=[x*y*z;y;x+z];

>>v=[x,y,z];

>>R=jacobian(f,v)

H函数极限

函数的极限是通过导数来定义的,limit函数用于求函数极限。

【调用格式】

limit(f,x,a)求

limit(f,x,a,'right')求

limit(f,x,a,'left')求

例求极限运算。

>>limit(sin(x)/x,x,0);

>>limit(1/x,x,0,'right');

>>limit(1/x,x,0,'left');

>>limit((sin(x+h)-sin(x))/h,h,0)%sin(x)导函数的定义

>>v=[(1+a/x)^x,exp(-x)];

>>limit(v,x,inf)

I符号积分

int函数用于求定积分、不定积分和多重积分的符号解。

【调用格式】

S=int(f,v)求不定积分∫f(v)dv,符号计算结果不带积分常数

S=int(f,v,a,b)求定积分

rsums(f,ra,rb)用Riemann和求符号函数f(x)在[ra,rb]区间上的近似积分

【说明】

1.当f为矩阵时,将对矩阵的每个元素做积分运算。

2.v缺省时,积分对findsym确认的变量进行。

3.积分上下限a和b可以是任何数值和表达式

4.rsums函数绘制求积分的曲线,根据用户的选择来确定最终的近似积分值

例计算

>>symsat;

>>f=[exp(t),t^4;1,sin(a*t)];

>>int(f,t)

例求多重积分

>>symsxyz;

>>V=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x*y),y,sqrt(x),x^2),x,1,2)

>>vpa(V)

J符号级数求和

symsum函数实现符号级数的求和运算。

【调用格式】

s=symsum(f,v,a,b)求

,a和b为整数,b可以取无穷大

例计算

>>symstkx;

>>f1=[t,k^2];

>>f2=x^k/sym('k!

');

>>simple(symsum(f1,t,0,t))

>>simple(symsum(f2,k,0,inf))

K符号代数方程组的解

代数方程包括线性、非线性和超越方程等,solve函数用于符号代数方程求解。

【调用格式】

g=solve('eq1','eq2',...,'eqn','var1','var2',...,'varn')

g=solve(exp1,exp2,...,expn,var1,var2,...,varn)

【说明】

1.'eq1','eq2',...,'eqn'是字符串表达式的方程,或者是字符串表达式,如果它们是不含等号的字符串表达式,则相当于方程'eqi=0'

2.'var1','var2',...,'varn'是用字符串表示的方程中的变量名

3.exp1,exp2,...,expn只能是符号表达式,不能是带有等号的表达式方程。

4.var1,var2,...,varn只能是符号变量。

5.返回值g是一个结构体数据,方程组的解用g.var1,g.var2,...,g.varn表示。

6.在无法求得解析解的时候,给出数值解。

例方程组

,分别求其关于y,z和关于u,v,w的解

>>s1=solve('u*y+v*z^2+w=0','y+z+v=0','y','z');%方程组关于的解,从结果来看方程有2组解:

s1=

y:

[2x1sym]

z:

[2x1sym]

>>y=s1.y;z=s1.z;

%方程组关于u,v,w的解,2个方程3个变量,方程有无穷多组解,其中w为自由变量,

>>s2=solve('u*y+v*z^2+w=0','y+z+v=0','u','v','w');

>>u=s2.u;v=s2.v;w=s2.w;

L符号微分方程的解

【调用格式】

g=dsolve('eq1','eq2',...,'eqn','cond1','cond2',...,'condn','v')

【说明】

1.'eq1','eq2',...,'eqn'是微分方程,只能用字符串形式。

微分方程是函数必须的输入变量。

2.'cond1','cond2',...,'condn'是初始条件,也只能用字符串形式。

3.'v'定义了微分方程的独立变量名(微分方程解中的自变量名),只能用字符串形式。

默认的独立变量名为t。

4.微分方程字符串中,Dny表示y的n阶导数,Dy表示y的一阶导数。

5.返回值g是一个结构体变量,要引用其成员才能得到方程的解。

例求微分方程组

的解。

>>s=dsolve('Dx=y,Dy=-x');

>>x=s.x

x=

-C1*cos(t)+C2*sin(t)

>>y=s.y

y=

C1*sin(t)+C2*cos(t)

例求微分方程

的解y(x),初始条件为y(0)=0,y

(1)=1

>>s=dsolve('x*D2y-3*Dy=x^2','y(0)=0,y

(1)=1','x')

s=

4/3*x^4-1/3*x^3

例求微分方程y”+y2=1的解,初始条件为y(0)=0

>>y=dsolve('(Dy)^2+y^2=1','y(0)=0')

y=

sin(t)

-sin(t)

M积分变换

MATLAB的符号计算支持积分变换,对傅氏变换、拉氏变换和Z变换都提供了相应的符号计算函数。

1傅立叶变换及其反变换

【调用格式】

Fw=fourier(ft,t,w)求时域函数ft的傅氏变换Fw

ft=ifourier(Fw,w,t)求频域函数Fw的傅立叶反变换ft

【说明】

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2