问题描述
我正在尝试使用泰勒级数计算cos(x)
的值:
Value of cos(x) with Taylor Series
我的代码如下。
x = float(input("x: "))
n = int(input("n: "))
k=0
s=0
sign=1
while k<n:
term = sign * x **(k)/math.factorial(k)
s = s+term
k = k+2
sign = -sign
有没有一种方法可以不使用**
-power或factorial
功能,而不能使用其他功能。我的想法是只执行一个循环就可以运行代码。
n
代表系列中的第n
个元素,例如x^4/x!
是泰勒级数的第三个元素。
解决方法
注意4! = 2! * 3 * 4;请注意,x ^ 4 = x ^ 2 * x * x。
您可以执行以下操作,而不是每次都进行计算:
x = float(input("x: "))
n = int(input("n: "))
k = 0
s = 0
sign = 1
factorial = 1
x_k = 1
while k < n:
term = sign * x_k / factorial
s = s + term
k = k + 2
# calculate next k! and x ^ k
factorial *= k * (k - 1)
x_k *= x * x
sign = -sign