《多项式合冲编程说明书.doc》由会员分享,可在线阅读,更多相关《多项式合冲编程说明书.doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、多项式合冲编程说明书版权所有“数学机械化与自动推理平台”软件组2003年6月*有关文件:有关多项式合冲的程序代码主要位于以下文件中:syzygy.h, syzygy.cpp。有关定义:假设R是一个环,M是R上的一个模(Module),令是一个多项式组,并且满足,则所有满足的多项式组组成了,我们把它叫做的syzygy模,记作。1、 主要函数TRIPoly * S_poly(TRIPoly * g_i,TRIPoly * g_j,TList * vl);求解两个多项式g_i和g_j在变量序vl下的S-多项式(有关S-多项式的定义,可以参看相关书籍)。返回一个多项式。示例:S_poly(x2-y,2
2、*x*y-3,x,y)= 3*x-2*y2TList * gbasis_for_syzygy(TList * ps,TList * vl);求解由一组多项式ps所生成的理想在一个特定的变量序vl下的一组Grobner基G。为了满足求解syzygy的需要,我们在这里不仅需要得到这一组Grobner基,而且还需要得到G与原来的多项式列表ps之间的关系。也就是说,G中的每一个元素都要表示成ps里面的元素的线性组合,我们把这些线性组合的系数组成一个矩阵,用A来表示。函数返回值是一个列表,包含了两个元素,一个就是Grobner基G,另外一个就是系数矩阵A。示例:gbasis_for_syzygy(2*x
3、2-y,3*x*y-y2, x,y)= 2*x2-y,3*y*x-y2,2*y2*x-3*y2,-2*y3+9*y2,matrix(1,0, 3*y,-9*y;0,1,-2*x,6*x+2*y) 其中2*x2-y,3*y*x-y2,2*y2*x-3*y2,-2*y3+9*y2表示的是原来的多项式组所生成的理想的一组Grobner基,而matrix(1,0,3*y, -9*y; 0,1,-2*x,6*x+2*y)表示的是这组Grobner基和原来的多项式组ps之间的线性关系,G = ps * A。TMatrix *grem_for_syzygy(TList * ps, TList * g,TLi
4、st * vl);求出一个多项式组ps在某个变量序vl下被另外一个多项式组g所线性表示的系数。返回系数矩阵B。示例:grem_for_syzygy (2*y*x-x+y+7,x2-y*x+3*x+3*y-12,x+3,y-2,x,y)=matrix(2*y-1,x-y;-5,6)表示的含义是ps = g * B。TList * Syzygy(TList * G, TList * vl);求一个多项式组G在某个变量序vl下的syzygy。通常在这个函数里面G是某个多项式组所生成的理想的一组Grobner基。函数返回一个syzygy基所组成的列表。示例:Syzygy(x-1,y-2,2*y-3,-
5、1,x,y)= -y+2,x-1,0,0, -2*y+3,-2,x,1, 0,-2,1,1, 1,0,0,x-1,0,1,0,y-2, 0,0,1,2*y-3 TMatrix * simplify(TMatrix * m,TList * vl);对一个矩阵m 进行适当的化简。这个函数是为了特定的目的而设计的,在我们计算之后得到的矩阵会包含很多全部是0的列以及两列之间仅仅相差一个倍数的情形,这里所做的工作就是把这个矩阵中的全0列去掉,并且对于两列之间相差一个倍数的情形,只保留其中一列。返回化简以后的矩阵。示例:simplify(matrix(2,4,2,0,4,7,3,0,6,5), x,y )
6、=matrix(2,7;3,5);TMatrix * get_syzygy(TList * ps,TList * vl);求一个多项式组ps在某个变量序vl下的syzygy。这个函数里面的ps是任意的一组多项式。函数返回一个syzygy基所组成的矩阵。注:该函数是有关syzygy的文件里最主要的一个函数。示例:get_syzygy(x+1,2*x-y,y+5,x,y)=matrix(-y-5,0,x+1;0,-y-5,2*x-y;2*x+5,-x-1,-x-1;2*y+10,-y-5,-y-2)2、 辅助函数(以下辅助函数位于pol_arith.cpp文件中)TRIPoly TRIPoly:d
7、ivvar(TRIPoly & p, TList * vl); /TRIPoly的成员函数求该多项式对多项式p的关于指定变元表vl的除法的商。目前的实现是假定两个多项式中不会包含变元表以外的变元。返回一个多项式,就是商。示例:p:= x2*y+3*y2-4;p- divvar(x+2, x,y)= y*x-2*y注:这个除法有可能出现不能除尽的情况。上面这个例子就没有除尽。TList * div_var(TRIPoly & p, TList * l, TList * vl); /TRIPoly的友元函数根据变量列表vl,用多项式p除以多项式列表l中的每一个多项式,即用l来约化p。返回一个列表,包含p被l约化的时候的商以及余数。示例:div_var(x2*y+3*y2+1, x+2, y+1, x,y)y*x-2*y, 3*y+1, 0最后一个0表示约化之后的余数为0。