欧拉方法求解微分方程时结果与真实值偏差大且发散的问题求助
欧拉方法求解微分方程时结果与真实值偏差大且发散的问题求助
大家好,我现在在用欧拉方法求解微分方程时遇到了棘手的问题——计算出的数值解和真实值偏差特别大,还出现了明显的发散情况,想请各位帮忙分析下问题出在哪。
我要解决的微分方程是:
$$y'=e^y$$
给定的求解区间是 $0\leq t\leq0.2$,初始条件为 $y(0)=1$。
首先我自己推导了解析解,得到:
$$y(t)=\ln{\frac{e}{1-et}}$$
之后我用欧拉方法做数值求解,取步长 $h=0.02$,用到的迭代公式如下:
- 定义微分方程的右端项:
f(t_i,y_i)=e^y - 欧拉迭代公式:
y_{i+1}=y_i+f(t_i,y_i)h
第一次迭代的计算结果为:
$$y(0.02)=1+e^{(1)}(0.02)=1.05436$$
我把不同 $t_i$ 对应的真实值和欧拉方法计算值整理成了对比表格:
| $t_i$ | $y_{real}$ | $y_{euler}$ |
|---|---|---|
| 0 | 1 | 1 |
| 0.02 | 0.9456 | 1.05436 |
| 0.04 | 0.8912 | 1.11177 |
| 0.06 | 0.8369 | 1.17257 |
| 0.08 | 0.7825 | 1.23717 |
| 0.1 | 0.7281 | 1.30609 |
| 0.12 | 0.6738 | 1.37993 |
| 0.14 | 0.6194 | 1.45942 |
| 0.16 | 0.565 | 1.54549 |
| 0.18 | 0.5107 | 1.63929 |
| 0.2 | 0.4563 | 1.74233 |
能明显看到,欧拉方法算出的结果一直在增大,可真实值是持续减小的,两者的偏差随着迭代次数增加越来越大,完全背离了真实解的趋势。我实在搞不清问题出在哪,希望大家能帮我找找原因,谢谢!
备注:内容来源于stack exchange,提问作者Kich Vachlet
相关产品推荐
相关产品推荐

