这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释: 9 X" F4 }! q0 Z" n4 [function y = Taylor(a, b, N, af) % O+ n$ e% k! t. ^: i1 |% f" U h = (b - a) / N;- k4 A, M }4 @4 d; y. R5 @
x(1) = a;0 c$ ~( t) B3 k! \3 A& R
y2(1) = af;" u A. {# x3 j/ H1 X( y
y4(1) = af; 4 r. A: N# e: {! Y* Y4 h jqj(1) = af; Y, L2 Y$ a d4 x1 K
* G5 N& n4 n8 ~7 I& Y for i = 2:N4 W6 D" z1 x. I" ^! G$ M
% 二阶Taylor法! w6 l8 b9 G" U) J% m( L" s" F$ Z
y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);' G) f+ g4 I, ~8 y# s9 x
F9 S7 O* k6 t5 n
% 四阶Taylor法, T2 n; r* p! A$ A) o: p
y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1); # O6 j2 ]9 e7 v2 |# G2 J# K# d S. V M
x(i) = a + (i-1) * h;* I5 I4 {$ t, s9 K+ G
jqj(i) = x(i) + exp(-x(i));2 s) R+ q: O9 W* ~' D( v; c
end ' j& p, c" D; K G 7 _8 u2 a/ s# \2 E! E9 Q % 将结果输出为矩阵形式% n! B. k7 ^6 X \8 T
result = [x', y2', y4', jqj']; 3 L& l) O/ K- }6 n9 n! S3 X7 I % I8 o% U+ S P6 }% n % 绘制曲线* G& c! m( K9 U% r$ P$ j# B' P' {
plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');' e4 ^2 [1 h, }; R+ R
legend('Taylor2法', 'Taylor4法', '精确解'); - k% Q, E# K1 m# ~* Rend* e3 z/ {# B9 F2 Q/ i% S