Python实现带容差的Sin(X)泰勒级数迭代异常求助
泰勒级数计算sin(x)的迭代错误修复
问题根源
你的代码存在核心逻辑错误:循环内覆盖了初始输入的x变量。泰勒级数展开sin(x)的每一项公式为:
$$(-1)^c \cdot \frac{x^{2c+1}}{(2c+1)!}$$
这里的x是固定的输入值(即初始的math.pi/2),但你每次循环都将计算出的当前项赋值给x,导致后续迭代使用错误的基数计算,完全偏离泰勒级数的正确逻辑,自然无法收敛到目标值。
修复后的代码
import math # 保留初始输入的x值,避免循环中被修改 x_input = math.pi/2 tol = 0.01 target_sin = math.sin(x_input) total = 0 c = 0 while abs(total - target_sin) >= tol: # 单独计算当前项,使用固定的初始x值 term = ((-1)**c) * (x_input**(2*c+1)) / math.factorial(2*c+1) total += term c += 1 print("迭代结果:", total) print("迭代次数:", c) print("真实sin值:", target_sin)
修复说明
- 用
x_input存储初始输入值,彻底避免循环中变量被覆盖的问题 - 新增
term变量单独计算每一项,严格遵循泰勒级数展开规则 - 迭代逻辑回归正确路径,循环会逐步逼近目标值,直到满足容差要求
内容的提问来源于stack exchange,提问作者Chicken_Cutlet
相关产品推荐
相关产品推荐

