收藏 分享(赏)

第六讲 Matlab符号运算.ppt

上传人:saw518 文档编号:6221925 上传时间:2019-04-02 格式:PPT 页数:41 大小:329.50KB
下载 相关 举报
第六讲 Matlab符号运算.ppt_第1页
第1页 / 共41页
第六讲 Matlab符号运算.ppt_第2页
第2页 / 共41页
第六讲 Matlab符号运算.ppt_第3页
第3页 / 共41页
第六讲 Matlab符号运算.ppt_第4页
第4页 / 共41页
第六讲 Matlab符号运算.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、数学实验,Matlab 符号运算,什么是符号运算? 与数值运算的区别 数值运算中必须先对变量赋值,然后才能参与运算。 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。,Matlab 符号运算介绍,Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时,它就请求 Maple 软件去计算并将结果返回给 Matlab。,Matlab 的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号

2、矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等。此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。,Matlab 符号运算举例,求一元二次方程 ax2 + bx + c = 0 的根, solve(a*x2+b*x+c),求方程 f(x) = (cos x)2的一次导数, x=sym(x); diff(cos(x)2),计算 f(x)= x2 在区间a, b上的定积分, syms a b x; int(x2,a,b),在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。符号对象是一种数据结构。,符号对象与符号表达式,含有符号对

3、象的表达式称为符号表达式,Matlab 在内部把符号表达式表示成字符串,以与数字变量或运算相区别。,符号矩阵/数组:元素为符号表达式的矩阵/数组。,sym 函数用来建立单个符号变量,一般调用格式为:,符号对象的建立:sym 和 syms,符号对象的建立,例如,a=sym(a)建立符号变量a,此后,用户可以 在表达式中使用变量a进行各种运算。, b=sym(1/3), c=sym(1 ab; c d),【例】考察符号变量和数值变量的差别。在 MATLAB命令窗口,输入命令:a=sym(a);b=sym(b);c=sym(c);d=sym(d); %定义4个符号变量 w=10;x=5;y=-8;z

4、=11; %定义4个数值变量 A=a,b;c,d %建立符号矩阵A B=w,x;y,z %建立数值矩阵B det(A) %计算符号矩阵A的行列式 det(B) %计算数值矩阵B的行列式,【例】比较符号常数与数值在代数运算时的差别。 在 MATLAB命令窗口,输入命令: 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) % 计算数值表达

