Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Numpy 用矩阵方程优化.root_Numpy_Matrix_Optimization_Scipy - Fatal编程技术网

Numpy 用矩阵方程优化.root

Numpy 用矩阵方程优化.root,numpy,matrix,optimization,scipy,Numpy,Matrix,Optimization,Scipy,我正在尝试使用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来轻松完成这项工作。但我实际上是在试图

我正在尝试使用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
来轻松完成这项工作。但我实际上是在试图解决一个矩阵形式的非线性系统。见我的问题。所以我需要找到一种方法让这个方法有效。为了做到这一点,我试图在这个简单的案例中解决这个问题。但是我得到了错误

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解决这个方程。有人能帮忙吗?

(我假设你的
.dot
中的大写字母
B
a
的拼写错误)


尝试将
np.array
用于
b
<代码>np。矩阵创建一个“行向量”,即形状
(1,3)
,而您最初的猜测是形状
(3,)

对不起。是的,它是
a
的输入错误。如何将函数
foo
的输出转换为形状
(3,)
?对
b
使用
np.array
不起作用吗?我很确定您不需要
.tolist()
。不,不幸的是,您仍然会遇到相同的错误。我试着变换矩阵。但还是不行。我使用了
b=np.array([2,1,1])
奇怪,对我有效。您发布的代码是否与您实际使用的代码相同?我这样问是因为,如果你用
np.matrix
代替
A
列表,它就不起作用了。