Hallo Robert,
Es nervt (unter Mma 4.2) nicht wirklich so schlimm. Hätten Sie mit Ihrer
Definition
In[3]:= Clear[auchnervend];
auchnervend[x_] := Input@ToString@x
dies getippt,
In[19]:= FindMinimum[auchnervend[x // N], {x, 1, 2}]
Out[19]= {1.01, x -> 1.05074}}
dann geht es. So geht es auch:
In[20]:= FindMinimum[auchnervend[N@x], {x, 1, 2}]
Out[20]= {1.0001, {x -> 1.93107}}
Wenn Sie finden, dass N[] die Grenze vom Einfachen zum Hässlichen
überschreitet oder Sie N[] nicht anwenden können, wie wär's mit einem
Attribut?
In[21]:= Clear[obernervend];
obernervend[x_] := Input@ToString@x;
SetAttributes[obernervend, NumericFunction];
In[24]:= FindMinimum[obernervend[x], {x, 1, 2}]
Out[24]= {1.01, {x -> 1.22464}}
Oder entsprechend Ihrer Intention mit Evaluate und ohne Attribut und ohne N:
In[25]:= FindMinimum[auchnervend[Evaluate@x], {x, 1, 2}]
Out[25]= {1.0001, {x -> 1.06343}}
Also es gibt mindestens drei Lösungen ohne x_?NumericQ.
Bzgl. der numerischen Genauigkeit bei diesen Beipielen gelten natürlich
die Ausführungen von Jens.
Mit den besten Grüssen
Udo.
Nowak Robert wrote:
hi jens und interessierte,
nervend[x_?NumericQ] :=
Input@ToString@x
FindMinimum[nervend[x], {x, 1, 2}]
funktioniert letztendlich tatsächlich wie erhofft.
auchnervend[x_] :=
Input@ToString@x
FindMinimum[auchnervend[x], {x, 1, 2}]
funktioniert wasweissderteufelvieleichtwarumauchimmer nicht.
(If[MemberQ[Attributes[#], HoldAll], #] & /@ Names["System`*"]) /.
Null -> Sequence[]
daraus entnehme ich das FindMinimum das Attribut HoldAll besitzt. laut mma help sollte sich das mit Evaluate[] lösen
lasssen aber
FindMinimum[Evaluate@auchnervend[x], {x, 1, 2}]
funktioniert wasweissderteufelvieleichtwarumauchimmer auch nicht.
na ja jedenfalls allerbesten dank, jetzt weiss ich wie es doch funkt.
grüsse robert