对于Mathematica中的插值函数InterpolatingFunction,在哪些场合必须在它外面套上Evaluate命令?如题.目前我只知道,如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的,那么,还有哪些场合
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/19 09:35:01
![对于Mathematica中的插值函数InterpolatingFunction,在哪些场合必须在它外面套上Evaluate命令?如题.目前我只知道,如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的,那么,还有哪些场合](/uploads/image/z/13322476-28-6.jpg?t=%E5%AF%B9%E4%BA%8EMathematica%E4%B8%AD%E7%9A%84%E6%8F%92%E5%80%BC%E5%87%BD%E6%95%B0InterpolatingFunction%2C%E5%9C%A8%E5%93%AA%E4%BA%9B%E5%9C%BA%E5%90%88%E5%BF%85%E9%A1%BB%E5%9C%A8%E5%AE%83%E5%A4%96%E9%9D%A2%E5%A5%97%E4%B8%8AEvaluate%E5%91%BD%E4%BB%A4%3F%E5%A6%82%E9%A2%98.%E7%9B%AE%E5%89%8D%E6%88%91%E5%8F%AA%E7%9F%A5%E9%81%93%2C%E5%A6%82%E6%9E%9C%E8%A6%81%E5%AF%B9%E8%BF%99%E6%A0%B7%E7%9A%84%E5%87%BD%E6%95%B0%E4%BD%BF%E7%94%A8Plot3D%E6%8C%87%E4%BB%A4%2C%E9%82%A3%E6%98%AF%E5%BF%85%E9%A1%BB%E8%A6%81%E7%BB%99%E5%AE%83%E5%A5%97%E4%B8%8A%E4%B8%AAEvaluate%E7%9A%84%2C%E9%82%A3%E4%B9%88%2C%E8%BF%98%E6%9C%89%E5%93%AA%E4%BA%9B%E5%9C%BA%E5%90%88)
对于Mathematica中的插值函数InterpolatingFunction,在哪些场合必须在它外面套上Evaluate命令?如题.目前我只知道,如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的,那么,还有哪些场合
对于Mathematica中的插值函数InterpolatingFunction,在哪些场合必须在它外面套上Evaluate命令?
如题.目前我只知道,如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的,那么,还有哪些场合是必须要加上Evaluate的呢?
对于Mathematica中的插值函数InterpolatingFunction,在哪些场合必须在它外面套上Evaluate命令?如题.目前我只知道,如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的,那么,还有哪些场合
绘图类的函数基本都有HoldAll属性,我个人的理解是:
不加Evaluate的情况下,Mma永远不会单独计算你的表达式(也就是绘图函数的第一个参数),而是在绘图带入后面的参数求值(很像定义函数里的延时赋值":=").比如:
Plot[1+1+x,{x,0,1}]
在这里Mma不会把1+1+x化简为2+x,而是绘图的过程中代入具体x的值,比如求x=0的坐标过程大概是这样的
x=0
计算1+1+x
得到2
对于Interpolating,不加也是可以的,我猜测原因这个计算不会影响坐标点的计算,先把变量赋上值再计算Interpolating和先求Interpolating在求值最终都能把坐标点求出来.但是不加Evaluate的时候每求一个点的坐标都会求一次插值函数,这样就造成了重复计算,这也许就是帮助里加Evaluate的原因吧.
当计算顺序会影响结果的时候,就必须用Evaluate了.对于这个例子:
fsol[k_?NumericQ] :=
NDSolve[{Derivative[2,0][u][x,t] x^4 ==
x^3 t Cos[x Sin[t]]/(1/10 + Sin[t]) + k Derivative[0,1][u][x,t],
u[0,t] == 0,u[1,t] == 0,u[x,0] == x (1 - x)},
u[x,t],{x,0,1},{t,0,1}]
Plot3D[u[x,t] /.fsol[5][[1]],{t,0,1},{x,0,1},
PlotRange -> All]
不加Evaluate就不行了.不加Evaluate的话x和t的赋值在前,替换规则fsol的计算在后,这时就会在应用fsol的时候出现找不到x和t的情况(因为x和t已经有值了).
综上,帮助里加Evaluate是有道理的.虽然有时候不加Evaluate也能出图,但这样会增加不必要的计算.
这题不用Evaluate也能画出来啊
"如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的",举个例子呢?…这算啥,求解偏微分方程那节的帮助坑我…真的不是总是必要的,可是帮助里的这个例子就需要: fsol[k_?NumericQ] := NDSolve[{Derivative[2, 0][u][x, t] x^4 == x^3 t Cos[x Sin[t]]/(1/10 + Sin[t]...
全部展开
"如果要对这样的函数使用Plot3D指令,那是必须要给它套上个Evaluate的",举个例子呢?
收起