Sympy dot方法维度识别异常:转置矩阵仍报维度不匹配错误
Sympy矩阵乘法报错:
.dot()方法误用问题 问题根源
你混淆了Sympy中.dot()的功能:它不是矩阵乘法运算符,而是用来计算向量点积的——要求两个操作数必须是同维度的向量(比如都是(3,1)列向量,或都是(1,3)行向量),而非矩阵乘法的维度匹配规则。
你的代码里c是(3,3)矩阵,不管是xm(3,1)还是xmt(1,3),都和c的维度不满足点积的同型要求,所以都会触发维度不匹配错误。
正确的矩阵乘法方式
在Sympy中,矩阵乘法直接用*运算符,或者调用.multiply()方法:
修正后的代码示例
from sympy import * x1, x2, x3 = symbols('x1 x2 x3') x = Matrix([x1, x2, x3]) m = Matrix([1, 2, 3]) xm = (x-m) xmt = xm.T c = Matrix([[1, 2, 3], [2, 1, 4], [3, 4, 5]]) # 正确的矩阵乘法:(1,3) * (3,3) = (1,3) result = xmt * c print(result)
运行结果
Matrix([[x1 + 2*x2 + 3*x3 - 14, 2*x1 + x2 + 4*x3 - 16, 3*x1 + 4*x2 + 5*x3 - 22]])
补充:什么时候用.dot()
如果要计算两个向量的点积,比如两个同型向量:
v1 = Matrix([1,2,3]) v2 = Matrix([4,5,6]) print(v1.dot(v2)) # 输出:32(计算逻辑:1*4 + 2*5 + 3*6)
内容的提问来源于stack exchange,提问作者liakoyras
相关产品推荐
相关产品推荐