5、式值 sqrt(k3+sqrt(k2) % 计算符号表达式值 sqrt(r3+sqrt(r2) % 计算数值表达式值,syms函数函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。,符号对象的建立:sym 和 syms,符号对象的建立,syms 命令用来建立多个符号变量,一般调用格式为:,syms var1 var2 . var1n,用这种格式定义符号变量时不要在变量名上加字符分界符(),变量间用空格而不要用逗号分隔。, a=sym(a); b=sym(b); c=sym(c);,符号表达式的建立:,例:,建立符号表达式通常有以下2

6、种方法: (1) 用 sym 函数直接建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。, y=sym(sin(x)+cos(x), x=sym(x); y=sin(x)+cos(x),符号表达式的建立,【练习】用两种方法建立符号表达式3x2+5y+2xy+6。在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 %求符号表达式的值,Matlab 符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算

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),符号表达式的四则运算示例,符号对象的基本运算,三角函数与反三角函数、指数函数、对数函数等,基本函数,查找符号表达式中的符号变量,若表达式中有两个符号变量与 x 的距离相等, 则ASCII 码大者优先。,查找符号变量,findsym(expr) 按字母顺序列出符号表达式 expr 中的所有符

8、号变量,findsym(expr, N) 列出 expr 中离 x 最近的 N 个符号变量,常量 pi, i, j 不作为符号变量,例:, f=sym(2*w-3*y+z2+5*a) findsym(f), f=sym(f,3), f=sym(f,1),findsym 举例,符号表达式的替换,subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 可以是 数/数值变量/表达式 或 字符变量/表达式,若 x 是一个由多个字符变量组成的数组或矩阵, 则 a 应该具有与 x 相同的形状的数组或矩阵。,用给定的数据替换符号表达式中的指定的符号变量,subs 举例, f=sym(2*u)

9、; 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,例:指出下面各条语句的输出结果,f=2*u,上机作业, a1=1e10; b1=1e-10; c1=(a1+b1-a1)/b1; a2=sym(a1); b2=sym(b1); c2=(a2+b2-a2)/b2;,指出下面的 M1,M2,M3 分别是什么,并上机验证。,

10、 a=1; b=2; c=3;d=4; M1=a,b;c,d; M2=a,b;c,d; M3=sym(a,b;c,d);,下面语句计算出来 c1,c2 相等吗,为什么?上机验证。,补充:class(x) 查看指定变量 x 的类型,六类常见符号运算,因式分解、展开、合并、简化及通分等,计算极限,计算导数,计算积分,符号求和,代数方程和微分方程求解,因式分解,因式分解,factor(f), syms x; f=x6+1; factor(f),factor 也可用于正整数的分解, s=factor(100), factor(sym(12345678901234567890),大整数的分解要转化成符号

11、常量,【例】将表达式(x9-1)分解为多个因式。 syms x factor(x9-1) ans = (x-1)*(x2+x+1)*(x6+x3+1),函数展开,函数展开,expand(f), syms x; f=(x+1)6; expand(f),多项式展开,三角函数展开, syms x y; f=sin(x+y); expand(f),合并同类项,合并同类项,collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并, syms x y; f= x2*y + y*x - x2 + 2*x ; collect(f), collect(f,y),【例】对符

12、号矩阵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的每个元素分解因式,【例】 计算表达式S的值。命令如下: syms x y; s=(-7*x2-8*y2)*(-x2+3*y2); expand(s) %对s展开 collect(s,x) %对s按变量x合并同类项(无同类项) factor(ans) % 对ans分解因式,函数简化,函数简化,y=simple(f): 对 f 尝试多种不同的算法进行简化,返回其中最简短的形式,How,y=s

13、imple(f): y 为 f 的最简短形式,How 中记录的为简化过程中使用的方法。,函数简化,函数简化,y=simplify(f): 对 f 进行简化, syms x; f=sin(x)2 + cos(x)2 ; simplify(f), syms c alpha beta; f=exp(c*log(sqrt(alpha+beta); simplify(f),函数简化举例, syms c alpha beta; f=(1/x3+6/x2+12/x+8)(1/3); y1=simplify(f), g1=simple(f), g2=simple(g1),多次使用 simple 可以达到最简表

14、达。,例:简化,计算极限,limit(f,x,a): 计算 limit(f,a): 当默认变量趋向于a 时的极限 limit(f): 计算 a=0 时的极限 limit(f,x,a,right): 计算右极限 limit(f,x,a,left): 计算左极限,例:计算 ,, syms x h n; L=limit(log(x+h)-log(x)/h,h,0) M=limit(1-x/n)n,n,inf),【例】求极限syms x; %定义符号变量 f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/sin(x)3; %确定符号表达式 w=limit(f) %求函数的极限

15、w = -1/2,计算导数,g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数,diff, syms x; f=sin(x)+3*x2; g=diff(f,x),【例】求导数:x = sym(x); %定义符号变量 t = sym(t); diff(sin(x2) %求导运算 ans = 2*cos(x2)*x,计算积分,int(f,v,a,b): 计算定积分 int(f,a,b): 计算关于默认变量的定积分 int(f,v): 计算不定积分 int(f): 计算关于

16、默认变量的不定积分,【例】求下述积分: syms x int(1/(1+x2) ans =atan(x), syms x; f=(x2+1)/(x2-2*x+2)2; I=int(f,x) K=int(exp(-x2),x,0,inf),例:计算 和,符号求和, syms n; f=1/n2; S=symsum(f,n,1,inf) S100=symsum(f,n,1,100),symsum(f,v,a,b): 求和 symsum(f,a,b): 关于默认变量求和,例:计算级数 及其前100项的部分和,例:计算函数级数, syms n x; f=x/n2; S=symsum(f,n,1,inf

17、),代数方程和微分方程求解,代数方程求解,solve(f,v):求方程关于指定自变量的解,f 可以是用字符串表示的方程、符号表达式或符号方程;solve 也可解方程组(包含非线性);得不到解析解时,给出数值解。,【例】解代数方程:ax2-bx-6=0 syms a b x solve(a*x2-b*x-6),其它运算,反函数,finverse(f,v):求 f 关于指定变量 v 的反函数 finverse(f):求 f 关于默认变量的反函数, syms x t; f=x2+2*t; g1=finverse(f,x) g2=finverse(f,t),例:计算函数 的反函数,上机作业,简化表达式,设 A 是一个符号矩阵 (定义如下),试指出 findsym(A,1) 的输出结果,并由此能得出什么结论?, syms a b t u v x y; A=a+b*x,sin(t)+u; x*exp(-t),log(y)+v,试指出下面两条命令的结果是否相同,如果不同,哪个是正确的?为什么?, factor(sym(12345678901234567890), factor(12345678901234567890),

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

当前位置:首页 > 初级教育 > 小学教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报