我偶尔会遇到这个问题,但我还没有找到解决方法。它通常发生在我找到方程的根,并且想要根据某个参数最大化/最小化/绘制该根时。所以我尝试将代码包装在一个模块中,这样它就可以只用一个输入数字来执行,但它不能在像 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