You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:54:56