ich besuche aktuell eine Numerik VL. Dort gibt es folgende Aufgabe:
Aus der Analysisvorlesung ist
cos x = 1 - x^2/x! + x^4/4! ....
bekannt, wobei die rechtsstehende unendliche Reihe für alle x E R konvergiert. Überzeugen Sie sich durch eine Implementierung in einem Python-Programm, daß man über diese Reihe nicht die Werte von cos x für große x, etwa x = 31:4159265 = 10pi hinreichend genau berechnen kann, da Auslöschungseffekte auftreten können. Berechnen Sie dazu die cos(kpi), k = 1; 2;...; 20 mittels der Reihe und geben Sie die Werte in einer Tabelle aus.
Ich habe mich mittels Literatur und Videos zu diesem Code durchgearbeitet:
Code: Alles auswählen
from math import pi
from math import factorial
def cosinus(k,n):
cosk = 1
sign = -1
for k in range(21):
for i in range (1, n):
cosk = cosk + (sign*(pi**(2*i)))/factorial(2*i)
sign = -sign
return cosk
while True:
try:
n=int(input("Eingabe der Anzahl von Termen: "))
if n>0:
for k in range(1,21):
print ('{} => {}\t' .format(k, cosinus(k,n)))
break
except ValueError:
print("Bitte ganze Zahlen eingeben!")
Für gerade n nähert es sich dem richtigen Wert von -1 an. Für ungerade aber geht es gegen -41. Ich finde aber einfach nicht den Fehler