Python矩阵运算避坑:解决矩阵乘向量与实数顺序导致的维度错误
本文针对Python中使用NumPy进行矩阵运算时常见的维度错误进行解析。重点讨论矩阵乘向量及矩阵与实数相乘时,因操作顺序或数据类型(array与mat)混淆导致的报错问题。通过具体代码示例,展示如何正确调整运算顺序以解决维度不匹配错误,确保计算结果符合预期。
矩阵运算基础设定
计算:Ax-b
设定矩阵A为2*2维,向量x为2*1维,向量b为2*1维。因此,表达式Ax-b的计算结果应为2*1维。
if __name__ == "__main__":
A = np.array([[4.0, 1.0],
[1.0, 3.0]])
b = np.array([[1.0], [2.0]])
x_0 = np.array([[2.0], [1.0]])
r_k = A * x_0 - b
print(r_k)

常见错误分析
错误!!!
修改:
if __name__ == "__main__":
A= mat([[4.0, 1.0],
[1.0, 3.0]])
b = mat([[1.0], [2.0]])
x_0 = mat([[2.0], [1.0]])
r_k = A * x_0 - b
print(r_k)

维度报错与修正方案
if __name__ == "__main__":
A= mat([[4.0, 1.0],
[1.0, 3.0]])
b = mat([[1.0], [2.0]])
x_k = mat([[2.0], [1.0]])
p_k = -x_k # 2行1列
r_k = A * x_k - b # 2行1列
alpha_k = (np.transpose(r_k) * r_k) / (np.transpose(p_k) * A * p_k) # 1行1列
-----------------------------------------------
x_k = x_k + alpha_k * p_k #2行1列 !!!!这里报错
-----------------------------------------------
print(x_k)

修改:
if __name__ == "__main__":
A= mat([[4.0, 1.0],
[1.0, 3.0]])
b = mat([[1.0], [2.0]])
x_k = mat([[2.0], [1.0]])
p_k = -x_k # 2*1
r_k = A * x_k - b # 2*1
alpha_k = (np.transpose(r_k) * r_k) / (np.transpose(p_k) * A * p_k) # 1*1
-----------------------------------------------
x_k = x_k + p_k *alpha_k
-----------------------------------------------
print(x_k)

以上这篇解决Python计算矩阵乘向量,矩阵乘实数的一些小错误就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













