在sympy库中,使用matrix_multiply_elementwise函数是否可以对超过两个矩阵进行逐元素相乘?还有其他方法可以对多个矩阵进行逐元素相乘吗?
p.s. 在numpy中很容易实现,但由于我需要高精度计算,所以我决定使用sympy。
在sympy库中,使用matrix_multiply_elementwise函数是否可以对超过两个矩阵进行逐元素相乘?还有其他方法可以对多个矩阵进行逐元素相乘吗?
p.s. 在numpy中很容易实现,但由于我需要高精度计算,所以我决定使用sympy。
sympy.matrices.dense.matrix_multiply_elementwise(A, B)
实现,文档在这里。from sympy import Matrix, pprint
a = Matrix([[1,2],[3,4]])
b = Matrix([[1,10],[100,1000]])
c = Matrix([[-1,1],[1,-1]])
x = Matrix(2,2, lambda i,j,m1=a,m2=b,m3=c: m1[i,j]*m2[i,j]*m3[i,j])
pprint(a)
pprint(b)
pprint(c)
pprint(x)
为了简单起见,此解决方案适用于2X2形状的矩阵,但可以轻松地适应其他大小(使用形状属性)
以下是输出结果
⎡1 2⎤
⎢ ⎥
⎣3 4⎦
⎡ 1 10 ⎤
⎢ ⎥
⎣100 1000⎦
⎡-1 1 ⎤
⎢ ⎥
⎣1 -1⎦
⎡-1 20 ⎤
⎢ ⎥
⎣300 -4000⎦