MATLAB数值计算之常微分方程的初始值问题求解-向前欧拉算法、泰勒级数算法,Runge-Kutta算法

Tip:在接下来,我会更新一些关于MATLAB数值计算的博客,像常微分方程的初始值问题求解,求微分积分,解线性方程与非线性方程组,差值与拟合还有求极值等,需要的小伙伴可以关注一下

常微分方程的初始值问题

一、一般形式:

常微分方程的初始值问题一般形式为:
{ d y d x = f ( x , y ) y ( x 0 ) = y 0 \begin{cases} \dfrac{dy}{dx} =f(x,y)\\ y(x_0)=y_0 \end{cases} dxdy=f(x,y)y(x0)=y0

二、三种求解算法:

1.向前欧拉(Euler)算法
原理:

MATLAB数值计算之常微分方程的初始值问题求解-向前欧拉算法、泰勒级数算法,Runge-Kutta算法_第1张图片
知道一个点(x0,y0)和斜率,就可以推得下一个x点的y值对应为:
y = y 0 + d y d x ∣ x 0 × ( x − x 0 ) y=y_0+\dfrac{dy}{dx} |_{x_{0}}\times(x-x_0) y=y0+dxdyx0×(xx0)
由于一阶导数就是f(x,y),把式子化成
y = y 0 + f ( x 0 , y 0 ) × ( x − x 0 ) y=y_0+f(x_0,y_0)\times(x-x_0) y=y0+fx0,y0×(x

你可能感兴趣的:(MATLAB数值计算,Runge-Kutta算法,泰勒级数算法,欧拉算法,数值计算)