资源描述
第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.1 符号计算基础 6.1.1 符号对象 1. 建立符号变量和符号常数 (1)sym函数 sym函数用来建立单个符号量,例如, a=sym(a) 建立符号变量 a,此后,用户可以在表达式中使用 变量 a进行各种运算。 第 6章 MATLAB符号计算 例 6.1考察符号变量和数值变量的差别。 在 MATLAB命令窗口,输入命令: a=sym(a);b=sym(b);c=sym(c);d=sym(d); %定义 4个符号变量 w=10;x=5;y=-8;z=11; %定义 4个数值变量 A=a,b;c,d %建立符号矩阵 A B=w,x;y,z %建立数值矩阵 B det(A) %计算符号矩阵 A的行列式 det(B) %计算数值矩阵 B的行列式 第 6章 MATLAB符号计算 (2)syms函数 syms函数的一般调用格式为: syms var1 var2 varn 函数定义符号变量 var1,var2,varn 等。用这种格 式定义符号变量时不要在变量名上加字符分界符 (), 变量间用空格而不要用逗号分隔。 第 6章 MATLAB符号计算 2. 建立符号表达式 符号表达式可以采用单引号或 sym/syms函数定义 例 6.2用两种方法建立符号表达式。 在 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 %求符号表达式的值 第 6章 MATLAB符号计算 例 6.3计算 3阶范得蒙矩阵行列式的值。设 A是一个由 符号变量 a,b,c确定的范得蒙矩阵。 命令如下: syms a b c; U=a,b,c; A=1,1,1;U;U.2 %建立范得蒙符号矩阵 det(A) %计算 A的行列式值 第 6章 MATLAB符号计算 例 6.4建立 x,y的一般二元函数。 在 MATLAB命令窗口,输入命令: syms x y; f=sym(f(x,y) 第 6章 MATLAB符号计算 6.1.2 基本的符号运算 1. 符号表达式运算 (1)符号表达式的四则运算 例 6.5符号表达式的四则运算示例。 在 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) 第 6章 MATLAB符号计算 (2)因式分解与展开 factor(S) 对 S分解因式 ,S是符号表达式或符号矩阵。 expand(S) 对 S进行展开 ,S是符号表达式或符号矩阵。 collect(S) 对 S合并同类项 ,S是符号表达式或符号矩阵。 collect(S,v) 对 S按变量 v合并同类项, S是符号表达式或 符号矩阵。 第 6章 MATLAB符号计算 例 6.6 对符号矩阵 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的每个元素分解因式 第 6章 MATLAB符号计算 例 6.7 计算表达式 S的值。 命令如下: syms x y; s=(-7*x2-8*y2)*(-x2+3*y2); expand(s) %对 s展开 collect(s,x) %对 s按变量 x合并同类项 (无同类项 ) factor(ans) % 对 ans分解因式 第 6章 MATLAB符号计算 练习: 1 展开符号表达式 f1=(x+1)7和 f2=cos(x+y)。 expand(S) 2 展开符号表达式 (x+3)(x+t)(y-1)和 (x-2)2(x+1)-x2。 3 因式分解符号表达式 x5-y5。 factor(S) 4 对符号表达式 (x-ex)(x+y)进行同类项合并。 collect(S) 5 按照不同方式合并表达式 (x2-aey)(axy+e2yx)。 第 6章 MATLAB符号计算 (3)表达式化简 MATLAB提供的对符号表达式化简的函数有: simplify(S) 应用函数规则对 S进行化简,它可以完成 对指数、对数、三角函数等各种数学表达式的化简。 simple(S) 调用 MATLAB的其他函数对表达式进行综 合化简,并显示化简过程,返回表达式的最简形式。 第 6章 MATLAB符号计算 例 6.8化简 命令如下: syms x y; s=(x2+y2)2+(x2-y2)2; simple(s) %MATLAB自动调用多种函数对 s进行化 简,并显示每步结果 练习:简化符号表达式 sin2x-cos3x+sin2x。 第 6章 MATLAB符号计算 2. 符号矩阵运算 transpose(S) 返回 S矩阵的转置矩阵。 determ(S) 返回 S矩阵的行列式值。 colspace(S) 返回 S矩阵列空间的基。 Q,D=eigensys(S) Q返回 S矩阵的特征向量, D返回 S 矩阵的特征值。 第 6章 MATLAB符号计算 6.1.3 符号表达式中变量的确定 MATLAB中的符号可以表示符号变量和符号常数。 findsym可以帮助用户查找一个符号表达式中的符 号变量。该函数的调用格式为: findsym(S,n) 函数返回符号表达式 S中的 n个符号变量,若没有指定 n,则返回 S中的全部符号变量。 在求函数的极限、导数和积分时,如果用户没有明确 指定自变量, MATLAB将按缺省原则确定主变量 并对其进行相应微积分运算。可用 findsym(S,1)查 找系统的缺省变量,事实上, MATLAB按离字符 x最近原则确定缺省变量。 第 6章 MATLAB符号计算 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.2 符号导数及其应用 6.2.1函数的极限 limit函数的调用格式为: limit(f,x,a) 计算符号表达式 f在 x a条件下的极限 limit(f, a) 计算 f在默认自变量趋于 a条件下的极限 limit(f) 计算 f在默认自变量趋于 0条件下的极限 limit函数的另一种功能是求单边极限,其调用格式为: limit(f,x,a,right) 或 limit(f,x,a,left) 第 6章 MATLAB符号计算 例 6.10求极限。 在 MATLAB命令窗口,输入命令: syms a m x; f=(x(1/m)-a(1/m)/(x-a); limit(f,x,a) %求极限 (1) f=(sin(a+x)-sin(a-x)/x; limit(f) %求极限 (2) limit(f,inf) %求 f函数在 x( 包括 +和 -)处的极限 limit(f,x,inf,left) %求极限 (3) f=(sqrt(x)-sqrt(a)-sqrt(x-a)/sqrt(x*x-a*a); limit(f,x,a,right) %求极限 (4) 第 6章 MATLAB符号计算 6.2.2 符号函数求导及其应用 MATLAB中的求导的函数为: diff(f,x,n) diff函数求函数 f对变量 x的 n阶导数。参数 x的用法同 求极限函数 limit,可以缺省,缺省值与 limit相同, n的缺省值是 1。 第 6章 MATLAB符号计算 例 6.11求函数的导数。 命令如下: syms a b t x y z; f=sqrt(1+exp(x); diff(f) %求 (1)。未指定求导变量和阶数,按缺省规则处理 f=x*cos(x); diff(f,x,2) %求 (2)。求 f对 x的二阶导数 diff(f,x,3) %求 (2)。求 f对 x的三阶导数 第 6章 MATLAB符号计算 f1=a*cos(t);f2=b*sin(t); diff(f2)/diff(f1) %求 (3)。按参数方程求导公式求 y对 x的导数 (diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3 %求 (3)。求 y对 x的二阶导数 f=x*exp(y)/y2; diff(f,x) %求 (4)。 z对 x的偏导数 diff(f,y) %求 (4)。 z对 y的偏导数 第 6章 MATLAB符号计算 f=x2+y2+z2-a2; zx=-diff(f,x)/diff(f,z) %求 (5)。按隐函数求导公式求 z对 x的偏导数 zy=-diff(f,y)/diff(f,z) %求 (5)。按隐函数求导公式求 z对 y的偏导数 第 6章 MATLAB符号计算 例 6.12在曲线 y=x3+3x-2上哪一点的切线与直线 y=4x-1 平行。 命令如下: x=sym(x); y=x3+3*x-2; %定义曲线函数 f=diff(y); %对曲线求导数 g=f-4; solve(g) %求方程 f-4=0的根,即求曲线何处的导数为 4 第 6章 MATLAB符号计算 练习:试对表达式 f(x,y)=x3-5x2y+y2求一阶偏导和二阶 偏导。 第 6章 MATLAB符号计算 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.3 符号积分 6.3.1不定积分 在 MATLAB中,求不定积分的函数是 int,其调用格 式为: int(f,x) int函数求函数 f对变量 x的不定积分。参数 x可以缺省, 缺省原则与 diff函数相同。 第 6章 MATLAB符号计算 例 6.13求不定积分。 命令如下: x=sym(x); f=(3-x2)3; int(f) %求不定积分 (1) f=sqrt(x3+x4); int(f) %求不定积分 (2) g=simple(ans) %调用 simple函数对结果化简 练习 :计算积分 第 6章 MATLAB符号计算 dxxxf 21 1 6.3.2 符号函数的定积分 定积分在实际工作中有广泛的应用。在 MATLAB中, 定积分的计算使用函数: int(f,x,a,b) 第 6章 MATLAB符号计算 例 6.14求定积分。 命令如下: x=sym(x);t=sym(t); int(abs(1-x),1,2) %求定积分 (1) f=1/(1+x2); int(f,-inf,inf) %求定积分 (2) int(4*t*x,x,2,sin(t) %求定积分 (3) f=x3/(x-1)100; I=int(f,2,3) %用符号积分的方法求定积分 (4) double(I) %将上述符号结果转换为数值 第 6章 MATLAB符号计算 例 6.15求椭球的体积。 命令如下: syms a b c z; f=pi*a*b*(c2-z2)/c2; V=int(f,z,-c,c) V =4/3*pi*a*b*c 第 6章 MATLAB符号计算 6.3.3 积分变换 1. 傅立叶 (Fourier)变换 在 MATLAB中,进行傅立叶变换的函数是: fourier(fx,x,t) 求函数 f(x)的傅立叶像函数 F(t)。 ifourier(Fw,t,x) 求傅立叶像函数 F(t)的原函数 f(x)。 第 6章 MATLAB符号计算 例 6.18求函数的傅立叶变换及其逆变换。 命令如下: syms x t; y=abs(x); Ft=fourier(y,x,t) %求 y的傅立叶变换 fx=ifourier(Ft,t,x) %求 Ft的傅立叶逆变换 第 6章 MATLAB符号计算 2. 拉普拉斯 (Laplace)变换 在 MATLAB中,进行拉普拉斯变换的函数是: laplace(fx,x,t) 求函数 f(x)的拉普拉斯像函数 F(t)。 ilaplace(Fw,t,x) 求拉普拉斯像函数 F(t)的原函数 f(x)。 第 6章 MATLAB符号计算 例 6.19计算 y=x2的拉普拉斯变换及其逆变换 . 命令如下: x=sym(x);y=x2; Ft=laplace(y,x,t) %对函数 y进行拉普拉斯变换 fx=ilaplace(Ft,t,x) %对函数 Ft进行拉普拉斯逆变换 第 6章 MATLAB符号计算 3. Z变换 对数列 f(n)进行 z变换的 MATLAB函数是: ztrans(fn,n,z) 求 fn的 Z变换像函数 F(z) iztrans(Fz,z,n) 求 Fz的 z变换原函数 f(n) 第 6章 MATLAB符号计算 例 6.20求数列 fn=e-n的 Z变换及其逆变换。 命令如下: syms n z fn=exp(-n); Fz=ztrans(fn,n,z) %求 fn的 Z变换 f=iztrans(Fz,z,n) %求 Fz的逆 Z变换 第 6章 MATLAB符号计算 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.4 级数 6.4.1 级数的符号求和 级数符号求和函数 symsum,调用格式为: symsum(a,n,n0,nn) 第 6章 MATLAB符号计算 例 6.22求级数之和。命令如下: n=sym(n); s1=symsum(1/n2,n,1,inf) %求 s1 s2=symsum(-1)(n+1)/n,1,inf) %求 s2。未指定求和 变量,缺省为 n s3=symsum(n*xn,n,1,inf) %求 s3。此处的求和变量 n不能省略。 s4=symsum(n2,1,100) %求 s4。计算有限级数的和 第 6章 MATLAB符号计算 6.4.2 函数的泰勒级数 MATLAB中提供了将函数展开为幂级数的函数 taylor, 其调用格式为: taylor(f,v,n,a) 第 6章 MATLAB符号计算 例 6.24将多项式表示成 x+1的幂的多项式。 命令如下: x=sym(x); p=1+3*x+5*x2-2*x3; f=taylor(p,x,-1,4) 第 6章 MATLAB符号计算 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.5代数方程的符号求解 6.5.1线性方程组的符号求解 MATLAB中提供了一个求解线性代数方程组的函数 linsolve,其调用格式为: linsolve(A,b) 第 6章 MATLAB符号计算 6.5.2 非线性方程组的符号求解 求解非线性方程组的函数是 solve,调用格式为: solve(eqn1,eqn2,eqnN,var1,var2,varN) 第 6章 MATLAB符号计算 例 6.28 解方程。 命令如下: x=solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2),x) %解方程 (1) f=sym(x-(x3-4*x-7)(1/3)=1); x=solve(f) %解方程 (2) x=solve(2*sin(3*x-pi/4)=1) %解方程 (3) x=solve(x+x*exp(x)-10,x) %解方程 (4)。仅 标出方程的左端 第 6章 MATLAB符号计算 第 6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解 6.6 常微分方程的符号求解 6.6常微分方程的符号求解 MATLAB的符号运算工具箱中提供了功能强大的求解 常微分方程的函数 dsolve。该函数的调用格式为: dsolve(eqn1,condition,var) 该函数求解微分方程 eqn1在初值条件 condition下的特 解。参数 var描述方程中的自变量符号,省略时按缺 省原则处理,若没有给出初值条件 condition,则求方 程的通解。 第 6章 MATLAB符号计算 dsolve在求微分方程组时的调用格式为: dsolve(eqn1,eqn2,eqnN,condition1,condition N,var1,varN) 函数求解微分方程组 eqn1、 、 eqnN在初值条件 conditoion1、 、 conditionN下的解,若不给出初值 条件,则求方程组的通解, var1、 、 varN给出求 解变量。 第 6章 MATLAB符号计算 例 6.30 求微分方程的通解。 命令如下: y=dsolve(Dy-(x2+y2)/x2/2,x) %解 (1)。方程的 右端为 0时可以不写 y=dsolve(Dy*x2+2*x*y-exp(x),x) %解 (2) y=dsolve(Dy-x/y/sqrt(1-x2),x) %解 (3) 第 6章 MATLAB符号计算 例 6.31 求微分方程的特解。 命令如下: y=dsolve(Dy=2*x*y2,y(0)=1,x) %解 (1) y=dsolve(Dy-x2/(1+y2),y(2)=1,x) %解 (2) 第 6章 MATLAB符号计算 例 6.32 求微分方程组的解。 命令如下: x,y=dsolve(Dx=4*x-2*y,Dy=2*x-y,t) %解方程 组 (1) x,y=dsolve(D2x-y,D2y+x,t) %解方程组 (2) 第 6章 MATLAB符号计算
展开阅读全文