Dee*_*Dee 7 expression wolfram-mathematica function definition
如何在没有Mathematica中的确切表达式的情况下定义一般函数?例如,我不需要这个:
a[x_, y_]:= 2x + 3y,
Run Code Online (Sandbox Code Playgroud)
我需要使用一般参数a(x,y):
a[x_, y_]:= a[x, y].
Run Code Online (Sandbox Code Playgroud)
当然,这条线不太好用.
EDIT1:
好吧,我在另一个未知函数中使用该参数(未知因为它仅在包中定义),它基本上作为一个衍生物工作,即它是一个非常复杂的一阶和二阶导数组合.
这条线
a[x_, y_]:= a[x, y],
Run Code Online (Sandbox Code Playgroud)
实际工作(种类),因为参数'幸存'包作为一个函数,除了输出我得到恼人的" Hold[a[x,y]]"而不是只是a[x,y],我不能再将结果用作函数.
在不指定表达式的情况下"定义"函数的方法是不定义它.只是使用它.
例:
D[f[x] g[x],x]
(*
==> g[x] f'[x] + f[x] g'[x]
*)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我没有定义f或者g,然而Mathematica没有用它们计算的问题.
请注意,您还可以使用这些函数进行定义.例如:
modify[a[x_,y_]]:=a[y,x+y]
modify[a[2,3]]
(*
==> a[3, 5]
*)
Run Code Online (Sandbox Code Playgroud)
您甚至可以在它们上定义算术运算.例如,您可以定义一个函数exp以使用指数进行符号计算(注意小写,因为Exp已经是内置的指数函数),然后定义
exp/: exp[a_] exp[b_] := exp[a+b]
exp/: exp[a_]^n_Integer := exp[n a]
Run Code Online (Sandbox Code Playgroud)
然后写
expression = 3 exp[x] exp[y+z]^3
(*
==> 3 exp[x + 3 (y + z)]
*)
Run Code Online (Sandbox Code Playgroud)