最初に言っておきますが、私は Mathematica の初心者であり、この質問はおそらく簡単に答えられますが、インターネットを探し回っても、この特定の問題に対する助けを見つけることができませんでした。ここでは、コードで実行する必要があることを基本的にまとめました。条件ステートメント/.
で replace コマンドを使用すると、問題が発生します。IF
基本的に、条件によってグローバルに定義された別の関数を含む非常に長い関数がありIF
ます。これらの数行のコードは、私が実行しているエラーを示しています...
In[1]:= y[x_, z_] = 2*x + 3*z;
In[2]:= zz[x_, z_] := If[y[x, z] < 0, 4*y[x, z], y[x, z]]
In[3]:= zz[-1, -2]
Out[3]= -32
しかし、私は必要です...
In[4]:= zz[x_, z_] /. x -> -1 /. z -> -2
Out[4]= If[3 Pattern[-2, _] + 2 Pattern[-1, _] < 0,
4 y[Pattern[-1, _], Pattern[-2, _]],
y[Pattern[-1, _], Pattern[-2, _]]]
これは、期待される数値項を生成しません。この質問がどれほどばかげているように聞こえるかもしれませんが、ご協力いただきありがとうございます。x
注:およびに値を直接割り当てるのではなく、replace コマンドを使用する必要がありますz
。
補遺:
例を単純化しすぎました。次の例を見てください。
In[91]:= a[b_, c_] = -3*b + 2*c + d + e + f;
In[92]:= g[b_, c_] := If[a[b, c] < 0, -3*a[b, c], a[b, c]];
In[10]:= g[2, 4] /. d -> 1 /. e -> 2 /. f -> 3
Out[10]= 2 + d + e + f
しかし、私は結果を見ることを期待していますOut[10]= 8
うまくいけば、別の簡単な修正。