Sage:如何在特定 x 值处沿函数 f(x) 的图形绘制点?

Sage: How to plot points along the graph of a function f(x) at specific values of x?

如果我有函数 f(x) 的二维图,如下所示:

f(x) = sin(x)
show(plot(f, (x,0, 2 * pi)))

如何使用 Sage 在 x 的指定值处沿着 f(x) 的图形绘制点?例如,如何在上图的顶部显示红点,使其看起来像下图?

给定一个值列表 L= [0, pi/8, pi/4, pi/2, 3*pi/4, pi],是否有一种简洁的方法可以在 f(x) 的图形上在每个 x 值处绘制点?

要绘制点列表,请使用 pointspoint2d。参见:

请注意,您还可以自定义坐标轴上的刻度 以匹配您正在绘制的点。

这是一个例子。

sage: f(x) = sin(x)
sage: xx = [0, pi/8, pi/4, pi/2, 3*pi/4, pi]
sage: yy = [f(x) for x in xx]
sage: xy = list(zip(xx, yy))
sage: f_plot = plot(f, (x, 0, 2*pi), ticks=(xx, yy), tick_formatter=(pi, None))
sage: f_dots = points(xy, color='red')
sage: p = f_plot + f_dots
sage: p

使用 p.save 保存绘图:

sage: p.save('plot_sin_with_points.png')

要使点更大,请使用 size(默认大小为 10)。

设置总和中图形元素的层序, 使用 zorder.

例如,可以如下定义 f_dots 而不是上面的定义:

sage: f_dots = points(xy, color='red', size=30, zorder=20)

并获得更大的红点,位于曲线的 "on top" 而不是 "underneath"。