数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-31 17:55
标题: 二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:  H6 ]5 i% f6 l
function y = Taylor(a, b, N, af)
& i6 z- u: {) S5 n! W. X    h = (b - a) / N;
! p$ f" s8 R3 a- x% x6 f5 n    x(1) = a;
( F$ n" F9 N, w- D+ O5 a/ C    y2(1) = af;
$ q% R$ D) ?; \    y4(1) = af;
6 d9 |9 j' a" U6 f  M& F    jqj(1) = af;2 {, c4 V5 F1 V9 d4 s9 N+ G
0 P$ Z2 h$ [8 K; ?( V4 a- ~' M
    for i = 2:N
  Q( d" u7 Z3 h  J/ `. z/ w        % 二阶Taylor法
$ Q# c3 s- P3 _; x* y# f$ {        y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
: V# ?! J' V9 y2 O1 [
# T  c4 d9 Z+ a% a/ l5 Q$ I        % 四阶Taylor法. v" u6 @5 ~& Q- L' c) L: p
        y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);) N8 t" F$ s3 Y) `# R
0 L8 K$ |; A0 c% m8 @
        x(i) = a + (i-1) * h;
# t. {6 J0 G. H3 J1 h0 R1 _        jqj(i) = x(i) + exp(-x(i));
- L7 @7 z- i, D7 r& ?2 t5 X" K    end
2 r# f( e! ?5 Z, q3 P6 h- M
1 p5 n) m% @! I9 n. S  i$ h    % 将结果输出为矩阵形式7 K; T, ?/ b' s: g1 l
    result = [x', y2', y4', jqj'];" T1 t; `0 B) M
( \, R0 B! ?1 U" A& t+ g( o
    % 绘制曲线7 P; g6 _! g3 G: N; \6 x
    plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
+ o$ n1 }" r4 u+ m; v( J2 v    legend('Taylor2法', 'Taylor4法', '精确解');
- q8 ~7 p& ~" H& dend
# H! T9 F4 m- U/ d: x4 X0 D7 J$ n& R2 w% E/ T% \3 |9 i5 y
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。0 n; P6 Q5 ]% Q2 y% W
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。" J8 K  Y$ Y( o2 R6 U

+ e7 X4 G5 R: @  l: `2 b* G( V' O( ~- Z1 q1 N4 C





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