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

求助:如何实现级数展开模拟math.sin与math.tan的符号翻转

嘿,我来帮你搞定这个级数展开里的交替符号问题!其实这个问题的核心很简单,咱们一步步来实现自定义的sin和tan函数:

实现自定义sin函数(级数展开)

首先明确sin(x)的级数展开公式:

sin(x) = x − x³/3! + x⁵/5! − x⁷/7! + ... = Σ(n=0到∞)[(-1)ⁿ * x^(2n+1)/(2n+1)!]

这里的正负交替可以通过(-1)**n来实现:当n为偶数时,(-1)**n等于1(项为正);n为奇数时等于-1(项为负),完美匹配级数的符号要求。

我们可以通过循环累加每一项,直到项的绝对值小到可以忽略(比如小于1e-10,保证计算精度):

# 如果不想依赖math库,后面可以替换为自定义阶乘函数
from math import factorial

def my_sin(x, precision=1e-10):
    result = 0.0
    n = 0
    while True:
        # 计算当前项的分子:控制符号 + x的奇次幂
        numerator = (-1)**n * (x ** (2*n + 1))
        # 分母:对应奇数次的阶乘
        denominator = factorial(2*n + 1)
        current_term = numerator / denominator
        
        # 当项足够小时,停止循环保证精度
        if abs(current_term) < precision:
            break
        result += current_term
        n += 1
    return result

如果完全不想使用math库,咱们可以自己实现阶乘函数替换掉factorial:

def my_factorial(n):
    if n in (0, 1):
        return 1
    fact = 1
    for i in range(2, n+1):
        fact *= i
    return fact

# 修改my_sin里的分母部分即可:
# denominator = my_factorial(2*n + 1)
实现自定义tan函数

按照你提到的公式tan(x) = sin(x) / √(1 − sin(x)^2),我们可以基于上面的my_sin来实现,同样如果不想用math库的平方根,也可以用牛顿迭代法自定义一个:

def my_sqrt(num, precision=1e-10):
    if num < 0:
        raise ValueError("无法计算负数的平方根")
    if num == 0:
        return 0.0
    guess = num / 2.0
    # 牛顿迭代法逼近平方根
    while abs(guess**2 - num) > precision:
        guess = (guess + num / guess) / 2.0
    return guess

def my_tan(x):
    sin_val = my_sin(x)
    cos_val = my_sqrt(1 - sin_val**2)
    # 避免cos值接近0时的除零错误(比如x接近π/2 + kπ)
    if abs(cos_val) < 1e-10:
        raise ValueError("tan(x)在x = π/2 + kπ处无定义")
    return sin_val / cos_val
测试验证

可以对比math库的结果看看精度:

import math

test_x = math.pi / 6  # 对应30度,sin值为0.5,tan值约为0.57735
print("自定义sin(π/6):", my_sin(test_x))
print("math.sin(π/6):", math.sin(test_x))
print("自定义tan(π/6):", my_tan(test_x))
print("math.tan(π/6):", math.tan(test_x))

这样就完美解决了级数展开的交替符号问题,核心就是用(-1)**n来控制每一项的正负~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:12