2012-09-21 12 views
6

Wie kann ich eine allgemeine Funktion ohne den exakten Ausdruck in Mathematica definieren? Zum Beispiel brauche ich das nicht:Wie definiert man eine allgemeine Funktion in Mathematica?

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

Ich brauche ein (x, y) statt mit einem allgemeinen Parameter zu arbeiten:

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

Natürlich ist diese Linie nicht funktionieren Gut.

Edit1:

Nun, ich bin mit dem Parameter in einer anderen unbekannten Funktion (unbekannt, weil es nur im Paket definiert ist), der grundsätzlich als Derivat arbeitet, dh es ist eine sehr komplizierte Mischung aus ersten und zweiten Derivate.

Diese Linie

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

tatsächlich funktioniert (Art), da der Parameter das Paket als Funktion ‚überlebt‘, außer in der Ausgabe erhalte ich die lästigen „Hold[a[x,y]]“ statt nur a[x,y], und ich kann das Ergebnis nicht mehr als Funktion verwenden.

+1

Was wäre dein nächster Schritt? Was würdest du mit einem solchen allgemeinen Parameter a (x, y) machen? –

Antwort

6

Der Weg, eine Funktion zu definieren, ohne einen Ausdruck anzugeben, ist nicht definieren. Benutze es einfach.

Beispiel:

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

Wie Sie sehen können, habe ich nicht f definiert haben oder g, und doch hat Mathematica keine Probleme mit ihnen zu berechnen.

Beachten Sie, dass Sie mit diesen Funktionen auch Definitionen erstellen können. Zum Beispiel:

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

Sie können sogar arithmetische Operationen auf ihnen definieren. Zum Beispiel könnten Sie eine Funktion exp symbolisch mit Exponentialgrößen zu berechnen (man beachte die Kleinbuchstaben, weil Exp ist bereits der Einbau-Exponentialfunktion) definieren, und dann

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

definieren und dann schreiben

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

Danke, celtschk, das hat das Problem für mich gelöst. – Dee

Verwandte Themen