我可以使用Matplotlib在NumPy数组中绘制曲线(例如,参见Save plot to numpy array)。
我想知道是否有一种方法可以只使用NumPy而不使用Matplotlib和contour来找到二元多项式的零点:
xmin,xmax,deltaX = -1.5,1.5,0.01
ymin,ymax,deltaY = -1.5,1.5,0.01
xrange = numpy.arange(xmin,xmax,deltaX)
yrange = numpy.arange(ymin,ymax,deltaY)
x,y = numpy.meshgrid(xrange,yrange)
F = x**2*y**3-(x**2+y**2-1)**3
字符串
F的零点与曲线$x^2y^3-(x^2+y^2-1)^3$完全不同。
我尝试过一些方法(例如,参见https://codegolf.stackexchange.com/questions/86879/algebraic-curve-plotter),但它们不适用于像前一个那样的奇异代数曲线。
有一种方法可以只使用NumPy绘制代数曲线,而不使用Matplotlib和contour?
1条答案
按热度按时间ekqde3dh1#
如果你想找到数组F等于零的位置,它就像
F == 0
一样简单。因为你使用的是浮点数,所以计算会有点不准确,所以你需要把它改为np.abs(F) <= epsilon
,其中epsilon
是一个很小的数字,它决定了在你认为它是零之前,它与零的接近程度。这给了你一个二进制掩码,函数等于零的地方。您可以使用
np.argwhere()
将其转换为函数等于零的索引。示例如下:
字符串
输出量:
型
还有一些方法可以通过解析而不是数值方式找到该函数的零点。