Я хочу решить систему нелинейных уравнений, созданных циклами, используя root из scipy.optimize
. Я хочу создать уравнения одним методом, а затем решить их другим. Я создал уравнения с sympy и хочу решить их с помощью scipy. В моем реальном коде слишком много циклов, и каждый раз root от scipy повторяет эти циклы.
Это очень упрощенная версия того, что я пробовал. Я сделал уравнения с sympy символами, а затем я использовал lambdify
, чтобы вывести уравнения из sympy , но решатель отправляет мне ошибку.
from scipy.optimize import root
from sympy import Symbol, lambdify
y = [Symbol('x%d' % i) for i in range(2)]
def ecuacion():
global c,cakeo,mellado
c = []
cakeo = y[0] +1 + y[1]
c.append(cakeo)
mellado = y[1] + 4 + -y[0]
c.append(mellado)
print(c)
return c
ecuacion()
f = lambdify(y, c, 'numpy')
def solver():
Guess = [1,-1]
sol = root(f, Guess,method='hybr', jac=False) # Entrega el resultado
print(sol.x)
return sol
solver()
Он посылает мне эту ошибку TypeError: root () получил неожиданный аргумент ключевого слова 'jac'. Если я удаляю jac, он отправляет smeme TypeError: неподдерживаемый операнд тип (ы) для /: 'int'and' list '
это трассировки с jac
File "", строка 1, в runfile (' C: / Users / gian_ /Documents / Irri-trickle / speed / i.py ', wdir =' C: / Users / gian_ / Documents / Irri-trickle / speed ')
Файл "C: \ Users \ gian_ \ Anaconda3 \ lib\ site-packages \ spyder_kernels \ customize \ spydercustomize.py ", строка 827, в исполняемом файле исполняемого файла (имя файла, пространство имен)
Файл" C: \ Users \ gian_ \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ "customize \ spydercustomize.py ", строка 110, в execfile exec (compile (f.read (), filename, 'exec'), пространство имен)
Файл" C: / Users / gian_ / Documents / Irri-струйка / скорость / i.py ", строка 54, яn solver ()
Файл "C: /Users/gian_/Documents/Irri-trickle/speed/i.py", строка 49, в solver sol = root (f, думаю, method = 'krylov') # Entrega el resultado
TypeError: root () получил неожиданный аргумент ключевого слова 'jac'
File "", строка 1, в runfile ('C: / Users / gian_ / Documents /Irri-trickle / speed / i.py ', wdir =' C: / Users / gian_ / Documents / Irri-trickle / speed ')
Файл "C: \ Users \ gian_ \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py ", строка 827, в исполняемом файле исполняемого файла (имя файла, пространство имен)
Файл" C: \ Users \ gian_ \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \spydercustomize.py ", строка 110, в execfile exec (compile (f.read (), имя файла, 'exec'), пространство имен)
Файл" C: / Users / gian_ / Documents / Irri-trickle /speed / i.py ", строка 54, в solver ()
Файл" C: /Users/gian_/Documents/Irri-trickle/speed/i.py ", строка 49, в solver sol = root(f, думаю, jac = False) # Entrega el resultado
Ошибка типа: root () получил неожиданный ключyword аргумент 'jac'