Swift erfordert keine Umgebungskonstruktion. Wenn Sie einen Mac oder ein iPad haben, installieren Sie einfach Playgrounds und verwenden Sie es. in der Lage sein. Darüber hinaus verfügt Playgrounds über Funktionen wie ** Schrittausführung ** und ** langsame Ausführung **, und Sie können Anweisungen und während Minuten Schritt für Schritt ausführen und die Wertänderung überprüfen, wenn sie ausgeführt werden. .. Wenn Sie die ** Viewer-Funktion ** verwenden, wird der Status der Änderungen an Variablen ohne Erlaubnis als Diagramm angezeigt.
McLaughlin-Erweiterung von $ \ log (1 + x) $
Es wurde ausgedrückt als. In diesem Artikel verwenden wir die Programmierung, um eine Annäherung an $ \ log (1 + x) $ zu finden. (Sprache ist schnell) iPad ist in Ordnung.
Die McLaughlin-Erweiterung approximiert die Funktion $ f (x) $, die vielfach unterschieden werden kann, durch die Summe der Erweiterungsformeln der Reihe der Potenzfunktionen von $ x $. In diesem Artikel wird der Wert von $ \ log (x + 1) $ als "Summe" festgelegt und der Wert wird schrittweise zu "Summe" addiert.
var sum = 0
print(sum) //0
sum += 1
print(sum) //1
Sie müssen auch eine Konstante vorbereiten, um das ungefähre $ x $ zu setzen.
var sum = 0
let x = 1
Bereiten Sie außerdem Variablen vor, die kontinuierlich als Begriffe aktualisiert werden.
var item = x
Der erste Term ist der gleiche wie die Konstante, geben Sie also "x" ein.
Der endgültige Code sieht folgendermaßen aus:
var sum = 0.0 //Da int type und double type nicht hinzugefügt werden können,0.Schreiben Sie 0, um einen Doppeltyp zu erstellen.
let x = 1.0
var item = x
Ich denke, es ist wichtig, mit einem kleinen Wert zu beginnen und beim Codieren mit einem konkreten Wert zu experimentieren. (Persönliche Ansicht). Auch in diesem Artikel ist nach dieser Idee $ x = 1 $ bis zum zweiten Term, d. H.
Code bis zu.
var sum = 0.0 //Da int type und double type nicht hinzugefügt werden können,0.Schreiben Sie 0, um einen Doppeltyp zu erstellen.
let x = 1.0
var item = x
sum += 1.0
sum += -(x*x)/Double(2*1)
Fügen Sie abschließend eine "print" -Anweisung hinzu, um sie mit dem wahren Wert zu vergleichen.
import Foundation
var sum = 0.0 //Da int type und double type nicht hinzugefügt werden können,0.Schreiben Sie 0, um einen Doppeltyp zu erstellen.
let x = 1.0
var item = x
sum += 1.0
sum += -(x*x)/Double(2*1)
print(sum)//Ungefährer Wert 0.5
print(log(2.0))//Wahrer Wert 0.6931471805599453
Früher war der zweite Term $ - \ frac {x ^ 2} {2} $, aber damit muss $ x $ erhöht oder der Nenner manipuliert werden, wenn die Anzahl der Terme zunimmt. Fügen Sie einige Ideen hinzu, damit Sie auch dann kurz codieren können, wenn die Anzahl der Begriffe zunimmt.
import Foundation
var sum = 0.0 //Da int type und double type nicht hinzugefügt werden können,0.Schreiben Sie 0, um einen Doppeltyp zu erstellen.
var item = 1.0
let x = 1.0
sum += item
for i in 2 ..< 3{
item *= -(x*Double(i-1))/Double(i)
sum += item
}
print(sum)//Ungefährer Wert 0.5
print(log(2.0))//Wahrer Wert 0.6931471805599453
Wenn Sie die McLaughlin-erweiterten $ \ log (x + 1) $, $ x $ und $ 1 / n $ beobachten, werden sie jedes Mal multipliziert, wenn der Begriff wächst. Drücken Sie ihn also im Code aus.
Obwohl die for-Anweisung verwendet wird, ändert sich der Wert von sum nicht, da er nur einmal ausgeführt wird.
Es kann durch Erhöhen der Anzahl von Begriffen durch Verallgemeinern behandelt werden.
import Foundation
var sum = 0.0 //Da int type und double type nicht hinzugefügt werden können,0.Schreiben Sie 0, um einen Doppeltyp zu erstellen.
var item = 1.0
let x = 1.0
sum += item
for i in 2 ..< 10{
item *= -(x*Double(i-1))/Double(i)
sum += item
}
print(sum)//Ungefährer Wert 0.7456349206349205
print(log(2.0))//Wahrer Wert 0.6931471805599453
Selbst wenn der Punkt 9 hinzugefügt wird, gibt es einen erheblichen Unterschied zum wahren Wert. Da $ sinx und cosx $ im sechsten Term fast gleich waren, ist zu sehen, dass $ \ log (x + 1) $ langsamer konvergiert als $ sin $ und $ cos $.
Recommended Posts