python 椭圆曲线_Python、Sympy和椭圆曲线

我试图用python编写一个椭圆曲线的简单实现。在

所以我有一个简单的椭圆曲线类:class EllipticCurve:

O ="O";

def __init__(self,a,b):

self.a = a

self.b = b

def __eq__(self, other):

if isinstance(other, EllipticCurve):

return self.a == other.a and self.b == other.b

return NotImplemented

def __ne__(self, other):

result = self.__eq__(other)

if result is NotImplemented:

return result

return not result

@property

def discriminant(self):

return 4*a**3+27*b**2

椭圆曲线上点的一类:

^{pr2}$

虽然我想给它们添加一些功能,但是它们可以处理a,b和x,y的实际整型值

然而,我的问题是当我试图用sympy来表示a,b和x,y时。

理想情况下,我的目标是计算证明椭圆曲线上3个点的结合性质,即(P+Q)+R=P+(Q+R)。在

现在,我可以得到p+Q的正确结果:a,b = symbols('a b')

x1,y1 = symbols('x1 y1')

x2,y2 = symbols('x2 y2')

x3,y3 = symbols('x3 y3')

E = EllipticCurve(a,b)

P = Point(E,x1,y1)

Q = Point(E,x2,y2)

R = Point(E,x3,y3)

P+Q

print(simplify((P+Q).x))

哪些输出,正确地说:-x1 - x2 + (y1 - y2)**2/(x1 - x2)**2

此外,如果我这样做:expr = (P+Q)+R

print(simplify(expr.x))

我也(我认为)正确地得到:x1 + x2 - x3 + (y1 + y3 - (y1 - y2)*(2*x1 + x2 - (y1 - y2)**2/(x1 - x2)**2)/(x1 - x2))**2/(x1 + x2 + x3 - (y1 - y2)**2/(x1 - x2)**2)**2 - (y1 - y2)**2/(x1 - x2)**2

但是,如果我这样做:expr = (P+Q)+R

expr2 = P+(Q+R)

print(simplify((expr-expr2).x))

这需要永远,如果我尝试:expr = (P+Q)+R

expr2 = P+(Q+R)

print((expr-expr2).x)

它还返回一个似乎合理的表达式,我认为是正确的。

但我需要简化它并返回0来证明expr和expr2相等。在

对我做错了什么有什么建议吗?在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值