在欧拉方法变得不可靠之前,可以使用的最小步长是多少?

计算科学 一体化
2021-12-19 23:08:27

特别是,如果欧拉方法在计算机上实现,在舍入误差导致欧拉近似变得完全不可靠之前可以使用的最小步长是多少?

我想这是步长达到机器epsilon的时候?例如,如果机器 epsilon 是 e-16,那么一旦步长大约是 e-16,欧拉近似值就不可靠了。

1个回答

您可以使用下面的代码轻松地计算两侧(类似于欧拉的一阶)和中心(二阶)差异。基本上,由于浮点引起的错误比机器 epsilon 甚至对于双精度所建议的要快得多。当然,单精度的情况更糟(您可以通过将delta_x行更改为delta_x = numpy.logspace(-17, 1.0, 100, dtype=numpy.float16).

import numpy
import matplotlib.pyplot as plt

delta_x = numpy.logspace(-17, 1.0, 100)
x = 1.0
f_hat_1 = (numpy.exp(x + delta_x) - numpy.exp(x)) / (delta_x)
f_hat_2 = (numpy.exp(x + delta_x) - numpy.exp(x - delta_x)) / (2.0 * delta_x)

fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.loglog(delta_x, numpy.abs(f_hat_1 - numpy.exp(1)), 'o-', label="One-Sided")
axes.loglog(delta_x, numpy.abs(f_hat_2 - numpy.exp(1)), 's-', label="Centered")
axes.legend(loc=3)
axes.set_xlabel("$\Delta x$")
axes.set_ylabel("Absolute Error")
plt.show()

在此处输入图像描述