2013-11-03 9 views
6

Ich lehre mich über Matplotlib und Python und ich habe eine schwierige Zeit, eine Gleichung für eine elliptische Kurve zu zeichnen. Ich habe die Gleichung nach unten, aber ich bin nicht der y^2Python - Matplotlib Elliptische Kurven

tun Dies ist so viel Mühe wie ich selbst war in der Lage, um in so weit:

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() 

Die axis() gibt es, weil ich auch versuchte bekomme ein klarer aussehendes Diagramm mit Gitterlinien, und ich dachte, dass grid() würde sich auch darum kümmern, aber anscheinend nicht. Ich wollte auch versuchen, es interaktiv zu machen, wo man auf die gewünschten Punkte klickt und es berechnet, aber wenn man über die Dokumente schaut, scheint es eine Menge Interaktions-Mausoptionen zu geben, aber ich sehe keine Mausinteraktion, die durch Anklicken ein Ereignis erzeugt an einem Punkt auf der Karte (nach dem dritten Mal, es zu lesen, ich vermisse es immer noch).

Ich gehe gerade von der pyplot summary on matplotlib, aber ich sehe nicht, was ich hier falsch mache. Die Kurve der elliptischen Kurve ist weit entfernt, nicht einmal nahe.

Dies ist wahrscheinlich ein Anfängerfehler, also wird ein Junior-Programmierer, der eine Sekunde braucht, um das zu lesen, wahrscheinlich sehr schnell sehen, warum ich nicht die Kurve bekomme, die ich möchte.

Antwort

12

Ja, Sie haben Recht, Sie tun nicht . Plotten elliptische Kurve in matplotlib ich diesen Code verwendet (getestet in 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() 

ich diese Handlung habe: enter image description here

Ist das, was Sie brauchen?

+0

Ja, danke das ist die Grundlagen von dem, was ich versuchte zu bekommen. +1 und akzeptiert. Ich bin mir nicht sicher, ob Sie wissen, wie man einen bestimmten Punkt auf der Kurve hervorhebt und zeigt eine Linie zwischen ihnen. – stackuser

+0

Gern geschehen. Ich bin mir auch nicht sicher, aber Sie können eine andere Frage mit einer Beschreibung von dem, was Sie wollen, erstellen. – ilalex