Inhaltsverzeichnis:

So erstellen Sie ein numerisches Integrationsprogramm in Python – wikiHow
So erstellen Sie ein numerisches Integrationsprogramm in Python – wikiHow

Video: So erstellen Sie ein numerisches Integrationsprogramm in Python – wikiHow

Video: So erstellen Sie ein numerisches Integrationsprogramm in Python – wikiHow
Video: Matplotlib und Numpy - Dietmar Thaler 2024, Juli
Anonim
So erstellen Sie ein numerisches Integrationsprogramm in Python
So erstellen Sie ein numerisches Integrationsprogramm in Python

Dies ist ein Tutorial zum Erstellen und Ausführen eines Programms, das bestimmte Integrale mithilfe eines numerischen Integrationsalgorithmus auswertet. Ich habe die Schritte in 3 Abschnitte unterteilt: Verstehen des Algorithmus, der verwendet wird, um das Programm zu erstellen, Programmieren des Programms mit der Programmiersprache Python und Ausführen des Programms. Dieses Tutorial ist für jemanden gedacht, der möglicherweise schnell einen Taschenrechner erstellen muss, um bestimmte Integrale auszuwerten, oder den Algorithmus möglicherweise für die Verwendung in einem größeren Programm benötigt. Grundkenntnisse in der Analysis werden erwartet, aber relevante mathematische Informationen werden überprüft. Programmierkenntnisse werden nicht erwartet, sind aber hilfreich, da ich nur kurz beschreibe, wie die Programmierung eigentlich funktioniert.

Was wirst du brauchen:

Ein PC mit Internetzugang

Schritt 1: Den Algorithmus verstehen Teil 1: Das definitive Integral und seine Verwendung

Den Algorithmus verstehen Teil 1: Das definitive Integral und seine Verwendung
Den Algorithmus verstehen Teil 1: Das definitive Integral und seine Verwendung

Ich gehe davon aus, dass Sie ein wenig wissen, was ein Integral im Kontext der Grundrechnung ist. Integrale sind wichtig, weil sie es Ihnen ermöglichen, ein Array von Werten multipliziert mit einer infinitesimalen Länge zu summieren; Dies ist in vielen Bereichen des Finanzwesens, der Zahlentheorie, der Physik, der Chemie und vielen anderen Bereichen nützlich. Mit diesem Programm können Sie jedoch nur die Fläche unter einer Kurve für ein endliches Intervall berechnen, dh es wertet keine Stammfunktionen aus - dafür ist ein viel leistungsfähigerer Algorithmus erforderlich. Dieser Algorithmus ist nützlich, wenn Sie ein bestimmtes Integral in einem größeren Programm auswerten müssen, das auf etwas anderes ausgerichtet ist, oder wenn Sie Ihre Antwort auf bestimmte, von Hand erstellte Integrale überprüfen möchten.

Ein grundlegendes bestimmtes Integral stellt die Fläche unter einer Kurve dar, die durch eine Funktion definiert ist, z. f(x). Für ein bestimmtes Integral suchen wir die Fläche zwischen zwei Punkten (bezeichnet mit a bzw. b). Im Bild ist der türkisfarbene Bereich der Bereich, auf den ich mich beziehe, und die Gleichung zur Bestimmung dieser wird auch in diesem Bereich angezeigt. Die im Bild gezeigte Funktion ist willkürlich.

Schritt 2: Den Algorithmus verstehen Teil 2: Numerische Approximation

Den Algorithmus verstehen Teil 2: Numerische Approximation
Den Algorithmus verstehen Teil 2: Numerische Approximation

