Function 如何在mathematica中定义抽象奇数函数?
如何定义一个抽象的奇数函数,比如f[x]Function 如何在mathematica中定义抽象奇数函数?,function,wolfram-mathematica,Function,Wolfram Mathematica,如何定义一个抽象的奇数函数,比如f[x] 无论何时出现f[x]+f[-x],mathematica都会将其简化为零。我不擅长这一点,但是使用Simplify的转换函数如何 例如,假设表达式2sin[x]+f[x]+3+f[-x]+g[x]+g[-x]要简化它,假设f[x]是奇数函数而g[x]是偶数函数。然后我们需要一个规则说f[x]+f[-x]>0和一个规则g[x]+g[-x]>2g[x] 因此写 myRules[e_]:=e/.f[x]+f[-x]->0/.g[x]+g[-x]->
无论何时出现f[x]+f[-x],mathematica都会将其简化为零。我不擅长这一点,但是使用
Simplify
的转换函数如何
例如,假设表达式2sin[x]+f[x]+3+f[-x]+g[x]+g[-x]
要简化它,假设f[x]
是奇数函数而g[x]
是偶数函数。然后我们需要一个规则说f[x]+f[-x]>0
和一个规则g[x]+g[-x]>2g[x]
因此写
myRules[e_]:=e/.f[x]+f[-x]->0/.g[x]+g[-x]->2 g[x]
Simplify[2 Sin[x]+ f[x]+ 3 +f[-x]+ g[x] + g[-x],
TransformationFunctions->{Automatic,myRules}]
这就给了
3+2 g[x]+2 Sin[x]
顺便说一句,在上面,我使用了f[x]
,它实际上应该是一个模式f[x]
,这样像f[anything]+f[-anything]
这样的表达式也将变为零。因此,这需要改进,以使myRules
更加通用。现在它只适用于精确表达式f[x]
。我现在不知道如何改进这一点。可能需要一个延迟的规则。我会仔细考虑的。但是我希望你能得到这个想法。这可以用upvalue轻松完成
f[x_] + f[y_] /; x == -y ^:= 0
通常,Mathematica会尝试将上述规则分配给Plus
,这当然不起作用,因为这是受保护的。通过使用^:=
而不是:=
可以将规则分配给f
。快速检查会产生:
In[2]:= f[3]+f[-3]
Out[2]:= 0
编辑:但是,这仅适用于Plus
。最好使用更通用的方法,例如:
f[x_?Negative] := -f[-x]
这也适用于以下情况
In[4]:= -f[3] - f[-3]
Out[4]:= 0
如果您还希望该函数具有象征意义,可以添加如下内容:
f[-a_] := -f[a]
m@中有几个函数属性,例如Orderless
。我想要的是一个“OddFunction”属性,有办法做到这一点吗?谢谢:)完全被你的回答震惊了。谢谢你,艾因班迪。真的,真的是我想要的。是的,数字和符号的组合也是一个很好的选择。谢谢你,艾因班迪。