我是计算机编程的新手,最近刚开始学习python。在这个任务中,我需要通过对系列1 - x ^ 2/2求和来计算cos(x)! + x ^ 4/4! - x ^ 6/6! 。 。
如何在不使用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
-----------------------------------------------------------
答案 0 :(得分: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
答案 1 :(得分:0)
你可以这样计算:
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.
修改强>
没有def,你可以这样做:
x=0;
res = 0
term = 1
for i in range(1, 20, 2):
res += term
term *= -x * x/ i /(i + 1)
print(res);
在此代码中,将x替换为要计算cos的数量。我把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);