2012-09-21 17 views
6

¿Cómo puedo definir una función general sin la expresión exacta en Mathematica? Por ejemplo, yo no necesito esto:¿Cómo se define una función general en mathematica?

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

necesito trabajar con un parámetro general a (x, y) en su lugar:

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

Por supuesto, esta línea no funciona demasiado bien.

Edit1:

Bueno, yo estoy usando el parámetro en otra función desconocida (desconocida, ya que sólo se define en el paquete), que funciona básicamente como un derivado, es decir, es una mezcla muy complicada de la primera y segunda derivados.

Esta línea

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

realmente funciona (o algo así), ya que el parámetro 'sobrevive' el paquete como una función, excepto en la salida me sale el molesto "Hold[a[x,y]]" en lugar de sólo a[x,y], y yo no puede usar el resultado como una función más.

+1

¿Cuál sería tu próximo paso? ¿Qué harías con un parámetro tan general a (x, y)? –

Respuesta

6

La forma de "definir" una función sin especificar una expresión es no definirlo. Solo úsalo.

Ejemplo:

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

Como se puede ver, no me defino f o g, y sin embargo Mathematica no tiene problemas de cálculo con ellos.

Tenga en cuenta que también puede hacer definiciones utilizando esas funciones. Por ejemplo:

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

Incluso puede definir operaciones aritméticas sobre ellos. Por ejemplo, se podría definir una función exp para calcular simbólicamente con exponenciales (nótese la minúscula, porque Exp ya está incorporado en la función exponencial), y luego definir

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

y luego escribir

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

Gracias, celtschk, esto me solucionó el problema. – Dee

Cuestiones relacionadas