微分方程模型

matlab求解微分方程

%dsolve('equations','initial conditions')
%使用
syms y(x); %定义y是关于x的函数
eq = y-diff(y,x) == 2*x %将方程付给eq
dsolve(eq)%求通解
dsolve(eq,y(0) == 3)%求特解

对多元微分方程

\[ \left.\{ \begin{array}{l} \frac{dx} {dt}=y\\ \frac{dy}{dt}=-x \end{array} \right. \]

syms x(t),y(t);
eq1 = diff(x,t)==y;
eq2 = diff(y,t)==-x;
eqs = [eq1 eq2];
conds = [x(0)==0 y(0)==0];
[xsol,ysol] = dsolve(eqs, conds);

对于大多数微分方程,很难求解解析解,一般求数值解。

数值解一般是通过将函数离散化,例如\(\frac{df}{dx}=\frac{f(n+1)-f(n)}{\Delta x}\),然后将\(\Delta x理解为步长通过迭代求解.\)

ODE系类函数(Ordinary Differential Equation)

求数值解常用ode系列函数(常微分方程)

ode函数分为两类,求解刚性非刚性问题

两类问题的分类大体上是根据变化的陡峭程度来分的。

非刚性ode求解命令
求解器solver 功能 说明
ode45 一步算法:4、5阶龙格库塔方程:累计截断误差(Δx)^5 大部分尝试的首选算法
ode23 一步算法:2、3阶龙格库塔方程:累计截断误差(Δx)^3 适用于精度较低的情形
ode113 多步算法:Adams 计算时间比ode45短
刚性ode求解命令
求解器solver 功能 说明
ode23t 梯形算法 适度刚性情形
ode15s 多步法:Gear’s反向数值微分:精度中等 若ode45失效时,可以尝试使用
ode23s 一步法:2阶Rosebrock算法:精度低 当精度较低时,计算时间比ode15s短
ode23tb 梯形算法:精度低 当精度较低时,计算时间比ode15s短

函数使用见常微分方程的函数:常微分方程 - MATLAB & Simulink - MathWorks 中国

posted @ 2024-07-09 18:35  West11  阅读(69)  评论(0)    收藏  举报