Wolfram mathematica 通过函数的属性定义函数
我感兴趣的是在Mathematica中定义一个抽象函数f[x,y],只通过它的性质 例如,我想让Mathematica知道并简化使用f[a+b,c]=f[a,c]+f[b,c]等Wolfram mathematica 通过函数的属性定义函数,wolfram-mathematica,Wolfram Mathematica,我感兴趣的是在Mathematica中定义一个抽象函数f[x,y],只通过它的性质 例如,我想让Mathematica知道并简化使用f[a+b,c]=f[a,c]+f[b,c]等 我应该如何以这种方式定义函数?这可能会让您开始学习 Clear[f]; SetAttributes[f, HoldFirst]; f[s_Plus, b__] := f[#, b] & /@ List @@ Hold[s][[1]] // Total f[a + b + c, d, e] f[a,d,
我应该如何以这种方式定义函数?这可能会让您开始学习
Clear[f];
SetAttributes[f, HoldFirst];
f[s_Plus, b__] := f[#, b] & /@ List @@ Hold[s][[1]] // Total
f[a + b + c, d, e]
f[a,d,e]+f[b,d,e]+f[c,d,e]
这可能会让你开始
Clear[f];
SetAttributes[f, HoldFirst];
f[s_Plus, b__] := f[#, b] & /@ List @@ Hold[s][[1]] // Total
f[a + b + c, d, e]
f[a,d,e]+f[b,d,e]+f[c,d,e]
广义方法:
ClearAll[f]
e : f[s : (_Plus | _Times | _Dot), b__] := Thread[Unevaluated@e, Head[s]]
现在
返回
f[a, c] + f[b, c]
f[a, c] f[b, c]
f[a, c].f[b, c]
使现代化
较短版本:
ClearAll[f]
e : f[(s : Plus | Times | Dot)[__], b__] := Thread[Unevaluated@e, s]
广义方法:
ClearAll[f]
e : f[s : (_Plus | _Times | _Dot), b__] := Thread[Unevaluated@e, Head[s]]
现在
返回
f[a, c] + f[b, c]
f[a, c] f[b, c]
f[a, c].f[b, c]
使现代化
较短版本:
ClearAll[f]
e : f[(s : Plus | Times | Dot)[__], b__] := Thread[Unevaluated@e, s]
谢谢这就是我想要的。谢谢!这就是我想要的。