常微分方程的数值解法—欧拉方法
欧拉公式: y n + 1 = y n + h f ( x n , y n ) y_{n+1}=y_{n}+h f\left(x_{n}, y_{n}\right) yn+1=yn+hf(xn,yn)
编写相关的.m文件求解常微分方程。
function [x,y] = myeuler(f,x0,y0,xf,h)
n = fix((xf-x0)/h);
y(1)=y0;
x(1)=x0;
for i=1:n
x(i+1) = x0+i*h;
y(i+1) = y(i)+h*feval(f,x(i),y(i));%欧拉公式
end
例 求解初值问题 { y ′ = y − 2 x y ( 0 < x < 1 ) y ( 0 ) = 1 \left\{\begin{array}{l}y^{\prime}=y-\frac{2 x}{y} \quad(0<x<1) \\ y(0)=1\end{array}\right. {y′=y−y2x(0<x<1)y(0)=1
(1)建立.m文件处理方程
function f = f(x,y)
f = y-2*x/y;
end
(2)求解常微分方程
[x,y] = myeuler('f',0,1,1,0.1)
x =
1 至 10 列
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000
11 列
1.0000
y =
1 至 10 列
1.0000 1.1000 1.1918 1.2774 1.3582 1.4351 1.5090 1.5803 1.6498 1.7178
11 列
1.7848
(3)验证精度
y1 = (1+2*x).^0.5
y1 =
1 至 10 列
1.0000 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733
11 列
1.7321
显示精度
plot(x,y,x,y1,'--')