matlab符号运算基础_第1页
matlab符号运算基础_第2页
matlab符号运算基础_第3页
matlab符号运算基础_第4页
matlab符号运算基础_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1三、符号运算基础MATLAB 不仅具有数值运算功能,还开发了实现符号计算的工具包Symbolic Math Toolbox符号运算的操作对象是非数值的符号对象2 符号数学工具箱中的工具是建立在功能强大的Maple的基础上。 它最初是由加拿大的滑铁卢(Waterloo)大学开发出来的。 如果要求Matlab进行符号运算,那么首先由Maple计算并将结果返回到Matlab命令窗口。3符号运算的功能 符号线性代数符号线性代数 因式分解、展开和简化因式分解、展开和简化 符号代数方程求解符号代数方程求解 符号微积分符号微积分 符号微分方程符号微分方程 支持可变精度运算支持可变精度运算 支持符号运算并能

2、以指定的精度返回结果支持符号运算并能以指定的精度返回结果4符号运算与数值运算的区别 符号运算使用字符串进行符号分析,而不是基于矩阵的数值分析 数值运算中必须先对变量赋值, 然后才能参与运算 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达 符号运算可以求解科学计算中数学问题的解析表达式精确解 符号运算速度较慢5基本概念 符号变量:预先不要求有确定值的量 符号表达式:代表数字、函数、算子和变量的Matlab字符串或字符串数组 符号方程:含有等号的符号表达式 符号矩阵:数组,其元素是符号表达式 符号算术:使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分中的求解方法

3、完全一样61. 创建符号变量和符号表达式 MATLAB的符号工具箱提供了两个建立符号对象的函数:sym和syms 函数sym的调用格式 符号变量名=sym(表达式) 注:函数sym可创建一个符号变量,表达式可以是字符、字符串、数学表达式或字符表达式等7 函数syms的调用格式syms 符号变量名1 符号变量名2 注: 函数syms可一次创建多个符号变量 用这种格式定义符号变量时不要在变量名上加字符串分界符(),变量间用空格而不要用逗号分隔8 a=sym(MATLAB)a =MATLAB b=sym(3*x2+4*x+7)b =3*x2+4*x+7 syms c d e c=3xc =3x9 数

4、值矩阵A=1,2;3,4 A=a,b;c,d 不识别用matlab函数sym创建矩阵命令格式: A=sym( ) 符号矩阵内容同数值矩阵需用sym指令定义需用单引号 标识注意与a,b;c,d的区别2. 符号矩阵的创建10 A = sym(a,2*b;3*a,0)A = a, 2*b 3*a, 0注:符号矩阵的每一行的两端都有方括号,这是与 Matlab数值矩阵的一个重要区别。113. 符号常量 当数值常量作为sym( )的输入参量时,就建立了一个符号对象符号常量。 虽然看上去是一个数值量,但已经是一个符号对象了。例:a=3/4; b=3/4; c=sym(3/4); d=sym(3/4); w

5、hos 查看变量类型a为实双精度浮点数值类型;b为实字符类型;c和d都是符号对象类型。 12 当符号表达式具有多个变量时,只有一个变量是独立变量,MATLAB将基于以下准则选择独立变量:小写字母i和j不能作为自由变量 小写字母x是首选符号变量其余小写字母被选中的次序是:在英文字母中,靠近x的优先,如果与x距离相同,则x之后的优先 大写字母比所有小写字母都靠后4. 符号变量的确定13findsym(s, n): 按以下准则确定顺序给出符号表达式s中的靠近x的n个符号变量根据变量的首字母排序,排序规则为 x y w z v u . a X Y W Z V U . A随后的字母按字母顺序排列,且大写

