我试图用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相等。在

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

python 椭圆曲线_Python、Sympy和椭圆曲线相关推荐

  1. gamma分布python代码_Python sympy.stats.NormalGamma()用法及代码示例

    借助于sympy.stats.NormalGamma()方法,我们可以创建具有多元正态伽马分布的双变量联合随机变量. 用法: sympy.stats.NormalGamma(syms, mu, lam ...

  2. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  3. python定积分_python定积分

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 函数∫21xdx∫12xdx int_1^2 {x} ,{d}x代码from sympy import *x =symbols ...

  4. 椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)

    四.椭圆曲线上的加法 上一节,我们已经看到了椭圆曲线的图象,但点与点之间好象没有什么联系.我们能不能建立一个类似于在实数轴上加法的运算法则呢?天才的数学家找到了这一运算法则 自从近世纪代数学引入了群. ...

  5. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  6. python中的sympy模块求导和解方程

    利用python中的sympy模块求导和解方程 对sympy这个模块我不是很了解,我学习python主要是想往机器学习和深度学习方向发展.这次了解到有这个模块,是因为有同学在写论文中要用到求导,并且计 ...

  7. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  8. Python 中的Sympy详细介绍

                                  Python 中的Sympy详细使用 遇到复杂计算找python绝对不让你失望,sympy是一个Python的科学计算库,用一套强大的符号计 ...

  9. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

最新文章

  1. NDK相关概念与NDK开发步骤
  2. HTML5实现手势屏幕解锁
  3. git 查看某个文件的历史记录
  4. 【CyberSecurityLearning 45】PHP基础+变量、运算符、流程控制语句
  5. Netty之大动脉Pipeline
  6. MVC 中使用uploadify上传图片遇到的蛋疼问题
  7. android+rom+bootloader+flash,【极光ROM】-【三星NOTE10/NOTE10+/5G N97XX-9825】-【V9.0 Android-R-UA1】...
  8. 百度点击算法核心内容大揭秘
  9. 修改docker ip网段
  10. 交易心得(简要总结)
  11. GitHub干货分享
  12. dpdk对虚拟化支持研究
  13. Hbase 内置过滤器
  14. Java 2 实用教程学习
  15. 程序NSIS ERROR出错解决方案
  16. ERC-1155 标准
  17. Neo4j 第一篇:在Windows环境中安装Neo4j
  18. 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡...
  19. Rust vs Pandas 数据处理
  20. 2019年五一放假公众号推文主题怎么选?

热门文章

  1. java二分排序法原理_Java常见排序算法详解—— 二分插入排序
  2. 在公共服务器上搭建python虚拟环境
  3. Truck History prime
  4. idea npm start启动前端项目报错:ERROR Failed to compile with 1 errors : This dependency was not found:
  5. C语言用数组实现十个国家名字按字典排序
  6. vue学习九--v-for的四种用法,以及key问题
  7. Java+Swing实现医院管理系统
  8. 脑电EEG的几种蒙太奇
  9. 淄博旅游景点与美食汇总
  10. android7.1root工具,Android模拟器Root,Android7.1.1