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

使用麦克劳林级数估算正弦时遇TypeError: numpy.ndarray不可调用错误

修复麦克劳林级数估算正弦值的Python代码错误

你的代码存在三个关键问题,导致了报错和计算错误:

  • np.sum调用错误:np.sum是函数,必须用括号()传参,而不是方括号[](方括号用于数组索引)。
  • 数组运算语法错误:(-1)**n是numpy数组,后续直接跟(x**(2*n+1))会被解释为尝试调用这个数组,这是非法操作。需要用乘法运算符*连接两个数组的运算,即(-1)**n * x**(2*n+1)。
  • 误差计算逻辑错误:你估算的是sin(5),但误差计算里用了sin(10),这会导致误差值完全错误,应该改为sin(5) - maclaurin。

修复后的完整代码如下:

from math import sin, factorial
import numpy as np

fac = np.vectorize(factorial)

def sin_x(x, terms=10):
    """计算sin(x)的麦克劳林级数近似值"""
    n = np.arange(terms)
    # 修复:np.sum用括号,数组间用乘法*连接
    return np.sum(((-1)**n) * (x**(2*n+1)) / fac(2*n+1))

if __name__ == "__main__":
    actual_value = sin(5)
    print(f"实际值: {actual_value}")
    
    print("N (项数)\t麦克劳林近似值\t误差")
    
    for n in range(1, 6):
        maclaurin = sin_x(5, terms=n)
        # 修复:用sin(5)计算误差
        error = actual_value - maclaurin
        print(f"{n}\t\t{maclaurin:.03f}\t\t{error:.03f}")

运行这段代码后,会输出正确的近似值和误差:

实际值: -0.9589242746631385
N (项数)       麦克劳林近似值    误差
1               5.000           5.959
2               -4.167          3.208
3               0.231           -1.190
4               -1.004          0.045
5               -0.957          -0.002

内容的提问来源于stack exchange,提问作者Fernand TAPE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:30:49