矩阵的*
和**
之间有什么区别?
还有A * 1 and
A ** mat 1`?
示例:
lemma myexample:
fixes A :: "('a::comm_ring_1)^'n∷finite^'n∷finite"
shows "(A * 1 = A) ∧ (A ** (mat 1) = A)"
by (metis comm_semiring_1_class.normalizing_semiring_rules(12) matrix_mul_rid)
答案 0 :(得分:1)
Isabelle中的矩阵被简单地定义为向量的向量,因此矩阵上的*
继承自向量,而向量上的*
只是分量乘法。因此,您有(A*B) $ i $ j = A $ i $ j * B $ i $ j
,即*
是矩阵的逐项乘法。这在任何地方是否真的有用,我不知道 - 我不这么认为。它可能只是将矩阵定义为向量矢量的工件。为矩阵做一个合适的typedef可能更好,并将*
定义为右矩阵乘法,但必定有一些原因导致为什么没有这样做 - 也许只是因为这是更多的工作和大量的复制代码。
**
是正确的矩阵乘法。 mat x
只是其对角线上x
和其他地方0
的矩阵,所以当然mat 1
是单位矩阵和A ** mat 1 = A
。
然而,矩阵1
也是来自矢量定义的伪像; n维向量1
简单地定义为具有n个分量的向量,所有这些分量都是1
。因此,矩阵1
是其条目全部为1
的矩阵,当然还有A * 1 = A
。这对我来说似乎没什么用处。