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ď č. 1Ste 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.
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);