【发布时间】:2017-06-22 21:51:26
【问题描述】:
我正在尝试使用 optimize.root 解决以下线性系统
AX = b
使用以下代码。
A = [[0,1,0],[2,1,0],[1,4,1]]
def foo(X):
b = np.matrix([2,1,1])
out = np.dot(A,X) - b
return out.tolist()
sol = scipy.optimize.root(foo,[0,0,0])
我知道我可以简单地使用numpy.linalg.solve 轻松地做到这一点。但我实际上是在尝试解决一个矩阵形式的非线性系统。请参阅我的问题here。所以我需要找到一种方法来使这种方法起作用。为此,我试图在这个简单的案例中解决这个问题。但我得到了错误
TypeError: fsolve: there is a mismatch between the input and output shape of the 'func' argument 'foo'.Shape should be (3,) but it is (1, 3).
从我从其他类似的 stackoverflow 问题中了解到,这是因为 foo 函数的输出与初始猜测的形状不兼容 [0,0,0]
当然有一种方法可以使用 scipy.optimize.root 来解决这个等式。有人可以帮忙吗?
【问题讨论】:
标签: numpy matrix optimization scipy