Quadraturalgorithmen |
26.10.2020, 11:25 | Finn_ | Auf diesen Beitrag antworten » | ||||||||||
Quadraturalgorithmen Nun verhält es sich ja allerdings so, dass diese bei unstetigen Funktionen bzw. Funktionen mit hoher Krümmung nicht ausreichend genau ist. Natürlich gibt es einen Parameter n mit Vorgabewert n=1, der das Intervall in n Teile zerlegt. Die Berechnung wird dann meistens ausreichend genau, allerdings muss man dafür ein wenig herumspielen und der Berechnungsaufwand steigt entsprechend. Gesucht ist schlicht, was man unter eierlegende Wollmilchsau versteht. Das will heißen, es sollte eine adaptive Berechnung erfolgen, bei der man n in den meisten Fällen nicht mehr anfassen braucht. Ich möchte kein perfektes Verfahren (dafür scheint ohnehin Intervall-Arithmetik notwendig zu sein, das wird kompliziert), sondern etwas das mir im Alltag quick and dirty in den allermeisten Fällen das richtige Resultat liefert. Außerdem sollte die Implementation möglichst kompakt sein, damit man sie unter widrigen Umständen schnell auf andere Systeme und Programmiersprachen portieren kann. Meine erste Überlegung ist folgender Algorithmus.
Betrachten wir dieses Testintegral aus den Folien "Fast and rigorous numerical integration" von Fredrik Johansson: Der korrekte Wert ist 0.098651704478365206119658... [attach]52047[/attach]
Tja, die Genauigkeit genügt mir, aber zum Zeichnen der Integralfunktion ist das zu langsam. |
||||||||||||
26.10.2020, 12:22 | HAL 9000 | Auf diesen Beitrag antworten » | ||||||||||
Ich schätze mal, es dürfte schwierig sein, DIE eierlegende Wollmichsau in diesem Gebíet zu finden, wenn sie noch dazu solch exotisches Futter wie den obigen (zumindest zum Ende zu) wild oszillierenden Integranden schnell (!) verdauen können muss. Die ABSOLUTE Schranke 0.001 in der Abbruchbedingung ist mir nicht geheuer: D.h., wendet man den Algorithmus statt auf z.B. auf an, wird länger (und mutmaßlich genauer) gerechnet? Eine solche Entscheidung sollte doch eher skalenunabhängig gefällt werden - ist zumindest meine Meinung. Warum die Verfeinerung überhaupt in Zehnerpotenzschritten geschieht, wäre auch noch zu hinterfragen. Ich würde Zweierpotenzschritte als natürlicher empfinden, wobei man am besten gleich noch die Berechnung der Funktionswerte einspart, die man im vorigen Durchlauf schon hatte - ist besonders bei "zeitteuren" Funktionswertberechnungen anratsam. |
|