8

Mathematicaで正確な式を使わずに一般的な関数を定義するにはどうすればよいですか?たとえば、私はこれを必要としません:

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

代わりに、一般的なパラメーターa(x、y)を使用する必要があります。

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

もちろん、この行はあまりうまく機能しません。

編集1:

さて、私は別の未知の関数(パッケージでのみ定義されているため不明)でパラメーターを使用しています。これは基本的に導関数として機能します。つまり、1次導関数と2次導関数の非常に複雑な組み合わせです。

この行

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

パラメータ'はパッケージを関数として存続させる'ため、実際には機能します。ただし、出力ではHold[a[x,y]]、単なるの代わりに迷惑な ""a[x,y]が表示され、結果を関数として使用できなくなります。

4

1 に答える 1

10

式を指定せずに関数を「定義」する方法は、関数を定義しないことです。使用するだけです。

例:

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

ご覧のとおり、私はfまたはgを定義していませんが、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)]
*)
于 2012-09-22T08:21:51.460 に答える