New In

Vektorisierte numerische Integration

Höhepunkte

  • Bequeme Lösung für einen Vektor von Integrationsproblemen

     

  • Additives Quadraturmodell

     

  • Robustheit gegenüber singulären Punkten

Die numerische Integration wird bei vielen Berechnungen von Integralen verwendet, wenn die analytischen Lösungen nicht verfügbar oder schwer zu berechnen sind. Die vektorisierte numerische Integration approximiert einen Vektor von univariaten numerischen Integrationen gleichzeitig.

Matas neue Klasse, QuadratureVec(), ist funktional identisch mit Quadrature(), mit der Ausnahme, dass sie einen Vektor von Integrationsproblemen bequemer handhabt. Genauer gesagt, QuadratureVec() approximiert einen Vektor von univariaten Integralen numerisch mit der adaptiven Gauß-Kronrod-Methode (die adaptive Simpson-Methode wird zum Vergleich ebenfalls angeboten).

QuadratureVec() wird auf die gleiche Weise wie Quadrature() in nur vier Schritten verwendet, nämlich durch das Erstellen einer Instanz der Klasse QuadratureVec(), das Festlegen der Auswertefunktionen, das Setzen der Grenzen und das Ausführen der Berechnungen.

Wir wollen sehen, wie es funktioniert

Die neue Mata-Klasse QuadratureVec() wurde für die Speicherung und Berechnung der vektorisierten numerischen Integration geschaffen.

Hier ist ein Beispiel für die Annäherung der folgenden drei Integrale:

 
 

Nachdem wir die Auswertefunktionen definiert haben, folgen wir den vier Schritten, die jedes Mal erforderlich sind, wenn wir die Klasse QuadratureVec() verwenden. Zunächst erstellen wir eine Instanz q der Klasse QuadratureVec():

: q = QuadratureVec()

Zweitens verweisen wir mit setEvaluator() auf die Evaluatorfunktionen, die als Spaltenvektor-Evaluator definiert sind:

: evaluator = (&f1() \ &f2() \ &f3())
: q.setEvaluator(evaluator)

Drittens legen wir mit setLimits() die Unter- und Obergrenzen fest, die als Limits definiert sind:

: limits = ((1, 2) \ (0,pi()) \ (0,1))
: q.setLimits(limits)

Viertens verwenden wir integrate(), um die Näherungen zu berechnen: