With[{
f := NIntegrate[Sin[a*x], {x, 0, 1}]},
Plot[f, {a, 0, 2}]]
erzeugt keine Fehlermeldung.
Aber Sie sollten eigentlich schon mit Argumenten arbeiten.
Im Extremfall können Sie zu Tricks wie Paletten und InterpretationBox
greifen . Also, z.B.:
f[a_]:= NIntegrate[Sin[a*x],{x,0,1}];
CellPrint@
Cell[BoxData[
RowBox[{"Plot","[",
RowBox[{InterpretationBox["f",f[a]],","," ",
RowBox[{"{",RowBox[{"a",",","0",",","2"}],"}"}]}],"]"}]],
"Input"]
wird dann als Plot[f, {a,0,2}] dargestellt aber als
Plot[f[a],{a,0,2}] vom Kernel interpretiert.
Um die Eingabe zu erleichtern können Sie entweder Copy/Paste benutzen
(nach z.B.
DiaplayForm[ InterpretationBox["f",f[a]] ] ) oder sich einen Button
oder eine Palette basteln.
Als (etwas heftiges) Beispiel dazu können Sie sich das TARCER.nb
notebook von
http://www.feyncalc.org/tarcer/
anschauen wo ich damals mit Makeboxes direkt die InterpretationBoxes
definiert habe und
dann mit Hilfe von Palettes die Formeln zu erzeugen konnte daß sie schön
kompakt aussehen,
aber gleichzeitig alle Argumente und damit Informationen für Mathematica
vorhanden sind.
Das kann manchmal wirklich ganz praktisch sein.
Gewissermassen Literate Programming.
MfG,
Rolf Mertig
reinhard schlosser wrote:
Liebe Liste,
nach ausführen der beiden Befehle
f:=NIntegrate[Sin[a x],{x,0,1}]
Plot[f,{a,0,2}]
erhalte ich die Meldung
NIntegrate::inum: Integrand Sin[a x] is not numerical at {x} = {0.5}.
Anschließend erscheint der erwartete Graph.
Obiges Parameterintegral ist nur ein einfaches Beispiel. Das
tatsächlich Parameterintegral hängt von einer handvoll Parameter und
einer handvoll Variablen ab und ich möchte die Parameter der
Übersichtlichkeit halber nicht in die Funktionsklammer schreiben. Also
in obigem Beispiel will ich f[a_]:=NIntegrate[Sin[a x],{x,0,1}]
vermeiden. Soll ich die Meldung inum einfach ignorieren, handelt es
sich um eine essentielle Meldung, gibt es elegante Lösungen? Da eine
Funktionsauswertung des tatsächlichen Integranden ziemlich
zeitaufwendig ist, sollten Ihre Tipps die Berechnungszeit nicht
erhöhen. Schon mal vielen Dank im voraus.