如何在Mathematica中定义一个函数f[a+a]=0,a是任意元素?
mathematica吧
全部回复
仅看楼主
level 4
cfwengf 楼主
自答一下:
f[HoldPattern[_+_]]:=0;
上述定义可以处理f[a+b],但不能处理f[a+a],于是我又增加定义
f[2*_]:=0;
上述定义可以处理f[a+a],但不能处理f[2+2],于是我又增加定义
f[x_]/;EvenQ[x]:=0
上述定义可以处理f[2+2],但不能处理f[2.1+2.1]。
有什么简单的方法吗?
2020年07月24日 01点07分 1
level 7
SetAttributes[f, HoldAll]
f[_ + _] := 0
不过你准备怎么处理f[a+b+c]这种形式?
2020年07月24日 05点07分 2
谢谢大佬,学习了,MMa范例不如您靠谱。HoldAll和HoldPattern这差别感觉挺微妙,为哈会这样呢?f[_+__][乖]
2020年07月24日 08点07分
“不过你准备怎么处理f[a+b+c]这种形式?”一般就是变成0吧?而且上面的规则也足以让它变0。(Plus有属性Flat。)
2020年08月01日 03点08分
吧务
level 10
2020年07月28日 05点07分 3
1