Finden Sie mit Swift eine Annäherung an log (1 + x)

Warum schnell?

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. 2020-10-14 11.16のイメージ.jpg

McLaughlin-Erweiterung von log (x + 1)

McLaughlin-Erweiterung von $ \ log (1 + x) $

\log(1+x) = x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}+⋯+\frac{(-1)^{n-1}x^n}{n}+⋯

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.

1. Bereiten Sie Variablen vor

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

2. Code bis zum zweiten Term mit x = 1

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.

\log (1+x)=x-\frac{x^2}{2}

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

3. Machen Sie es einfach zu verallgemeinern

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.

計算-12.jpg

Obwohl die for-Anweisung verwendet wird, ändert sich der Wert von sum nicht, da er nur einmal ausgeführt wird.

4. Erhöhen Sie die Anzahl der Begriffe

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

Finden Sie mit Swift eine Annäherung an log (1 + x)
Finden Sie mit Swift eine Annäherung an cosx
Format der Protokollausgabe von Tomcat selbst in Tomcat 8
[Swift] Ermittelt das Timing, wenn der Wert von textField geändert wird
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
802.1X-Authentifizierung für das Netzwerk der Bonding-Einstellung in CentOS7
Untersuchen Sie die Liste der in AWS Lambda + Java verfügbaren Schriftarten
Besiege den Aufwand, C-Arrays von Swift als Tupel zu behandeln
Formular, das den Wert des sich wiederholenden Elements in Spring MVC erhält
Reihenfolge der Verarbeitung im Programm
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
Informationen zur Protokollebene von java.util.logging.Logger
So erhöhen Sie den Wert von Map in einer Zeile in Java
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Finden Sie das Maximum und Minimum der fünf in Java eingegebenen Zahlen
Android-Entwicklung, wie man den Wert des JSON-Objekts auf null überprüft
Holen Sie sich das Ergebnis von POST in Java
Verwenden Sie Swift, um eine Annäherung an sinx zu finden
Kürzen Sie die UUID in Swift auf base64.
[GCD] Grundlagen der parallelen Programmierung in Swift
Die Identität der Schienenparameter [: id]
Samshin über den Wert des versteckten Feldes
[Swift] Ändern Sie die Farbe des SCN-Knotens
Die Geschichte des Schreibens von Java in Emacs
Finden Sie den Unterschied von einem Vielfachen von 10
Schreiben Sie die Bewegung von Rakefile in das Runbook
[Swift] So ermitteln Sie die Anzahl der Elemente in einem Array (Super Basic)
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Coderay-1.1.3 konnte in keiner der Quellen (Bundler :: GemNotFound) gefunden werden, die während der Co-Entwicklung veröffentlicht wurden
[Swift] So ändern Sie die Reihenfolge der Balkenelemente in Tab Bar Controller [Anfänger]
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
So finden Sie die Ursache des Ruby-Fehlers
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Speichern Sie den Rückgabewert des AWS SDK in DynamoDB
Über die Idee anonymer Klassen in Java
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
Implementierungsnotiz für SKStoreReviewController in der Swift-Benutzeroberfläche von iOS14
Reihenfolge der in Swift verwendeten Modifikatoren (siehe SwiftLint)
Geben Sie den Standardwert mit @Builder of Lombok an
Importieren Sie Dateien derselben Hierarchie in Java
Ich möchte den Wert in Ruby erhalten
So ermitteln Sie den Gesamtwert, den Durchschnittswert usw. eines zweidimensionalen Arrays (mehrdimensionales Array) -java