【学习笔记】利用Matlab求解常微分方程

一、常微分方程的符号解

§1.1 符号说明

【学习笔记】利用Matlab求解常微分方程_第1张图片

§1.2 求解

y=dsolve('Equation1,Equation2,…,','Condition1,Condition2,…,','Name');

其中,dsolve函数用于求解常微分方程的符号解,Equation为微分方程(组),Condition为约束条件,Value为自变量名(默认为t)。
若未给定约束条件,则给出通解;若给出约束条件,则给出特解。

二、常微分方程的数值解

对于大部分的常微分方程,理论上其解是存在的,但我们无法求出其解析解,只能求出满足方程的一个近似的数值解。

§2.1 方程的标准形式

【学习笔记】利用Matlab求解常微分方程_第2张图片

§2.2 求解函数

[t,y]=solver('odefun',tspan,y0,options);

符号说明:

变量名 意义
t 满足方程的数值解对应的自变量t的值
y 满足方程的数值解
solver 求解器
odefun 显式微分方程中的f(t,y)函数
tspan 求解区间[t0,tf]
y0 约束条件(列向量)
options 求解参数设置,可以用odeset在计算前设定误差,输出参数,事件等

求解器solver说明:

求解器 说明
ode45 适用于非刚性ODE;一步算法;4,5阶Runge—Kutta方程;累计截断误差(△x)^5;大部分尝试的首选方法
ode23 适用于非刚性ODE;一步算法;2,3阶Runge—Kutta方程;累计截断误差(△x)^5;适用于精度较低的情形
ode113 适用于非刚性ODE;多步算法;Adams算法;计算时间短于ode45
ode23t 适用于刚性ODE;梯形算法;适用于适度刚性情形
ode15s 适用于刚性ODE;多步法;Gear’ s反向数值积分;中等精度;若ode45失效时,可以尝试使用
ode23s 适用于刚性ODE;单步法;2阶Rosebrock算法;低精度;精度较低时,计算时间短于ode15s
ode23tb 适用于刚性ODE;梯形算法;低精度;精度较低时,计算时间短于ode15s

§2.3 odefun函数的编写

function dx=odefun[t,x]
%% dx为返回值,是一个列向量
%% t表示时间(自变量),x是一个列向量
dx=zeros(n,1);
dx(1)=......;
dx(2)=......;
......
dx(n)=......;
end

其中,自定义函数odefun中的dx、x与一阶微分方程组的关系为:
【学习笔记】利用Matlab求解常微分方程_第3张图片

你可能感兴趣的:(笔记)