Файл:Double Point on Edwards Curve.svg

Материал из testwiki
Перейти к навигации Перейти к поиску
Double_Point_on_Edwards_Curve.svg (SVG-файл, номинально 540 × 540 пкс, размер файла: 26 КБ)

Этот файл находится на Викискладе и может использоваться другими проектами. Информация с его страницы описания приведена ниже.

Краткое описание

Описание
English: The plot presents the geometry meaning of point doubling on the Edwards curves .

Here you can see doubling a point on the curve with . The point has x-coordinate -0.6.

Unlike the traditional elliptic curves where points and lay on the tangent line to the curve at the point , in the case of the Edwards curves the points and lay on a conic that touches the curve at the point .

The graph was created using the following script:

import matplotlib.pyplot as plt
import numpy as np
from collections import namedtuple

# Utility type
Point = namedtuple('Point', ['x', 'y'])

d = -30
def edwards_y(x):
    return np.sqrt((x*x - 1)/(d*x*x - 1))

# Draw Edwards curve
x = np.linspace(-1,1,200)
ypos = edwards_y(x) 
yneg = -ypos

plt.figure(figsize=[6, 6])
plt.plot(x,ypos, 'b')
plt.plot(x,yneg, 'b')
#  Draw neutral point
plt.scatter(0,1)
plt.annotate("O", (0.01, 1.01))
# Draw order 2 point
plt.scatter(0,-1)
plt.annotate("O'", (0.01, -1.05))

# Draw the point P
P=Point(-0.6, edwards_y(-0.6))
plt.scatter(*P)
plt.annotate("P", (P.x-0.05, P.y+0.05))

# Compute and draw 2P
def edwards_sum(x1,y1,x2,y2):
    return ( (x1*y2+x2*y1)/(1+d*x1*x2*y1*y2) , (y1*y2 - x1*x2)/(1-d*x1*x2*y1*y2) )

P2 = Point(*edwards_sum(*P, *P))
plt.scatter(*P2)
plt.annotate("2P",  (P2.x-0.05, P2.y+0.05))

P2_ = Point(-P2.x, P2.y)
plt.scatter(*P2_)
plt.annotate("-2P",  (P2_.x+0.01, P2_.y+0.05))
#  Draw the line that connects 2P and -2P
plt.axhline(P2.y, linestyle='--', color="grey")

# Draw the conic that P1, P2 and -(P1+P2) belong to
def conic_coefs(x,y):
    "Computes coeffitiens of the quadratic form Axy + Bx + Cx + D"
    return (d*x*x*y - 1,
            y - x*x,
            x*(1-y),
            x*(1-y)
    )

def conic_y(x, A,B,C,D):
    return -(B*x + D)/(A*x + C)

A,B,C,D = conic_coefs(*P)
#  Left and right branches of the hyperbole
xleft = np.linspace(-1,-0.3,50)
xright = np.linspace(-0.01, 1, 50)

yleft = conic_y(xleft, A,B,C,D)
yright = conic_y(xright, A,B,C,D)

plt.plot(xleft, yleft,"--", color="green")
plt.plot(xright, yright,"--", color="green")

# Draw axis lines
plt.axhline(0, color='black')
plt.axvline(0, color='black')

# Set same scale on x and y
plt.gca().set_aspect('equal', adjustable='box')

plt.savefig("Double_Point_on_Edwards_Curve.svg")
Русский: График иллюстрирует геометрический смысл удвоения точек на кривых Эрдвадса .

На графике изображено удвоение точки на кривой с параметром . Точка с x-координатой -0.6.

В отличие от традиционных эллиптических кривых, где точки и лежат на касательной к эллиптической кривой в точке , на кривых Эдвардса точки и лежат на гиперболе , которая касается график кривой в точке .
Дата
Источник Собственная работа
Автор Pakuula

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
w:ru:Creative Commons
атрибуция распространение на тех же условиях
Вы можете свободно:
  • делиться произведением – копировать, распространять и передавать данное произведение
  • создавать производные – переделывать данное произведение
При соблюдении следующих условий:
  • атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
  • распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.

Краткие подписи

Геометрический смысл удвоения точки на кривой Эдвардса

Элементы, изображённые на этом файле

изображённый объект

История файла

Нажмите на дату/время, чтобы увидеть версию файла от того времени.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий07:29, 20 декабря 2020Миниатюра для версии от 07:29, 20 декабря 2020540 × 540 (26 КБ)wikimediacommons>PakuulaUploaded own work with UploadWizard

Следующая страница использует этот файл: