1 / 32

第 6 讲 MATLAB 符号计算一

数学软件. 西南科技大学网络教育系列课程. 第 6 讲 MATLAB 符号计算一. 数学软件. 主讲教师 : 鲜大权 副教授 . 西南科技大学理学院数学系. 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分. 6.1 符号计算基础. 6.1.1 符号对象 1. 建立符号变量和符号常数 (1)sym 函数 sym 函数用来建立单个符号量,例如, a=sym('a') 建立符号变量 a ,此后,用户可以在表达式中使用变量 a 进行各种运算。. 例 6.1 考察符号变量和数值变量的差别。

tacy
Download Presentation

第 6 讲 MATLAB 符号计算一

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数学软件 西南科技大学网络教育系列课程 第6讲 MATLAB符号计算一 数学软件 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系

  2. 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分

  3. 6.1 符号计算基础 • 6.1.1 符号对象 • 1. 建立符号变量和符号常数 • (1)sym函数 • sym函数用来建立单个符号量,例如,a=sym('a')建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。

  4. 例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的行列式

  5. 例6.2比较符号常数与数值在代数运算时的差别。例6.2比较符号常数与数值在代数运算时的差别。 • 在 MATLAB命令窗口,输入命令: • pi1=sym('pi');k1=sym('8');k2=sym('2');k3=sym('3'); % 定义符号变量 • pi2=pi;r1=8;r2=2;r3=3; % 定义数值变量 • sin(pi1/3) % 计算符号表达式值 • sin(pi2/3) % 计算数值表达式值 • sqrt(k1) % 计算符号表达式值 • sqrt(r1) % 计算数值表达式值 • sqrt(k3+sqrt(k2)) % 计算符号表达式值 • sqrt(r3+sqrt(r2)) % 计算数值表达式值

  6. (2)syms函数 • syms函数的一般调用格式为: • syms var1 var2 … varn • 函数定义符号变量var1,var2,…,varn等。用这种格式定义符号变量时不要在变量名上加字符分界符('),变量间用空格而不要用逗号分隔。

  7. 2. 建立符号表达式 • 例6.3用两种方法建立符号表达式。 • 在MATLAB窗口,输入命令: • U=sym('3*x^2+5*y+2*x*y+6') %定义符号表达式U • syms x y; %建立符号变量x、y • V=3*x^2+5*y+2*x*y+6 %定义符号表达式V • 2*U-V+6 %求符号表达式的值

  8. 例6.4计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。例6.4计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。 • 命令如下: • syms a b c; • U=[a,b,c]; • A=[[1,1,1];U;U.^2] %建立范得蒙符号矩阵 • det(A) %计算A的行列式值

  9. 例6.5建立x,y的一般二元函数。 • 在MATLAB命令窗口,输入命令: • syms x y; • f=sym('f(x,y)');

  10. 6.1.2 基本的符号运算 • 1. 符号表达式运算 • (1)符号表达式的四则运算 • 例6.6符号表达式的四则运算示例。 • 在 MATLAB命令窗口,输入命令: • syms x y z; • f=2*x+x^2*x-5*x+x^3 %符号表达式的结果为最简形式 • f=2*x/(5*x) %符号表达式的结果为最简形式 • f=(x+y)*(x-y) %符号表达式的结果不是x^2-y^2,而是(x+y)*(x-y)

  11. (2)因式分解与展开 • factor(S) 对S分解因式,S是符号表达式或符号矩阵。 • expand(S) 对S进行展开,S是符号表达式或符号矩阵。 • collect(S) 对S合并同类项,S是符号表达式或符号矩阵。 • collect(S,v) 对S按变量v合并同类项,S是符号表达式或符号矩阵。

  12. 例6.7 对符号矩阵A的每个元素分解因式。 • 命令如下: • syms a b x y; • A=[2*a^2*b^3*x^2-4*a*b^4*x^3+10*a*b^6*x^4,3*x*y-5*x^2;4,a^3-b^3]; • factor(A) %对A的每个元素分解因式

  13. 例6.8 计算表达式S的值。 • 命令如下: • syms x y; • s=(-7*x^2-8*y^2)*(-x^2+3*y^2); • expand(s) %对s展开 • collect(s,x) %对s按变量x合并同类项(无同类项) • factor(ans) % 对ans分解因式

  14. (3)表达式化简 • MATLAB提供的对符号表达式化简的函数有: • simplify(S) 应用函数规则对S进行化简。 • simple(S) 调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。 • 例6.9化简 • 命令如下: • syms x y; • s=(x^2+y^2)^2+(x^2-y^2)^2; • simple(s) %MATLAB自动调用多种函数对s进行化简,并显示每步结果

  15. 2. 符号矩阵运算 • transpose(S) 返回S矩阵的转置矩阵。 • determ(S) 返回S矩阵的行列式值。 • colspace(S) 返回S矩阵列空间的基。 • [Q,D]=eigensys(S) Q返回S矩阵的特征向量,D返回S矩阵的特征值。

  16. 6.1.3 符号表达式中变量的确定 • MATLAB中的符号可以表示符号变量和符号常数。findsym可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为: • findsym(S,n) • 函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量。 • 在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上,MATLAB按离字符'x'最近原则确定缺省变量。

  17. 6.2 符号导数及其应用 • 6.2.1函数的极限 • limit函数的调用格式为: • limit(f,x,a) • limit函数的另一种功能是求单边极限,其调用格式为: • limit(f,x,a,'right') 或 limit(f,x,a,'left')

  18. 例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)

  19. 6.2.2 符号函数求导及其应用 • MATLAB中的求导的函数为: • diff(f,x,n) • diff函数求函数f对变量x的n阶导数。参数x的用法同求极限函数limit,可以缺省,缺省值与limit相同,n的缺省值是1。

  20. 例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的三阶导数 • 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)/y^2; • diff(f,x) %求(4)。z对x的偏导数 • diff(f,y) %求(4)。z对y的偏导数 • f=x^2+y^2+z^2-a^2; • zx=-diff(f,x)/diff(f,z) %求(5)。按隐函数求导公式求z对x的偏导数 • zy=-diff(f,y)/diff(f,z) %求(5)。按隐函数求导公式求z对y的偏导数

  21. 例6.12在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。例6.12在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。 • 命令如下: • x=sym('x'); • y=x^3+3*x-2; %定义曲线函数 • f=diff(y); %对曲线求导数 • g=f-4; • solve(g) %求方程f-4=0的根,即求曲线何处的导数为4

  22. 6.3 符号积分 • 6.3.1不定积分 • 在MATLAB中,求不定积分的函数是int,其调用格式为: • int(f,x) • int函数求函数f对变量x的不定积分。参数x可以缺省,缺省原则与diff函数相同。

  23. 例6.13求不定积分。 • 命令如下: • x=sym('x'); • f=(3-x^2)^3; • int(f) %求不定积分(1) • f=sqrt(x^3+x^4); • int(f) %求不定积分(2) • g=simple(ans) %调用simple函数对结果化简

  24. 6.3.2 符号函数的定积分 • 定积分在实际工作中有广泛的应用。在MATLAB中,定积分的计算使用函数: • int(f,x,a,b) • 例6.14求定积分。 • 命令如下: • x=sym('x');t=sym('t'); • int(abs(1-x),1,2) %求定积分(1) • f=1/(1+x^2); • int(f,-inf,inf) %求定积分(2) • int(4*t*x,x,2,sin(t)) %求定积分(3) • f=x^3/(x-1)^100; • I=int(f,2,3) %用符号积分的方法求定积分(4) • double(I) %将上述符号结果转换为数值

  25. 例6.15求椭球的体积。 • 命令如下: • syms a b c z; • f=pi*a*b*(c^2-z^2)/c^2; • V=int(f,z,-c,c) • V = • 4/3*pi*a*b*c

  26. 例6.16轴的长度为10米,若该轴的线性密度计算公式是f(x)=6+0.3x千克/米(其中x为距轴的端点距离),求轴的质量。例6.16轴的长度为10米,若该轴的线性密度计算公式是f(x)=6+0.3x千克/米(其中x为距轴的端点距离),求轴的质量。 • (1)符号函数积分。在MATLAB命令窗口,输入命令: • syms x; • f=6+0.3*x; • m=int(f,0,10) • (2)数值积分。 • 先建立一个函数文件fx.m: • function fx=fx(x) • fx=6+0.3*x; • 再在MATLAB命令窗口,输入命令: • m=quad('fx',0,10,1e-6)

  27. 例6.17求空间曲线c从点(0,0,0)到点(3,3,2)的长度。求曲线c的长度是曲线一型例6.17求空间曲线c从点(0,0,0)到点(3,3,2)的长度。求曲线c的长度是曲线一型 • 命令如下: • syms t; • x=3*t;y=3*t^2;z=2*t^3; • f=diff([x,y,z],t) %求x,y,z对参数t的导数 • g=sqrt(f*f') %计算一型积分公式中的根式部分 • l=int(g,t,0,1) %计算曲线c的长度

  28. 6.3.3 积分变换 • 1. 傅立叶(Fourier)变换 • 在MATLAB中,进行傅立叶变换的函数是: • fourier(fx,x,t) 求函数f(x)的傅立叶像函数F(t)。 • ifourier(Fw,t,x) 求傅立叶像函数F(t)的原函数f(x)。

  29. 例6.18求函数的傅立叶变换及其逆变换。 • 命令如下: • syms x t; • y=abs(x); • Ft=fourier(y,x,t) %求y的傅立叶变换 • fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换 • 2. 拉普拉斯(Laplace)变换 • 在MATLAB中,进行拉普拉斯变换的函数是: • laplace(fx,x,t) 求函数f(x)的拉普拉斯像函数F(t)。 • ilaplace(Fw,t,x) 求拉普拉斯像函数F(t)的原函数f(x)。

  30. 例6.19计算y=x2的拉普拉斯变换及其逆变换. • 命令如下: • x=sym('x');y=x^2; • Ft=laplace(y,x,t) %对函数y进行拉普拉斯变换 • fx=ilaplace(Ft,t,x) %对函数Ft进行拉普拉斯逆变换

  31. 3. Z变换 • 对数列f(n)进行z变换的MATLAB函数是: • ztrans(fn,n,z) 求fn的Z变换像函数F(z) • iztrans(Fz,z,n) 求Fz的z变换原函数f(n) • 例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变换

  32. 4. 积分变换的应用 • 例6.21用拉普拉斯方法解微分方程。

More Related