没有合适的资源?快使用搜索试试~ 我知道了~
软件X 11(2020)100385原始软件出版物MoebInv:用于非欧几里德几何操作的C++库Vladimir V. 基西尔利兹大学数学学院,利兹LS2 9JT,大不列颠及北爱尔兰联合王国ar t i cl e i nf o文章历史记录:收到2019年收到修订版2019年12月7日接受2019年12月10日MSC:68U0551B2568W3051N2551B1011E88保留字:李球几何莫比乌斯变换分数线性变换符号计算a b st ra ctMoebInv包含两个C++库,用于非欧几何中的符号,数值和图形操作。第一个库循环实现了循环上的基本几何操作,循环是某些二次多项式的零集。第二个图书馆图上运行的合奏周期相互连接的莫比乌斯不变的关系:正交性,切线等两个图书馆的工作空间与任何尺寸和任意签名的度量。它们的基本功能可以通过Python/Pythonshell和专用的图形用户界面以交互模式访问。后者不需要任何编码技能,在教育该软件包在各种Linux发行版,Windows 10,Mac OS X和几个云服务上进行了测试(并提供)。©2019作者由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v3.5.7此代码版本使用的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2019_248法律代码许可证GPL v3.0使用git的代码版本控制系统使用C++、Python的软件代码语言、工具和服务编译要求,操作环境依赖性使用GNUg++或clang为Linux,Win32,Mac OS X编译。如果可用,链接到开发人员文档/手册https://sourceforge.net/projects/moebinv/files/docs/figure.pdf问题支持电子邮件kisilv@maths.leeds.ac.ukV.Kisil@ leeds.ac.uk1. 介绍我们提出了开放源码软件包MoebInv[1,2]-一个研究和教育工具的各种几何设置。它的主要功能,设计和功能有一些独特的功能,这是没有其他地方.代码与扩展的Möbius-Lie几何学[ 3 ]的研究一起共生增长该软件包的功能可以从C++代码访问,并可以通过Python/Pythonshell和专用的图形用户界面(GUI)交互式使用已 经 有 一 系 列 成 熟 且 信 誉 良 好 的 开 源 几 何 软 件(GeoGebra[4],CaRMetal[5],电子邮件地址:kisilv@maths.leeds.ac.uk。https://doi.org/10.1016/j.softx.2019.100385Kig[6] , Dr. Geo [7] ) 以及 商业教 育软 件包 ( The Geometer 'sSketchpad,Cabri,Cinderella,NetPad)。所有这些都是为了与欧几里得几何-最古老的原型数学理论-一起工作而设计的。如今,它是第一个从一个大家庭的各种几何:仿射,射影,共形,黎曼等。KleinLie)是研究在一定传递群作用下不变性质的几何。MoebInv软件包使用分数线性变换(FLT)的不变量,其中包含莫比乌斯映射作为重要子集。该实现允许空间的任何关联的几何跨越2352-7110/©2019作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx×⟨⟩2V.V. Kisil/SoftwareX 11(2020)100385一 个 广 泛 的 领 域 , 包 括 共 形 [8 , 第 9 章 ] , 超 复 杂 [9] 和Liespheegemerries[10对于这些字段,该软件包有助于:实验和研究。自动定理证明和符号计算。可视化和交互式操作。精确的算法和高精度的数值计算。功能的编程扩展教育用途(从学校和大学开始),不需要任何编码技能。为了简单起见,我们用2 - 2复矩阵定义的复平面的分数线性变换(FLT)的基本和最直观的情况来说明本文。9]:(一个b):z→az+b,其中z∈C且det(ab)n=0。易于编写和维护。第二个库图ma-nipulates合奏周期(二次曲面)相互关联的某些FLT不变的几何条件。如下一节所述,存在添加、修改和删除图的元素的方法。3. 软件框架库图实现了函数式编程框架-与流行软件包(如GeoGebra[4]、CaRMetal[5]、Kig[6]、Dr. Geo[7])中使用的过程式方法形成对比。后者提供了一套固定的几何计算程序,例如“求区间中点”、“将垂线从一点拉到一条线”。相反,所有新周期在类中,图形通过定义关系列表添加,将新周期与现有周期联系起来。1c d cz+ dC d(一)3.1. 软件构架把一个循环系综看作一个图,可以说,一个FLT不变的对象家族将圆、线和点统一起来-在这个框架中,所有这些都被称为循环。循环之间的FLT不变关系包括关联性、正交性、正切性等。MoebInv软件包的效率基于数学形式主义[2,13],其以统一的方式编码循环之间的各种不同的FLT不变关系。除了美学价值外,共形几何和计算机辅助设计[17]和生理模型[18]。2. 问题和背景从合成欧几里德几何的角度来看,一个循环(2D球体)是距离给定点(x0,y0)为R其解析描述被编码在二次方程中:k(x2+y2)−2lx− 2ny+m= 0,(2)其中,l=kx0,n=ky0,m=l2+n2−R2,对于任意的k=0。虽然理论上足够用于分析单圈处理单个顶点(圈),而图则考虑边(圈对之间的关系)和整个图。直觉上,与图书馆图形的交互会让人想起圆规和直尺的构造,其中新的线,点或圆通过与已经呈现的对象的关系一个接一个地添加到绘图中(例如,通过两点的直线、交点或具有给定圆心和一点的圆)。为了避免“先有鸡还是先有蛋”的困境,所有的循环都存储在一个世代的层次结构中,用整数编号。基本原则是:1. 任何明确定义的周期(即,与任何先前已知的循环无关的循环)被置于第0代;2. 任何新的循环定义的关系,以前的周期从世代k1,k2,.. .,kn被放置到生成k,计算如下:k= max(k1,k2,. . . ,k n)+1。(三)该规则有一个例外,即循环可能与其自身有关,例如各向同性(自正交性)条件线性在符号计算中产生快速增加的表达式复杂性,并且在数值计算中产生不断增长的舍入误差。直到最近才意识到[19,20]空间所有球面都具有一个FLT不变的内积,它自然地编码了许多基本的几何关系,其中正交性是最重要的。 此外,还有一组重要的FLT不变几何关系,例如切线、斯坦纳幂,它们一般是二次的。几个同时存在的二次关系的解析解可能非常复杂.幸运的是,有人观察到[2,21],有可能减少这样的问题,只有一个二次关系和几个线性的一组。这样一个集合允许一个有效的算法解决方案,即使在符号设置中,这是MoebInv软件包的主干。更具体地说,第一个库循环[1,13,22]操纵GiNaC[23]计算机代数系统中的各个循环库循环中采用的数学形式主义基于Clifford代数和[19],[25,§ 4.2],[26],[13,§ 4.2]。与平原相比,如果条件的数量或性质不足以唯一地定义循环(直到自然二次重数),那么循环将依赖于一些自由(符号)变量。3.2. 软件功能这两个库都能够在任何维数和度量的空间中工作,具有任意签名:Euclidean,Minkowski甚至退化。对象的参数可以是符号或数字,后者允许用精确或近似的算术计算。绘图程序可通过Asymptote[28]软件在二维空间中使用任何(椭圆、抛物线或双曲线)度量。有一种类似宏的工具,叫做子图。这样一个子图形本身就是一个图形,因此其内部的世代和关系的层次结构从当前图形中是不可见的。相反,当前图形的(任何代的)一些周期被用作子图形的第0代的预定义周期。然后,只有一个子图形的相关循环(称为结果)返回到当前图形。生成分析处理[11,27],FSCc更有效,在处理FLT不变性质的周期概念上是一致的。相应地,基于FSCc的计算机代码1 事实上,把一个新周期的关系包括到它本身是可能的,也是有用的也例如,点由条件定义为自正交。······各种几何问题的解决方案,实际上它的非C, =0,指定点状循环。−=V.V. Kisil/SoftwareX 11(2020)1003853通过相同的公式(3)从输入循环的代计算结果的。有可能测试某些条件(例如,“两个循环是正交的吗?”)或测量某些量(例如,“它们的相交角是多少?”)对于已经定义的周期。特别地,这种方法可以用来证明根据笛卡尔程序的几何状态,即用纯代数操作代替除了C++库之外,还有一个Python包装器,可以在交互模式下使用。它可以通过云计算在几个主机上访问[29,30]与样本的Xueyter笔记本电脑。有图形用户界面(GUI),允许通过鼠标点击创建图形。通过数据交换例程将Python/Python和GUI双向有两种格式-点空间和圈空间的顶点不需要重合。类似的双度量模型最近被用来解决量子霍尔效应[31]。4. 说明性实例作为一个基本的演示,我们分析证明的几何陈述,从萨特笔记本[29,30].设P是圈a与其切线l的接触点。我们将证明到点P的圈a的半径r与直线l正交。为了简化设置,我们假设a是单位圆。首先,我们需要加载库(假设已经完成了一些工作)。[1]:从图导入*然后,我们用默认的欧几里得度量初始化一个图F[2]:F=figure()我们通过指定其二次方程的显式系数(1, 0, 0,−1)将单位圆a添加到图(二):1·(x2+ y2)− 0·x − 0·y − 1 = 0。‘0,*sin(t_l)*sqrt(512)]],1 ',‘0,*sin(t_l)*sqrt(2)*sqrt(512)]],1 ',‘0,*sin(t_l)*sqrt(2)*sqrt(512)]]{1,1 ',1}-->();<--(a| t,infty|不,我|r)在7个cycle_nodes中总共10个循环。注意,线l的参数化使用三角函数,以避免平方根出现在二次相切关系的解中。有了这样的替换,代数表达式的自动简化就更有效了。在下一步中,我们添加圆a和直线l的接触点P。如果一个点与一个圈正交,则该点属于该圈在所有的循环中,一个点的特征也在于它自身的正交性。为了定义后一个自反条件,我们需要[6]:最后我们加上经过P的半径r:它是一条直线(与无穷大正交),并且经过P和C(与它们都正交)。[7]:r=F. add_cycle_rel([is_orthogonal(P),is_orthogonal(C),\is_orthogonal(F.get_infinity())],“r”)回想一下,r依赖于与l相同的自由参数。现在,我们检查r和l之间的正交关系。由于上述条件中的两个是二次的(即,相切性和自正交性),它们中的每一个都使解的数量加倍。因此,有四个循环r的实例,并且分别检查每个【8】:[3]:a=F. add_cycle(cycle2D(1,[0,0],-1),“a“)然后,我们添加a的中心C作为特定点:[4]:C=F。add_point(cycle2D(F. get_cycle(a)[0])。center(),“C“)现在,我们要添加一条与a相切的直线l。直线在循环中,它的特征是与无穷大正交直线l不是唯一地由这两个条件(相切和正交)定义的,因为它与a的接触点可以是任意的。因此,它的系数包含一个自由变量,如t_l,如图1所示。【5】:C-(0):C-(1):infty:R:C:();<--(C/o,infty| d,C-(0)|o,C-(1)|o)的a:
下载后可阅读完整内容,剩余1页未读,立即下载
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)