私は時々この問題に遭遇しますが、それを回避する方法を見つけていません。これは通常、方程式の根を見つけているときに発生し、いくつかのパラメーターに従ってその根を最大化/最小化/プロットしたい場合に発生します。そのため、入力番号だけですべて実行できるようにコードをモジュールにラップしようとしましたが、Plot などの関数内では機能しません。例えば:
f[din_] := Module[{d = din},
sol = NDSolve[{y'[x] == y[x], y[0] == 1}, y[x], {x, 0, 10}];
t1 = Flatten[FindRoot[y[x] - d /. sol, {x, 1}]];
x /. t1
]
f[2]
f[2.5]
f[3]
Plot[f[x], {x, 2, 3}]
数値を指定した f の呼び出しはすべて期待どおりに機能しますが、Plot 関数の f は記号 'x' または何かで評価されるようで、多くのエラー テキストが表示されます。
これを回避する方法はありますか?
フォーラムを見回すと、同様の問題に対するいくつかの提案が見つかりました-次のような定義を作成するなど:
f[din_?NumericQ]:=
できる限りのことを試しましたが、何も違いがないようです。Mathematica 8.0を使用しています