Ein Computer benötigt einen breiten Satz von Anweisungen, um den Bereich unter einer beliebigen Funktion zu berechnen, die für jede Funktion geeignet ist. Daher sind analytische Methoden, mit denen Sie möglicherweise vertraut sind, nutzlos, da sie zu speziell sind. Ein Verfahren zum ungefähren Berechnen von Integralen, das ein Computer tatsächlich verarbeiten kann, besteht darin, den interessierenden Bereich mit einer benutzerdefinierten Anzahl von Rechtecken gleicher Breite und variabler Höhe zu füllen und dann alle Bereiche des Rechtecks aufzusummieren. Die starren Eigenschaften von Rechtecken lassen einen Teil der Gesamtfläche unberührt, weshalb dies als Näherung angesehen wird; Je mehr Rechtecke Sie jedoch zwischen die Grenzen (a und b) stopfen können, desto genauer wird die Annäherung, da die unberührten Bereiche spärlicher werden. Da ein Computer die Aufgabe übernimmt, können Sie die Anzahl der Rechtecke im gewünschten Bereich auf einen sehr großen Wert einstellen, wodurch die Näherung äußerst genau wird. Stellen Sie sich im unterstützenden Bild vor, dass jedes Rechteck im angegebenen Bereich die gleiche Breite hat. Ich habe mein Bestes getan, um sie in Microsoft Paint gleich breit zu machen, aber ich habe nicht den besten Job gemacht.

Schritt 3: Den Algorithmus verstehen Teil 3: Die Mittelpunktregel

Den Algorithmus verstehen Teil 3: die Mittelpunktregel
Den Algorithmus verstehen Teil 3: die Mittelpunktregel

Diese Regel gibt an, wie die Rechtecke erstellt und in der Näherung verwendet werden. Jedes Rechteck von "N" Rechtecken muss die gleiche Breite haben, Δx, aber jedes n-te Rechteck kann nicht genau gleich sein: der variierende Faktor ist die Höhe, die als die an einem bestimmten Punkt ausgewertete Funktion variiert. Die Mittelpunktregel hat ihren Namen von der Tatsache, dass Sie die Höhe jedes Rechtecks als f(x_n) auswerten, wobei "x_n" der jeweilige Mittelpunkt jedes Rechtecks ist, der links oder rechts vom Rechteck angeordnet ist. Die Verwendung des Mittelpunkts ist wie die Implementierung eines Durchschnitts, der die Näherung genauer macht, als wenn Sie rechts oder links verwenden würden. Das unterstützende Bild für diesen Schritt fasst zusammen, wie die Mittelpunktregel mathematisch definiert ist.

Schritt 4: Erstellen des Programms Teil 1: Herunterladen eines Python-Compilers/-Editors

Nachdem Sie nun den zu implementierenden Algorithmus verstanden haben, müssen Sie einen Computer dazu bringen, die Berechnung für Sie durchzuführen. Der erste Schritt, um einem Computer mitzuteilen, was er tun soll, besteht darin, sich die entsprechenden Tools zu besorgen. Dieser Algorithmus kann in jeder Sprache codiert werden; Der Einfachheit halber wird dieses Programm in der Sprache Python codiert. Um Ihrem Computer zu befehlen, Operationen mit Python auszuführen, benötigen Sie einen Editor, der Anweisungen in dieser Sprache aufnimmt, die dann in eine Maschinensprache kompiliert werden, die Ihr Computer verstehen kann, damit er die Aufgaben ausführen kann, die Sie ihm sagen. In der heutigen Zeit sind in der Regel Editor und Compiler integriert, was jedoch nicht immer der Fall ist. Sie können jeden beliebigen Editor/Compiler verwenden, mit dem Sie vertraut sind, aber ich zeige Ihnen, wie Sie meinen persönlichen Favoriten für Python erhalten: Canopy. Wenn Sie bereits über einen Editor/Compiler verfügen, können Sie diese Schritte überspringen.

  1. Gehen Sie zu
  2. Klicken Sie auf Canopy herunterladen
  3. Klicken Sie auf die Ihrem Betriebssystem entsprechende Download-Schaltfläche

    Der Download wird automatisch gestartet

  4. Befolgen Sie die Installationsanweisungen, nachdem Sie die Ausführungsdatei gestartet haben
  5. Führen Sie das Programm aus
  6. Klicken Sie im Hauptmenü des Programms auf "Editor".
  7. Klicken Sie in der Mitte des Bildschirms auf "Neue Datei erstellen"

Ab diesem Punkt sollten Sie ein leeres weißes Fenster mit einem Cursor sehen, der einem einfachen Textverarbeitungsdokument ähnelt. Sie können jetzt mit der Codierung des numerischen Integrationsalgorithmus zum Lösen bestimmter Integrale beginnen. Die weiteren Schritte enthalten ein Code-Snippet, das Sie kopieren, und eine Erklärung, was dieses Snippet für das Programm als Ganzes bewirkt.

