最近同学毕设需要求解循坏摆的微分方程,我在帮忙过程中学习了一下常微分方程的解析解和数值解的求法,在此分享。
以下讲解遵循Matlab官方文档提供的方程和写法。
(强烈建议大家有问题多看官方文档,非常有用)
介绍一下核心函数
常用形式:S = dsolve(eqn,cond)
功能介绍:解微分方程eqn,其中eqn是一个符号方程,cond是初值条件(边界条件)。使用diff和==表示微分方程。例如,diff(y,x)==y表示方程dy/dx=y。通过将eqn指定为这些方程的向量来求解微分方程组。
1. 一阶常微分方程求解(无初值)
方程:dy/dt=ay
代码:
syms y(t) a; %syms 定义方程用的变量和未知常量(可有可无)。y(t)表示y是关于t的函数,求解t。
eqn=diff(y,t)==a*y; %diff(y,t)即dy/dt,默认为1阶。
S=dsolve(eqn) %dsolve()为求解函数,将方程放入即可
说明:首先定义方程所用变量和未知常量,然后列出微分方程,最后dsolve()求解。
结果:
S =
C2*exp(a*t)
分析:C2为未定的常数项,需要提供一个初值,才能确定。
2. 二阶常微分方程求解(无初值)
方程:dy²/dt²=ay
代码:
syms y(t) a; %syms 定义方程用的变量和未