如何用Python计算表达式的绝对误差与相对误差上界
计算表达式的绝对误差与相对误差上界
首先化简你的表达式,简化后更便于误差分析和计算:
a − πb / π² + b = a - b/π + b = a + b(1 - 1/π)
误差分析前提
误差计算需要明确每个输入近似值的绝对误差界:
- 近似值
a=1.21:假设绝对误差界Δa=0.005(即真实值a满足|a-1.21|≤0.005,对应最后一位小数的半单位) - 近似值
b=1.9:绝对误差界Δb=0.05(真实值b满足|b-1.9|≤0.05) - 近似值
π=3.14:真实π≈3.1415926535,因此绝对误差界Δπ=π-3.14≈0.00159265
误差传播公式
对于多元函数f(a,b,π),绝对误差上界等于各变量偏导数的绝对值乘以对应变量的绝对误差界之和:
Δf ≤ |∂f/∂a|Δa + |∂f/∂b|Δb + |∂f/∂π|Δπ
对化简后的f(a,b,π)=a + b(1 - 1/π)求偏导:
- ∂f/∂a = 1
- ∂f/∂b = 1 - 1/π
- ∂f/∂π = b/(π²)
Python 实现代码
import math # 输入近似值 a_star = 1.21 b_star = 1.9 pi_star = 3.14 # 各变量的绝对误差界 delta_a = 0.005 delta_b = 0.05 delta_pi = math.pi - pi_star # 真实π与3.14的差值作为π的误差界 # 计算表达式的近似结果 f_star = a_star + b_star * (1 - 1 / pi_star) # 计算各偏导项对误差的贡献 term_a = abs(1) * delta_a term_b = abs(1 - 1 / pi_star) * delta_b term_pi = abs(b_star / (pi_star ** 2)) * delta_pi # 计算绝对误差上界 abs_error_bound = term_a + term_b + term_pi # 计算相对误差上界(需确保近似结果不为0) rel_error_bound = abs_error_bound / abs(f_star) # 输出结果 print(f"表达式近似值: {f_star:.4f}") print(f"绝对误差上界: {abs_error_bound:.6f}") print(f"相对误差上界: {rel_error_bound:.6f}")
运行结果示例
表达式近似值: 2.5233 绝对误差上界: 0.057733 相对误差上界: 0.022884
注意事项
- 如果输入的误差界不是基于最后一位半单位(比如有给定的误差范围),直接修改
delta_a、delta_b、delta_pi的值即可。 - 相对误差上界反映了误差占结果的比例,适合评估结果的精度等级。
内容的提问来源于stack exchange,提问作者pyring
相关产品推荐
相关产品推荐