Schritt 5: Programm erstellen Teil 2: Funktionen importieren & Variablen definieren

Programm erstellen Teil 2: Funktionen importieren & Variablen definieren
Programm erstellen Teil 2: Funktionen importieren & Variablen definieren

Kopieren Sie den Code im Bild.

Für jedes Programm, das Sie vielleicht selbst programmieren, gibt es Variablen. Eine Variable ist ein Name, der einem Wert zugewiesen wird, der bearbeitet wird und der sich ändern kann. In den meisten Programmiersprachen (wenn nicht allen) müssen Sie eine Variable initialisieren, bevor das Programm Änderungen daran vornehmen kann. Bei diesem Programm habe ich die Variablen "N", "a" und "b" genannt. Diese Werte repräsentieren die Anzahl der Iterationen (AKA-Anzahl der Rechtecke), die untere Grenze bzw. die obere Grenze. Sie können diese beliebig benennen, aber um den Formeln in "Verstehen des Algorithmus Teil 3: Die Mittelpunktregel" zu entsprechen, ist es am besten, sie gleich zu belassen. Beachten Sie, dass sie nicht nur auf einen bestimmten Wert festgelegt sind. Dies liegt daran, dass es sich um Eingaben handelt, die der Benutzer des Programms beim Ausführen des Programms definieren kann, was der Wert sein wird. Der Text in Anführungszeichen nach dem Eingabebefehl wird angezeigt, wenn Sie das Programm ausführen und Ihnen mitteilen, welche Art von Wert Sie eingeben müssen. Sie werden auch feststellen, dass "int" und "float" vor den Eingabebezeichnungen verwendet werden. Diese Begriffe sagen dem Computer, um welchen Variablentyp dieser Wert handelt. Ein "int" ist eine ganze Zahl und ein "float" ist ein Gleitkommawert (d. h. eine Dezimalzahl). Es sollte klar sein, warum diese als solche bezeichnet werden.

Jeder Text, der nach einem "#" steht, ist ein Kommentar, der es dem Programmierer ermöglicht, dem Code auf humanistische Weise zu folgen; Ich habe bestimmte Kommentare in meinem Code gemacht, die Sie kopieren werden, aber Sie können gerne Kommentare hinzufügen, die Ihnen speziell helfen. Das Programm liest nichts mit einem "#" davor als Befehl.

Der Codeabschnitt, der "from math import *" liest, weist das Programm an, eine Reihe mathematischer Funktionen zu importieren, die verwendet werden können, ohne sie selbst programmieren zu müssen. Das "*" bedeutet nur "alle". Lesen Sie diesen Codeabschnitt als: Importieren Sie alle Funktionen aus der Mathematikbibliothek. Dadurch können Sie mathematische Funktionen wie Sinus, Cosinus, Log, exp usw. verwenden. Diese Funktionen können mathematisch in den Code integriert werden.

Schritt 6: Programm erstellen Teil 3: Funktion zur Integration erstellen

Erstellen des Programms Teil 3: Erstellen einer Funktion für die Integration
Erstellen des Programms Teil 3: Erstellen einer Funktion für die Integration

Kopieren Sie den Code im Bild unter den vorherigen Code.

WARNUNG: Dieser Abschnitt ist dicht und ich möchte einige Dinge klären, die möglicherweise verwirrend sein könnten. Wenn man über Programmierung spricht, taucht oft das Wort "Funktion" auf. Dieser Begriff taucht auch häufig auf, wenn es um Mathematik geht. Von diesem Punkt an schreibe ich also, wenn ich über eine Funktion im Programmiersinn spreche, "Python-Funktion", und wenn ich über die mathematische Funktion spreche, werde ich "mathematische Funktion" sagen. Irgendwann werden wir eine Python-Funktion als Repräsentation für die fragliche mathematische Funktion verwenden.

