Eulersche Zahl in Swift berechnen

Die eulersche Zahl

Im Physikstudium im Modul Rechenmethoden haben wir uns mit der eulersche Zahl beschäftigt. Die Aufgabe war es die Zahl mithilfe der Taylorreihe herzuleiten.
Die Funktion e^x hat zwei Eigenschaften, durch die sie definiert ist. Erstens ist die Ableitung der Funktion e^x gleich e^x und zweitens ist die Funktion e^x an der Stelle Null gleich eins.
Wenn man diese Funktion dann mit der Taylorreihe entwickelt, erhält man folgende Reihe:
1/0! + 1/1!x + 1/2!x^2 + 1/3!x^3 + 1/4!x^4 …
Wenn man dann für x die Zahl eins einsetzt, erhält man
1/0! + 1/1! + 1/2! + 1/3! + 1/4! …
Je länger man diese Reihe ausrechnet, desto näher kommt man an den Wert der eulersche Zahl.
Nun habe ich versucht ein kleines Programm in Swift zu schreiben, was diese Zahl berechnet. Dazu habe ich mir zuerst eine Funktion geschrieben, die die Fakultät einer Zahl berechnen kann. Soweit ich durch Recherche herausfinden konnte, ist die Fakultät einer Zahl keine Fähigkeit, die die Programmiersprache Swift bereits mitbringt. Die Funktion sieht folgendermaßen aus:

				
					func fakultaet(von zahl: Int) -> Int {
    
    if zahl == 0 { return 1 } // 0! = 1 mathematische Definition
    
    var produkt = 1
    
    for multiplikator in 1...zahl {
        produkt *= multiplikator
    }
    return produkt
}
				
			

Dann habe ich eine Schleife geschrieben, um die eulersche Zahl zu berechnen. Diese sieht wie folgt aus:

				
					var eulerischeZahl: Double = 0

for durchgang in 0...20 {

    let fakultaetDesDurchgangs = fakultaet(von: durchgang)
    
    let ausdruck: Double = (1.0 / Double(fakultaetDesDurchgangs))
    
    eulerischeZahl += ausdruck
}

print("Eulersche Zahl: \(eulerischeZahl)")
				
			

Und als Ergebnis erhalte ich:

2.7182818284590455

Der Grund dafür, dass ich nur 20 Durchgänge mache ist, dass die Zahl der Fakultät ab 20 zu groß wird, als dass man sie in einem Integer speichern könnte. 

Mich benachrichtigen, wenn es einen neuen Beitrag gibt.

 
 
Share on whatsapp
WhatsApp
Share on email
Email
Share on linkedin
LinkedIn
Share on facebook
Facebook