数学建模社区-数学中国
标题:
二阶和四阶的泰勒展开法(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" x
end
" 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