カスタム関数
カスタム関数は、ハイライト 1 に注意する必要があります
。2:=
の代わりに=
定義するとき、式の左端の関数変数には下線が付けられます。これは「空白」と呼ばれます。
おそらく Wolfram システムの変換ルールの最も強力な点は,式だけでなくパターンにも使用できることです. パターンとは f[t_] などのアンダースコアを含む式です. アンダースコアはあらゆる式を表すことができます. したがって, f[t_] の変換ルールは、任意の引数を使用して関数 f を変換します。対照的に、アンダースコアのない f[x] の変換ルールは式 f[x] のみを変換しますが、f[ などの式の場合は注意してください。
f[t_]:=t^2のような関数を定義するとき,あなたがやっているのは,可能な限り[t_]->t^2という変換規則fを自動的に使用するようにWolframシステムに指示することである.
(MMA チュートリアル「関数変換ルール」より引用)
関数を定義した後、変数に値を代入したり、グラフを描くこともできます
f2[t_] := t^3
f2[3]
f2[a]
Plot[f2[t], {
t, 0, 3}]
関数式を微分する
この演算は比較的単純で、D[f,x]
またはD[f,{x,n}]
偏導関数と高次導関数をそれぞれ表します。
以下に例を示します
f[x_] := x^5 + 6 x
D[x^5 + 6 x, x]
D[f[x], x]
D[f[t], t]
操作の結果は、
微分の結果を新しいカスタム関数として保存します
場合によっては、導出の結果を後で使用するために新しいカスタム関数として保存できることが望まれます。
直感的ではあるが間違ったアプローチは次のとおりです。
上の図からわかるように、g[t] の結果は問題ないようですが、g[3] の結果は完全に正しくありません。
その理由は、x を代入すると元の関数 f の x も代入されるからです。
f と g を見ると、g は独立した関数ではないことがわかりますが、まず変数を f に代入してから導出する必要があります。したがって、g[2] の場合、D[f(2),2] を求めることと等価ですが、これは不合理です。
以下に 4 つのオプションが提供されていますが、最初の 2 つのオプションが最も優れていると思われます。
解決策 1
関数をカスタマイズするときにこれを使用するのが一般的であり:=
、=
ここで。たった今
f[x_] := x^5 + 6 x
g[x_] = D[f[x], x]
g[t]
g[2]
結果は次のとおりです
解決策 2
ブロックを使う(ブロック)
Block[{x,y,...},expr]
これは、シンボル x、y、… のローカル値を使用して expr が計算されることを指定することを意味します。
f[x_] := x^5 + 6 x
g[x_] = Block[{
t}, t = x; D[f[t], t]]; (*注意这里用的是=*)
g[t]
g[2]
結果は次のとおりです
解決策 3
前の解決策と同様に、:=
f[x_] := x^5 + 6 x
g[x_] := Block[{
result}, result = D[f[t], t] /. {
t -> x};
Return[result]];
g[t]
g[2]
解決策 4
問題の原因はxの代入にあるので、変数名を変更します。
ただし、これの欠点は、関数と変数名が増えることです。
f[x_] := x^5 + 6 x
g[xx_] := D[f[x], x] /. x -> xx
g[t]
g[2]
結果は次のとおりです