数学建模社区-数学中国
标题:
二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
[打印本页]
作者:
2744557306
时间:
2023-12-31 17:55
标题:
二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:
$ ]& V4 k; ?6 \3 p3 P3 J9 H" N- y! H
function y = Taylor(a, b, N, af)
. j: S9 { Y: r. W& l" o+ _! l
h = (b - a) / N;
8 H" P4 A8 D$ k, `/ `2 |
x(1) = a;
1 A# H) y; f5 n: i5 Z0 z
y2(1) = af;
5 A& R; }7 s& W
y4(1) = af;
: Y& f: z5 s9 u9 p6 a: c/ ?+ i
jqj(1) = af;
k2 E8 A4 X1 V- k) v) ^3 v( @
& o K% v6 [! L
for i = 2:N
9 L! k w( ^/ H" n
% 二阶Taylor法
% J9 G8 `# g* d4 Z
y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
: t5 g" I: j2 U( W2 g
1 h, C% }* N& Q: m2 l
% 四阶Taylor法
/ x0 v+ Q# u) y5 K: T
y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);
/ \5 d1 W c) p/ L9 \
# {0 u9 |7 [" |& X9 c- q, ~
x(i) = a + (i-1) * h;
7 P1 C6 a4 g. Y6 A- _# G- `: ~
jqj(i) = x(i) + exp(-x(i));
5 u+ g/ _& w8 k9 v
end
2 b, ?2 c2 l3 I i- s
1 Y, j3 P# R" J
% 将结果输出为矩阵形式
! p) z& n2 N$ p
result = [x', y2', y4', jqj'];
7 v7 C& D) v& I0 \ u
, ]1 y& X" P! }; j; Q
% 绘制曲线
& F& Y, K1 E g8 S j. y
plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
' k: J& W$ C! T7 r4 h
legend('Taylor2法', 'Taylor4法', '精确解');
6 C+ B+ n1 W) t9 T; H8 N+ v! A
end
* x4 g& ^1 Q$ D% u
: L6 r: U; ~/ [, B
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。
9 o: y3 Z% q; _- r' A/ e
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。
y# ^; g& O" l8 h
8 @1 P& P6 E1 n
! k8 I6 U# z) J4 q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5