对于常微分方程,其解的主要形式有两类:解析解、数值解。
解析解,由字面意思可知是一种微分方程的解析式解。得到了微分方程的解析式解,再根据其解析式即可得出解在定义域内的任何点对应的解。
然而对于微分方程,就本人目前所学过的高数方面的,只有少数既定类型的微分方程有特定形式的解析解。所以对于绝大多数微分方程,在一定条件下得出其解析解是十分困难的。对于这类微分方程,前人想出一种得到其有限数值点的解,在计算机的计算中,在条件充足的前提下得到了能忽略其误差的解——数值解。数值解在工程实践中得到了充分的应用,虽然没有解析解的精确度但是其更容易得到,常见微分方程一般来说都能快速得到其数值解。
接下来简单记录一下对数值解的理解。
数值分析之欧拉法:
用老师讲解的一个例子。
原方程为Y'=-Y^2, 即f(t,y)=-Y^2;
lim(n-->n+1) Y'=(Yn+1-Yn)/(Tn+1-Tn) 。。。导数定义式 (将函数y分为n点,n趋于无穷)
递推公式为Yn+1=Yn+hf(tn,yn)=Yn(1-0.1yn)
解析解 Y=1/(1+T)
数值解即上述递推公式。当然这是最基础的解法,其解的精确度较低,精度好一点的如改进的欧拉法。。。
接下来说一下对matlab求解常微分方程封装的函数ode45的理解。
ode45表示四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(Δx)^5。
用法:sol =(t,y)= ode45(odefun,tspan,y0) odefun为封装的待求解函数
tspan表示求解的定义域
y0表示微分方程初值
(t,y)表示求得的数值解向量,t是向量时间点,定义点;y表示向量的值。
x=deval(sol,ti):计算由0de45得到的解在ti的值。
Matlab中求微分方程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb 。其中ode23为带有延时的微分方程的求解函数。