2012-09-21 26 views
6

如何在Mathematica中定義一個沒有精確表達式的通用函數?例如,我不需要這樣的:如何在mathematica中定義一個通用函數?

a[x_, y_]:= 2x + 3y, 

我需要,而不是用一般的參數來工作(X,Y):

a[x_, y_]:= a[x, y]. 

當然,這行不工作太好。

EDIT1:

嗯,我正在使用另一個未知函數的參數(未知的,因爲它是在包只定義),其工作基本上與衍生物,也就是說,它的第一和第二的非常複雜的混合體衍生物。

此行

a[x_, y_]:= a[x, y], 

實際工作(那種),因爲參數「生存」的包作爲一個功能,除了在輸出我得到了惱人的「Hold[a[x,y]]」,而不僅僅是a[x,y],和我不能再使用結果作爲函數。

+1

你的下一步會是什麼?你會用這樣的一般參數a(x,y)做什麼? –

回答

6

定義一個函數而不指定表達式的方法是而不是定義它。只要使用它。

例子:

D[f[x] g[x],x] 
(* 
==> g[x] f'[x] + f[x] g'[x] 
*) 

正如你所看到的,我並沒有確定fg,然而數學有沒有問題,他們計算。

請注意,您也可以使用這些函數進行定義。例如:

modify[a[x_,y_]]:=a[y,x+y] 
modify[a[2,3]] 
(* 
==> a[3, 5] 
*) 

你甚至可以在它們上定義算術運算。例如,你可以定義一個函數exp象徵性與指數計算(注意是小寫,因爲Exp已經是內置的指數函數),然後定義

exp/: exp[a_] exp[b_] := exp[a+b] 
exp/: exp[a_]^n_Integer := exp[n a] 

,然後寫

expression = 3 exp[x] exp[y+z]^3 
(* 
==> 3 exp[x + 3 (y + z)] 
*) 
+0

謝謝你,celtschk,這解決了我的問題。 – Dee

相關問題