Dieses nächste Code-Snippet ist das Herzstück des Programms. Hier wird eine Python-Funktion definiert, die den Algorithmus der numerischen Integration nach der Mittelpunktregel durchführt. "def Integrate(N, a, b)" lautet: Definiere eine Funktion namens "Integrate", die die Variablen "N, " "a, " und "b " akzeptiert und die Fläche unter der Kurve (die mathematische Funktion) zurückgibt. die auch in der Python-Funktion "Integrate" definiert ist. Sie können diese Python-Funktion beim Codieren beliebig nennen, aber es ist sinnvoll, sie integrieren zu nennen, da es sich um eine Funktion handelt, die tatsächlich eine mathematische Funktion integriert.

An dieser Stelle lohnt es sich zu kommentieren, wie Python Codeblöcke trennt. Ein Codeblock ist ein ganzer Abschnitt, der eine bestimmte Aufgabe ausführt. Verschiedene Programmiersprachen haben bestimmte Möglichkeiten, diese "Blöcke" zu unterscheiden. Für Python wird ein Block durch Einrückungen unterschieden: Jeder Abschnitt zur Aufgabenausführung hat seinen eigenen Einzug, und es können eingerückte Blöcke innerhalb anderer eingerückter Blöcke vorhanden sein. Dies stellt Aufgaben innerhalb von Aufgaben dar und gibt im Wesentlichen die Reihenfolge an, in der der Code ausgeführt werden muss. Im Fall der definierten Python-Funktion "Integrate" wird alles innerhalb dieser Funktion um einen Block eingerückt, wodurch die Aufgaben unterschieden werden, die innerhalb dieser Funktion ausgeführt werden. Es gibt eingerückte Teile innerhalb dieser Python-Funktion, die auch ihre eigenen Aufgaben ausführen. Es geht wie folgt: Ein Befehl (Aufgabe) wird angegeben, ein Doppelpunkt folgt dem Befehl und was der Befehl macht, wird darunter eingerückt.

Unmittelbar nach der Definition der Python-Funktion "integrieren" definieren Sie eine weitere Python-Funktion namens f(x). Dies stellt die mathematische Funktion dar, die integriert wird. Für jede andere mathematische Funktion, die Sie integrieren möchten, müssen Sie diese Programmzeile aufrufen, um sie zu ändern (im Gegensatz zu den Variablen, die beim Ausführen des Programms definiert werden). Jede Python-Funktion hat einen Rückgabewert. Dies ist, was die Funktion zurückgibt, wenn Sie einen Wert ausgeben. In diesem Fall ist der eingeworfene Wert "x", und dieser "x"-Term nimmt den Wert dessen an, was auch immer Sie ihn werfen - es ist ein temporärer Wert.

Als Nächstes fungiert eine for-Schleife als Summation, die in den Formeln im Abschnitt "Verstehen des Algorithmus" dieses Tutorials definiert ist. Diese Summation erfordert ein paar weitere Variablen, von denen eine als Rückgabewert für die gesamte Python-Funktion "Integrieren" dient. Vor der for-Schleife habe ich diese Variablen als "Wert" und "Wert2" bezeichnet. die Aufgabe der for-Schleife besteht darin, über einen Bereich von Werten für eine bestimmte Variable zu iterieren, die bequem innerhalb des for-Schleife-Befehls definiert werden kann; in diesem Fall ist diese Variable "n". Der Bereich, für den die Iteration auftritt, ist 1 bis N+1. Sie sollten beachten, dass die in den oben genannten Formeln definierte Summation nur von 1 bis N reicht. Wir definieren es so, weil die Python-Sprache jeden iterierten Wert von Null beginnend zählt, also müssen wir den Wertebereich im Wesentlichen verschieben, um unseren Wünschen zu entsprechen Bereich. Die for-Schleife ermöglicht dann die Summation aller Höhen des Rechtecks und speichert diesen Wert in der Variablen, die ich "Wert" nannte. Dies wird in dem Codestück angezeigt, das wie folgt angezeigt wird: Wert += f(a+((n-(1/2))*((b-a)/N))).

Von dort aus verwendet das nächste Stück des Codes die Variable namens "value2", die dann als Summe aller Höhen jedes Rechtecks multipliziert mit der standardisierten Breite jedes Rechtecks zugewiesen wird - dies ist unsere endgültige Antwort, die wir wollen von unserem Programm angezeigt und ist somit der Rückgabewert der Python-Funktion "Integrate".

