微分方程模型
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)%求特解
对多元微分方程
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);
对于大多数微分方程,很难求解解析解,一般求数值解。
数值解一般是通过将函数离散化,例如
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 中国
本文作者:West11
本文链接:https://www.cnblogs.com/cxy1114blog/p/18292555
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步