本文已同步发表于本人博客哔哔哔哔-微分方程初值问题及matlab代码
前言
科学计算中常遇到一阶微分方程的初值问题:
y ′ = f ( x , y ) , x ∈ [ x 0 , b ] , y ( x 0 ) = y 0 . y' = f(x,y), x\in[x_0,b],\\ y(x_0) = y_0. y′=f(x,y),x∈[x0,b],y(x0)=y0.
以下介绍几种常用方法
欧拉法
公式
经过推导可以得到公式
y n + 1 = y n + h f ( x n , y n ) y_{n+1} = y_n+hf(x_n,y_n) yn+1=yn+hf(xn,yn)
代码
matlab代码如下
eular.m
syms x;
x=input('x0='); %初始值x0
y=input('y(x0)='); %初始值y0
f(x,y)=input('dy/dx='); %输入y'
h=input('h='); %步长
t=input('x_final=')-x/h; %x的目标值
for i=1:t
y=y+h*f(x,y);
x=x+h;