如何在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
hjq447285628
SetAttributes[f, HoldAll]
f[_ + _] := 0
不过你准备怎么处理f[a+b+c]这种形式?
2020年07月24日 05点07分
2
cfwengf
谢谢大佬,学习了,MMa范例不如您靠谱。HoldAll和HoldPattern这差别感觉挺微妙,为哈会这样呢?f[_+__]
2020年07月24日 08点07分
xzcyr
“不过你准备怎么处理f[a+b+c]这种形式?”一般就是变成0吧?而且上面的规则也足以让它变0。(Plus有属性Flat。)
2020年08月01日 03点08分
吧务
level 10
asdasd1dsadsa
我已在知乎回复题主
https://www.zhihu.com/question/408849673/answer/1357559599
2020年07月28日 05点07分
3
1