- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:
! z9 _$ v e% i' ~( mfunction y = Taylor(a, b, N, af)+ v5 @3 M- `4 Z
h = (b - a) / N;8 T3 z. ^: u2 P, [; t. J* o
x(1) = a;) r; m5 e3 ?$ v6 R
y2(1) = af;% N4 Q0 S k. z7 L
y4(1) = af;
) U; \4 `: [4 u jqj(1) = af;4 `9 _4 g! C& q. E- L9 W
9 W0 z4 S, j3 X6 T0 `
for i = 2:N
. t! e" o1 j8 S: _4 ~0 |( X % 二阶Taylor法% f/ u5 {! l& n! `8 e, Q% j
y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
" B. ?3 m; Z, }7 [# y5 w$ M* U
% q2 X0 J+ J! l6 Z+ c0 {, P % 四阶Taylor法
; j3 j5 t! E- S( Y: F* l y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);' y k. s" {7 Y
2 j$ U, h# ]- E: Y w. q# r' H5 [* l+ O
x(i) = a + (i-1) * h;
' Q* o8 P' c2 u: d) E" w5 G- v jqj(i) = x(i) + exp(-x(i));+ i, Z$ M/ ]3 ?2 d+ M0 w
end4 Q* |; T6 r$ F( N7 I
3 P. O6 H# O! F* N, x. a% _ % 将结果输出为矩阵形式% e" W# L* F; N) j+ P7 j
result = [x', y2', y4', jqj'];: W6 C' U( w" v: T( c, ]5 X
8 ~ p" a( [" S+ x' C z; b* X
% 绘制曲线$ m% K, x* F$ f( M: j
plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
e5 ^5 V- C9 p0 x9 a' n legend('Taylor2法', 'Taylor4法', '精确解');; Y7 O! }8 {3 w
end8 z6 M! T4 D _2 V9 }6 D5 W
3 G0 x" i" V4 Y* C) x/ _该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。! R; C; L( u' D& f% ^4 s9 I
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。
+ a+ F3 w. L i" t9 J
, L" p. ?! P2 P! s1 R6 m9 y
4 \& S8 {# }3 {/ K5 Z4 U |
zan
|