This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Höhere Mathematik in Mathematica /  Numerische Operationen mit Funktionen /

Numerische Mathematik in MathematicaNumerische Integration

3.9.2 Die Ungewißheiten numerischer Mathematik

Die Art, wie Mathematica Operationen wie die numerische Integration durchführt, unterscheidet sich sehr von der Art, wie es ihre symbolischen Gegenstücke ausführt.

Wenn Sie symbolisch integrieren, nimmt Mathematica die Funktionalform Ihres Integranden und wendet darauf eine Folge exakter symbolischer Transformationsregeln an, mit dem Ziel, das Integral zu evaluieren.

Wenn Sie jedoch numerisch integrieren, betrachtet Mathematica nicht direkt die Funktionalform des angegebenen Integranden. Stattdessen ermittelt es vielmehr eine Folge numerischer Werte des Integranden an bestimmten Punkten, nimmt dann diese Werte und versucht, mit diesen eine gute Approximation des Integrals herzuleiten.

Sie sollten sich ganz besonders folgendes bewußt machen: Wenn Mathematica numerisch integriert, hat es als einzige Information über Ihren Integranden eine Folge numerischer Werte. Um ein bestimmtes Ergebnis für das Integral zu erhalten, muß Mathematica dann im Grunde gewisse Annahmen über die Glattheit sowie über andere Eigenschaften Ihres Integranden machen. Wenn Sie einen genügend pathologischen Integranden angeben, dann kann es sein, daß diese Annahmen nicht gültig sind, und Mathematica deshalb eine falsche Antwort für das Integral liefert.

Dieses Problem kann zum Beispiel auftreten, wenn Sie versuchen, eine Funktion numerisch zu integrieren, die an einer bestimmten Stelle eine sehr dünne Spitze hat. Mathematica berechnet Ihre Funktion für eine gewisse Anzahl Punkte und nimmt an, daß die Funktion zwischen diesen Punkten glatt verläuft. Wenn dann keiner der Stützstellen nahe bei der Spitze liegt, wird die Spitze unbemerkt bleiben und ihr Beitrag zum numerischen Integral wird nicht korrekt erfaßt.

Hier ist ein Diagramm der Funktion .

In[1]:= Plot[Exp[-x^2], {x, -10, 10}, PlotRange->All]

NIntegrate liefert die richtige Antwort für das numerische Integral dieser Funktion zwischen und +10.

In[2]:= NIntegrate[Exp[-x^2], {x, -10, 10}]

Out[2]=

Wenn Sie jedoch nach dem Integral von bis 1000 fragen, wird NIntegrate die Spitze in der Nähe von nicht erfassen und die falsche Antwort liefern.

In[3]:= NIntegrate[Exp[-x^2], {x, -1000, 1000}]

Out[3]=

Obwohl NIntegrate dem Prinzip folgt, nur die numerischen Werte Ihres Integranden zu betrachten, so versucht es dennoch bestmöglich, die erreichbare Information einzusetzen. Wenn NIntegrate zum Beispiel bemerkt, daß der geschätzte Fehler des Integrals für ein bestimmtes Gebiet groß ist, wird es in diesem Gebiet mehr Stützstellen wählen. Auf diese Weise versucht NIntegrate, seine Operation an den jeweilig gegebenen Integranden anzupassen.

Die Art der adaptiven Verfahren, die NIntegrate verwendet, ähnelt, zumindest im Geist, dem, was Plot beim Versuch, glatte Kurven für Funktionen zu zeichnen, macht. In beiden Fällen versucht Mathematica, so lange mehr Stützstellen in einem bestimmten Gebiet zu wählen, bis es im Grunde eine glatte Annäherung an die Funktion im Gebiet gefunden hat.

Die Probleme, die bei der numerischen Integration auftreten, können sich auch bei der Ausführung anderer numerischer Operationen mit Funktionen ergeben.

Wenn Sie zum Beispiel nach einer numerischen Approximation für die Summe einer unendlichen Reihe fragen, berechnet Mathematica eine gewisse Anzahl Terme der Reihe und extrapoliert dann, um die Beiträge anderer Terme abzuschätzen. Wenn Sie große Terme weit draußen in der Reihe einfügen, können diese unentdeckt bleiben, wenn die Extrapolation ausgeführt wird, und das Ergebnis, das Sie erhalten, kann falsch sein.

Ein ähnliches Problem taucht auf, wenn Sie versuchen, eine numerische Annäherung an das Minimum einer Funktion zu finden. Mathematica berechnet nur eine endliche Anzahl Werte und nimmt dann an, daß sich die betreffende Funktion zwischen diesen Werten glatt interpolieren läßt. Wenn die Funktion tatsächlich einen scharfen Einbruch in einem bestimmten Gebiet hat, dann wird dieser von Mathematica möglicherweise nicht bemerkt, und es kann sein, daß Sie für das Minimum die falsche Antwort erhalten.

Wenn Sie nur mit numerischen Werten von Funktionen arbeiten, gibt es einfach keine Möglichkeit, den Problemen, die wir bislang behandelt haben, auszuweichen. Mit genauer symbolischer Berechnung können Sie diese Probleme natürlich umgehen.

Bei vielen Berechnungen ist es deshalb sinnvoll, so weit wie möglich symbolisch vorzugehen und erst zuallerletzt auf numerische Methoden zurückzugreifen. Auf diese Weise können Sie am ehesten den Problemen ausweichen, die bei rein numerischen Berechnungen auftreten können.

Man könnte sich vorstellen, daß Sie mit symbolischen Methoden das Vorhandensein von Eigenschaften prüfen können, die zu Problemen bei der numerischen Berechnung führen könnten, etwa im Integranden eines numerischen Integrals. Sobald Ihr Integrand jedoch bestimmte bedingte Anweisungen, Kontrollstrukturen oder verschachtelte Funktionsaufrufe enthält, gibt es kein allgemeines Verfahren mehr, mit dem die Ausführung der benötigten Tests gesteuert werden kann. Dennoch kann es für spezielle Klassen von Integranden möglich sein, einige dieser Tests durchzuführen. Sie können diese Tests immer implementieren, indem Sie für NIntegrate in bestimmten Fällen Spezialregeln definieren.

Numerische Mathematik in MathematicaNumerische Integration