zoukankan      html  css  js  c++  java
  • 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 (**) 是自定义乘法的好人选

     

  • 相关阅读:
    ZIP压缩算法详细分析及解压实例解释
    nyoj 269 VF
    骨牌覆盖问题 KxM
    骨牌覆盖问题
    省赛总结...
    归并排序求逆序对
    「JLOI2014」松鼠的新家
    「JSOI2011」任务调度
    「JSOI2010」找零钱的洁癖
    「JSOI2011」棒棒糖
  • 原文地址:https://www.cnblogs.com/dabaopku/p/2583649.html
Copyright © 2011-2022 走看看