如何在mathematica中定义一般函数?

时间:2012-09-21 11:59:29

标签: function wolfram-mathematica expression definition

如何在没有Mathematica中的确切表达式的情况下定义一般函数?例如,我不需要这个:

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

我需要使用通用参数a(x,y)代替:

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

当然,这条线路效果不好。

EDIT1:

好吧,我在另一个未知函数中使用该参数(未知,因为它只在包中定义),它基本上是一个衍生物,即它是一个非常复杂的一阶和二阶导数组合。

这一行

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

实际上是有效的(种类),因为参数'将'存活'作为一个函数,除了在输出中我得到恼人的“Hold[a[x,y]]”而不仅仅是a[x,y],我可以' t将结果用作函数。

1 个答案:

答案 0 :(得分:8)

在不指定表达式的情况下“定义”函数的方法是定义它。只需使用它。

示例:

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

正如您所看到的,我没有定义fg,但Mathematica使用它们计算时没有任何问题。

请注意,您也可以使用这些功能进行定义。例如:

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)]
*)