Python - matplotlib эллиптические кривые

Я учу себя тому, что такое 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 на matplotlib, но я не вижу, что я делаю здесь неправильно. График эллиптической кривой далеко, даже близко.

Вероятно, это ошибка новичка, так что младший программист, который тратит секунду, чтобы прочитать это, вероятно, очень быстро поймет, почему я не получаю нужную кривую.

1 ответ

Решение

Да, ты прав, ты не делаешь 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()

У меня есть этот сюжет:

Это то, что тебе надо?

Другие вопросы по тегам