########################################################################NCFPS:将此文件另存为NCFPS###要使用它,请留在###同一目录,进入Maple(输入:Maple) ###然后键入:读取NCFPS###然后按照那里给出的说明进行操作### ###罗格斯大学Doron Zeilberger撰稿##zeilberg在数学dot rutgers dot edu########################################################################创建日期:2012年3月14日打印(`创建日期:2012年3月14日`):打印(`这是NCFPS`):打印(“研究非交换形式幂级数”):打印(“文章附带”):print(`1+ab+aabb+aaabb+..的倒数,用于非交换a和b,加泰罗尼亚数字和`):打印(`和非交换二次方程.`):印刷品(作者:A.Berenstein、V.Retakh、C.Reuternauer和D.Zeilberger):打印(“也可从Zeilberger的网站上获得”):打印(``):打印(`Please report bug to zeilberg at math dot rutgers dot edu`):打印(``):打印(“此软件包和纸张的最新版本”):打印(`are available from `]):打印(`http://www.math.rutgers.edu/~zeilberg/.`):print(`有关过程列表,请键入ezra();,有关“)的帮助:打印(`a specific procedure,type ezra(procedure_name);.`):打印(``):使用(组合):ezra1:=处理()如果args=NULL,则print(`支持程序为:Pashet,sMul,`):打印(`SubsMono,SubsMonoR`):打印(``):其他的ezra(参数):传真:结束时间:ezra:=进程()如果args=NULL,则print(`主要程序是:Mul、MulR、RetakhSeries、Reci、`):打印(`SubPoly,SubPolyR,SE`):打印(`VerifyRetakh`):elif nops([args])=1,op(1,[args')=Khaber,则打印(`Khaber(F,G):添加F和G`):elif nops([args])=1,op(1,[args')=Mul,则print(`Mul(F,G):两个非逗号多项式的乘积`):打印(`尝试:多({[4,[a,b]],[-3,[b,a]]},{[15,[a、b、a]]{);`):elif nops([args])=1,op(1,[args')=MultR,则print(`MulR(F,G,r):两个非多项式的乘积`):打印(“最高r度”):打印(`尝试:多个R({[4,[a,b]],[-3,[b,a]]},{[15,[a、b、a]]{,2);`):elif nops([args])=1,op(1,[args')=Pashet,则print(`Pashet(F):简化多项式`):打印(`Try(Pashet([[4,[a,b]]],[[-5,[a,b]]]);`):elif nops([args])=1,op(1,[args')=累进,然后print(`Reci(F,r):(1+F)^(-1)直到r度,例如,try:`):打印(`Reci([[1,[a]]],3);`):elif nops([args])=1,op(1,[args')=RetakhSeries,然后print(`RetakhSeries(a,b,r):Retakh Series的r级术语`):打印(`for(1+ab+aabb+aaabb+…)^(-1)。例如,尝试:`):打印(`RetakhSeries(a,b,4);`):elif-nops([args])=1,op(1,[args])=SE,则print(`SE(POL,D1,r):给定字母D1和`中的多项式POL:print(`其他字母,查找r级以下的所有术语`):打印(等式(非comm.)形式幂级数解的`):打印(`D1=POL。例如,尝试:`):打印(`SE([[1,[x]],[1,[x,D1]],[1,[a,D1,b]],[1,[a,D1,b,D1]]],D1,10);`):elif nops([args])=1,op(1,[args')=sMul,然后print(`sMul(c,F):将F乘以常数c`):elif nops([args])=1,op(1,[args')=子多边形,则print(`SubPoly(POL,D1,P):给定多项式,POL,`):print(`(作为单项式列表给出)`):print(`在包含字母D1的字母表中,找到`):print(`和其余字母中的另一个多项式P,找到`):打印(“获得的剩余字母中的多项式”):打印(`在POL中替换D1=P,例如try:`):打印(`子多边形([[5,[a,b,D1,b,D]]],D1elif nops([args])=1,op(1,[args')=SubPolyR,则print(`SubPolyR(POL,D1,P,r):给定多项式,POL,`):打印(`(以单项式列表给出)`):print(`在包含字母D1的字母表中,找到`):print(`和其余字母中的另一个多项式P,找到`):打印(`剩余字母中的多项式,达到r次`):打印(`在POL中替换D1=P,例如try:`):打印(`SubPolyR([[5,[a,b,D1,b,D]]],D1elif nops([args])=1,op(1,[args')=SubMono,然后print(`SubMono(M,D1,P):给定单项式[c,[m1,m2,…,mr]]`):print(`在包含字母D1的字母表中,找到`):print(`和剩余字母中的多项式P,find`):打印(“获得的剩余字母中的多项式”):打印(`通过替换D1=P,例如try:`):打印(`SubMono([5,[a,b,D1,b,D]],D1elif nops([args])=1,op(1,[args')=SubMonoR,则print(`SubMonoR(M,D1,P,r):给定单项式[c,[m1,m2,…,mr]]`):print(`在包含字母D1的字母表中,找到`):print(`和剩余字母中的多项式P,find`):打印(“多项式,直到r次,以获得的剩余字母表示”):打印(`通过替换D1=P,例如try:`):打印(`SubMonoR([5,[a,b,D1,b,D]],D1elif-nops([args])=1,op(1,[args])=VerifyRetakh,则打印(`VerifyRetakh(r):实证验证Volodia Retakh'):print(`猜测多达r个术语。尝试:`):打印(`VerifyRetakh(6);`):其他的print(`没有ezra for `,args):传真:结束时间:#sMul(c,F):将F乘以常数csMul:=proc(c,F)局部i:Pashet([seq([c*F[i][1],F[i][2],i=1..nops(F))]):结束时间:#Pashet(F):简化多项式#尝试(Pashet([[4,[a,b]]],[[-5,[a、b]]]]);Pashet:=proc(F)局部T,gu,F,gu1,mu,mu1,lu,lu1,m,i:gu:={seq(f[2],f中的f)}:对于gu do中的gu1T[gu1]:=0:日期:对于f do中的fT[f[2]:=T[f[2]]+f[1]:日期:mu:=[]:对于gu do中的gu1如果T[gu1]<>0,则mu:=[op(mu),[T[gu1],gu1]]:传真:日期:mu do中的mu1T[mu1[2]:=mu1[1]:日期:lu:=[seq(mu1[2],mu1单位为mu)]:lu:=排序(lu):gu:=[seq([T[lu1],lu1]、lu1 in lu)]:m: =最大值(seq(nops(gu1[2]),gu1 in gu)):对于i从0到m doT[i]:=[]:日期:对于gu do中的gu1T[nops(gu1[2])]:=[op(T[nobs(gu1[2])]),gu1]:日期:对于i从0到m doT[i]:=排序(T[i):日期:[seq(op(T[i]),i=0..m)]:结束时间:#Mul(F,G):两个非comm.多项式的乘积#尝试:Mul({[4,[a,b]],[-3,[b,a]]},{[15,[a、b、a]]{);Mul:=proc(F,G)局部F,G:Pashet([seq(seq([f[1]*g[1],[op(f[2]),op(g[2])]],f in f),g in g)]):结束时间:#MulR(F,G,r):两个非comm.多项式的乘积#高达r度#Try:MulR({[4,[a,b]],[-3,[b,a]]},{[15,[a、b、a]]{,2);MulR:=proc(F,G,r)局部i,j,gu:gu:=[]:对于i从1到nops(F)do对于j从1到nops(G)do如果nops(F[i][2])+nops(G[j][2])<=r,则gu:=[op(gu),[F[i][1]*G[j][1],[op(F[i][2]),op(G[j][2])]]:传真:日期:日期:帕谢语(gu):结束时间:#Khaber(F,G):添加F和GKhaber:=过程(F,G):帕谢([op(F),op(G)]):结束时间:#累进(F,r):(1+F)^(-1)到r度,例如,尝试:#累西语([[1,[a]]],3);累进:=proc(F,r)局部gu,F1,i,mu:F1:=[]:对于i从1到nops(F)do如果nops(F[i][2])<=r,则F1:=[op(F1),F[i]]:传真:日期:F1:=帕谢(F1):F1:=sMul(-1,F1):μ:=F1:gu:=Khaber([[1,[]]],亩):因为我从2到r做mu:=MulR(F1,mu,r):gu:=卡伯(mu,gu):日期:古:结束时间:#RetakhSeries(a,b,r):Retakh Series的r级术语#对于(1+ab+aabb+aaabb+…)^(-1)。例如,尝试:#RetakhSeries(a,b,4);RetakhSeries:=proc(a,b,r)local gu,i:gu:=[seq([1,[a$i,b$i]],i=1..r)]:累西语(gu,r):结束时间:#SubMono(M,D1,P):给定单项式[c,[m1,m2,…,mr]]#在包含字母D1的字母表中#剩下的字母中是多项式P,求出#获得剩余字母中的多项式#通过替换D1=P,例如try:#亚单声道([5,[a,b,D1,b,D]],D1、[[1,[a、b]],[-1,[b,a]]]);SubMono:=proc(M,D1,P)局部M1,i,mu:mu:=[[M[1],[]]]:M1:=M[2]:对于i从1到nops(M1)do如果M1[i]=D1,则mu:=mu(mu,P):其他的mu:=mu(mu,[[1,[M1[i]]]):传真:日期:亩:结束时间:#亚单体r(M,D1,P,r):给定一个单体[c,[m1,m2,…,mr]]#在包含字母D1的字母表中#剩下的字母中是多项式P,求出#获得的剩余字母中的多项式,直到r次#通过替换D1=P,例如尝试:#SubMonoR([5,[a,b,D1,b,D1]],D1;SubMonoR:=proc(M,D1,P,r)局部M1,i,mu:mu:=[[M[1],[]]]:M1:=M[2]:对于i从1到nops(M1)do如果M1[i]=D1,则mu:=MulR(mu,P,r):其他的mu:=MulR(mu,[[1,[M1[i]]],r):传真:日期:亩:结束时间:#子多边形(POL,D1,P):给定多项式POL,#(以单项式列表形式给出)#在包含字母D1的字母表中#在剩下的字母中再加一个多项式P,求出#获得剩余字母中的多项式#通过替换POL中的D1=P,例如尝试:#亚多边形([[5,[a,b,D1,b,D1]],D1;子多边形:=proc(POL,D1,P)局部i,gu:gu:=[]:对于i从1到nops(POL)dogu:=Khaber(gu,SubMono(POL[i],D1,P)):日期:古:结束时间:#SubPolyR(POL,D1,P,r):给定多项式POL,#(以单项式列表形式给出)#在包含字母D1的字母表中#在剩下的字母中再加一个多项式P,求出#获得的剩余字母中的多项式(最高r次)#通过替换POL中的D1=P,例如尝试:#子PolyR([[5,[a,b,D1,b,D]],D1;SubsPolyR:=proc(POL,D1,P,r)局部i,gu:gu:=[]:对于i从1到nops(POL)dogu:=Khaber(gu,SubMonoR(POL[i],D1,P,r)):日期:古:结束时间:#SE(POL,D1,r):给定字母D1和#其他字母,查找r级以下的所有术语#方程(非comm.)形式幂级数解的。#D1=油料。例如,尝试:#SE([1,[x]],[1,[x,D1]],[1],[a,D1,b]],[1,[a、D1,b,D1]]],D1,10);SE:=proc(POL,D1,r)局部mu,i:mu:=[]:对于i从1到nops(POL)do如果不是成员(D1,{op(POL[i][2])})和nops(POL[1][2])<=r,则mu:=[op(mu),POL[i]]:传真:日期:对于i从1到r domu:=子PolyR(POL,D1,mu,r):日期:亩:结束时间:#VerifyRetakh(r):实证验证Volodia Retakh's#猜测r项。尝试:#VerifyRetakh(6);VerifyRetakh:=proc(r)局部gu,a,b,x,lu,i,D1:gu:=SE([[1,[x]],[1,[x,D1]],[1],[a,D1,b]],[1,[a、D1、b、D1]]],D1、r);gu:=[[1,[]],op(gu)]:gu:=倍数([[1,[a]]],gu,r):gu:=MulR(gu,[[1,[b]]],r):gu:=子PolyR(gu,x,[[1,[a,b]],[-1,[b,a]]],r):lu:=[seq([1,[a$i,b$i]],i=1..r)]:lu:=累进(lu,r):如果lu[1]<>[1,[]],则打印(`Something is wrong!`):传真:lu:=[op(2..nops(lu),lu)]:lu:=μl(-1,lu):evalb(lu=gu):结束时间: