数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-31 17:55
标题: 二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:+ z* S8 N; n; T5 `
function y = Taylor(a, b, N, af): w4 E! Z4 R$ _) l9 s7 C0 M
    h = (b - a) / N;
7 z3 Z, O' e- ?' P* F" @: u. K0 H    x(1) = a;* i3 A7 d5 ]! o1 i2 F! b+ x8 ~
    y2(1) = af;
( G0 F* e( g6 z2 K1 _4 }* U    y4(1) = af;
6 C, W- u$ O1 {; i2 a    jqj(1) = af;
. z' w% ?- U0 I
# h+ C6 f7 \; ]- V2 p. q( i, D$ x$ b    for i = 2:N! H' j. o) q; _- y
        % 二阶Taylor法
! _" X- v" ~3 p- @/ A( [* U3 p        y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);. A# ?1 A, |. H+ ?+ J! H

$ F2 S" E  w  Y2 e        % 四阶Taylor法" I$ h( Y1 l/ z6 u; B( Q% @& q, v2 I
        y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);7 ?8 v; G$ B& |* J

9 f4 B5 d" H2 E  T% ?$ I        x(i) = a + (i-1) * h;- Q$ v# g% k' E: H
        jqj(i) = x(i) + exp(-x(i));
: K! \+ J6 c6 c' \    end
$ ^: u1 E! G7 Z3 X0 Z0 c
- H8 O5 L5 F+ I7 G# v+ F' [$ `    % 将结果输出为矩阵形式
. U. u1 G% |+ t; n, V: \6 L    result = [x', y2', y4', jqj'];( `; M2 g/ Q+ r
# L0 N9 U" Y" o* D
    % 绘制曲线
! D5 v: k2 L9 z' ^( ^    plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');  b* J* W+ `$ U) b7 O- y
    legend('Taylor2法', 'Taylor4法', '精确解');
7 P- y2 l" w1 K" xend
" y* `! N+ x: e; H4 h% S' j: p$ n0 a
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。3 b) K. o$ _- Z$ X5 ?% P" ?
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。
8 D- x! O) z8 l( ~! h% x6 F6 J5 ?0 M$ p: R4 L) U( K3 B" F
) K6 q% a5 T* ^9 z# B  d





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