[問題] 自定符號運算的分配律運算

看板Mathematica作者 (dkyjxu)時間11年前 (2013/04/27 23:46), 編輯推噓2(201)
留言3則, 1人參與, 最新討論串1/2 (看更多)
我想用符號 ⊙(CircleDot) 來表示我所需要的一種運算 其中一個 ⊙ 必須滿足的運算規則是對加法 +(Plus) 的分配律 ex: i ⊙ ( j + k ) = i ⊙ j + i ⊙ k 我在 mathematica 的 Documentation Center 找到一個內建函數 Distribute 可以達到 做分配律的運算 例如當我輸入 Distribute[ i ⊙ ( j + k ) ] 其結果是 i ⊙ j + i ⊙ k 這似乎是滿足我的需求, 但當我想把它寫成更一般的代換規則時問題就來了 我輸入了一行如下的程式碼 a_ ⊙ b_ := Distribute[ a ⊙ b ] 期望之後所有的輸入當遇到 ⊙ 時就自動使用分配律 但這時我只要再輸入 ⊙ 有關的運算就會出現無限遞迴 例如輸入 i ⊙ ( j + k ) 結果是 $RecursionLimit::reclim: Recursion depth of 256 exceeded. >> $RecursionLimit::reclim: Recursion depth of 256 exceeded. >> Hold[ Hold[ i ⊙ ( j + k ) ] ] 我請想問有沒有方法可以解決這個問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.71.14

04/28 00:49, , 1F
可參考我在 #1E5rn_Fl 裡提到的 ref/NonCommutativeMultiply
04/28 00:49, 1F

04/28 00:49, , 2F
當中的那個範例去改來用
04/28 00:49, 2F

04/28 00:53, , 3F
唔, 我回頭看了一下, 你想要的是自動分配...那這個應該不行
04/28 00:53, 3F
文章代碼(AID): #1HU_BgLr (Mathematica)
文章代碼(AID): #1HU_BgLr (Mathematica)