Chcę wykonać wyszukiwanie roota dla następujących równań nieliniowych, robię to w Pythonie, ale to nie działa. my kod jest poniżejJak wykonać nieliniowe, kompleksowe odnajdywanie roota w Pythonie
from pylab import *
import scipy
import scipy.optimize
def z1(x,y):
temp=1+1j+x+2*y;
return temp
def z2(x,y):
temp=-1j-2*x+sqrt(3)*y;
return temp
def func(x):
temp=[z1(x[0],x[1])-1.0/(1-1.0/(z2(x[0],x[1]))),1-2.0/(z2(x[0],x[1])-4.0/z1(x[0],x[1]))]
return temp
result=scipy.optimize.fsolve(func,[1+1j,1+1j])
print result
po uruchomieniu go, wykazuje błędy:
---> 30 wynik = scipy.optimize.fsolve (func [1 + 1j, 1 + 1j])
C: \ Python27 \ lib \ site-pakiety \ scipy \ optymalizacji \ minpack.py w fsolve (func, x0, arg, fprime, full_output, col_deriv, xtol, maxfev, zespół, epsfcn, czynnik Diag)
123 maxfev = 200*(n + 1)
124 retval = _minpack._hybrd(func, x0, args, full_output, xtol,
-> 125 maxfev, ml, mu, epsfcn, factor, diag)
126 else:
127 _check_func('fsolve', 'fprime', Dfun, x0, args, n, (n,n))
Jak to działa? – Blender
to ze względu na złożoną jednostkę liczby "j", wydaje się, że fsolve może wyszukiwać tylko root dla prawdziwych równań i zwracać prawdziwe korzenie ??! – user2133730