请考虑以下代码。
from scipy import optimize
def fun(x):
return [x[0] + 0.5 * (x[0] - x[1])**3 - 1.0,
0.5 * (x[1] - x[0])**3 + x[1]]
def jac(x):
return np.array([[1 + 1.5 * (x[0] - x[1])**2,
-1.5 * (x[0] - x[1])**2],
[-1.5 * (x[1] - x[0])**2,
1 + 1.5 * (x[1] - x[0])**2]])
sol = optimize.root(fun, [0, 0],method='hybr')
print(sol)
特别是print(sol.fjac)
会返回以下2 x 2
矩阵。我们称之为矩阵A
。
[[-0.9 0.44]
[-0.44 -0.9 ]]
根据documentation,这是在某个时刻评估的函数fun
的雅可比矩阵。
问题即可。究竟在哪一点?更确切地说,x0
等于矩阵jac(x0)
A
的价值是多少?
我已将上面的显式雅可比行列用于测试目的。
例如,我测试jac(sol.x)
并且它与上面的2 x 2
矩阵不同,因此它不能在解决方案中评估雅可比矩阵。我也做了jac([0,0])
,它仍然不等于给定的矩阵。
有什么想法吗?