> test[{f_, R1_}] := Abs[f^2 + R1^2] + 1;
> FindMinimum[test[{f, R1}], {f, 10}, {R1, 2}]
>
> Dies funktioniert nich was kann ich tun?
Die Fehlermeldung, die herauskommt, hilft durchaus weiter:
FindMinimum::fmgs:
Could not symbolically find the gradient of test[{f, R1}]
. Try using the default method, giving two starting values for each
variable.
Wenn man das also macht:
In[8]:= FindMinimum[test[{f, R1}], {f, -10,10}, {R1, -2,2}]
-9 -9
Out[8]= {1., {f -> -3.2608 10 , R1 -> -7.38509 10 }}
dann kommt's gut raus. Der Grund ist, dass Mathematica die Funktion
Abs[] nicht ableitet:
In[16]:= D[test[{f,R1}],f]
2 2
Out[16]= 2 f Abs'[f + R1 ]
weil das im Komplexen nicht gut geht. Man kann das zwar mit
Sqrt[x^2] statt Abs[x] umgehen, dann fällt der aber im Nullpunkt auf
die Nase:
In[18]:= FindMinimum[Sqrt[(f^2 + R1^2)^2] + 1,{f,10},{R1,2}]
...
FindMinimum::fmgl:
Gradient {Indeterminate, Indeterminate} is not a length 2
list of real numbers at {f, R1} = {0., 0.}.
Alternativ kann man auch den Gradienten selber angeben, mit der
Gradient-Option von Findminimum.
Roman Mäder