Schritt 7: Programm erstellen Teil 4: Antwort anzeigen

Erstellen des Programms Teil 4: Anzeigen der Antwort
Erstellen des Programms Teil 4: Anzeigen der Antwort

Kopieren Sie den Code im Bild unter den vorherigen Code.

Da die Antwort nun über die Python-Funktion "Integrieren" erhalten werden kann, möchten wir sie anzeigen können. Dazu müssen Sie nur die vom Benutzer eingegebenen Werte ("N, " "a, " und "b") in die Python-Funktion "Integrieren" eingeben und auf dem Bildschirm ausgeben. Dieser Befehl wird in Zeile 21 angezeigt und ist wirklich alles, was Sie tun müssen, um diesen Schritt abzuschließen. Der Code in den Zeilen 19 und 20 ist nur dazu da, die Ausgabe des gesamten Programms zu "verschönern". "print("……………………….")" trennt den Eingabebereich des Programms vom Ausgabebereich, und "print("Hier ist Ihre Antwort: ")" ist nur eine Bezeichnung, die die Antwort geben wird nach dieser Textzeile gedruckt werden.

Schritt 8: Ausführen des Programms Teil 1: Ausführen des Programms wie es ist

Ausführen des Programms Teil 1: Ausführen des Programms wie es ist
Ausführen des Programms Teil 1: Ausführen des Programms wie es ist

Wenn Sie Canopy nicht verwenden, müssen Sie diesen Schritt wahrscheinlich nicht einmal ausführen, und die Ausführung des Programms erfordert möglicherweise andere Verfahren. Bevor Sie das Programm in Canopy ausführen können, müssen Sie es speichern. Der Dateityp für ein Python-Programm ist eine.py-Datei - sie wird automatisch als diese gespeichert. Wählen Sie aus, wo die Datei gespeichert werden soll, dann können Sie das Programm ausführen.

Ausführen des Programms:

  1. Klicken Sie auf die grüne Schaltfläche, die wie eine "Wiedergabetaste" aussieht, die sich in der Symbolleiste direkt über der Stelle befindet, an der Ihr Dateiname angezeigt wird (siehe Bild).
  2. Das Programm wird dann im unteren Bildschirm des Editors ausgeführt, der als Canopy-Datenanalyseumgebung bekannt ist. Angenommen, Sie haben die Eingabeaufforderungen so kopiert, wie ich sie geschrieben habe, sollten Sie unten in der Canopy-Datenanalyseumgebung die Eingabeaufforderung sehen: "Geben Sie ein, wie oft Sie summieren möchten (mehrmal = genauer):." (siehe Bild)
  3. Geben Sie einen Wert ein, wie oft Sie die Iteration durchführen möchten, z. B. 10000 (wie viele Rechtecke Sie in Ihren Bereich schieben möchten), und drücken Sie dann die Eingabetaste.
  4. Es werden weitere Eingabeaufforderungen mit Anweisungen angezeigt, die die vertrauten Eingabeaufforderungen sein sollten, die Sie in Schritt 5 in das Programm codiert haben. Füllen Sie sie entsprechend aus, genau wie in Nummer 3 oben.
  5. Das Integral sollte ausgewertet werden und ein Ergebnis sollte erscheinen.

Wenn Sie das Programm wie in den vorherigen Bildern gezeigt codiert haben, haben Sie gerade f(x) = x^2 über einige Grenzen integriert. Das Integral von x^2 ist leicht von Hand auszuwerten, daher sollten Sie überprüfen und sicherstellen, dass das Programm eine sehr genaue Antwort auf den von Hand bestimmten korrekten analytischen Wert gegeben hat. Wenn ich das Programm mit den Werten N = 10000, a = 0 und b = 10 ausführe, erhalte ich die Antwort 333.33333249999964. Die richtige analytische Antwort ist 333,333. Das ist unglaublich genau und schnell. Sie haben im Wesentlichen 10.000 Rechtecke zwischen 0 und 10 auf der x-Achse gequetscht und sie verwendet, um die Fläche unter der Kurve x^2 anzunähern!

Schritt 9: Ausführen des Programms Teil 2: Integrieren anderer mathematischer Funktionen

