1、第六章 微分方程问题的解法 微分方程的解析解方法 常微分方程问题的数值解法 微分方程问题算法概述 四阶定步长 Runge-Kutta算法及 MATLAB 实现 一阶微分方程组的数值解 微分方程转换 特殊微分方程的数值解 边值问题的计算机求解 偏微分方程的解6.1 微分方程的解析解方法 格式:y=dsolve(f1, f2, , f m) 格式:指明自变量y=dsolve(f1, f2, , f m ,x)fi即可以描述微分方程,又可描述初始条件或边界条件。如:描述微分方程时描述条件时 例: syms t; u=exp(-5*t)*cos(2*t+1)+5; uu=5*diff(u,t,2)+4
2、*diff(u,t)+2*uuu =87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10 syms t y; y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10) y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1) . +10, y(0)=3, Dy(0)=2, D2y(0)=0, D3y(0)=
3、0)分别处理系数,如: n,d=rat(double(vpa(-445/26*cos(1)-51/13*sin(1)-69/2)ans =-8704 185 % rat()最接近有理数的分数判断误差: vpa(-445/26*cos(sym(1)-51/13*sin(1)-69/2+8704/185)ans =.114731975864790922564144636e-4 y=dsolve(D4y+10*D3y+35*D2y+50*Dy+24*y=,.87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1) + . 10,y(0)=1/2,Dy(pi)=1
4、,D2y(2*pi)=0,Dy(2*pi)=1/5);如果用推导的方法求 Ci的值,每个系数的解析解至少要写出 10数行 ,故可采用有理式近似 的方式表示 . vpa(y,10) %有理近似值ans =1.196361839*exp(-5.*t)+.4166666667-.4785447354*sin(t)*cos(t)*exp(-5.*t)-.4519262218e-1*cos(2.*t)*exp(-5.*t)-2.392723677*cos(t)2*exp(-5.*t)+.2259631109*sin(2.*t)*exp(-5.*t)-473690.0893*exp(-3.*t)+3131
5、9.63786*exp(-2.*t)-219.1293619*exp(-1.*t)+442590.9059*exp(-4.*t) 例:求解 x,y=dsolve(D2x+2*Dx=x+2*y-exp(-t), Dy=4*x+3*y+4*exp(-t) 例: syms t x x=dsolve(Dx=x*(1-x2)x = 1/(1+exp(-2*t)*C1)(1/2) -1/(1+exp(-2*t)*C1)(1/2) syms t x; x=dsolve(Dx=x*(1-x2)+1)Warning: Explicit solution could not be found; implicit solution returned. In D:MATLAB6p5toolboxsymbolicdsolve.m at line 292x =t-Int(1/(a-a3+1),a=.x)+C1=0故只有部分非线性微分方程有解析解。6.2 微分方程问题的数值解法6.2.1 微分方程问题算法概述微分方程求解的误差与步长问题: