- 在线时间
- 482 小时
- 最后登录
- 2026-9-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7953 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2978
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1183
- 主题
- 1198
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
这段 MATLAB 代码实现了使用二阶和四阶的泰勒展开法(Taylor's method)来数值求解常微分方程初值问题,并将结果与精确解进行比较。以下是代码的主要解释:
, L' m' {+ A ]function y = Taylor(a, b, N, af)9 n3 U- _4 |; {. N9 w& n- t: j h
h = (b - a) / N;- p! U1 ~4 i$ `" a* x+ B0 t( M4 n" k
x(1) = a;! _3 L; u' ^' A' R6 A
y2(1) = af;
3 p* [1 I- f( ]/ W5 l: p, U' p+ G y4(1) = af;
4 u/ a k" s! U: _ jqj(1) = af;4 f& y+ R8 B0 I: a" E7 q5 c
. U6 J" s( }# _. x+ R9 z6 v
for i = 2:N
0 C- P1 |/ C0 H7 @( {* f* U % 二阶Taylor法" t$ r* ^( G/ m+ J
y2(i) = y2(i-1) + h * ((1 - h/2) * (x(i-1) - y2(i-1)) + 1);
3 W% A. F t! L9 U+ I8 w! r4 M
/ M: Y( h# ^( T3 {. C! x# | % 四阶Taylor法
S6 g4 j! m) x" @6 }7 N y4(i) = y4(i-1) + h * ((1 - h/2 + h^2/6 - h^3/24) * (x(i-1) - y4(i-1)) + 1);
2 `/ z) l# k0 X( Y6 B: M p" {( T0 R& n, S5 n
x(i) = a + (i-1) * h;: L: B9 `, Y$ ^8 D3 \
jqj(i) = x(i) + exp(-x(i));
, L3 l" J: J; S end
2 [0 U3 `& a, t2 F8 t8 m4 _8 }
& ? _0 y! f5 }1 [; R! r % 将结果输出为矩阵形式
9 ]- L4 B6 a/ z9 ?# }0 J9 ? result = [x', y2', y4', jqj'];
' m- H. _! s& h- t& q1 v5 L E# G) m' B: W2 _! `, ^7 T4 s4 x9 {
% 绘制曲线: V l! }) H( c# Y; r0 _, _
plot(x, y2, 'r', x, y4, 'b', x, jqj, 'g');
8 m9 s5 X: a3 q legend('Taylor2法', 'Taylor4法', '精确解');+ m w, `, V+ U$ J3 f
end
; }9 W) A; H; l, x% F. y; x3 O5 ~4 ^7 ?
该函数的输入参数包括求解区间 [a, b]、步数 N 以及初始条件 af。函数使用二阶和四阶的泰勒展开法来逐步求解微分方程。最后,结果以矩阵形式输出,并绘制了二阶Taylor法、四阶Taylor法和精确解的曲线。! S; v& U: l, |9 b
你可以调用这个函数,例如 Taylor(0, 1, 100, 1),其中参数表示解在区间 [0, 1] 上,步数为 100,初始条件为 1。( f" N% t1 m' F$ h: o+ c( _
" X% i# w6 D" \
) H! L: \. @# `- n |
zan
|