Plot 最大值绘制3列离散数据

Plot 最大值绘制3列离散数据,plot,maxima,Plot,Maxima,如何绘制具有3列或更多列的离散数据集?MWE如下所示: /* Required essentially to create the data set */ eqn1: 4 - x^2 - 4*y^2$ eqn2: y^2 - x^2 + 1$ sol: rk([eqn1,eqn2],[x,y],[-1.25, 0.75],[t,0,4,0.2])$ /* My current workaround to plot (x vs t) and (y vs t) */ n : length(sol)

如何绘制具有3列或更多列的离散数据集?MWE如下所示:

/* Required essentially to create the data set */
eqn1: 4 - x^2 - 4*y^2$
eqn2: y^2 - x^2 + 1$
sol: rk([eqn1,eqn2],[x,y],[-1.25, 0.75],[t,0,4,0.2])$

/* My current workaround to plot (x vs t) and (y vs t) */
n : length(sol)$
/* Select the ith column and create separate lists */
tseries : makelist(sol[i][1], i, 1, n)$ 
xseries:  makelist(sol[i][2], i, 1, n)$ 
yseries:  makelist(sol[i][3], i, 1, n)$ 

plot2d([
    [discrete, tseries, xseries],
    [discrete, tseries, yseries]
], [legend,"x","y"] ,[xlabel,"t"], [ylabel,"x, y"],[style, 
[linespoints,2,2]],
[gnuplot_preamble,"set key box width 2 spacing 1.3 top left"])$

如果不创建
t系列
x系列
y系列
列表,是否有更好的解决方案来绘制。您的解决方案可以变得更简短一些,尽管不是很多。无论如何,
map(lambda([txy],[txy[1],txy[2]]),sol)
生成[t,x]点列表,
map(lambda([txy],[txy[1],txy[3]]),sol生成[t,y]点列表。因此,对于上面给出的
sol
,我发现

plot2d ([[discrete, map(lambda([txy], [txy[1], txy[2]]), sol)],
         [discrete, map(lambda([txy], [txy[1], txy[3]]), sol)]]);

具有所需的输出(为清晰起见,省略打印选项)。

好吧,似乎[sol[k][2],sol[k][3]是对应于sol[k][1]的x和y坐标。所以可能
plot2d([discrete,map(rest,sol)])
就足够了。@RobertDodier:这不会产生相同的绘图。命令
map(rest,sol)
生成原始数据集的第2列和第3列。因此,我猜测上述命令的一个变体将给出(第1列和第2列)和(第1列和第3列)。