Numerische integration mit Simpson-Regel auf diskrete Daten
Ich bin auf der Suche für die numerische integration mit Hilfe von matlab. Ich weiß, dass es ein trapz-Funktion in matlab, aber die Präzision ist nicht gut genug. Durch die Suche online, fand ich es ist ein quad-Funktion gibt es wohl nur akzeptieren symbolischen Ausdruck als Eingabe. Meine Daten sind alle diskreten und eindimensional. Ist, dass jede Art der Verwendung von quad auf meine Daten? Danke.
quad()
ist eine Implementierung der Simpson-Regel, die high-school-Mathe. Gibt es etwas, das Sie von der Umsetzung der Simpson - Regel selbst?ist es nur die Verwendung der simpson-Regel, ich denke, es ist die adaptive Simpson-Quadratur. Aber wie auch immer, ich weiß nicht, warum, quad ist schneller als meine Implementierung. Ich habe so viele Daten zu integrieren und auf der Suche nach einem schnelleren Weg.
Es ist schon ein paar Jahre seit meinem numerische Methoden natürlich, aber IIRC der einzige Unterschied zwischen normalen Simpson-Regel und das adaptive Art ist, dass die Adaptive Simpson-Regel gilt ein variabler Abstand der Probenahmestellen. Da bist du nicht die Integration eines symbolischen Ausdrucks können Sie nicht variieren, das sampling-Intervall - Sie haben bereits Ihre Daten und können Sie nicht interpolieren mehr Punkte zwischen. Deshalb regelmäßig die Simpson-Regel wird so gut wie Sie bekommen können.
Bezüglich der Geschwindigkeit: Haben Sie sich überlegt mit der parallelen Ausführung-tools in neuen Versionen von MATLAB? Die parallele for-Schleife
parfor
ist, ist tot einfach zu bedienen und verbreiten Sie Ihre CPU-Last über wie viele Kerne (oder Ausführungs-Knoten) möglich.InformationsquelleAutor user1285419 | 2012-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort auf Ihre Frage wäre keine. Nur so führen die numerische integration für Daten, die ohne Ausdruck in Matlab ist die Verwendung der
trapz
Funktion. Wenn es nicht präzise genug für Sie, versuchen Sie, schreiben Sie Ihre eigenen quad-Funktion-Li-aung sagte, es ist sehr einfach, diese kann helfen.Andere Methode, die Sie versuchen können, ist die Verwendung der leistungsstarken Curve Fitting Tool
cftool
machen einen fit sind, dann verwenden Sie dieintegrate
Funktion, die sowohl aufcfit
Objekte (es hat eine seltsame Konvention, die Obere Grenze ist das erste argument!). Ich glaube nicht, dass Sie viel genauer Antworten alstrapz
kommt es auf die Passform.InformationsquelleAutor pythonista
Verwendung der spline-Funktion in MATLAB zu interpolieren Ihrer Daten haben, dann integrieren Sie diese Daten. Dies ist die standard-Methode für die Integration von Daten in diskreter form.
InformationsquelleAutor John Sevic
Können Sie
quadl()
integrieren Sie Ihre Daten, wenn Sie zuerst erstellen Sie eine Funktion, die Sie interpolieren.Und dann füttern Sie den
quadl()
Funktion:InformationsquelleAutor Rhei
Integration einer Funktion einer Variablen ist die Berechnung der Fläche unter der Kurve des Graphen der Funktion. Für diese Antwort werde ich beiseite lassen, das böse Funktionen und die Ecke Fälle, und alle der Drehungen und Wendungen, die Reise bis zu Autoren der numerischen integration Routinen, von denen die meisten sind wohl hier nicht relevant.
Simpson-Regel ist ein Konzept für die numerische integration einer Funktion, für die Sie einen code, um die Funktion ausgewertet an den Punkten, die innerhalb seiner Domäne. Das ist hier irrelevant.
Nehmen wir an, dass Ihre Daten stellt eine Zeitreihe ermittelten Werte in regelmäßigen Abständen. Dann können Sie Plotten Ihre Daten als ein Histogramm mit Balken der gleichen Breite. Die integranden um den Sie suchen, ist die Summe der Flächen der Balken im Histogramm zwischen den Grenzen, die Sie interessiert sind in.
Sollten Sie in der Lage sein, um diesen Ansatz anwenden zu Datensätzen, in denen die x-Achse (dh die Breite der Balken im Histogramm) zeigt nicht die Zeit, zu der situation, wo die bars sind nicht von gleicher Breite, an der situation, in der die Daten durch die x-Achse, und die meisten vernünftigen Daten-sets, ganz einfach.
Die Diskretisierung Ihrer Daten stellt eine Grenze für die Genauigkeit der Ergebnisse, die Sie bekommen können. Wenn, zum Beispiel, Ihre Zeitreihen abgetastet 1sec Abständen können Sie nicht integrieren, die über ein Intervall das ist nicht eine ganze Anzahl von Sekunden, die von diesem Ansatz. Aber dann, Sie haben nicht wirklich die Daten, die zur Berechnung einer Zahl mit mehr Genauigkeit von jedem Ansatz. Sicher, können Sie mit Matlab (oder etwas anderes) zu generieren, die zusätzliche Ziffern für die Genauigkeit, aber Sie nicht tragen, keine Bedeutung.
trapz
für kontinuierliche Funktionen; die Simpson-Regel oder der Romberg-integration / etc können auf jeden Fall schlagen, auch mit festen Proben, für die meisten Funktionen.Denken Sie über den Fall, wo Sie wissen, Ihre Funktion ist eine
n
-Grad-Polynom; dannn
oder mehr sample-Punkte sind genug für eine perfekte Kenntnis der Funktion und so zu bekommen, unbegrenzte Genauigkeit, während Ihre Behauptung ist, dass der rechteckige Näherung ist die beste, die man machen kann, das ist eindeutig falsch. Obwohl Sie in der Regel nicht wissen, dass es ein Polynom, Kontinuität Annahmen (und z.B. Stone-Weierstraß, der besagt, dass beliebiger kontinuierliche Funktion ist der Grenzwert einer Folge von Polynomen) bedeutet, dass eine bessere approximation erhalten Sie bessere Ergebnisse.wenn Sie möchten, machen unbegründete Annahmen über die Funktion von der die diskreten Daten ist abgetastet gehen Sie nach rechts weiter. Ich Tat, ging ich davon aus, daß die Funktion nicht kontinuierlich oder differenzierbar.
Wenn Sie nicht machen jede Kontinuität Annahmen, numerische integration, ist einfach unmöglich. Wie Sie wissen, gibt es noch einige lächerliche winzige spike drin? Können Sie nicht, wenn Sie davon ausgehen, es ist nicht.
InformationsquelleAutor High Performance Mark