【发布时间】:2017-11-08 22:21:29
【问题描述】:
我正在尝试使用 scipy.optimize.newton_krylov() 来解决最小二乘优化问题,即找到 x 使得 (Ax - b)**2 = 0。我的理解是 A 必须是 mxn m>n,b 必须是 mx1,x 是 nx1。当我尝试运行优化时,出现错误:
ValueError: expected square matrix, but got shape=(40, 6)
大概这个错误与雅可比矩阵的计算有关,而不是我的输入矩阵 A?但如果是这样,我该如何更改我为函数提供的值来解决这个问题?任何建议将不胜感激。
以下代码重现了错误:
import numpy as np
from scipy.optimize import newton_krylov
A = np.random.uniform(0, 1, (40,6))
b = np.arange(40)
x0 = np.ones(6)
def F(x):
return (A.dot(x) - b)**2
x = newton_krylov(F, np.ones(6))
【问题讨论】:
-
该错误表明它需要一个方阵并表明您提供了一个 40x6 的,这与您的矩阵 A 相同。首先测试一个方阵 A。
标签: python numpy optimization scipy