cos 的级数扩展 Python
Series Expansion of cos with Python
所以,我试图找到 cos(x)
的值,其中 x=1.2
。我觉得我写的脚本应该没问题,但是我得到的值不正确。那是; cos(1.2)=0.6988057880877979
,就 25
而言,我应该什么时候出去:cos(1.2)=0.36235775
。
我创建了一个类似的程序来计算 sin(1.2)
,效果很好。
正在计算 sin(1.2)
:
import math as m
x=1.2
k=1
N=25
s=x
sign=1.0
while k<N:
sign=-sign
k=k+2
term=sign*x**k/m.factorial(k)
s=s+term
print('sin(%g) = %g (approximation with %d terms)' % (x,s,N))
现在正在计算 cos(1.2)
:
import math as m
x=1.2
k=1
N=25
s=x
sign=1.0
while k<N:
sign=-sign
k=k+1
term=sign*x**k/m.factorial(k)
s=s+term
print(s)
您不应该将您的初始总和设置为 1.2
,并且您的扩展表示
有点偏离 - 我们需要考虑函数的 even-ness,因此将 k
增加 2。此外,在不修改程序结构的情况下,您必须设置初始变量,以便在第一个循环开始时将它们正确地设置为初始值。 Re-ordering你的循环控制流程有点,我们有
import math as m
x=1.2
k=0
N=25
s=0
sign=1.0
while k<N:
term=sign*x**(k)/m.factorial(k)
s=s+term
k += 2
sign = -sign
print(s)
给予
0.3623577544766735
我认为您对余弦使用了错误的系列,correct formula 应该是(我强调了与 ^
的重要区别):
sum_over_n [(-1)**n * x ** (2 * n) / (math.factorial(2 * n))]
# ^^^^ ^^^^
这意味着添加 n
-terms 你有这样的东西:
def cosine_by_series(x, terms):
cos = 0
for n in range(terms):
cos += ((-1)**n) * (x ** (2*n)) / (math.factorial(2 * n))
return cos
# or simply:
# return sum(((-1)**n) * (x ** (2*n)) / (math.factorial(2 * n)) for n in range(terms)
给出:
>>> cosine_by_series(1.2, 30)
0.3623577544766735
所以,我试图找到 cos(x)
的值,其中 x=1.2
。我觉得我写的脚本应该没问题,但是我得到的值不正确。那是; cos(1.2)=0.6988057880877979
,就 25
而言,我应该什么时候出去:cos(1.2)=0.36235775
。
我创建了一个类似的程序来计算 sin(1.2)
,效果很好。
正在计算 sin(1.2)
:
import math as m
x=1.2
k=1
N=25
s=x
sign=1.0
while k<N:
sign=-sign
k=k+2
term=sign*x**k/m.factorial(k)
s=s+term
print('sin(%g) = %g (approximation with %d terms)' % (x,s,N))
现在正在计算 cos(1.2)
:
import math as m
x=1.2
k=1
N=25
s=x
sign=1.0
while k<N:
sign=-sign
k=k+1
term=sign*x**k/m.factorial(k)
s=s+term
print(s)
您不应该将您的初始总和设置为 1.2
,并且您的扩展表示
有点偏离 - 我们需要考虑函数的 even-ness,因此将 k
增加 2。此外,在不修改程序结构的情况下,您必须设置初始变量,以便在第一个循环开始时将它们正确地设置为初始值。 Re-ordering你的循环控制流程有点,我们有
import math as m
x=1.2
k=0
N=25
s=0
sign=1.0
while k<N:
term=sign*x**(k)/m.factorial(k)
s=s+term
k += 2
sign = -sign
print(s)
给予
0.3623577544766735
我认为您对余弦使用了错误的系列,correct formula 应该是(我强调了与 ^
的重要区别):
sum_over_n [(-1)**n * x ** (2 * n) / (math.factorial(2 * n))]
# ^^^^ ^^^^
这意味着添加 n
-terms 你有这样的东西:
def cosine_by_series(x, terms):
cos = 0
for n in range(terms):
cos += ((-1)**n) * (x ** (2*n)) / (math.factorial(2 * n))
return cos
# or simply:
# return sum(((-1)**n) * (x ** (2*n)) / (math.factorial(2 * n)) for n in range(terms)
给出:
>>> cosine_by_series(1.2, 30)
0.3623577544766735