Python matplotlib无法在椭圆曲线y ^ 2 + x ^ 3 + x ^ 2 = 0上绘制Acnode(孤立点)

困惑

我正在使用下面的代码绘制ECC曲线 y^2+x^3+x^2 =0

import numpy as np
import matplotlib.pyplot as plt
import math
def main():
    
    fig = plt.figure()
    ax = fig.add_subplot(111)

    y, x = np.ogrid[-2:2:1000j, -2:2:1000j]
    ax.contour(x.ravel(), y.ravel(), pow(y, 2) + pow(x, 3) + pow(x, 2) , [0],colors='red')

    ax.grid()
    plt.show()

if __name__ == '__main__':
    main()

输出是

在此处输入图片说明

预期的图像是这个

在此处输入图片说明

如我们所见,未绘制(0,0)处的孤立点。有解决这个问题的建议吗?

托帕可

如评论中已经提到的,似乎没有将单个点显示为轮廓。最好的解决方案是,如果应用程序本身以某种方式指示这些点。也许库允许这样做,但是我还没有找到方法,因此在这里显示了两种解决方法:

选项1:

在(0,0)处的隔离点可以明确标记:

ax.plot(0, 0, color="red", marker = "o", markersize = 2.5, zorder = 10)

在多点的情况下,掩盖阵列是一个不错的选择,在这里

在此处输入图片说明

选项2:

该图可以在z = 0周围略有变化,例如z = 0.0002:

z = pow(y,2) + pow(x, 2) + pow(x, 3)
ax.contour(x.ravel(), y.ravel(), z, [0.0002], colors='red', zorder=10)

这将移动整个情节。或者,可以仅移动孤立点周围的区域(通过contour在孤立点(0,0)周围添加带有小的x,y网格的第二个调用)。这不会改变其余部分。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:绘制从x轴上的点(X1,0)到点(X2,Y2)的线的问题

尝试使用 matplotlib 绘制 (x**2+y**2-1)**3-x**2*x**3

如何绘制方程式(x ^ 2 + y ^ 2-1)^ 3 = x ^ 2 * y ^ 3?

如何绘制 (x^2+y^2-1)^3=x^2*y^3?

在同一图中绘制多条曲线(x、y1、y2、x、y3、y4)

为什么对于整数,2 * x * x比Python 3.x中的2 *(x * x)快?

如何在Python中绘制从x = 0到x = 3的e ^(-t ^ 2)积分?

在 3D 空间中绘制 (x,y,z) 点的 2D 数组 (Matplotlib)

Javascript中的Python x [1:2:3]?

如何在Python 3.x和Python 2.x上使用pip

Python 2.x和3.x速度

Python readlines() 3.X 到 2.X

Monkeyrunner 使用的是 python 2.x 而不是 3.x

将 Python 2x 移植到 3x

在MATLAB上绘制隐式函数x + y-log(x)-log(y)-2 = 0

如何在x轴值出现多次的python中进行绘制,例如0 1 2 3 2 1 0

Python / Pyplot:以给定(X,Y)绘制2D数据

当 python 2x 是你的默认 python 版本但你在 Bash 上使用 python 3x 时,你如何在 pip 上安装 Django 2x

在3维x 2维上的tensordot

x上(1/2)*(xy)^ 2的微分是x-y

根据椭圆曲线点的x和y值生成PublicKey

在Haskell中如何做到这一点?[x ^ 0,x ^ 1,x ^ 2,x ^ 3 ...]

python matplotlib f(x ^ 2)图

没有Matplotlib的Python中x,y,z点的2D图

Python:具有未定义变量的Eval(2 * x + x = 3 * x)

x [x <2] = 0在Python中是什么意思?

我如何在 d3 图中的 y 轴的点 0 上绘制额外的 x 轴

"(\xyz -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2) $ 5 " 是如何工作的?

为什么SymPy无法将(-x ** 3)**(2/3)简化为x ** 2?