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

下载本文档

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

文档简介

三、符号运算基础 1 MATLAB 不仅具有数值运算功能,还开发了 实现符号计算的工具包Symbolic Math Toolbox 符号运算的操作对象是非数值的符号对象 2 符号数学工具箱中的工具是建立在功能强 大的Maple的基础上。 它最初是由加拿大的滑铁卢(Waterloo)大 学开发出来的。 如果要求Matlab进行符号运算,那么首先 由Maple计算并将结果返回到Matlab命令 窗口。 符号运算的功能 符号线性代数 因式分解、展开和简化 符号代数方程求解 符号微积分 符号微分方程 支持可变精度运算 支持符号运算并能以指定的精度返回结果 符号运算与数值运算的区别 符号运算使用字符串进行符号分析,而不 是基于矩阵的数值分析 数值运算中必须先对变量赋值, 然后才能 参与运算 符号运算无须事先对独立变量赋值,运算 结果以标准的符号形式表达 符号运算可以求解科学计算中数学问题的 解析表达式精确解 符号运算速度较慢 4 基本概念 符号变量:预先不要求有确定值的量 符号表达式:代表数字、函数、算子和变 量的Matlab字符串或字符串数组 符号方程:含有等号的符号表达式 符号矩阵:数组,其元素是符号表达式 符号算术:使用已知的规则和给定符号恒 等式求解这些符号方程的实践,它与代数 和微积分中的求解方法完全一样 5 1. 创建符号变量和符号表达式 MATLAB的符号工具箱提供了两个建立符号 对象的函数:sym和syms 函数sym的调用格式 符号变量名=sym(表达式) 注:函数sym可创建一个符号变量,表达式 可以是字符、字符串、数学表达式或字符 表达式等 6 函数syms的调用格式 syms 符号变量名1 符号变量名2 注: 函数syms可一次创建多个符号变量 用这种格式定义符号变量时不要在变量名上加 字符串分界符(),变量间用空格而不要用逗号 分隔 7 8 a=sym(MATLAB) a = MATLAB b=sym(3*x2+4*x+7) b = 3*x2+4*x+7 syms c d e c=3x c = 3x 9 数值矩阵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数值矩阵 的一个重要区别。 3. 符号常量 当数值常量作为sym( )的输入参量时,就 建立了一个符号对象符号常量。 虽然看上去是一个数值量,但已经是一 个符号对象了。 例:a=3/4; b=3/4; c=sym(3/4); d=sym(3/4); whos 查看变量类型 a为实双精度浮点数值类型;b为实字符类 型;c和d都是符号对象类型。 12 当符号表达式具有多个变量时,只有一个 变量是独立变量,MATLAB将基于以下准则 选择独立变量: 小写字母i和j不能作为自由变量 小写字母x是首选符号变量 其余小写字母被选中的次序是:在英文 字母中,靠近x的优先,如果与x距离相 同,则x之后的优先 大写字母比所有小写字母都靠后 4. 符号变量的确定 13 findsym(s, n): 按以下准则确定顺序给出符号表 达式s中的靠近x的n个符号变量 根据变量的首字母排序,排序规则为 x y w z v u . a X Y W Z V U . A 随后的字母按字母顺序排列,且大写字母比 小写字母优先:0 1 . 9 A B . Z a b .z findsym(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,X1 15 符号表达式的运算与普通数值运算不同, 它的运算结果是符号表达式或符号矩阵 Matlab6.5及以前的版本提供了很多函数用 于符号计算,如symadd, symsub, symmul, symdiv, sympow等 由于计算效率和计算精度不高,Matlab7.0 及以后的版本已将其删除,相应的计算只需 键入数学运算符+, -, *, /, 或 4. 符号表达式的基本运算 16 例 计算表达式 与 表达式 的和、 差、积、商与乘方 syms x s1=x3-1; s2=x-1; s1+s2 ans = x3 + x - 2 s1-s2 ans = x3 - x s1*s2 ans = (x3 - 1)*(x - 1) s1/s2 ans = (x3 - 1)/(x - 1) s1s2 ans = (x3 - 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代替变量y 18 syms x y z t u; f = 1/(1 + x2); 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中有多个符号变量时 ,对指定的符号变量v计算其反函数 20 例 求y=x2的反函数 syms x; f=x2; g=finverse(f) Warning: finverse(x2) is not unique. In sym.finverse at 46 g = x(1/2) compose(f,g) ans = x 21 例 求y=tex的反函数 f=sym(t*ex) f = t*ex g=finverse(f) g = log(x/t)/log(e) g=finverse(f,t) g = t/ex 22 合并同类项 collect (S,v):合并多项式S中自变量v的同类项 collect (S):以findsym确定的变量合并多项式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 例 合并多项式 的同类项 24 例 合并多项式 的同类项 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)的同类项系数 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 例 分解因式 syms x a; f=x3-a3 f = x3 - a3 factor(f) ans = -(a - x)*(a2 + a*x + x2) 27 例 将符号矩阵表达式的各个元素分解为 多个因式 syms x b; f=x3+b3 x4-1; x5-1 x6-1 f = b3 + x3, x4 - 1 x5 - 1, x6 - 1 factor(f) 28 例 将多项式表示为嵌套形式 syms x; f=x6-x4-5*x3+5*x2+5*x-6 f = x6 - x4 - 5*x3 + 5*x2 + 5*x - 6 horner(f) ans = x*(x*(x*(x*(x2 - 1) - 5) + 5) + 5) - 6 29 例 将数字1025分解为正整数之积 factor(1025) ans = 5 5 41 factor(1025) ? Error using = factor at 21 N must be a scalar. factor(sym(1025) ans = 52*41 30 其它一些函数 expand(s):符号表达式s的展开 numden(s):返回符号表达式s经过分式通分后 的分子和分母 simplify(s):利用各种形式的代数恒等式对符 号表达式s进行化简 simple(s):通过对符号表达式s尝试多种不同 的方法(包括simplify)进行化简,以寻求符 号表达式S的最简形式 double(s):将符号表达式s转换为双精度浮点 数 31 subs(s):用工作空间中的变量替换符号表达式 s中的所有变量 subs(s, new):用变量new替换符号表达式s中 的自由变量 subs(s, old , new):用变量new替换符号表达式 S中的变量old 当变量new是数值形式时,显示的结果虽 然是数值,但实际上是符号变量. 要强制求值, 需要用vpa或eval函数 vpa(s, n):将s表示为n位有效位数的符号对象 digits(d):设置当前的可变算术(vpa)精度的 位数为整数d位. d=digits 返回当前的可变算术 精度的位数给d 32 例 将以下矩阵各元素展开 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 + 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 例 求出下列表达式的分子和分母 syms x; f=6/x2 f = 6/x2 n d=numden(f) n = 6 d = x2 f=1/x3+6/x2+12/x+8 f = 12/x + 6/x2 + 1/x3 + 8 n d=numden(f) n = 8*x3 + 12*x2 + 6*x + 1 d = x3 34 例 化简 syms x; f=sin(x)2+cos(x)2 f = cos(x)2 + sin(x)2 syms x; f=sin(x)2+cos(

温馨提示

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

评论

0/150

提交评论