Чтобы сделать запрос конкретным, скажем, я пытаюсь решить приведенное ниже нелинейное уравнение

Таким образом, аналитический якобиан должен быть

Учитывая тот факт, что решением является x=2, y=3, результирующий якобиан должен быть таким;
Код: Выделить всё
[[ 7. 2.],
[27. 37.]]
Код: Выделить всё
import numpy as np
from scipy.optimize import fsolve
def func(state):
x, y = state
return np.array([
x*x + x*y - 10,
y + 3*x*y*y - 57
])
root, infodict, ier, msg = fsolve(func, [1, 1], full_output=1)
infodict
{
'nfev': 17,
'fjac': array([[-0.37752111, -0.92600098],
[ 0.92600098, -0.37752111]]),
'r': array([-19.75658594, -31.31465043, -10.37441936]),
'qtf': array([-3.76551619e-10, -1.76781500e-10]),
'fvec': array([ 2.13162821e-14, -4.19220214e-13])
}
Я пытался создать полный R из заданного верхнего треугольного R и выполнить инверсию матрицы.
Код: Выделить всё
R = np.zeros((2, 2))
r = infodict['r']
Q = infodict['fjac'].T
R[0,0] = r[0]
R[0,1] = r[1]
R[1,1] = r[2]
J = Q.T @ R
Может ли кто-нибудь пролить свет на этот вопрос? Мне нужен только один элемент якобиана, если это проще, чем восстанавливать весь якобиан.
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... an-from-qr
Мобильная версия