不同形状矩阵的矩阵

2024-10-02 18:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python通过numpy.linal.solve来解线性方程组。 方程式如下所示:Ax=b

在我的例子中,A应该是不同矩阵的矩阵[[W,U.T],[U,0]], 其中W是一个150x150 numpy阵列,U.T是一个150x11 numpy阵列,因此U是一个11x150 numpy阵列
结果b应该是如下所示的向量:[0,y], 其中y是1x11向量

我的问题是我不知道如何连接矩阵A的矩阵。 我已经尝试使用concatenate或numpy类的stack操作符。但这会产生一个161x161矩阵A,我需要一个2x2矩阵。 所以我必须把每个矩阵作为一个条目来处理,但我不知道怎么做,因为形状不同

我希望有人能帮助我。我真的被困在这里了


Tags: numpystack条目矩阵ax向量例子形状
1条回答
网友
1楼 · 发布于 2024-10-02 18:20:45

您需要将矩阵重塑为二维,并确保保持正确的数学表达式

如果我没有弄错的话,你想要的是表达以下等式:

W_1,1 x_1 + W_1,2 x_2 + ... + W_1,150 x_150 + U_1,1 x_151 + ... + U_11,1 x_161 = 0
...
W_150,1 x_1 + W_150,2 x_2 + ... + W_150,150 x_150 + U_1,150 x_151 + ... + U_11,150 x_161 = 0
U_1,1 x_1 + ... + U_1,150 x_150 = y_1
...
U_11,1 x_1 + ... + U_11,150 x_150 = y_11

因此,您将需要一个(161, 161)形状的矩阵A,其中左上角用W(150x150)元素填充,右上角用U.T(150x11)元素填充,左下角用U的(11x150)元素填充,右下角用(11x11)零填充。 数组b的形状为(161,),包含151个零和11个y元素

即:

A[:150,:150] = W
A[:150,150:] = U.T
A[150:,:150] = U
A[150:,150:] = 0

b[:150] = 0
b[150:] = y

确保所有数量都是numpy数组。 结果x也将具有形状(161,)

我认为np.linalg.solve不支持嵌套维度。但这不应该是必要的

相关问题 更多 >