MATLAB符号运算与微积分实验.ppt
《MATLAB符号运算与微积分实验.ppt》由会员分享,可在线阅读,更多相关《MATLAB符号运算与微积分实验.ppt(124页珍藏版)》请在三一办公上搜索。
1、数学实验,Mathematical Experiments,第5章 MATLAB符号运算 与微积分实验,华 锐 学 院 数 计 系 张 加 勇办公室:2号楼312 办公电话:6391028,Matlab本身并没有符号计算功能,MathWorks公司于1993年购买了著名的符号数学软件Maple的使用权,并利用Maple已有的函数库,开发了符号数学工具箱(Symbolic Math Toolbox)。当进行MATLAB运算时,系统请求Maple软件去计算并将结果返回给MATLAB。,Matlab符号数学工具箱使用字符串来进行符号分析与运算,其主要功能包括:符号表达式的创建、符号矩阵的运算、符号表
2、达式的化简、符号微积分、符号方程(主要指代数方程与常微分方程)的求解、符号函数绘图等。,符号计算是精确计算,可以获得任意精度的解;,符号运算的特点:,运算对象可以是没赋值的符号变量。符号计算定义在符号变量的基础上,符号表达式计算前必须定义符号变量;,符号计算的计算速度较慢;,符号计算的运算符和基本数学函数与数值计算中的运算符和基本数学函数几乎完全相同。,符号运算与数值运算的区别:,数值运算中必须先对变量赋值,然后才能参与运算。,符号运算无须事先对独立变量赋值,运算结果以标准的 符号形式表达。,第5章 MATLAB符号运算 与微积分实验,5.1.符号对象的创建,5.2.符号表达式运算,5.3.符
3、号微积分,5.4.符号方程的求解,5.6、图形化符号函数计算器,5.5、符号数学简易绘图,5.1、符号对象的创建,(一)创建符号变量和符号表达式,sym函数,参与符号运算的对象可以是符号变量、符号表达式或符号矩阵。符号变量要先定义,后引用。Matlab提供了两个建立符号变量的函数:sym和syms,两个函数的用法不同。,sym函数的主要功能是创建单个符号变量,以便进行符号运算,也可以用于创建符号表达式或符号矩阵。用sym函数创建符号变量的一般格式为:S=sym(s,参数)%由数值创建符号对象S=sym(s,参数)%由字符串创建符号对象,当被转换的s是数值时,参数可以是d、f、e或r,当被转换的
4、s是字符串时,参数可以是real、unreal和positive,其含义如下:,syms函数,函数sym一次只能定义一个符号变量,使用不方便。Matlab 提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为:,syms 符号变量名1 符号变量名2 符号变量名n,用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔。,建立符号表达式的方法,使用已定义的符号变量组成;syms,用sym函数和引号建立。,如:syms a b c x f1=ax2+bx+c 二次三项式 f2=ax2+bx+c=0 方程,符号表达式或符号方程可以赋给符号变
5、量,以后调用方便;也可以不赋给符号变量直接参与运算,a=sym(a);b=sym(b);c=sym(c);d=sym(d);%定义4个符号变量w=10;x=5;y=-8;z=11;%定义4个数值变量A=a,b;c,d%建立符号矩阵AB=w,x;y,z%建立数值矩阵Bdet(A)%计算符号矩阵A的行列式det(B)%计算数值矩阵B的行列式,使用符号变(常)量进行代数运算和数值变(常)量进行的运算是不同的。,例1 考察符号变量和数值变量的差别。,eg:diff(f1),diff(a*x2+b*x+c),例2 分别使用sym和syms函数创建符号表达式。syms a b c x f1=a*x2+b*
6、x+cf1=a*x2+b*x+c f2=sym(y2+y+1)%创建符号表达式f2=y2+y+1 f3=sym(sin(z)2+cos(z)2=1)%创建符号方程f3=sin(z)2+cos(z)2=1,符号表达式中变量的确定,Matlab 中的符号可以表示符号变量和符号常数。findsym可以帮助用户查找一个符号表达式中的符号变量。该函数的调用格式为:findsym(S,n),函数返回符号表达式S中的n个符号变量,若没有指定n,则返回 S 中的全部符号变量。,在求函数的极限、导数和积分时,如果用户没有明确指定自变量,Matlab将按缺省原则确定自变量并对其进行相应微积分运算。可用findsy
7、m(S,1)查找系统的缺省变量。,事实上,Matlab 按离字符x最近原则确定缺省变量若表达式中有两个符号变量与 x 的距离相等,则ASCII 码大者优先(字母表靠后的优先)。,常量 pi,i,j 不作为符号变量,例3 查询符号函数 f=xn g=sin(at+b)中的系统缺省变量。,表示函数 f 中查询的 1 个系统缺省变量为 x。,syms a b n t x%定义符号变量f=xn;%给定符号函数g=sin(a*t+b);findsym(f,1)%在f函数中查询1个系统缺省变量ans=x,(二)符号矩阵的创建,符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。
8、但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。,用字符串直接创建符号矩阵,例4 A=a,2*b;3*a,0 A=a,2*b3*a,0,模仿matlab数值矩阵的创建方法;每一行都要用方括号括起来;需保证同一列中各行元素字符串有相同的长度(较短的字符串要用空格补齐长度)。,用sym函数创建符号矩阵,命令格式:A=sym(),符号矩阵内容同数值矩阵:矩阵元素可以是任何不带等号的符号表达式,各矩阵元素之间用逗号或空格分隔,各行之间用分号分隔,各元素字符串的长度可以不相等;需用sym函数定义;需用 标识。,例5 A=sym(a,2*b;3*a,0)A=a,2*b3*a,0,注意:符号
9、矩阵的每一行的两端都有方括号,这是与 Matlab数值矩阵的一个重要区别。,将数值矩阵转化为符号矩阵,A=1/3,2.5;1/0.7,2/5A=0.3333 2.5000 1.4286 0.4000 sym(A)ans=1/3,5/210/7,2/5,函数调用格式:sym(A),例4,A=sym(1/3,5/2;10/7,2/5)B=eval(A),将符号矩阵转化为数值矩阵,函数调用格式:eval(A),A=1/3,5/210/7,2/5B=0.3333 2.5000 1.4286 0.4000,例5,subs(f,x,a)用 a 替换字符函数 f 中的字符变量 x a 可以是 数/数值变量/
10、表达式 或 字符变量/表达式,若 x 是一个由多个字符变量组成的数组或矩阵,则 a 应该具有与 x 相同的形状的数组或矩阵。,用给定的数据替换符号表达式中的指定的符号变量,符号表达式的替换,subs 举例,f=sym(2*u);subs(f,u,2)f2=subs(f,u,u+2)a=3;subs(f2,u,a+2)subs(f2,u,a+2)syms x y f3=subs(f,u,x+y)subs(f3,x,y,1,2),ans=4,f2=2*(u+2),ans=14,ans=2*(a+2)+2),f3=2*x+2*y,ans=6,例6:指出下面各条语句的输出结果,f=2*u,第5章 MA
11、TLAB符号运算 与微积分实验,5.1.符号对象的创建,5.2.符号表达式运算,5.3.符号微积分,5.4.符号方程的求解,5.6、图形化符号函数计算器,5.5、符号数学简易绘图,1.算术运算(1)“”,“”,“*”,“”,“/”,“”(2)“.*”,“./”,“.”,“.”(3)“”,“.”2.关系运算只有运算符“=”、“=”分别对符号对象进行“相等”、“不等”的比较。3.三角函数、双曲函数和相应的反函数三角函数包括sin、cos和tan,双曲函数包括sinh、cosh和tanh,5.2、符号表达式运算,(一)符号表达式的基本运算,4.指数和对数函数5.复数函数复数的共轭conj、求实部re
12、al、求虚部imag和求模abs函数与数值计算中的使用方法相同。没有提供求相角的命令。6.矩阵代数命令符号运算中的矩阵代数命令有diag,inv,det,rank,poly,expm和eig等,它们的用法几乎与数值计算中的情况完全一样,练习,例7 符号表达式的四则运算示例。,syms x y;f1=2*x+x2*x-5*x+x3%符号表达式的结果为最简形式f2=2*x/(5*x)%符号表达式的结果为最简形式f3=(x+y)*(x-y)%符号表达式的结果不是x2-y2,%而是(x+y)*(x-y),f1=-3*x+2*x3 f2=2/5 f3=(x+y)*(x-y),syms xf=2*x2+3
13、*x-5;g=x2+x-7;h=f+g,syms xf=cos(x);g=sin(2*x);f/g+f*g,(1)f=2*x2+3*x-5;g=x2+x-7;,例8,(2)f=cos(x);g=sin(2*x);,h=3*x2+4*x-12,ans=sin(2*x)*cos(x)+cos(x)/sin(2*x),例9 计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。,syms a b c;U=a,b,c;A=1,1,1;U;U.2%建立范得蒙符号矩阵det(A)%计算A的行列式值,A=1,1,1 a,b,c a2,b2,c2 ans=b*c2-c*b2-a*c2+
14、a*b2+a2*c-a2*b,该函数将符号表达式s转换为分子和分母都是整系数的最佳多项式,并分别存放在n与d中。,(二)符号表达式的分式通分,如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:,n,d=numden(s),例10 对表达式 进行通分。,syms x yf=x/y+y/x;n,d=numden(f),n=x2+y2d=y*x,factor(S)对S分解因式,pretty(S)将S按照类似书写习惯的方式显示;expand(S)对S进行展开collect(S)对S合并同类项,collect(S,v)对S按变量v合
15、并同类项。以上S均是符号表达式或符号矩阵,(三)符号表达式的因式分解、展开与合并,Matlab 提供了符号表达式的因式分解与展开的函数,函数的调用格式为:,例11 将表达式(x9-1)分解为多个因式。,syms xfactor(x9-1),ans=(x-1)*(x2+x+1)*(x6+x3+1),factor 也可用于正整数的分解,s=factor(100),factor(sym,syms xf=(x+1)5;expand(f),syms a b x y;A=2*a2*b3*x2-a*b4*x3+10*a*b6*x4,3*x*y-5*x2;4,a3-b3;factor(A)%对A的每个元素分解
16、因式pretty(A),例12 对符号矩阵A的每个元素分解因式。,例13 展开表达式f=(x+1)5,ans=a*b3*x2*(10*b3*x2-b*x+2*a),-x*(-3*y+5*x)4,(a-b)*(a2+a*b+b2)2 3 2 4 3 6 4 2 2 a b x-a b x+10 a b x 3 y x-5 x 3 3 4 a-b,ans=x5+5*x4+10*x3+10*x2+5*x+1,syms x t;f=x*(x*(x-6)+12)*t;collect(f)collect(f,t),例14 对于表达式 f=x(x(x-6)+12)t,分别将自变量x和t的同类项合并。,ans
17、=t*x3-6*t*x2+12*t*xans=x*(x*(x-6)+12)*t,(四)符号表达式的化简,Matlab提供的对符号表达式化简的函数有:,syms x y;s=(x2+y2)2+(x2-y2)2;r,how=simple(s)%Matlab自动调用多种函数对s进行化简,并显示每步结果。,simple(s):调用Matlab 的其他函数对表达式进行综合化简,以寻求s的最简形式,并显示化简过程。调用格式为:,simplify(s):应用函数规则对s进行化简;,r,how=simple(s),返回s的最简化形式,r为返回的简化形式,how为化简过程中使用的主要方法,包括simplify,
18、radsimp,combine,collect,factor,convert,expand等。,例15 化简,r=2*x4+2*y4 how=simplify,(五)符号表达式嵌套形式重写,将符号多项式s用嵌套形式表示,即用多层括号的形式表示。Horner函数可以实现此功能。该函数的调用格式为:,syms xhorner(x3-6*x2+11*x-6),horner(s),例16 将表达式x3-6*x2+11*x-6用嵌套形式表示。,ans=-6+(11+(-6+x)*x)*x,(六)任意精度的数学运算,在symbolic中有三种不同的算术运算:数值类型matlab的浮点算术运算;有理数类型m
19、aple的精确符号运算;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(6)vpa(1/2+1/3),vpa(5/6,4)ans=0.8333a=sym(1/4,exp(1);log(3),3/7)a=1/4,exp(1)log(3),3/7vpa(a,10)ans=.2500000000,2.718281828 1.098612289
20、,.4285714286,例17,ans=0.833333,第5章 MATLAB符号运算 与微积分实验,5.1.符号对象的创建,5.2.符号表达式运算,5.3.符号微积分,5.4.符号方程的求解,5.6、图形化符号函数计算器,5.5、符号数学简易绘图,5.3、符号微积分,(一)符号极限,limit(f,x,a,left):求符号函数f在x=a处的左极限。,limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,函数f(x)的极限值;,limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的自变量,使用该格式时,符号函数f(x)的变量为函数fi
21、ndsym(f)确定的默认自变量,既变量x趋近于a;,limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况;,limit(f,x,a,right):求符号函数f在x=a处的右极限;,函数 limit 用于求符号函数 f 的极限。系统可以根据用户要求,计算变量从不同方向趋近于指定值的极限值。,例18 求极限。syms t;f1=exp(-t)*sin(t);f2=1/t;a1=limit(f1,t,inf),a2=limit(f2)a3=limit(f2,t,0,left),a4
22、=limit(f2,t,0,right),a1=0 a2=NaN a3=-Inf a4=Infsyms x t;limit(1+2*t/x)(3*x),x,inf)ans=exp(6*t)syms x;f=x*(sqrt(x2+1)-x);limit(f,x,inf,left)ans=1/2syms x;f=(sqrt(x)-sqrt(2)-sqrt(x-2)/sqrt(x*x-4);limit(f,x,2,right)ans=-1/2,(二)符号导数,diff函数用于对符号表达式求导数。其一般调用格式为:,diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号
23、表达式s求一阶导数。,diff(s,v):以v为自变量,对符号表达式s求一阶导数。,diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。,diff(s,v,n):以v为自变量,对符号表达式s求n阶导数。,例19 求导数:,x=sym(x);diff(sin(x2),ans=2*cos(x2)*x,例20 求函数的导数。,f=sym(sqrt(1+exp(x)tx;exp(x)x+y)diff(f)%未指定求导变量和阶数,按缺省规则处理,f=x*cos(x);diff(f,x,2)%求f对x的二阶导数diff(f,x,3)%求f对x的三阶导数,ans=ex
24、p(x)/(2*(exp(x)+1)(1/2),tx*log(t)exp(x),1,ans=-2*sin(x)-x*cos(x)ans=-3*cos(x)+x*sin(x),syms a b t x y zf1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1)%按参数方程求导公式求y对x的导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3%求y对x的二阶导数,f=x*exp(y)/y2;diff(f,x)%z求f对x的偏导数diff(f,y)%z求f对y的偏导数,f=x2+y2+z2-a2;zx=-diff(f
25、,x)/diff(f,z)%按隐函数求导公式求z对x的偏导数zy=-diff(f,y)/diff(f,z)%按隐函数求导公式求z对y的偏导数,ans=-b*cos(t)/a/sin(t)ans=-(a*sin(t)2*b+a*cos(t)2*b)/a3/sin(t)3,ans=exp(y)/y2 ans=x*exp(y)/y2-2*x*exp(y)/y3,zx=-x/z zy=-y/z,(三)符号积分,int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间a,b上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 运算 微积分 实验
链接地址:https://www.31ppt.com/p-5439248.html