python 求差分_数值微分|有限差分法的误差分析

博客介绍了在使用Python进行数值微分时,有限差分法的误差分析,特别是舍入误差和截断误差的影响。通过中心差分法计算二阶导数的例子,讨论了不同h值对结果精度的影响,揭示了在双精度浮点数运算中寻找最佳h值的重要性。此外,还提到了不同精度下有效数字的损失情况,并列举了与数值微分相关的其他方法。
摘要由CSDN通过智能技术生成

cf1ee881dc0803e814e36ead39217f6e.png

在所有有限差分表达式中,系数之和为零。对舍入误差的影响可能很大。很小时,的值几乎相等。当它们通过系数相乘再相加,可能会丢失几个有效数字。

以(1)为例,分子可能会为0。但是我们不能使h太大,因为这样截断错误将变得过大。为了解决这个矛盾,我们可以采取以下措施:

  • 1 使用双精度浮点数运算
  • 2 采用精确度至少为的有限差分公式

例如,用中心差分法计算 在 处的二阶导数。取不同的 值以及精度为 和 ,手算结果见下表

b79c2d1b5cae57061e512143660c3e2d.png

精确值为。精度为 时,的最佳值为0.08。由于截断和舍入错误的共同影响,三位有效数字丢失。大于最佳值,主要错误是由截断引起的。小于最佳值,舍入误差变得明显。

精度为 时,结果精确到四位有效数字。这是因为额外的精度降低了舍入误差。最佳约为0.02。

Python的双精度计算

import mathh = 0.02x = 1.0                                                                                   ddf = ( math.exp(-(x+h)) - 2*math.exp(-(x)) + math.exp(-(x-h)) ) / (h*h)print(ddf)

输出结果:

95cca804b62009df0e1ce6006a63837e.png

h的取值对双精度计算影响不大。

★★★★往期相关★★★★

数值微分|向前差分和向后差分

数值微分|中心差分法(Central Finite Difference Approximations)

数值微分|多项式的导数计算C++版

数值微分|多项式的导数计算

通过案例学Python之定义函数类

数值积分|第二类反常积分

数值积分|第一类反常积分

数值积分|中点法则(Midpoint Rule)

数值积分|龙贝格公式

数值积分|自适应辛普森积分公式

数值积分|自适应梯形积分

数值积分|牛顿-柯特斯公式

数值积分|高斯积分

数值积分|泰勒(Taylor)公式求积分

数值积分| 辛普森公式

Python实现辛普森公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值