平滑 sympy 绘图

5
如果我有一个函数如sin(1/x),我想绘制并在接近0的位置显示它,我应该如何平滑出图表中的结果?默认样本点数相对较小,无法展示我想要的效果。
以下是代码:
from sympy import symbols, plot, sin

x = symbols('x')
y = sin(1/x)

plot(y, (x, 0, 0.5))

在此输入图片描述

x 趋近于0时,曲线变得更加锯齿状而不是平滑的。有没有什么方法可以解决这个问题呢?

1个回答

9
您可以手动设置使用的点数:
plot(y, (x, 0.001, 0.5), adaptive=False, nb_of_points=300000)

在此输入图片描述

注:我预期使用确切的问题代码(即x从0到某个值)时会出现ZeroDivisionError,但我没有收到错误消息(很奇怪)。不过,一旦我使用adaptive=False, nb_of_points=300000,就会立即出现错误,所以我将xmin设置为非零值(0.001)。


3
我认为自适应算法需要改进。它的整个目的就是自动处理这类情况。 - asmeurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接