有的时候想从MMA画的图中取出数据到Origin里面话,最简单的办法就是
graph=Plot[Sin[x],{x,0,10}]
然后:
pp=Cases[graph,Line[x_]:>x,Infinity]
今天晚上,心血来潮,看到EvaluationMonitor函数,就想了另外一种办法:
p=Reap[Plot[Sin[x],{x,0,10},
EvaluationMonitor:>Sow[{x,Sin[x]}]];]
然后:
ListLinePlot[p[[2,1]]]
得到如下图形:

仔细看了一下,则是因为p[[2,1]]里面的数据不是有序排列,Sort一下就OK了

而用第一种办法,取出的数据则正常

从帮助文档来看,EvaluationMonitor
is an option for various numerical computation and plotting functions that gives an expression to evaluate whenever functions derived from the input are evaluated
numerically.
很明显,第一种方法得到的点都是Plot函数内部进行每一次计算所得到的。
现在问题是:Plot在画图时,内部算法在计算取点的时候,难道不是从左往右依次取点的?
有知道确定答案的不?
graph=Plot[Sin[x],{x,0,10}]
然后:
pp=Cases[graph,Line[x_]:>x,Infinity]
今天晚上,心血来潮,看到EvaluationMonitor函数,就想了另外一种办法:
p=Reap[Plot[Sin[x],{x,0,10},
EvaluationMonitor:>Sow[{x,Sin[x]}]];]
然后:
ListLinePlot[p[[2,1]]]
得到如下图形:

仔细看了一下,则是因为p[[2,1]]里面的数据不是有序排列,Sort一下就OK了

而用第一种办法,取出的数据则正常

从帮助文档来看,EvaluationMonitor
is an option for various numerical computation and plotting functions that gives an expression to evaluate whenever functions derived from the input are evaluated
numerically.
很明显,第一种方法得到的点都是Plot函数内部进行每一次计算所得到的。
现在问题是:Plot在画图时,内部算法在计算取点的时候,难道不是从左往右依次取点的?
有知道确定答案的不?

