Mathematica 進階 - 自定義抽象矩陣運算
相關鏈接:http://www.guokr.com/post/95247/
需求
有沒有軟件能夠支持抽象的矩陣運算呢? 例如不給定矩陣階數的情況下
計算
(A B)^-1 = B ^ -1 * A ^ -1 (求矩陣積的逆)
解答
inverse[m_ ** n_] := inverse[n] ** inverse[m] Format[inverse[m_], TraditionalForm] := Superscript[m, -1] inverse[A ** (B + C) ** (D ** (A - B))] // TraditionalForm
輸出
(A-B)^-1**D^-1**(B+C)^-1**A^-1
matrix /: matrix[A_, {l_, m_}] ** matrix[B_, {m_, n_}] :=
matrix[A ** B, {l, n}]
matrix /: matrix[A_, {l_, m_}] - matrix[B_, {l_, m_}] :=
matrix[A - B, {l, m}]
matrix /: matrix[A_, {l_, m_}] + matrix[B_, {l_, m_}] :=
matrix[A + B, {l, m}]
Format[matrix[m_, {r_, c_}], TraditionalForm] :=
Subscript[m, Sequence[r, c]]
matrix[A, {m, n}] ** matrix[B, {n, k}] +
matrix[C, {m, k}] // TraditionalForm
分析
Format 函數可以自定義一個表達式在特定形式的顯示方式, 不如這個例子里, 我們把 inverse函數在 TraditionalForm中顯示為 -1次冪的樣子
NonCommutativeMultiply (**) 是自定義乘法的好人選
浙公網安備 33010602011771號