Файл:Sum of two points on an Edwards curve.svg

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

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

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

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

Here you can see the sum of two points on the curve with . Point has x-coordinate -0.6, point has x-coordinate 0.1.

Unlike the traditional elliptic curves where points , and lay on the straight line, in the case of the Edwards curves the points , and lay on a conic .

The graph was created using the following script:

import matplotlib.pyplot as plt
import numpy as np
import math
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 points P1 and P2
P1=Point(-0.6, edwards_y(-0.6))
P2=Point(0.1, edwards_y(0.1))

plt.scatter(*P1)
plt.annotate("P1", (P1.x-0.05, P1.y+0.05))
plt.scatter(*P2)
plt.annotate("P2", P2)

# Compute and draw P1 + P2
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) )

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

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

# Draw the conic that P1, P2 and -(P1+P2) belong to
def conic_coefs(x1,y1,x2,y2):
    "Computes coeffitiens of the quadratic form Axy + Bx + Cx + D"
    return (x1-x2 + (x1*y2-x2*y1),
            (x2*y2-x1*y1)+y1*y2*(x2-x1),
            x1*x2*(y1-y2),
            x1*x2*(y1-y2)
    )

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

A,B,C,D = conic_coefs(*P1,*P2)
#  Left and right branches of the hyperbole
xleft = np.linspace(-1,0.003,50)
xright = np.linspace(P2[0] - 0.02, 1.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("Add_points_Edwards.svg")
Русский: График иллюстрирует геометрический смысл сложения точек на кривых Эрдвадса .

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

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

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

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

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

Сумма двух точек на кривой Эдвардса с параметром d = -30

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

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

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

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

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

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