1 / 26

实验四 MATLAB 符号计算

一、 MATLAB 的符号功能. 二、符号微积分. 三、级数的和. 四、泰勒多项式. 五、解代数方程. 六、常 微分方程的符号解. 七、其他. 实验四 MATLAB 符号计算. —— MATLAB 不仅具有数值运算功能,还开发了在 MATLAB 环境下实现符号计算的工具包 Symbolic Math Toolbox. 一、 MATLAB 的符号功能. 什么是符号运算 . 与数值运算的区别 ※ 数值运算中必须先对变量赋值 ,然后才能参与运算。 ※ 符号运算无须事先对独立变量赋值 ,运算结果以标准的符号形式表达。. 特点 :

lynda
Download Presentation

实验四 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. 一、MATLAB的符号功能 二、符号微积分 三、级数的和 四、泰勒多项式 五、解代数方程 六、常微分方程的符号解 七、其他 实验四 MATLAB符号计算 —— MATLAB不仅具有数值运算功能,还开发了在MATLAB环境下实现符号计算的工具包Symbolic Math Toolbox

  2. 一、MATLAB的符号功能 • 什么是符号运算 与数值运算的区别 ※数值运算中必须先对变量赋值,然后才能参与运算。 ※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。 特点:  运算对象可以是没赋值的符号变量  可以获得任意精度的解 2. 符号变量与符号表达式 f = ' a*(2*x-t)^3+b*sin(4*y)' f —— 符号变量名 a*(2*x-t)^3+b*sin(4*y)—— 符号表达式 ' '—— 符号标识 注:符号表达式一定要用单引号括起来MATLAB才能识别。

  3. 3.建立符号对象的函数——syms syms可以定义多个符号 syms a b c k t x y↙ f=a*(2*x-t)^3+b*sin(4*y) ↙ f= a*(2*x-t)^3+b*sin(4*y) 上面定义的符号和表达式可以进行计算 g = a*(2*x-t)^3+b*sin(4*y)+a*x^(3/2) g=f+a*(2*r-1)^3 ↙ 可以用findsym来确认符号表达式中的符号 findsym (g) ↙ ans = a, b, t, x, y

  4. 二、符号微积分 1.求极限——limit 例1求下列极限 syms x a t ; limit(sin(x)/x) ↙ ans = 1 limit((x-2)/(x^2-4),2) ↙ ans = 1/4

  5. limit((1+2*t/x)^(3*x),x,inf) ↙ ans = exp(6*t) limit(1/x,x,0,'right') ↙ ans = inf v = [(1 + a/x)^x, exp(-x)]; limit(v,x,inf,'left') ↙ ans = [ exp(a), 0]

  6. 2.求导数——diff 例如 f='sin(a*x)' ↙ f = sin(a*x) g=diff(f) ↙ g = cos(a*x)*a h=diff(f,'a') ↙ h = cos(a*x)*x t=diff(f,'a',2) ↙ t = -sin(a*x)*x^2 当微分运算作用于符号矩阵时,是作用于矩阵的每一个元素.

  7. 3.求积分——int 例如 f='exp(-x^2)' ↙ f = exp(-x^2) g=int(f) ↙ g = 1/2*pi^(1/2)*erf(x) f='sin(a*x)';g=int(f) ↙ g =-1/a*cos(a*x) h=int(f,'a') ↙ h =-1/x*cos(a*x)

  8. a=int(f,0,1) ↙ a = -(cos(a)-1)/a b=int(f,'a',0,1) ↙ b = -(cos(x)-1)/x c=int('exp(-x^2)',0,1) ↙ c = 1/2*erf(1)*pi^(1/2) 当积分无解析式时,可用double 计算定积分的值 double(c) ↙ ans =0.7468

  9. 三、级数的和 symsum(s,t,a,b):表达式s中的符号变量t从a到b的级数和(t缺省时,设定为x或最接近x的字母),例如: syms k n; symsum(k,0,n-1) ↙ ans = 1/2*n^2-1/2*n symsum(k,0,n) ↙ ans = 1/2*(n+1)^2-1/2*n-1/2

  10. symsum(k^2,0,n) ↙ ans = 1/3*(n+1)^3-1/2*(n+1)^2+1/6*n+1/6 symsum(k^2,0,10) ↙ ans = 385 symsum(1/k^2,1,Inf) ↙ ans = 1/6*pi^2 symsum(k^4,0,n) ↙ ans = 1/5*(n+1)^5-1/2*(n+1)^4+1/3*(n+1)^3-1/30*n-1/30

  11. 四、泰勒多项式 taylor(f,n,a):函数f对符号变量x(或最接近字母x 的符号变量)在a点的n-1阶泰勒多项式(n缺省时设定为6,a缺省时设定为0),例如: syms x t;taylor(exp(-x)) ↙ ans = 1-x+1/2*x^2-1/6*x^3+1/24*x^4-1/120*x^5 taylor(log(x),6,1) ↙ ans = x-1-1/2*(x-1)^2+1/3*(x-1)^3-1/4*(x-1)^4+1/5*(x-1)^5 taylor(sin(x),pi/2,6) ↙ ans = 1-1/2*(x-1/2*pi)^2+1/24*(x-1/2*pi)^4 taylor(x^t,3,t) ↙ ans = 1+log(x)*t+1/2*log(x)^2*t^2

  12. 五、解代数方程 解代数方程(组)的基本命令是: solve('eqn1','eqn2',...,'eqnN') solve('eqn1','eqn2',...,'eqnN','var1,var2,...,varN') solve(‘eqn1’,‘eqn2’,...,‘eqnN’,‘var1’,‘var2’,...‘varN’),例如 x为未知数,p,r为参数 solve('p*sin(x) = r') ↙ ans = asin(r/p) [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0') ↙ x = [1] [3] y = [1] [ -3/2] 以x,y为未知数的方程组

  13. S = solve('x^2*y^2 - 2*x - 1 = 0','x^2 - y^2 - 1 = 0') ↙ S = x: [8x1 sym] y: [8x1 sym] 只给出解的结构 [u,v] = solve('a*u^2 + v^2 = 0','u - v = 1') ↙ u = [ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))+1] [ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))+1] v = [ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))] [ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))] u,v为未知数,a为参数

  14. [x,y] = solve('sin(x+y)-exp(x)*y = 0','x^2-y = 2') ↙ x = -6.0173272500593065641097297117905 y = 34.208227234306296508646214438330 注:无代数解时,只能给出数值解 如果求方程的数值解,则有以下命令: roots:输入多项式的系数(按降幂排列),输出其全部根. poly:输入多项式全部根,输出其系数 fzero(fun,x0):给出函数“fun”在x0附近的根,

  15. 的全部根 例如 roots([1,-5,6]) ↙ ans = 3 2 poly([2,3]) ↙ ans = 1 -5 6 fzero('sin', 3) ↙ Zero found in the interval: [2.8303, 3.1697]. ans = 3.1416 sinx=0在3附近的解

  16. 在0附近的解 fzero('x^5+5*x+1',0) ↙ Zero found in the interval: [-0.22627, 0.16]. ans = -0.1999 roots([5,0,0,0,5,1]) ↙ ans = 0.7528 + 0.7105i 0.7528 - 0.7105i -0.6530 + 0.7130i -0.6530 - 0.7130i -0.1997

  17. solve('x^5+5*x+1=0') ↙ ans = 1.1044655068824455162575638841973+1.0598296691525201166749456468980*i -1.0044974557968355184823910746206+1.0609465064060406435760940804509*i -.19993610217121999555034561915339 -1.0044974557968355184823910746206-1.0609465064060406435760940804509*i 1.1044655068824455162575638841973-1.0598296691525201166749456468980*i 从以上的例子可以看出用roots误差很大

  18. 表达式格式 表达式意义 dsolve(‘微分方程’) 求微分方程的通解 y=y(t), 格式1 dsolve(‘微分方程’,‘x’) 求微分方程的通解 y=y(x), 格式1 六、常微分方程的符号解 1、微分方程的通解 注:(1)t 是默认的独立变量. (2)当 y 是应变量时,用Dny 表示“y 的 n 阶导数”

  19. 例1求微分方程 的通解. 例2 格式1 y=dsolve(‘2*D2y+Dy-y=2*exp(t)’) ↙ y = (exp(t)^2+C1+C2*exp(1/2*t)*exp(t))/exp(t) 格式2 y=dsolve('2*D2y+Dy-y=2*exp(x)','x') ↙ y = (exp(x)^2+C1+C2*exp(1/2*x)*exp(x))/exp(x) y=dsolve(‘Dy+2*x *y=4*x’,’x’) ↙ y = (2*exp(x^2)+C1)/exp(x^2)

  20. 表达式格式 表达式意义 dsolve(‘微分方程’,‘定解条件’) 求微分方程满足定解条件的特解 y=y(t), dsolve(‘微分方程’ ,‘定解条件’,‘x’) 求微分方程满足定解条件的特解 y=y(x), 例3求微分方程 的通解和满足初始条件 2、使用定解条件求微分方程的特解 y=dsolve(‘D4y=y’) ↙ y = (C1*sin(t)*exp(t)+C2*cos(t)*exp(t)+C3*exp(t)^2+C4)/exp(t) y=dsolve(‘D4y=y’,’y(0)=2,Dy(0)=2,D2y(0)=1,D3y(0)=1’,’t’) ↙ y = (1/2*sin(t)*exp(t)+1/2*cos(t)*exp(t)+3/2*exp(t)^2)/exp(t)

  21. 例4求微分方程 y=dsolve(‘Dy=(y^2-2*y)/x’,’y(1)=1’,’x’) ↙ y = 2/(1+x^2) 3、解微分方程组

  22. 例5求微分方程组的通解 [x,y]=dsolve(‘Dx+Dy=-x+y+3, Dx-Dy=x+y-3’) ↙ x = cos(t)*C1+sin(t)*C2+3 y = -C1*sin(t)+C2*cos(t)

  23. 例6求微分方程组的特解 [x,y]=dsolve(‘2*Dx-4*x+Dy-y=exp(t), Dx+3*x+y=0’,’x(0)=3/2,y(0)=0’) ↙ x = 2*cos(t)-4*sin(t)-1/2*exp(t) y = 14*sin(t)+2*exp(t)-2*cos(t)

  24. 七、其他 符号工具箱还有很多用于代数式的命令,我们简单列出一部分,其应用请查看帮助系统. collect: 合并同类项. expand: 将乘积展开为和式. horner:把多项式转换为嵌套表示形式. factor:分解因式. simplify:化简代数式. simple:输出最简单的形式. subs(s,old,new):替换. 最后需要说明的是,关于数组、矩阵等的数值运算命令,也适用于符号运算 。

  25. 实验任务 1.求极限: 2.求导数: 3.求积分:

  26. 4.解方程: 5.解微分方程(组): 6.某地区现有人口200万,10年前为100万,又知平均每年净迁入人口8万,问10年来人口的平均增长率是多少?

More Related