1、常微分方程(组)求解【实验目的】1求微分方程的符号解。2求微分方程的数值解。【实验相关知识】(一) 微分方程的符号解.微分方程的符号解也叫做解析解. 求微分方程(组)的符号解用命令 dsolve. 命令格式如下:s=dsolve(方程 1,方程 2,初始条件 1,初始条件 2,自变量)说明:用字符串表示方程,自变量缺省则默认为 t. 导数用 D 表示, 2 阶导数用 D2 表示,以此类推。返回值 s 是符号解.例 1. 求初值问题 的解。y(t), 0 =23dytt=-dsolve 命令格式是: dsolve(Dy = y*t/(t-5),y(0) = 2)ans =-2/3125*exp(
2、t)*(t-5)5或者s=dsolve(Dy = y*t/(t-5),y(0) = 2)s =-2/3125*exp(t)*(t-5)5二阶或更高阶方程的处理情况相类似。例如:, y(0) = -1, y(0) = 220dyx-写成如下的形式输入 MATLAB: dsolve(D2y - y = 0,y(0) = -1,Dy(0) = 2)ans =-3/2*exp(-t)+1/2*exp(t)例 2: 求 满足初始条件 的符sin(2)yxy(0),()1y号解.写成如下的形式输入 MATLAB:s=dsolve(D2y=sin(2*x)-y,y(0)=0,Dy(0)=1,x)simpli
3、fy(s) %如果得到符号解比较复杂,可以试试化简pretty(s) %显示漂亮的形式。大家得到的结果是什么呢?(二) 微分方程的数值解.一般说来,只有对一些典型的常微分方程,才能求出它们的一般解.然而在实际问题中遇到的常微分方程往往很复杂,在许多情况下得不出一般解.所以一般是要求在若干点的近似数值解. 求数值解的命令如下:xout,yout=ode45(equation,x0,xm,y0)说明:(1) 返回值中, xout 表示自变量的取值点(x0,x1,xn), yout 表示数值解,它是一个矩阵,它的每一列对应 y 的一个分量。(2) 这里equation 必须是事先定义的表示微分方程
4、(组)的 M-文件。(3) x0,xm是自变量的区间。(4) y0 是初始向量值。(5)ode45 还可以换成其他算法,如 ode23.注意: 命令 ode45 或 ode23 是对一阶常微分方程 (组)设计的,因此对高阶常微分方程,需将它转化为一阶常微分方程组.例如对二阶常微分方程 ,通过令(1)0yy得到一阶常微分方方程组 .12,yy 122()y在求数值解时,我们往往将数值解与画图结合, 将数值解用图像呈现出来.例 3: 求解微分方程组1211120.3().,().98dyytyy先定义 M-文件 fun1.m。function x=fun1(t,y)x=y(1)*y(2)-0.3*
5、y(1),-y(1)*y(2) ;然后ts=0,50; % 写成 ts=0:50 也行y0=0.02,0.98; % 表示初始值t,y=ode45(fun1,ts,y0);plot(t,y(:,1),t,y(:,2) %根据 x 的第一、二列同时作两条曲线grid %为了观察方便,可添上网格线.例 4: 求解微分方程 .先求符号解,1,(0)yty再求数值解, 并作图进行比较.s=dsolve(Dy=-y+t+1,y(0)=1,t)simplify(s)可得符号解为 y=t+exp(-t).为了求数值解,先编写 M-文件 fun.mfunction f=fun2(t,y)f=-y+t+1;保存
6、,再运行如下命令:cleart=0:0.02:1;y=t+exp(-t);plot(t,y) %画符号解的图形hold on %保留已画好的图形 ,t,y=ode45(fun2,0,1,1);plot(t,y,ro); %画数值解图形,用红色小圆圈xlabel(t),ylabel(y) %标上各坐标名称运行结果见下图, 可见符号解和数值解吻合得很好.作业:问题 1:求 满足初始条件4290yy的符号解。(0),()5y问题 2:解微分方程组初值问题: cos;sin;(0)1,(0)1.dyttxtdty=-=试画出其相图。. 问题 3:求解微分方程 2(1),(0)1,()3xyy先求符号解,再求数值解, 并将符号解和数值解的图形进行比较.