用MATLAB求一阶微分方程(组)数值解
标准形式
标准形式要先写成左边是y的导数右边是本身函数或者自变量,然后写成.m文件类似:
function dy = df1(x,y)
dy=y-2*x;%标准形式
end
function dy=df2(x,y)
dy=zeros(3,1);%一定要写成列向量
dy(1)=y(2)*y(3);
dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);
end
如果有多个微分方程,dy=zeros(3,1);%一定要写成列向量
进行求解
[x,y]=ode45('df1',[0,3],3)
[x,y]=ode45('df2',[0,4*pi],[0,1,1])
3、[0,1,1]都是方程(组)的初始值,并且初始值的x=0;
就会得到一系列x,y值;
常用的求解函数
ode45(最常用)
- **问题类型:**非刚性
- **精准度:**中等
ode15s
- **问题类型:**刚性
- **精准度:**低到中
设定相对误差
和绝对误差
设定相对误差和绝对误差,这样可以提高微分方程数值解的精准度
options = odeset('reltol',1e-4,'abstol',1e-8);
[x,y] = ode45('df1',[0,2],3,options);
设置x的间隔
可以指定要求解的位置
[x,y] = ode45('df1',[0:0.001:2],3,options);