Ausführen des Programms Teil 2: Integrieren anderer mathematischer Funktionen
Ausführen des Programms Teil 2: Integrieren anderer mathematischer Funktionen

Im vorherigen Schritt haben Sie f(x) = x^2 integriert, wenn Sie es genau verfolgt haben. Das ist nicht die einzige mathematische Funktion, die dieses Programm integrieren kann. Denken Sie daran, dass Sie aus Schritt 5 das mathematische Bibliotheksarray von Python-Funktionen in das Programm importiert haben. Dadurch können Sie kompliziertere mathematische Funktionen verwenden, die integriert werden können. Geben wir einem eine Chance. Natürlich können Sie jede beliebige Funktion verwenden, aber ich werde die Genauigkeit dieses Codes weiter demonstrieren, indem ich eine bestimmte mathematische Funktion integriere, die einen bekannten Wert liefert, wenn sie über einen bestimmten Bereich integriert wird. Diese Funktion ist f(x) = Sin[x]. Diese mathematische Funktion wird im ersten nebenstehenden Bild dargestellt, aufgetragen von 0 bis 2π, und der interessierende Bereich ist türkis schattiert. In diesem Intervall gibt es eine gleiche positive Fläche wie eine negative Fläche. Wenn Sie also die Gesamtfläche addieren, sollten Sie Null erhalten. Mal sehen, ob das tatsächlich passiert:

Setzen Sie die mathematische Funktion f(x) = Sin[x] in das Programm ein:

  1. Bevor Sie das Programm erneut ausführen, geben Sie unter dem Kommentar "#type your function after return" ein: sin(x) wobei sich x**2 derzeit befindet. (siehe Bild).
  2. Führen Sie das Programm aus, indem Sie erneut auf die grüne Wiedergabetaste klicken.
  3. Geben Sie 10000 für den N-Wert ein (wie oft Sie summieren möchten).
  4. Geben Sie "0" für die untere Grenze ein.
  5. Geben Sie 6,2832 für die obere Grenze ein (ungefähr 2π).
  6. Sehen Sie, welchen Wert Sie erhalten.

Als ich dies tat, erhielt ich am Ende einen Wert von 1.079e-10: Dies entspricht.0000000001079, was wirklich nahe Null ist, also scheint es genau zu sein und zeigt, dass der Algorithmus den negativen Bereich angemessen behandelt.

Schritt 10: Ausführen des Programms Teil 3: Erweitern des Programms

An diesem Punkt sind Sie fertig: Sie haben einen in Python codierten, funktionierenden definitiven integralen Algorithmus, der reibungslos läuft und sehr genaue Antworten liefert. Dieses Programm kann jedoch verbessert werden. Ich bin kein Programmierer und habe nur minimale Erfahrung mit Python. Tatsächlich musste ich mich mit der Verwendung von Python auffrischen, um dieses Tutorial abzuschließen, aber das sollte Ihnen die Gewissheit geben, dass Python so einfach zu erlernen ist. Mein Punkt ist, dass Sie dieses Programm erweitern können, indem Sie es effizienter machen, vielleicht eine GUI implementieren und es benutzerfreundlicher machen.

Meine Gedanken zur Programmerweiterung:

  • Implementieren Sie eine grafische Benutzeroberfläche, mit der Sie das Programm ausführen können, ohne die interaktive Datenanalyseumgebung von Canopy zu verwenden
  • Machen Sie es so, dass die zu integrierende mathematische Funktion nicht innerhalb des Programms eingegeben werden muss, sondern nach dem Ausführen des Programms eingegeben werden kann (ich habe dies ursprünglich versucht, konnte es aber nicht herausfinden).
  • Definieren Sie eine Python-Funktion "Integrieren", damit die f(x)-Funktion im Gegensatz zur darin definierten f(x)-Funktion verwendet wird.

Dies sind nur einige Beispiele für Verbesserungsbereiche, aber ich garantiere Ihnen, dass es noch viele andere Bereiche gibt, die verbessert werden können. Daher überlasse ich diesen Schritt als Beispiel für die Mängel dieses Programms und vielleicht als Übung für jeden, der das Programm weiter verbessern möchte.

Empfohlen: