使用泰勒级数近似 Sin(x)

问题描述 投票:0回答:1

我需要使用泰勒展开式获得 sin(x) 的近似值:

泰勒展开图

这是代码:

def factorial(number):    # Factorial Function
    s = 1
    for k in range(1, number):
        s *= k
    return s


ceta = eval(input("Enter angle of sin: "))

x = (ceta * 3.14) / 360  # Change from degree to radian

n = 15
sin = x
mult = -1

for i in range(3, n+1, 2):   # The 2 step will skip from 3 to 5 to 7 and so on until 15.
    sin += (x ** i) / factorial(i) * mult
    mult = mult * -1

print("sin of", ceta, "is", sin)

阶乘函数工作正常,问题出在for循环中,但我找不到它。

我在 RUN 中输入了 sin( 30 ),但它给了我 0.258 而不是 0.5

python python-3.x math pycharm
1个回答
0
投票

在def阶乘中,尝试将循环更改为:for k in range(1, number + 1)。另外,我不建议使用 3.14 作为 pi,您可以使用 math.pi 或写下更多小数。我第一次看到有人使用 eval,尝试将其更改为 floaat。

import math

def factorial(number):  # Factorial Function
    s = 1
    for k in range(1, number + 1):  # Fixed range to include 'number'
        s *= k
    return s

# float instead of 
ceta = float(input("Enter angle of sin: "))

# math.pi instead of 3.14
x = (ceta * math.pi) / 180  # Change from degree to radian

n = 15
sin = x
mult = -1

for i in range(3, n+1, 2):  
    sin += (x ** i) / factorial(i) * mult
    mult *= -1  # It's equivalent to 'mult = -mult'

print("sin of", ceta, "is", sin)
© www.soinside.com 2019 - 2024. All rights reserved.