使用泰勒展开方法线逼近三角函数和反三角函数

该代码实现了用泰勒级数展开的方法来逼近正弦、余弦、正切、反正弦、反余弦和反正切等数学函数,包括了单参数和双参数的反正切函数。通过定义系数函数并调用`taylor_approximation`通用函数进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

泰勒展开

def taylor_approximation(func, x, n):
    """
    使用泰勒级数展开逼近函数
    """
    result = 0.0
    for i in range(n):
        coef = func(i)
        term = coef * math.pow(x, i)
        result += term
    return result

sin

def approximate_sin(x, n):
    """
    使用泰勒级数展开逼近正弦函数
    """
    def coef(i):
        return (-1) ** i / math.factorial(2 * i + 1)
    return taylor_approximation(coef, x, n)

cos

def approximate_cos(x, n):
    """
    使用泰勒级数展开逼近余弦函数
    """
    def coef(i):
        return (-1) ** i / math.factorial(2 * i)
    return taylor_approximation(coef, x, n)

tan

def approximate_tan(x, n):
    """
    使用泰勒级数展开逼近正切函数
    """
    def coef(i):
        if i == 0:
            return 0
        elif i % 2 == 1:
            return 0
        else:
            return 2 * math.pow(-1, i // 2) * (2 ** (2 * i) - 1) * math.factorial(2 * i)
    return taylor_approximation(coef, x, n)

arcsin

def approximate_arcsin(x, n):
    """
    使用泰勒级数展开逼近反正弦函数
    """
    def coef(i):
        numerator = math.factorial(2 * i)
        denominator = 4 ** i * math.factorial(i) ** 2 * (2 * i + 1)
        return numerator / denominator
    return taylor_approximation(coef, x, n)

arccos

def approximate_arccos(x, n):
    """
    使用泰勒级数展开逼近反余弦函数
    """
    def coef(i):
        return (-1) ** i * approximate_arcsin(x, i)
    return math.pi / 2 - taylor_approximation(coef, x, n)

arctan

def approximate_arctan(x, n):
    """
    使用泰勒级数展开逼近反正切函数
    """
    def coef(i):
        return (-1) ** i / (2 * i + 1)
    return taylor_approximation(coef, x, n)

arctan2

# 使用泰勒级数展开逼近arctan2函数(两个参数版本)
def approximate_arctan2(y, x, n):
    """
    使用泰勒级数展开逼近反正切函数(两个参数版本)
    """
    if x == 0.0:
        if y > 0.0:
            return math.pi / 2
        elif y < 0.0:
            return -math.pi / 2
        else:
            return 0.0
    else:
        angle = approximate_arctan(y / x, n)
        if x < 0.0:
            if y >= 0.0:
                angle += math.pi
            else:
                angle -= math.pi
        return angle

# 示例使用
x = 1.0  # 输入值 x
y = 2.0  # 输入值 y
n = 10   # 截断
approximation = approximate_arctan2(y, x, n)
print(approximation)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值