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()
У меня есть этот сюжет:
Это то, что тебе надо?