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

标签 python-3.x cryptography elliptic-curve

我使用下面的代码绘制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()

输出为

enter image description here

然而,预期的图像是这样的

enter image description here

正如我们所见,(0,0)处的孤立点没有被绘制。有什么建议可以解决这个问题吗?

最佳答案

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

选项 1:

可以显式标记 (0,0) 处的孤立点:

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

在多点的情况下,屏蔽数组是一个不错的选择,here .

enter image description here

选项 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)

这将插入整个情节的发展。或者,可以单独移动孤立点周围的区域(通过添加第二个轮廓调用,并在 (0,0) 处的孤立点周围添加一个小的 x,y 网格)。这不会改变其余部分。

enter image description here

关于python-3.x - Python matplotlib 无法在椭圆曲线 y^2+x^3+x^2=0 上绘制Acnode(孤立点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65280140/

相关文章:

python - 将段落中句子的第一个单词大写

scala - Scala 中没有的等价物

javascript - 是否有任何 JavaScript 库可以读取 .cer 文件并从中获取 key ?

c# - Bouncy CaSTLe ECDH 和 .net4 原生 ECDiffieHellmanCNG 之间的区别

java - 拒绝类,因为它未通过编译时验证

python - 为什么当尝试获取 Python 内置源时,inspect.getsource 会抛出 TypeError ?

python - 为什么我的异常消息不会随着我的 if 语句而改变

java - 衬垫 RIPEMD 160

python : Create ECC Keys from private and public key represented in raw bytes

android - 如何使用secp256r1类型的椭圆曲线 key 对在Android中加密和解密数据?