《900数学软件 Matlab》由会员分享,可在线阅读,更多相关《900数学软件 Matlab(35页珍藏版)》请在金锄头文库上搜索。
1、数学软件数学软件 Matlab Matlab 符号运算1本讲主要内容本讲主要内容n Matlab 符号运算介绍符号运算介绍n 符号对象与基本符号运算符号对象与基本符号运算n findsym 和和 subsn 六类常见的符号计算六类常见的符号计算2符号运算符号运算l 计算以计算以推理方式推理方式进行,不受计算误差累积所带来的困扰进行,不受计算误差累积所带来的困扰 l 符号计算指令的调用比较简单,与教科书上的公式相近符号计算指令的调用比较简单,与教科书上的公式相近 l 符号计算可以给出完全正确的封闭解,或任意精度的数符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时值解(封闭解不
2、存在时 )l 符号计算所需的符号计算所需的运行时间相对较长运行时间相对较长q 符号运算的特点符号运算的特点 3Matlab 符号运算符号运算l Matlab 符号运算是通过符号运算是通过符号数学工具箱符号数学工具箱(Symbolic Math Toolbox)来实现的。来实现的。 l Matlab 的符号数学工具箱可以完成几乎所有得符号运算的符号数学工具箱可以完成几乎所有得符号运算功能,如:功能,如:符号表达式的运算符号表达式的运算,符号矩阵的运算符号矩阵的运算,符号微符号微积分积分,符号作图符号作图,符号代数方程求解符号代数方程求解,符号微分方程求解符号微分方程求解等。等。l 此外,该工具箱
3、还支持此外,该工具箱还支持可变精度运算可变精度运算,即支持以指定的,即支持以指定的精度返回结果。精度返回结果。 q Matlab 符号运算符号运算 4符号运算举例符号运算举例l 求一元二次方程求一元二次方程 ax2 + bx + c = 0 的根的根 solve(a*x2+b*x+c=0)l 求的根求的根 f (x) = (cos x)2 的一次导数的一次导数 x=sym(x); diff(cos(x)2)l 计算计算 f (x) = x2 在区间在区间 a, b 上的定积分上的定积分 syms a b x; int(x2,a,b)5l 符号对象符号对象:在进行符号运算时,必须先定义基本的在进
4、行符号运算时,必须先定义基本的符号对符号对象象,可以是符号常量、符号变量、符号表达式等,可以是符号常量、符号变量、符号表达式等 l 符号对象是一种数据结构符号对象是一种数据结构 符号对象符号对象l 符号表达式符号表达式:含有符号对象的表达式称含有符号对象的表达式称l 符号矩阵符号矩阵/数组数组:元素为符号表达式的矩阵:元素为符号表达式的矩阵/数组数组 6l sym 函数用来建立函数用来建立单个单个符号变量,一般调用格式为:符号变量,一般调用格式为:q 符号对象的符号对象的定义定义/声明声明:sym、syms符号对象符号对象的建立的建立例:例: a=sym(a) 符号变量符号变量 = sym(x
5、)参数参数 x 可以是一个数或数值矩阵,也可以是字符串可以是一个数或数值矩阵,也可以是字符串a 是符号变量是符号变量b 是符号常量是符号常量 b=sym(1/3)C 是符号矩阵是符号矩阵 C=sym(1 ab; c d)7符号对象符号对象的建立的建立syms 符号变量符号变量1 符号变量符号变量2 . 符号变量符号变量n 例:例: syms a b c a=sym(a); b=sym(b); c=sym(c);q 符号对象的符号对象的定义定义/声明声明:sym、symsl syms 命令用来建立命令用来建立多个多个符号变量,一般调用格式为:符号变量,一般调用格式为:8例:例:l 建立符号表达式
6、通常有以下建立符号表达式通常有以下 2 种方法:种方法: (1) 用用 sym 函数直接建立符号表达式。函数直接建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。使用已经定义的符号变量组成符号表达式。 y=sym(sin(x)+cos(x) x=sym(x); y=sin(x)+cos(x)符号符号表达式表达式 syms x; y=sin(x)+cos(x)q 符号表达式:符号表达式:含符号对象的表达式含符号对象的表达式9Matlab 符号运算采用的运算符和基本函数,在形状、名称符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算符和基本函数完全相同和使用上
7、,都与数值计算中的运算符和基本函数完全相同基本符号基本符号运算运算l 普通运算:普通运算:+ - * / l 数组运算:数组运算:.* . ./ .l 矩阵转置:矩阵转置: .例:例: X=sym(x11,x12;x21,x22;x31,x32); Y=sym(y11,y12,y13;y21,y22,y23); Z1=X*Y; Z2=X.*Y;q 基本运算符基本运算符10符号对象符号对象的的基本基本运算运算sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、exp、log、sqrt、log2、log10、abs、conj、real、ima
8、g、rank、det、inv、eig、diag、triu、tril、expm、三角函数与反三角函数、三角函数与反三角函数、指数函数、对数函数等指数函数、对数函数等q 基本函数基本函数11若表达式中有两个符号变量与若表达式中有两个符号变量与 x 的距离相等,的距离相等,则则ASCII 码大者优先。码大者优先。findsymfindsym(expr)按字母顺序列出符号表达式按字母顺序列出符号表达式 expr 中的所有符号变量中的所有符号变量findsym(expr, N)按顺序列出按顺序列出 expr 中离中离 x 最近的最近的 N 个符号变量个符号变量常量常量 pi, i, j 不作为符号变量不
9、作为符号变量q 查寻符号表达式中的符号变量查寻符号表达式中的符号变量12例:例: f=sym(2*w-3*y+z2+5*a) findsym(f) findsym(f,3) findsym(f,1)findsym 举例举例13subssubs(f,x,a) 用用 a 替换字符函数替换字符函数 f 中的字符变量中的字符变量 x a 是可以是是可以是 数数/数值变量数值变量/表达式表达式 或或 字符变量字符变量/表达式表达式若若 x 是一个由多个字符变量组成的是一个由多个字符变量组成的数组或矩阵数组或矩阵,则则 a 应该具有与应该具有与 x 相同的形状的相同的形状的数组或矩阵数组或矩阵。q 符号替
10、换符号替换l 用给定的用给定的数据数据替换符号表达式中的替换符号表达式中的指定的符号变量指定的符号变量14subs 举例举例 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=4f2=2*(u+2)ans=14ans=2*(a+2)+2)f3=2*x+2*yans=6例:指出下面各条语句的输出结果例:指出下面各条语句的输出结果f=2*u下面的命令运行结果会是什么?下面的命令运行结果会是什么? subs(
11、f3,x,y,x+y,x+y)R2008版本已修正版本已修正15符号符号矩阵矩阵 A=sym(1+x, sin(x); 5, exp(x)l 使用使用 sym 函数直接生成函数直接生成l 将数值矩阵转化成符号矩阵将数值矩阵转化成符号矩阵l 符号矩阵中元素的引用和修改符号矩阵中元素的引用和修改 B=2/3, sqrt(2); 5.2, log(3); C=sym(B) A=sym(1+x, sin(x); 5, exp(x); A(1,2) % 引用引用 A(2,2)=sym(cos(x) % 重新赋值重新赋值16六六类常见符号运算类常见符号运算q 因式分解、展开、合并、简化及通分等因式分解、展
12、开、合并、简化及通分等q 计算极限计算极限q 计算导数计算导数q 计算积分计算积分q 符号求和符号求和q 代数方程和微分方程求解代数方程和微分方程求解17因式分解因式分解factor( f ) syms x; f=x6+1; factor( f )l factor 也可用于正整数的分解 s=factor(100) factor(sym(12345678901234567890)l 大整数的分解要转化成符号常量大整数的分解要转化成符号常量例:例:例:例:18函数展开函数展开expand( f ) syms x; f=(x+1)6; expand( f )l 多项式展开l 三角函数展开 syms
13、x y; f=sin(x+y); expand( f )19合并同类项合并同类项collect(f,v): 按指定变量按指定变量 v 进行进行合并合并collect( f ) : 按按默认默认变量变量进行进行合并合并 syms x y; f= x2*y + y*x - x2 + 2*x ; collect( f ) collect( f,y)例:例:20函数简化函数简化y=simple( f ): 对对 f 尝试多种不同的算法尝试多种不同的算法进行进行简化简化,返回其中最简短的形式返回其中最简短的形式y,How=simple( f ): y 为为 f 的的最简短形式最简短形式,How 中记录的
14、为简化过程中使用的方法。中记录的为简化过程中使用的方法。fyHOW2*cos(x)2-sin(x)2 3*cos(x)2-1 simplify(x+1)*x*(x-1)x3-xcombine(trig)x3+3*x2+3*x+1(x+1)3factorcos(3*acos(x)4*x3-3*xexpand21函数简化函数简化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 )
15、例:例:22函数简化函数简化举例举例 syms x; f=(1/x3+6/x2+12/x+8)(1/3); y1=simplify( f ) g1=simple( f ) g2=simple(g1)多次使用多次使用 simple 可以达到最简表达可以达到最简表达例:简化例:简化23分式通分分式通分q 通分通分N,D=numden(f ): N 为通分后的分子,为通分后的分子,D 为通分后的分母为通分后的分母 syms x y; f=x/y+y/x; N,D=numden(f ) n,d=numden(sym(112/1024)例:例:24horner 多项式多项式q horner 多项式:嵌套
16、形式的多项式多项式:嵌套形式的多项式 syms x; f=x4+2*x3+4*x2+x+1; g=horner(f )例:例:例:例:25计算极限计算极限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)26计
17、算计算导数导数g=diff(f,v):求符号表达式求符号表达式 f 关于关于 v 的导数的导数g=diff(f ):求符号表达式求符号表达式 f 关于关于默认变量默认变量的导数的导数g=diff(f,v,n):求求 f 关于关于 v 的的 n 阶导数阶导数q 计算导数:计算导数: diff syms x; f=sin(x)+3*x2; g=diff(f,x)例:例:27计算计算积分积分int(f,v,a,b): 计算定积分计算定积分int(f,a,b): 计算关于计算关于默认变量默认变量的定积分的定积分int(f,v): 计算不定积分计算不定积分int(f): 计算关于计算关于默认变量默认变量
18、的不定积分的不定积分 syms x; f=(x2+1)/(x2-2*x+2)2; I=int(f,x) K=int(exp(-x2),x,0,inf)例:计算例:计算 和和28符号求和符号求和 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)29代数方程代
19、数方程求解求解solve(f,v):求方程关于指定自变量的解,求方程关于指定自变量的解,f 可以是可以是用字符串表示的方程用字符串表示的方程、符号表达式符号表达式或或符号方程符号方程;l solve 也可解方程组也可解方程组(包含非线性包含非线性);l 得不到解析解时,给出数值解。得不到解析解时,给出数值解。略(详见略(详见 “多项式运算与代数方程求解器多项式运算与代数方程求解器”)q 代数方程求解:代数方程求解: solve30微分方程微分方程求解求解q 微分方程求解:微分方程求解: dsolvey=dsolve(eq1,eq2, . ,cond1,cond2, . ,v)其中其中 y 为输
20、出的解,为输出的解, eq1、eq2、. . . 为微分方程,为微分方程,cond1、cond2、.为初值条件,为初值条件, v 为自变量为自变量略(详见略(详见 “实验四:求微分方程的解实验四:求微分方程的解”31其它运算其它运算q 反函数反函数finverse(f,v):求求 f 关于指定变量关于指定变量 v 的反函数的反函数finverse(f ):求求 f 关于默认变量的反函数关于默认变量的反函数 syms x t; f=x2+2*t; g1=finverse(f,x) g2=finverse(f,t)例:计算函数例:计算函数 的反函数的反函数32上机作业上机作业 a1=1e10; b
21、1=1e-10; c1=(a1+b1-a1)/b1; a2=sym(a1); b2=sym(b1); c2=(a2+b2-a2)/b2; 1、指出下面的、指出下面的 M1,M2,M3 分别是什么,并上机验证。分别是什么,并上机验证。 a=1; b=2; c=3;d=4; M1=a,b;c,d; M2=a,b;c,d; eval(M2) M3=sym(a,b;c,d); eval(M3)2、下面语句计算出来的、下面语句计算出来的 c1,c2 相等吗,为什么?上机验证。相等吗,为什么?上机验证。补充:补充:class(x) 查看变量查看变量 x 的数据类型的数据类型33上机作业上机作业3、 简化简
22、化表达式表达式4、设设 A 是一个符号矩阵是一个符号矩阵 (定义如下定义如下),试指出,试指出 findsym(A,1) 的输出结果,的输出结果,并由此并由此能能得出得出什么什么结论结论? syms a b t u v x y; A=a+b*x,sin(t)+u; x*exp(-t),log(y)+v5、试指出试指出下面两条命令的结果是否相同,如果不同,哪个是正确的?下面两条命令的结果是否相同,如果不同,哪个是正确的?为什么?为什么? factor(sym(12345678901234567890) factor(sym(12345678901234567890)6、教材第、教材第 54 页页 第第 12 题题34上机上机要求要求l将完成每题所用的命令写入一个文件,取名为将完成每题所用的命令写入一个文件,取名为 m04.ml然后将该文件作为附件,通过然后将该文件作为附件,通过 foxmail 以邮件形式发给以邮件形式发给 mhjssystem.maill邮件主题为:邮件主题为:机号机号-学号学号-姓名姓名l其中机号为其中机号为 两位数两位数l三个字段之间用英文状态下的减号链接三个字段之间用英文状态下的减号链接q 上机要求上机要求35