2012-11-12 24 views
3

如何定義一個抽象的奇函數,如f [x]。如何在mathematica中定義抽象奇函數?

每當f [x] + f [-x]出現時,mathematica簡化爲零。

+0

m @中有幾個函數atrributes,如'Orderless'。我想要的是一個「OddFunction」atrribute,有沒有辦法做到這一點?謝謝:) –

回答

7

這可以很容易地使用upvalues

f[x_] + f[y_] /; x == -y ^:= 0 

通常數學會嘗試上述規則分配給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] 
+0

你的回答完全震驚。謝謝,einbandi。真的,真的是我想要的。 –

+0

是的,用於數字的'f [x_?Negative]:= -f [-x]'和用於符號的'f [-a_]:= -f [a]'也是一個很好的選擇。謝謝,einbandi。 –

1

我不擅長這個,但是如何使用TransformationFunctionsSimplify

例如,假設您的表達式爲2 Sin[x] + f[x] + 3 + f[-x] + g[x] + g[-x],並且想簡化它,假設f[x]是奇函數,而g[x]是偶數。然後我們想要一個規則說f[x]+f[-x]->0和規則g[x]+g[-x]->2 g[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]。我不確定現在如何改善這一點。可能需要延遲的規則左右。會多想一想。但是你明白了我希望的想法。

+0

謝謝,阿巴西。 :) –

相關問題