数学建模社区-数学中国
标题:
二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
[打印本页]
作者:
2744557306
时间:
2023-12-31 17:55
标题:
二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:
% h- |2 o" y( J) |
function y = Taylor(a, b, N, af)
0 D$ U+ Z, }0 k" ?
h = (b - a) / N;
. q o. K7 O& T- R" s! [% ~
x(1) = a;
4 X/ V n, @& u' V* c
y2(1) = af;
. l* k: D/ ^" ~& {
y4(1) = af;
0 D) |4 g$ ~( [# r0 F# O
jqj(1) = af;
8 Q/ f; |* x8 ]: u: s
6 M# N2 j1 I' Z, `1 \+ u, W
for i = 2:N
# K' l# V) l9 d8 z2 `, f3 a
% 二阶Taylor法
3 c/ t1 y+ C3 `/ V) K5 R) a) b2 t
y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
1 w2 j8 p! ~% D1 I% Y4 ]
5 M$ B+ d: y" J: N/ ]) n* s
% 四阶Taylor法
8 u) G" C J4 ^1 E5 A; R9 `
y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);
( S* }& p- q0 d, h+ F
8 ?7 x; Y; r; N0 o( ]# r s
x(i) = a + (i-1) * h;
2 h" {' L/ V/ b5 S$ S$ I" x; Q4 R
jqj(i) = x(i) + exp(-x(i));
5 h. r- Y- {( S
end
; Y3 [: m2 W$ B. |- j; X/ p3 P+ \
5 B1 y; C7 ^( h- n
% 将结果输出为矩阵形式
9 K' B# I. x+ v, b2 ]3 v
result = [x', y2', y4', jqj'];
5 P1 J2 z" r. ~! ]3 T
5 s2 _) w8 V+ V. Y3 f
% 绘制曲线
. X* H& E5 m; f5 s% J& R' C' v
plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
' p# n% L' F9 z" L3 c7 ~' D5 ^
legend('Taylor2法', 'Taylor4法', '精确解');
/ _; E; T, w& K5 `! R, `; T1 m
end
4 W( F( V0 s% e
* r; z8 f$ q8 ?: B- P6 v) A
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。
1 B* _! g$ L5 k$ O# t! y) U
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。
- L# B! D& R* s' ?. U
9 `+ s' W$ `- }" _6 u
0 u- \2 X8 J: }
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5