我需要使用泰勒展开式获得 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
在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)