我在计算机编程方面很新,最近刚开始学习 python。在这个作业中,我需要通过求和系列 1-x ^ 2 / 2!+ x ^ 4 / 4!-x ^ 6 / 6!来计算 cos(x)。。。
如何在不使用 numpy 或 m.factorial 的情况下做到这一点?我想我只应该使用 while 循环。这是我到目前为止的代码
print("INVESTIGATION OF COMPLEX INFINITE SERIES")
print("")
print("Part A: exp, cos and sin series for real value 1")
print("Using convergence criterion of 1e-20")
print("")
print("count exp terms sign cos terms sin terms")
print("----------------------------------------------------------------------")
count = 0.0 # number of terms added so far
total = 0.0 # total of terms so far
termSign = 1
term = 1.0 # initial term
xx = 1
while abs(term) > 1e-20:
count += 1
print("%2d %22.16g %2d" % (count, term, termSign))
termSign = (-1)**(count//2)
total = total + term
term = term/count
代码的输出应该是这样的:
count exp terms sign cos terms
----------------------------------------------------------
1 1 1 1.00000000000000000
2 1 1
3 0.5 -1 -0.50000000000000000
4 0.1666666666666667 -1
5 0.04166666666666666 1 0.04166666666666666
6 0.008333333333333333 1
7 0.001388888888888889 -1 -0.00138888888888889
8 0.0001984126984126984 -1
9 2.48015873015873e-05 1 0.00002480158730159
10 2.755731922398589e-06 1
11 2.755731922398589e-07 -1 -0.00000027557319224
12 2.505210838544172e-08 -1
13 2.08767569878681e-09 1 0.00000000208767570
14 1.605904383682162e-10 1
15 1.147074559772973e-11 -1 -0.00000000001147075
16 7.647163731819817e-13 -1
17 4.779477332387386e-14 1 0.00000000000004779
18 2.811457254345521e-15 1
19 1.561920696858623e-16 -1 -0.00000000000000016
20 8.220635246624331e-18 -1
21 4.110317623312165e-19 1 0.00000000000000000
22 1.957294106339126e-20 1
-----------------------------------------------------------
你很接近了...你遗漏了几个计算步骤。
x = 3.1415926535 / 4
sum_up = 1
term = 1
converge = 1e-20
i = 1
while abs(term) > converge:
term = -term * x * x / (i * (i+1))
sum_up += term
i += 2
print sum_up
输出:
0.707106781202
你可以这样计算:
def cos(x):
res = 0
term = 1
for i in range(1, 20, 2):
res += term
term *= -x * x/ i /(i + 1)
return res
cos(0);
这将返回 1。
Source EDIT:没有 def,你可以这样做:
x=0;
res = 0
term = 1
for i in range(1, 20, 2):
res += term
term *= -x * x/ i /(i + 1)
print(res);
在这个代码中,用你想计算 cos 的数字代替 x。我把 0,例如。
EDIT2:好的,使用收敛标准:
x=0;
res = 1
term = 1
i = 1
while abs(term) > 1e-20
res += term
term *= -x * x/ i /(i + 1)
i += 2
print(res);
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(13条)