MATLAB数学实验 第七章 符号计算
第七章 MATLAB符号计算 7.1 符号对象 7.2 符号矩阵和符号函数 7.3 符号微积分 7.4 符号方程和符号微分方程 7.5 便捷函数作图 7.6 符号计算局限性和Maple调用
7.1 符号对象 1、符号对象的定义 s=sym(str) 将数值或字符串str转化为 符号对象s, 数值为有理表示; s= sym(num,’d’) 将数值表达式转化为符号 表达式,数值用十进制表示; 比较: a=pi^2, b=‘pi^2’, c=sym(pi^2),d= sym(pi^2,’d’), e=sym(b) syms var1 var2 定义var1, var2, 为符号变量 subs(s, old, new) 将符号表达式s中的符号 变量 old用new代替
digits(n) 将数值计算精度设为n位; x=vpa(s) 求s的数值结果 x=vpa(s,n) 采用n位计算精度求s的数值 结果 2 .计算精度和数据类型转换 digits(n) 将数值计算精度设为n位; x=vpa(s) 求s的数值结果 x=vpa(s,n) 采用n位计算精度求s的数值 结果 double(s) 将符号对象转化为双精度数值 char(s) 将符号对象转化为字符串 例 pi与2^10000
7.2 符号矩阵和符号函数 1.矩阵 MATLAB大部分矩阵和数组运算符及指令都可以用于符号如:inv,./,.\,eig等 2.符号函数计算 factor(expr) 对expr作因式分解 expand(expr) 将expr展开 collect(expr,v) 将expr按变量v合并同类项 simple(expr) 将expr化简
g=finverse(f,v) 求函数f(v)的反函数g(v) fg=compose(f, g) 求函数f(v)和g(v)的 复合函数f(g(v)) [n,d]=numden(expr) 分式通分, n返回分子,d返回分母 funtool 函数分析图形界面 例1. 已知 f (x,y) = (x-y)3, g(x,y) = (x+y)3 求 h= f*g 并展开。 解 »syms x y;f=(x-y)^3;g=(x+y)^3; » h=f*g,s=expand(h),s2=subs(s,y,x^2+x+1)
7.3 符号微积分 例2 1.极限和级数 limit(s,x,a) 返回符号表达式s当x->a时的极限 limit(s,x,a,’right’) 返回s当x->a时的右极限 limit(s,x,a,’left’) 返回s当x->a时的左极限symsum(s,n,a,b) 返回符号表达式s表示的通 项当自变量n由a到b的和。 例2
2. 微分 diff(s,x) 返回符号表达式s对x的导函数diff(s,x,n) 返回s对x的n阶导函数。 taylor(s,n,a,x) 返回符号表达式s在a点 Taylor展开到n-1次式.自变量为x taylortool Taylor 分析图形界面
jacobian(f,x) 返回向量函数 f的Jacobian矩阵 例3 计算(1) (2) 的Jacobian矩阵; (3)函数g(x)=lnx sinx在x=1的5次Taylor展开
3. 积分 int(s) 符号表达式s的不定积分. int(s,v) 符号s关于变量v的不定积分. int(s,a,b) 符号表达式s的定积分, a,b分别为上﹑下限. int(s,v,a,b) 符号表达式s关于变量v从 a到b的定积分. 当系统求不出解析解,会自动求原点附近的一个近似解。
例4 计算积分 (1)不定积分 (2) 定积分 (3) 定积分 (无解析解)
(无解析解) (4) 定积分 (5)重积分 (6)广义积分
7.4 符号方程和符号微分方程 1.代数方程 s=solve(表达式1, 表达式2, , 表达式n, 通过阅读其域得到 当系统求不出解析解,会自动求原点附近的一个近似解。
例5 解方程 (1) 二次方程ax2+bx+c=0; (2) 无解析解 x2-3x+ex=2; (3) 方程组 这里y, z是未知量。
2. 常微分方程 s=dsolve('方程1 ', '方程2 ',…, '初始条件1 ', '初始条件2',,'自变量'). 均用字符串方式表示, 自变量缺省值为t. 导数用D表示, 2阶导数用D2表示,以此类推. s返回解析解. 方程组情形,s为一个符号结构.
例6 (1)求y'=ay+b的通解; (2)初值问题y’ = y-2t/y,y(0)=1; (3)高阶方程 y’’=cos(2x)-y, y(0)=1,y’(0)=0 (4)边值问题 xy’’-3y’=x2, y(0)=0,y(5)=0 (5)方程组 f ’=f+g,g’=-f+g, f(0)=1,g(0)=2 (6)无解析解 y’=x+y2,y(0)=0
7.5 便捷函数作图 1. 函数曲线图 ezplot(F, [a,b]) 作函数F在[a,b]上的图 F可以是显函数、隐函数或参变量函数 1. 函数曲线图 ezplot(F, [a,b]) 作函数F在[a,b]上的图 F可以是显函数、隐函数或参变量函数 其表示可以是字符串、函数句柄、 Inline 函数或匿名函数. [a,b] 缺省为[-2*pi, 2*pi]
ezpolar(F, [a,b]) 作极坐标函数F()在 a<<b上的图, [a,b] 缺省值为[0, 2*pi] ezplot3(x,y,z,[a,b]) 作曲线x=x(t),y=y(t),z=z(t)在a<t<b上 的图, [a,b]的缺省值为[0, 2*pi] 2 .函数曲面图 ezmesh(z, [a,b,c,d]) 作函数z(x,y)在 a<x<b, c<y<d上的图
ezmesh(x,y,z,[a,b,c,d]) 作参变量函数x(s,t),y(s,t), z(s,t)在 a<s<b,c<t<d上的图 函数用字符串、函数句柄、Inline函数 或匿名函数 ezmesh(, n) 网格用n2个节点, n的缺省值为60. 类似命令有ezsurf, ezcontour等
7.6 符号计算局限性和Maple调用 符号计算局限性 (1)许多问题没有解析解,一般无法用符号计算求解; (2)速度太慢,尤其是高维问题; (3)数值近似求解算法参数设置不够灵活,往往不能满足实际需要; (4)不能处理离散数据分析、最优化等常见工程问题。
例7 求解微分方程 y’=t+sin(y), y(0)=1, 0<t<1 (符号运算无法求解) 例8 求方程组 的实根 (符号运算求不到实数解)
MATLAB的符号工具箱提供了几个命令连接Maple, 以扩展其计算能力。 例9 计算 B(n)= 的逆和行列式 (符号求解很慢) 2.Maple的调用 MATLAB的符号工具箱提供了几个命令连接Maple, 以扩展其计算能力。 mhelp Maple函数 查阅Maple函数帮助 maple(‘Maple命令’) 执行Maple命令
mfunlist 能用mfun调用的Maple的 特殊函数列表 procread 读入Maple程序 例10 求f (x,y)=e-xy的在x=1,y=0的三阶Taylor 展开式 例11 求f (x,y)=xy 的极值, 约束条件x2+y2+a2=1. a为参数
习题 ex2, ex3, ex4, ex5, ex6, ex10, ex13