天天看点

matlab中常微分方程数值计算的方法

数学上求解数值解

利用数学理论推导的方法求得微分方程解称为解析解或者精确解,其特点是得到一个状态变量关于自变量的函数关系表达式。

利用数值计算方法求连续问题的近似解称为数值解。数值解的基本特点是利用数值计算方法和计算机编程得到一系列离散点上的近似解。

通常采用 欧拉方法、龙格-库塔方法进行数值计算

首先 把区间离散化: [a,b] 变成离散的点:  

matlab中常微分方程数值计算的方法

同时 记:      

matlab中常微分方程数值计算的方法

     即网格步长

欧拉格式:

当                                                   

matlab中常微分方程数值计算的方法

使用泰勒展开式:                    

matlab中常微分方程数值计算的方法

将高阶无穷小舍去,我们就可以得到了 欧拉显示格式,也叫作向前欧拉格式:

matlab中常微分方程数值计算的方法

其中

matlab中常微分方程数值计算的方法

                                  向后欧拉格式,也叫作向前欧拉格式

matlab中常微分方程数值计算的方法

当然,也可以用差分法、积分法、梯形公式等等方法来求数值解,还有龙格-库塔方法,就不仔细阐述了

matlab函数

用 dsolve 函数来 求解析解:

                                                            dsolve('方程式',‘条件’,'变量')

比如方程:                                 

matlab中常微分方程数值计算的方法
y=dsolve('D3y-D2y=x','y(1)=8','Dy(1)=7','Dy(2)=4','x')
           

 求数值解,用龙格-库塔方法            [t,y]=ode45(odefun,tspan,y0)

odefun 为 以表示微分方程的右端项

matlab中常微分方程数值计算的方法

的函数句柄或者 内联函数

tspan 表示自变量的范围

y0 是微分方程的初始值向量

比如:                      

matlab中常微分方程数值计算的方法
[email protected](x,y)-2*y+2*x^2+2*x;
[x,y]=ode45(f,[0,0.5],1)
           

会出现,x沿着步长增加、y也会随之变化一系列数值解

把 

matlab中常微分方程数值计算的方法

有方程:

matlab中常微分方程数值计算的方法
[t,Y]=ode45(@vdp,[0 20],[1 0]);
plot(t,Y(:,1),'k-o');


function dy= vdp(t,y)
dy=[y(2);(1-y(1)^2)*y(2)-y(1)];
end
           
matlab中常微分方程数值计算的方法

方程如下、使用方法一样,方程类型不一样:

matlab中常微分方程数值计算的方法

继续阅读