资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第七讲 MATLAB符号计算,7.1 符号计算基础 7.2 符号导数及其应用 7.3 符号积分 7.4 级数 7.5 代数方程的符号求解 7.6 常微分方程的符号求解,7.1 符号计算基础,MATLAB中符号计算函数是数值计算函数的重载,符号计算工具箱采用的函数和数值计算的函数有一部分同名,为得到准确的在线帮助,应该用 help sym/函数名 例如: help sym/inv,7.1.1 符号对象 1. 建立符号变量和符号常数 (1)sym函数 sym函数用来建立单个符号变量和符号表达式,例如,a=sym(a) 建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。 rho = sym(1+sqrt(5)/2) f = rho2-rho-1 rho = (1+sqrt(5)/2 f = (1/2+1/2*5(1/2)2-3/2-1/2*5(1/2),例7.1 考察符号变量和数值变量的差别。 在 MATLAB命令窗口,输入命令: 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 %建立符号矩阵A B=w, x; y, z %建立数值矩阵B det(A) %计算符号矩阵A的行列式 det(B) %计算数值矩阵B的行列式 A = a, b c, d B = 10 5 -8 11,ans = a*d-b*c ans = 150,例7.2 比较符号常数与数值在代数运算时的差别。 pi1=sym(pi); k1=sym(8); k2=sym(2); k3=sym(3); % 定义符号变量 pi2=pi; r1=8; r2=2; r3=3; % 定义数值变量 sin(pi1/3) % 计算符号表达式值 sin(pi2/3) % 计算数值表达式值 sqrt(k1) % 计算符号表达式值 sqrt(r1) % 计算数值表达式值 sqrt(k3+sqrt(k2) % 计算符号表达式值 sqrt(r3+sqrt(r2) % 计算数值表达式值,ans = 1/2*3(1/2) ans = 0.8660 ans = 2*2(1/2),ans = 2.8284 ans =(3+2(1/2)(1/2) ans = 2.1010,(2)syms函数 syms函数的一般调用格式为: syms var1 var2 varn 函数定义符号变量var1,var2,varn等。用这种格式定义符号变量时不要在变量名上加字符分界符(),变量间用空格而不要用逗号分隔。 syms a b c d,符号计算的结果是符号或符号表达式,如果其中的符号要用具体数值代替,可以用subs函数,例如将A中的符号a以数值5代替,可以用 B=subs(A,a,5),clear; syms a b c d; A1=a,b;c,d; A2=det(A1); A3=subs(A2,a,1); A3=subs(A3,b,2); A3=subs(A3,c,3); A3=subs(A3,d,4),例7.3 计算行列式 ,当 时计算A的数值结果。,A3 = -2,2. 建立符号表达式 例7.4 用两种方法建立符号表达式。 在MATLAB窗口,输入命令: U=sym(3*x2+5*y+2*x*y+6) %定义符号表达式U syms x y; %建立符号变量x、y V=3*x2+5*y+2*x*y+6 %定义符号表达式V 2*U-V+6 %求符号表达式的值,U = 3*x2+5*y+2*x*y+6 V = 3*x2+5*y+2*x*y+6 ans = 3*x2+5*y+2*x*y+12,例7.5 计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。 syms a b c U=a,b,c A=1,1,1;U;U.2 %建立范得蒙符号矩阵 det(A) %计算A的行列式值,U = a, b, c A = 1, 1, 1 a, b, c a2, b2, c2 ans = b*c2-c*b2-a*c2+a*b2+a2*c-a2*b,例7.6 建立x,y的一般二元函数。 在MATLAB命令窗口,输入命令: syms x y; f=sym(f(x,y),f = f(x,y),7.1.2 基本的符号运算 1. 符号表达式运算 (1) 符号表达式的四则运算 例7.7 符号表达式的四则运算示例。 在 MATLAB命令窗口,输入命令: syms x y z; f=2*x+x2*x-5*x+x3 %符号表达式的结果为最简形式 f=2*x/(5*x) %符号表达式的结果为最简形式 f=(x+y)*(x-y) %符号表达式的结果不是x2-y2,而是 %(x+y)*(x-y),f =-3*x+2*x3 f =2/5 f =(x+y)*(x-y),(2)因式分解与展开 factor(S) 对S分解因式,S是符号表达式或符号矩阵。 expand(S) 对S进行展开,S是符号表达式或符号矩阵。 collect(S) 对S合并同类项,S是符号表达式或符号矩阵。 collect(S,v) 对S按变量v合并同类项,S是符号表达式或符号矩阵。,例7.8 对符号矩阵A的每个元素分解因式。 命令如下: syms a b x y; A=2*a2*b3*x2-4*a*b4*x3+10*a*b6*x4, 3*x*y-5*x2; 4, a3-b3; factor(A) %对A的每个元素分解因式,A = 2*a2*b3*x2-4*a*b4*x3+10*a*b6*x4, 3*x*y-5*x2 4, a3-b3,ans = 2*a*b3*x2*(5*b3*x2-2*b*x+a), -x*(-3*y+5*x) 4, (a-b)*(a2+a*b+b2),例7.9 计算表达式S的值。 syms x y; s=(-7*x2-8*y2)*(-x2+3*y2); expand(s) %对s展开 collect(s,x) %对s按变量x合并同类项(无同类项) factor(ans) % 对ans分解因式 expand(cos(x+y),ans =7*x4-13*x2*y2-24*y4 ans =7*x4-13*x2*y2-24*y4 ans =(8*y2+7*x2)*(x2-3*y2) ans =cos(x)*cos(y)-sin(x)*sin(y),(3)表达式化简 MATLAB提供的对符号表达式化简的函数有: simplify(S) 应用函数规则对S进行化简。 simple(S) 调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。 例: syms x y; s=(x2+y2)2+(x2-y2)2; simple(s) %MATLAB自动调用多种函数对s进行%化简,并显示每步结果,ans = 2*x4+2*y4,2. 符号矩阵运算 transpose(S) 返回S矩阵的转置矩阵。,7.1.3 符号表达式中变量的确定 MATLAB中的符号可以表示符号变量和符号常数。findsym可以帮助用户查找一个符号表达式中的符号变量。该函数的调用格式为:findsym(S,n) 函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量。 在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上,MATLAB按离字符x最近原则确定缺省变量。,syms a x y z t findsym(sin(pi*t) ans = t findsym(x+i*y-j*z) ans = x, y, z,findsym(a+y,1) returns y.,7.2 符号导数及其应用,7.2.1 函数的极限 limit函数的调用格式为:limit(f,x,a) limit函数的另一种功能是求单边极限,其调用格式为:limit(f,x,a,right) 或 limit(f,x,a,left),例7.10 求极限。 在MATLAB命令窗口,输入命令: syms a m x; f=(x(1/m)-a(1/m)/(x-a); limit(f,x,a) %求极限(1) f=(sin(a+x)-sin(a-x)/x; limit(f) %求极限(2) limit(f,inf) %求f函数在x(包括+和-) %处的极限 limit(f,x,inf,left) %求极限(3) f=(sqrt(x)-sqrt(a)-sqrt(x-a)/sqrt(x*x-a*a); limit(f,x,a,right) %求极限(4),7.2.2 符号函数求导及其应用 MATLAB中的求导的函数为: diff(f,x,n) diff 函数求函数 f 对变量 x 的 n 阶导数。参数x的用法同求极限函数limit,可以缺省,缺省值与limit相同,n的缺省值是1。,例7.11 求函数的导数。 syms a b t x y z; f=sqrt(1+exp(x); diff(f) %求(1)。未指定求导变量和阶数,按缺省规则处理 f=x*cos(x); diff(f,x,2) %求(2)。求f 对x的二阶导数 diff(f,x,3) %求(2)。求f 对x的三阶导数 f1=a*cos(t); f2=b*sin(t); diff(f2)/diff(f1) %求(3)。按参数方程求导公式求y对x的导数 (diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3 %求(3)。求y对x %的二阶导数 f=x*exp(y)/y2; diff(f,x) %求(4)。z对x的偏导数 diff(f,y) %求(4)。z对y的偏导数 f=x2+y2+z2-a2; zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数 zy=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数,ans = 1/2/(1+exp(x)(1/2)*exp(x) ans = -2*sin(x)-x*cos(x) ans = -3*cos(x)+x*sin(x) ans = -b*cos(t)/a/sin(t)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号