Ich versuche numerisch ein System von nicht-linearen Gleichungen zu lösen:Scipy's fsolve Alternativen?
def func(p):
x, f = p
return (math.exp(-x/O)-f,
L - L*((1 - math.exp(-x/O))**W) - x*math.exp(-x/O))
und ich zur Zeit scipy.fsolve für sie in der folgenden Art und Weise bin mit:
x, f = fsolve(func, (10, 0.2))
Ich bin Sicher ist meine Art der Verwendung von fsolve korrekt: Es funktioniert perfekt für bestimmte Parameterbereiche. Allerdings ist es nicht ganz für einen anderen (zB O = 8, L = 1,67, B = 8) mit dem folgenden Fehler:
RuntimeWarning: The number of calls to function has reached maxfev = 600.
Ich bin sicher, dass es gut auflösbar ist - es gibt (mindestens) Matlab-Tools, die es tun. Gibt es irgendetwas, was ich falsch mache oder gibt es einen anderen Löser, den ich ausprobieren könnte?
Vielen Dank im Voraus für Hinweise!
In der Tat löst die Substitution es schön! Vielen Dank! – mck
Obwohl in meinem Fall die Substitution gut funktionierte, gibt es da eine Faustregel, um eine bessere erste Schätzung zu finden. Für mein Problem wusste ich tatsächlich das erwartete Ergebnis, daher habe ich versucht, die Vermutung nahe zu stellen. Leider hat es den Fund nicht wirklich verbessert ... – mck