Integration (math.) in C++
Ich bin auf der Suche nach einer Bibliothek zu finden, das integral einer gegebenen Menge von random Daten (nicht als Funktion) in C++ (oder C, aber vorzugsweise C++). Es ist eine andere Frage zu Fragen über die integration in C aber die Antworten, diskutieren, mehr wie integriert man eine Funktion (denke ich...). Ich verstehe, dass dies getan werden kann, einfach durch die Berechnung der Fläche unter der Linie das segment zwischen jedem paar von Punkten aus starten, zu beenden, aber ich möchte lieber nicht das Rad neu erfinden, wenn dies bereits getan wurde. Ich entschuldige mich im Voraus, falls dieser ein Duplikat ist; ich suchte ziemlich ausgiebig ohne Erfolg. Mein Mathe ist nicht so stark wie ich es gern so, es ist durchaus möglich, ich bin mit der falschen Terminologie.
Vielen Dank im Voraus für jede Hilfe!!!
Chris
Edit:, falls jemand interessiert ist, ich fühle mich wie ein idiot. Auch das hinzufügen von eine Reihe von OO-Abstraktion, um meine anderen code einfacher zu bedienen, das war vielleicht 30 Zeilen code. Dies ist, was 3 Jahre Weg von jeder Art von Mathematik für Sie tun,...danke für all die Hilfe!
- die Aufgabe wird nehmen nur wenige Zeilen code. sind Sie sicher, dass suchen, es wird schneller?
- Sie haben nicht gesehen, mein C++ - skilz 😉
- dies ist eine gute Stelle, um zu beginnen, steigern Sie!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies trivial. Wenn die Punkte (x0, y0), (x1, y1), ..., (xN, yN), und die Punkte sind so angeordnet, dass x0 <= x1 <= ... <= xN, so wird das integral ist
verwenden keine interpolation (Summen-Bereiche der Rechtecke), und
durch lineare interpolation (Summen-Bereiche von trapezia).
Das problem ist besonders einfach, wenn Ihre Daten y0, y1, ..., yN und die entsprechenden x-Werte sind davon ausgegangen, dass 0, 1, ..., N. Dann erhalten Sie
verwenden keine interpolation (Summen-Bereiche der Rechtecke), und
durch lineare interpolation (Summen-Bereiche von trapezia).
Natürlich, unter Verwendung einfacher algebra, trapezia Formeln vereinfacht werden können. Zum Beispiel, im letzten Fall bekommen Sie
ich habe gerade mein numerische Prüfung heute 🙂 und
ich habe 3 Regeln für Sie
Trapezregel :
integral = h/2 * ( y0 + 2y1 + 2y2 + 2y3 ....... + yn)
Mid-point-rule :
integral = h * ( y0.5 + y1.5 + y2.5 + .... y(n-0.5) )
y0.5 d.h. der Wert von y um den Punkt zwischen x0 und x1
Simpsons-Regel :
integral = h/3 * ( y0 + 4y1 + 2y2 + 4y3 + 2y4 ....... + yn)
wo h ist der Schritt, den Sie nehmen, die in der Regel kleine Zahl ( aber nicht zu klein, um zu vermeiden, Rundungsfehler)
und n ist die Anzahl der Perioden, die Sie nehmen
diejenigen waren, die einfach anzuwenden ... Sie können mehr über die gauss-Quadratur auch
Referenzen :
Ja sicher, so einfach ist das. Nur die Summe der Flächen der Trapeze gebildet, die durch die Datenpunkte, die Sie haben. Sie können nicht machen es komplizierter als das. Auf der Suche nach einer Bibliothek zu tun, es ist ziemlich sinnlos, Sie müssen nur den code schreiben, schlagen Sie die Daten in dem format, das in die Bibliothek muss. Die Berechnung selbst wird weniger code.
Gegebenen Punkte (x0, y0), (x1, y1) die Fläche unter dem Trapez ist (x1 - x0) * (y0 + y1) /2.
Berechnen Sie die gesamte Fläche durch die Summe diese.
Ihre "random data" besteht aus einem Satz von (x,y) - Paare. Bevor Sie beginnen, die integration, Sie müssen sicher sein, dass die Paare werden sortiert in einer Liste, wo die Werte für x zunehmen monoton. Sobald Sie dass haben, Trapez-integration sollte ausreichend sein. (aka Simpson-Regel).