本讲主要说一下微分方程的数值解法,在数模中常微分方程是经常会碰到的问题,我们还会附带说一下差分方程和偏微分方程的数值解法。

微分方程的数值解法:

1)显示解:dsolve

example:

1 %farmat:dsolve('diff_equation''condition1,condition2,…''var')
2 %example%
3 y=dsolve('D3y-D2y=x','y(1)=8,Dy(1)=7,D2y(2)=4','x');

介绍数值解前先做两个铺垫

a.高阶微分方程初值问题化为一阶常微分方程组:

 通过换元,化成标准形式:

 y’=F(t,y),y(0)=y0

b.匿名函数:

%F=@(x,y)[......]

2)Euler法:离散化思想

3)Runge-Kutta法:ode23/ode45

%Farmat:[T,Y]=solver('F',tspan,y0)

若把F写成匿名函数的形式则没有引号!!!

Practice:Verderpol微分方程

Solution:

将二阶问题化成标准的一阶形式:

[y1’;y2’]=F[y2;7(1-y1^2)y2-y1];y1(0)=1,y2(0)=0

1 F=@(t,y)[y(2);7*(1-y(1)^2)*y(2)-y(1)];
2 [T,Y]=ode45(F,[0 40],[1;0]);
3 plot(T,Y(:,1));

 

 

 

 

posted on 2013-07-04 22:51  uumonkey  阅读(362)  评论(0编辑  收藏  举报