Das ultimative Wolfram Language- und Notebook-Erlebnis
Die Original-Umgebung für technische Datenverarbeitung
Multidomänen-Modellierung und -Simulation komplexer Systeme
Weitere mobile Apps
Wir liefern Lösungen für das KI-Zeitalter – durch die Kombination von symbolischer Berechnung, datengesteuerten Erkenntnissen und tiefgreifender technischer Expertise
Wolfram Consulting
Weitere Wolfram-Lösungen
Weitere Lösungen für den Bildungsbereich
Kurse in Informatik, Wissenschaft, Leben und mehr
Lernen, Probleme lösen und Ideen austauschen.
Nachrichten, Ansichten und Einblicke von Wolfram
Ressourcen für
Bei der Verwendung von numerischen Funktionen wie NIntegrate oder NMaximize ist die Reihenfolge der Auswertung wichtig. Betrachten Sie die folgende Funktion f :
f
f[a_] := NIntegrate[ (2 - a) Sin[a x], {x, 0, Pi}]
Die Funktion f sieht wie eine wohldefinierte Funktion aus, da sie für numerische Werte wie f[0.5] ausgewertet wird. Das Problem tritt auf, wenn der Funktion f ein Symbol statt einer Zahl gegeben wird:
f[0.5]
f[a]
NIntegrate::inumr : The integrand (2 - a) Sin[a x] has evaluated to non-numerical values for all sampling points in the region with boundaries {{0, Pi}}
Da a nicht definiert ist, kann die Wolfram Language den Ausdruck (2 - a) Sin[a x] nicht numerisch nach x integrieren. Dies ist ein Problem für jede Funktion, die f[a] auswertet, bevor sie einen Wert für a liefert. Zum Beispiel kann die Wolfram Language die Funktion f nicht numerisch maximieren:
a
(2 - a) Sin[a x]
x
NMaximize[f[a], a]
Dieser Code gibt die gleiche Fehlermeldung aus, wie wenn nur f[a] ausgewertet wird. In diesem Beispiel wird f[a] vor der vollständigen NMaximize-Anweisung ausgewertet.
Um die Reihenfolge der Auswertung zu ändern, definieren Sie die Funktion f so, dass sie nur ausgewertet wird, wenn sie durch NumericQ und Pattern Testing einen numerischen Wert erhält. Hängen Sie das Muster ?NumericQ an das Argument der Funktion f an:
?NumericQ
Clear[f]
f[a_?NumericQ] := NIntegrate[ (2 - a) Sin[a x], {x, 0, Pi}]
Jetzt gibt die Auswertung von f[a] die Funktion unausgewertet zurück, anstatt eine Fehlermeldung zu erzeugen. Die Wolfram Language kann die neue Definition von f numerisch maximieren, da ?NumericQ die Reihenfolge der Auswertung ändert:
{3.05716, {a -> 0.581569}}}
[English]
Kommentare?
Danke für Ihr Feedback.
Egal, ob Sie eine Frage zur Rechnung, Aktivierung oder zu einer technischen Angelegenheit haben, wir sind da, um Ihnen zu helfen.
Montag–Freitag 8:00–17:00 US Central Time
Montag–Donnerstag 8:00–19:00 US Central Time
Freitag 8:30–10:00 & 11:00–17:00 US Central Time