Python - matplotlib椭圆曲线

时间:2013-11-03 17:54:57

标签: python python-2.7 matplotlib elliptic-curve finite-field

我正在教自己matplotlib和Python,我很难绘制椭圆曲线的方程。我有等式,但我没有做y^2

这和我到目前为止所遇到的麻烦一样多:

from mpl_toolkits.axes_grid.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np
from pylab import *


def plotGraph():
    fig = plt.figure(1)
    ax = SubplotZero(fig, 111)
    fig.add_subplot(ax)

    for direction in ["xzero", "yzero"]:
        ax.axis[direction].set_axisline_style("-|>")
        ax.axis[direction].set_visible(True)

    a = 5; b = 25
    x = np.arange(-50.0, 50.0, 1.0)
    y = pow(x,3) + a*x + b

    xmin = -50; xmax = 50; ymin = -50; ymax = 50
    v = [xmin, xmax, ymin, ymax]
    ax.axis(v)

    ax.plot(x, pow(y,2))

    #grid()
    #ax.grid(color='r', linestyle='-', linewidth=2)

    show()


def main():
    plotGraph()


if __name__ == '__main__':
    main()

axis()就在那里,因为我也试图用网格线来获得更清晰的图表,我认为grid()也会照顾到这一点,但显然不会。我也打算尝试使用它来点击你想要的点并进行计算,但查看文档似乎有很多交互鼠标选项,但我没有看到通过点击创建一些事件的鼠标交互在图表上的一个点上(在第三次阅读之后我仍然想念它)。

我刚从pyplot summary on matplotlib开始,但我没有看到我在这里做错了什么。椭圆曲线的图是偏离的,甚至没有接近。

这可能是一个初学者的错误,所以一个需要一秒钟阅读本文的初级程序员可能会很快看到为什么我没有得到我想要的曲线。

1 个答案:

答案 0 :(得分:19)

是的,你是对的,你没有做y^2。要在matplotlib中绘制椭圆曲线,我使用了这段代码(在Python 3中测试过):

import numpy as np
import matplotlib.pyplot as plt

def main():
    a = -1
    b = 1

    y, x = np.ogrid[-5:5:100j, -5:5:100j]
    plt.contour(x.ravel(), y.ravel(), pow(y, 2) - pow(x, 3) - x * a - b, [0])
    plt.grid()
    plt.show()

if __name__ == '__main__':
    main()

我有这个情节: enter image description here

这是你需要的吗?