数学建模社区-数学中国

标题: 二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题 [打印本页]

作者: 2744557306    时间: 2023-12-31 17:55
标题: 二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:$ ]& V4 k; ?6 \3 p3 P3 J9 H" N- y! H
function y = Taylor(a, b, N, af). j: S9 {  Y: r. W& l" o+ _! l
    h = (b - a) / N;8 H" P4 A8 D$ k, `/ `2 |
    x(1) = a;
1 A# H) y; f5 n: i5 Z0 z    y2(1) = af;
5 A& R; }7 s& W    y4(1) = af;
: Y& f: z5 s9 u9 p6 a: c/ ?+ i    jqj(1) = af;
  k2 E8 A4 X1 V- k) v) ^3 v( @& o  K% v6 [! L
    for i = 2:N9 L! k  w( ^/ H" n
        % 二阶Taylor法
% J9 G8 `# g* d4 Z        y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);: t5 g" I: j2 U( W2 g

1 h, C% }* N& Q: m2 l        % 四阶Taylor法/ x0 v+ Q# u) y5 K: T
        y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);
/ \5 d1 W  c) p/ L9 \
# {0 u9 |7 [" |& X9 c- q, ~        x(i) = a + (i-1) * h;7 P1 C6 a4 g. Y6 A- _# G- `: ~
        jqj(i) = x(i) + exp(-x(i));5 u+ g/ _& w8 k9 v
    end
2 b, ?2 c2 l3 I  i- s
1 Y, j3 P# R" J    % 将结果输出为矩阵形式
! p) z& n2 N$ p    result = [x', y2', y4', jqj'];7 v7 C& D) v& I0 \  u
, ]1 y& X" P! }; j; Q
    % 绘制曲线
& F& Y, K1 E  g8 S  j. y    plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
' k: J& W$ C! T7 r4 h    legend('Taylor2法', 'Taylor4法', '精确解');6 C+ B+ n1 W) t9 T; H8 N+ v! A
end* x4 g& ^1 Q$ D% u
: L6 r: U; ~/ [, B
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。9 o: y3 Z% q; _- r' A/ e
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。  y# ^; g& O" l8 h
8 @1 P& P6 E1 n
! k8 I6 U# z) J4 q





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5