e hoch x berechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
krinust
User
Beiträge: 12
Registriert: Dienstag 25. Oktober 2016, 18:18

Hallo! Ich soll an der Uni Fortran lernen und möchte privat gerne Python lernen. Deshalb würde ich gerne die Programmieraufgaben sowohl in Fortran als auch in Python lösen und hier die Python-Variante kontrollieren lassen (falls das in Ordnung ist :wink: ).

Ok, meine erste Aufgabe: Ein Programm schreiben, welches e hoch x mit Hilfe der Taylor-Reihe (Summe über x^(i)/i!) mit doppelt genauer reeller Gleitkommaarithmetik berechnet. Dabei soll ich die Summation abbrechen, sobald die Summanden bei der Rechnung so klein werden, dass keine Veränderung der Summe mehr auftritt.

Hier mein Versuch:

Code: Alles auswählen

def e_hoch_x(x):
	y = 1.0
	summe = 0
	i = 1
	while True:
		alte_summe = summe
		y = y*x/i
		summe += y
		if alte_summe == summe:
			break
		i += 1
	return summe


def main():
	x = int(raw_input("x = "))
	print "e^{}: {}".format(x, e_hoch_x(x))


if __name__ == '__main__':
	main()
Leider stimmt das Ergebnis nicht, für e hoch 2 kommt z.B. 6.38905609893 raus, also 1 zu wenig.
Zuletzt geändert von Anonymous am Dienstag 25. Oktober 2016, 19:35, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@krinust: die Summe fängt ja auch bei i=0 mit x^0/0! an.
krinust
User
Beiträge: 12
Registriert: Dienstag 25. Oktober 2016, 18:18

Vielen Dank, das hat das Problem beseitigt :)
Antworten