微分方程数值解法的一些练习
用Euler法解决初值问题
以如下的初值问题为例:
u ′ = 4 t u 1 / 2 , 0 ≤ t ≤ 2 u ( 0 ) = 1 \begin{aligned} &u^{'} = 4tu^{1/2},0\leq t \leq 2\\ &u(0)=1 \end{aligned} u′=4tu1/2,0≤t≤2u(0)=1
该方程的真实解为:
u ( t ) = ( 1 + t 2 ) 2 u(t)=(1+t^2)^2 u(t)=(1+t2)2
如下我们进行数值求解,将区间[0,2]进行分划,步长h=0.1则:
f ( t n , u n ) = 4 n h u n 1 / 2 f(t_{n},u_{n})=4nhu_n^{1/2} f(tn,un)=4nhun1/2
function [y] = f(u,t)
%u的导函数
y = 4*t*sqrt(u);
end
显式欧拉法
公式如下:
u n + 1 = u n + h f ( t n , u n ) u_{n+1} =u_{n}+hf(t_{n},u_{n}) un+1=un+hf(t