Представьте, что у меня есть два уравнения с одним неизвестным, и я хочу использовать fsolve
, чтобы решить его:
0 = 0.5*x[0]**2-2
0 = 2-x
Ясно, что ответ x=2
.Я пробовал это
import numpy as np; from scipy.optimize import fsolve
def f(x):
r = np.zeros(2)
r[0] = 0.5*x[0]**2-2
r[1] = 2-x[0]
return r
fsolve(f,[0.5])
Сообщение об ошибке "Массив, возвращаемый функцией, изменил размер между вызовами"
Я не вижу, что происходит не такВот.Как мне решить эту проблему?
В общем, Как мне решить уравнения, в которых число переменных меньше числа уравнений.
Вот полное сообщение
Traceback (most recent call last):
File "<ipython-input-37-e4f77791f3f6>", line 12, in <module>
fsolve(f,[0.5])
File "... anaconda3/lib/python3.7/site-packages/scipy/optimize/minpack.py", line 148, in fsolve
res = _root_hybr(func, x0, args, jac=fprime, **options)
File ".... /anaconda3/lib/python3.7/site-packages/scipy/optimize/minpack.py", line 227, in _root_hybr
ml, mu, epsfcn, factor, diag)
ValueError: The array returned by a function changed size between calls