/ / vypočítať cos (x) zhrnutím série - python

vypočítajte cos (x) zhrnutím série - python

Som veľmi nový v počítačovom programovaní a nedávno som sa začal učiť python.V tejto úlohe musím vypočítať cos (x) sčítaním série 1 - x ^ 2/2! + X ^ 4/4! - x ^ 6/6!

Ako to urobím bez použitia numpy alebo m.factorial? Myslím, že by som mal používať len chvíľu slučku

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

Výstup kódu by mal vyzerať takto:

 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
-----------------------------------------------------------

odpovede:

1 pre odpoveď č. 1

Ste blízko ... Vynechali ste pár výpočtových krokov.

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

Výkon:

0.707106781202

0 pre odpoveď č. 2

Môžete to vypočítať takto:

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);

Týmto sa vráti 1.

zdroj

EDIT:

Bez def, môžete urobiť takto:

x=0;
res = 0
term = 1
for i in range(1, 20, 2):
res += term
term *= -x * x/ i /(i + 1)
print(res);

V tomto kóde nahraďte x číslom, ktoré chcete vypočítať cos. Dala som 0, s príkladom.

Edit2: Ok, s konvergenčnými kritériami:

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);