6、字母比小写字母优先:0 1 . 9 A B . Z a b .zfindsym(s): 按字典顺序给出符号表达式s中的所有符号变量14 syms a x y z t X1 x2 xa xb findsym(sin(pi*t)ans =t findsym(x+i*y-j*z) ans =x,y,z findsym(a+y,1)ans =y findsym(X1 + x2 + xa + xb)ans =X1,x2,xa,xb findsym(X1 + x2 + xa + xb,4)ans =x2,xa,xb,X115 符号表达式的运算与普通数值运算不同,它的运算结果是符号表达式或符号矩阵Matla

7、b6.5及以前的版本提供了很多函数用于符号计算,如symadd, symsub, symmul, symdiv, sympow等由于计算效率和计算精度不高,Matlab7.0及以后的版本已将其删除,相应的计算只需键入数学运算符+, -, *, /, 或4. 符号表达式的基本运算16例 计算表达式 与 表达式 的和、差、积、商与乘方31x 1x syms x s1=x3-1; s2=x-1; s1+s2ans =x3 + x - 2 s1-s2ans =x3 - x s1*s2ans =(x3 - 1)*(x - 1) s1/s2ans =(x3 - 1)/(x - 1) s1s2ans =(x

8、3 - 1)(x - 1)17复合函数compose(f,g):返回复合函数f(g(y), 其中f=f(x), g=g(y). 其中符号x为函数f中由命令findsym(f)确定的符号变量,符号y为函数g中由命令findsym(g)确定的符号变量compose(f,g,z):返回复合函数f(g(z)compose(f,g,x,z):返回复合函数f(g(z), 将函数f中的自变量x用g(z)代替compose(f,g,x,y,z):返回复合函数f(g(z), 将函数f中的自变量变量x用g(y)代替,然后用指定的变量z代替变量y18 syms x y z t u; f = 1/(1 + x2);

9、g = sin(y); h = xt; p = exp(-y/u); compose(f,g) ans =1/(sin(y)2 + 1) compose(f,g,t)ans =1/(sin(t)2 + 1) compose(h,g,x,z)ans =sin(z)t compose(h,g,t,z) ans =xsin(z) compose(h,p,x,y,z)ans =(1/exp(z/u)t compose(h,p,t,u,z)ans =x(1/exp(y/z)19反函数finverse(f):返回函数f的反函数,其中f为单值的一元数学函数finverse(f,v) :若符号函数f中有多个符

10、号变量时,对指定的符号变量v计算其反函数20例 求y=x2的反函数 syms x; f=x2; g=finverse(f)Warning: finverse(x2) is not unique. In sym.finverse at 46g =x(1/2) compose(f,g)ans =x21例 求y=tex的反函数 f=sym(t*ex)f =t*ex g=finverse(f) g =log(x/t)/log(e) g=finverse(f,t)g =t/ex22合并同类项collect (S,v):合并多项式S中自变量v的同类项collect (S):以findsym确定的变量合并多

11、项式S的同类项23 syms x f=(x3+x+1)*(x2+1)f =(x2 + 1)*(x3 + x + 1) collect(f)ans =x5 + 2*x3 + x2 + x + 1例 合并多项式 的同类项32(1)(1)xxx24例 合并多项式 的同类项2(1)()ttxxexe s=sym(x2+x*exp(-t)+1)*(x+exp(-t); e1=collect(s) %合并关于x的同类项系数e1 =x3 + (2*x2)/exp(t) + (1/exp(2*t) + 1)*x + 1/exp(t) e2=collect(s,exp(-t) %合并关于exp(-t)的同类项系

12、数e2 =x*(x2 + 1) + x/exp(2*t) + (2*x2 + 1)/exp(t) e3=collect(s,t) %合并关于t的同类项系数e3 =(x + 1/exp(t)*(x2 + x/exp(t) + 1)25因式分解factor(s):符号表达式s的因式分解horner(s):符号表达式s的嵌套形式,即用多层括号的形式表示26例 分解因式 33xa syms x a; f=x3-a3f =x3 - a3 factor(f)ans =-(a - x)*(a2 + a*x + x2)27例 将符号矩阵表达式的各个元素分解为多个因式 33456111xbxxx syms x

13、b; f=x3+b3 x4-1; x5-1 x6-1f = b3 + x3, x4 - 1 x5 - 1, x6 - 1 factor(f)28例 将多项式表示为嵌套形式64325556xxxxx syms x; f=x6-x4-5*x3+5*x2+5*x-6f =x6 - x4 - 5*x3 + 5*x2 + 5*x - 6 horner(f)ans =x*(x*(x*(x*(x2 - 1) - 5) + 5) + 5) - 629例 将数字1025分解为正整数之积 factor(1025)ans = 5 5 41 factor(1025)? Error using = factor at

14、21N must be a scalar. factor(sym(1025)ans =52*4130其它一些函数expand(s):符号表达式s的展开numden(s):返回符号表达式s经过分式通分后的分子和分母simplify(s):利用各种形式的代数恒等式对符号表达式s进行化简simple(s):通过对符号表达式s尝试多种不同的方法(包括simplify)进行化简,以寻求符号表达式S的最简形式double(s):将符号表达式s转换为双精度浮点数31subs(s):用工作空间中的变量替换符号表达式s中的所有变量subs(s, new):用变量new替换符号表达式s中的自由变量subs(s,

15、old , new):用变量new替换符号表达式S中的变量old当变量new是数值形式时,显示的结果虽然是数值,但实际上是符号变量. 要强制求值, 需要用vpa或eval函数vpa(s, n):将s表示为n位有效位数的符号对象digits(d):设置当前的可变算术(vpa)精度的位数为整数d位. d=digits 返回当前的可变算术精度的位数给d32例 将以下矩阵各元素展开()22(2)ln()21sin()x yxex yxy syms x y; f=exp(x+y) log(x2*y2); 2(x+2)+1 sin(x+y)f = exp(x + y), log(x2*y2) 2(x +

16、2) + 1, sin(x + y) expand(f)ans = exp(x)*exp(y), log(x2*y2) 4*2x + 1, cos(x)*sin(y) + cos(y)*sin(x)33例 求出下列表达式的分子和分母 23261.16122.8fxfxxx syms x; f=6/x2f =6/x2 n d=numden(f)n =6d =x2 f=1/x3+6/x2+12/x+8f =12/x + 6/x2 + 1/x3 + 8 n d=numden(f)n =8*x3 + 12*x2 + 6*x + 1d =x334例 化简22cossinxx syms x; f=sin(x)2+cos(x)2f =cos(x)2 + sin(x)2 syms x; f=sin(x)2+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论