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

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


person stackuser    schedule 03.11.2013    source источник


Ответы (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()

У меня есть такой график: введите здесь описание изображения

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

person ilalex    schedule 03.11.2013
comment
Да, спасибо, это основы того, к чему я пытался добраться. +1 и принято. Не уверен, что вы знаете, как выделить/показать определенные точки на кривой и провести линию между ними. - person stackuser; 03.11.2013
comment
Пожалуйста. Я тоже не уверен, но вы можете создать еще один вопрос с описанием того, что вы хотите. - person ilalex; 04.11.2013