DMUG-Archiv 2001

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Optierung von Komplexen Zahlen

> 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


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html