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 中国
标签:函数,求解,模型,算法,微分方程,eq,ode From: https://www.cnblogs.com/cxy1114blog/p/18292555