数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-31 17:55
标题: 二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:: k* o4 x, K  G( b: ^2 ~
function y = Taylor(a, b, N, af)# T+ T* i- J  c6 k; |
    h = (b - a) / N;
) Y/ z+ m: A, a. B  Q! K    x(1) = a;
) E: M+ s) P" t5 u" U7 x3 S    y2(1) = af;5 v3 o% r" K  K4 F
    y4(1) = af;: j, Q1 {. D) R5 M* ^
    jqj(1) = af;9 x- r6 n( [4 @: o: R

, m5 A9 \5 L# Q4 [    for i = 2:N6 }# C8 d* W. [% O. p; w7 H" s
        % 二阶Taylor法/ S/ X7 r/ f+ r* \
        y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
4 J/ c5 D( ?' ~* G- l( q( E
3 b. D- p/ H5 v+ d7 D6 ]        % 四阶Taylor法
! q/ U1 K# @( {* Z) c4 ^% h- z2 m( @' O' T        y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);
1 U, ~: C" b, x/ O) j& O
" n+ E% c/ E; Z! }' f        x(i) = a + (i-1) * h;
9 o1 R; w" O$ p/ W- d5 L        jqj(i) = x(i) + exp(-x(i));$ P1 K% Q7 g9 C
    end
, s8 s, H0 d1 i/ q  Z4 i
8 j5 q3 F( M1 H- t    % 将结果输出为矩阵形式, A  a3 C/ {( j
    result = [x', y2', y4', jqj'];) m9 Q' I: d  i9 N4 W# I

3 b7 M2 t! o) {3 N+ r0 a2 z8 z3 \  g5 o- X    % 绘制曲线9 o  Z& h+ ]8 o  s! w# l, M
    plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
! y& ^9 }8 O" [! [3 v( n    legend('Taylor2法', 'Taylor4法', '精确解');
  q* K% ?1 _! r/ Eend
* p' I/ r0 Q) V( j4 h9 y8 g7 I7 }0 a* z$ o* O0 A
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。2 k6 n( r' y0 {( f# T9 f4 G* O) [
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。$ S5 x3 S: O8 h- T/ a  c: u+ h6 U

2 G- v0 N" C5 o5 [# n1 _" V. `4 P6 ]3 B) e) q





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