[问题] 自定符号运算的分配律运算

楼主: dkyjxu (dkyjxu)   2013-04-27 23:46:47
我想用符号 ⊙(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 ) ] ]
我请想问有没有方法可以解决这个问题
作者: LPH66 (-6.2598534e+18f)   2013-04-28 00:49:00
可参考我在 #1E5rn_Fl 里提到的 ref/NonCommutativeMultiply当中的那个范例去改来用唔, 我回头看了一下, 你想要的是自动分配...那这个应该不行

Links booklink

Contact Us: admin [ a t ] ucptt.com