用户:Peter Luschny/SequenceTransformations
目录
的转换
整数序列
一些序列工具
二等分
########################################################### #名称:BISECTION #param:序列 #参数:{0,1}中的k #return:A的第k个二分 ###########################################################
定义截面(A,k)(_S): L=[] b=k==0 对于a中的a: 如果b:L.追加(a) b=非b 返回L
模量-截面
########################################################### #名称:MODSECTION #param:序列 #参数:模数m≥2 #参数:{0,1,..,m-1}中的k #return:A的第k个mod部分 ###########################################################
定义mod_section(A,m,k): L=[] b=0 对于a中的a: 如果b%m==k:L.append(a) b=b+1 返回L
系数列表
################################################################## #name:系数列表 #param:p多项式在x变量中具有整数系数。 #return:所有系数的序列 ##################################################################
定义系数列表(p,x): c=0 L=[] R=p.系数(x) 对于r中的r: 而r[1]<>c: L.append(0)(左附加(0)) c=c+1 L.append(r[0]) c=c+1 返回L
事务处理。 基于算术
第一个差异
########################################################### #名称:FIRSTDIFFERENCE #param:序列 #return:A的第一个差异 ###########################################################
def first_difference(A): 如果A==[]:返回[] L=[] b=A[0] p=错误 对于a中的a: 如果p: L.附录(a-b) b=a else:p=正确 返回L
部分金额
########################################################### #名称:PARTIALSUM #param:序列 #return:部分和序列b[n]=a[0]++ 答[n]。 ###########################################################
定义partial_sum(A): 如果A==[]:返回[0] p=0 L=[] 对于a中的a: p=a+p L.附录(p) 返回L
部分产品
########################################################### #名称:PARTIALPRODUCT #param:序列 #return:部分乘积的序列b[n]=a[0]** 答[n]。 ###########################################################
定义partial_product(A): 如果A==[]:返回[1] p=1 L=[] 对于a中的a: p=p*a L.附录(p) 返回L
如果A=[],则[X]其他部分#(A)=[A,A#b,A#b#c,…]。
部分有符号和
########################################################### #名称:PARTIALSUMSIGN #param:序列。 #返回:序列 ###########################################################
定义partial_signsum(A): 如果A==[]:返回[0] p=0 L=[] 对于a中的a: p=a-p L.附录(p) 返回L
部分交替总和
########################################################### #名称:ALTERNATINGSUM #param:序列。 #return:交替部分和序列, #b[n]=a[0]-a[1]++/- a[n]。 ###########################################################
定义alternating_sum(A): 如果A==[]:返回[0] p=0 b=正确 L=[] 对于a中的a: 如果b:p=a+p 其他:p=p-a L.附录(p) b=非b 返回L
事务处理。 基于连接系数
二项式
########################################################### #名称:BINOMIALTRANS #param:序列。 #return:A的二项式变换 ###########################################################
定义二项式trans(A): L=[] 对于范围内的n(长度(A)): s=总和(二项式(n,k)*A[k]表示k in(0..n)) L.附录 返回L
二项式反演
########################################################### #名称:BINOMIALINVTRANS #param:序列。 #return:A的二项式逆变换 ###########################################################
定义二项式转换(A): L=[] 对于范围内的n(长度(A)): s=总和((-1)^(n-k)*二项式(n,k)*A[k],对于(0..n)中的k) L.附录 返回L
un=和a{n,k}vk<=>vn=和b{n,k}uk。
箍筋2
########################################################### #名称:STIRLING2TRANS #param:序列。 #return:A的Stirling2变换 ###########################################################
定义斯特林2_trans(A): L=[] 对于范围内的n(长度(A)): s=总和(stirling_number2(n,k)*A[k]代表k in(0..n)) L.append(s)(左附加) 返回L
Stirling2反转
########################################################### #名称:STIRLING2INVTRANS #param:序列。 #return:A的逆Stirling2变换 ###########################################################
定义stirling2_invtrans(A): L=[] 对于范围内的n(长度(A)): s=总和((-1)^(n-k)*stirling_number1(n,k)*A[k]表示(0..n)中的k) L.附录 返回L
箍筋1
########################################################### #名称:STIRLING1TRANS #param:序列。 #return:A的Stirling1变换 ###########################################################
定义stirling1_trans(A): L=[] 对于范围内的n(长度(A)): s=sum(stirling_number1(n,k)*A[k]对于(0..n)中的k) L.附录 返回L
斯特林1反转
########################################################### #名称:STIRLING1INVTRANS #param:序列。 #return:A的逆Stirling1变换 ###########################################################
定义stirling1_invtrans(A): L=[] 对于范围内的n(len(A)): s=总和((-1)^(n-k)*stirling_number2(n,k)*A[k],对于(0..n)中的k) L.附录 返回L
斯特林
########################################################### #名称:斯特林 #param:序列。 #return:斯隆对A的斯特林变换 ###########################################################
定义STIRLING(A): L=[] 对于范围内的n(长度(A)): s=总和(stirling_number2(n+1,k+1)*A[k]代表k in(0..n)) L.附录 返回L
斯特林吉
########################################################### #姓名:STIRLINGi #param:序列。 #return:Sloane对A的逆Stirling变换 ###########################################################
定义STIRLINGi(A): L=[] 对于范围内的n(长度(A)): s=总和((-1)^(n-k)*stirling_number1(n+1,k+1)*A[k]表示k in(0..n)) L.附录 返回L
拉
########################################################### #名称:LAHTRANS #param:序列。 #return:A的Lah变换 ###########################################################
定义lah数(n,k):#定义为n≥0,k≥0。 return(-1)^n*阶乘(n-k)*二项式(n,n-k)x二项式
定义lah_trans(A): L=[] 对于范围内的n(长度(A)): s=总和(lah_number(n,k)*A[k]表示k in(0..n)) L.附录 返回L
Lah反转
########################################################### #姓名:LAHINVTRANS #param:一个序列。 #return:A的逆Lah变换 ###########################################################
定义lah_invtrans(A): L=[] 对于范围内的n(长度(A)): s=总和((-1)^(n-k)*lah_number(n,k)*A[k],对于(0..n)中的k) L.附录 返回L
|
|||
事务处理。 基于生成函数
欧拉
########################################################### #名称:EULERTRANS #param:序列。 #return:A的Euler变换 ###########################################################
定义euler_trans(A): L=[]; M=[] 对于范围内的i(长度(A)): s=总和(d*A[d-1]表示除数(i+1)中的d) L.附录 s=s+总和((1..i)中j的L[j-1]*M[i-j]) M.append(s/(i+1)) 返回M
欧拉反转
########################################################### #名称:EULERINVTRANS #param:序列。 #return:A的逆Euler变换 ###########################################################
定义euler_invtrans(A): L=[]; M=[] 对于范围内的i(长度(A)): s=(i+1)*A[i]-和(L[j-1]*A[i-j],用于(1..i)中的j) L.附录 s=总和(moebius((i+1)/d)*L[d-1]表示d的除数(i+1)) M.append(s/(i+1)) 返回M
|
定义gordons_定理(A,n): L=[]; M=[]; m=长度(A) 对于范围(n)内的i: s=除数(i+1)中d的总和(d*A[(d-1)%m]) L.附录 s=s+总和((1..i)中d的L[d-1]*M[i-d]) M.append(s/(i+1)) 返回M 定义A035937_list(len):返回戈登斯定理([0,1,1,1,0,0],len) 定义A035938_list(len):返回戈登斯定理([1,0,1,1,0],len) 定义A035939_list(len):返回戈登斯定理([1,1,0,0,1,1,0],len) def A035940_list(len):返回戈登定理([0,1,1,1,1,1,0],len) 定义A035941_list(len):返回戈登斯定理([1,0,1,1,1,0,1,0],len)
s=总和(d*A[d-1]表示除数(i+1)中的d) s=除数(i+1)中d的总和(d*A[(d-1)%m])
莫茨金
########################################################### #名称:MOTZKINTRANS #param:序列。 #return:A的Motzkin变换 ###########################################################
定义motzkin_trans(A): d=0 p=0 l=长度(A)-1 f=(1-x-sqrt(1-2*x-3*x^2))/2/x m=f.taylor(x,0,l) 对于a中的a: p+=(a*m^d).泰勒(x,0,l) d+=1 返回系数列表(p,x)
莫茨金反转
########################################################### #名称:MOTZKININVTRANS #param:序列。 #return:A的逆Motzkin变换 ###########################################################
定义motzkin_invtrans(A): d=0 p=0 l=长度(A)-1 f=x/(1+x+x^2) m=f·泰勒(x,0,l) 对于a中的a: p+=(a*m^d).taylor(x,0,l) d+=1 返回系数列表(p,x)
加泰罗尼亚语
########################################################### #名称:CATALANTRANS #param:序列。 #return:A的加泰罗尼亚变换 ###########################################################
定义catalan_trans(A): d=0 p=0 l=长度(A)-1 f=(1-平方(1-4*x))/2 m=f.taylor(x,0,l) 对于a中的a: p+=(a*m^d).taylor(x,0,l) d+=1 返回系数列表(p,x)
加泰罗尼亚逆
########################################################### #名称:CATLANINVTRANS #param:序列。 #return:A的逆加泰罗尼亚变换 ###########################################################
定义catalan_invtrans(A): d=0 p=0 l=长度(A)-1 f=x*(1-x) m=f.taylor(x,0,l) 对于a中的a: p+=(a*m^d).taylor(x,0,l) d+=1 返回系数列表(p,x)
顺序操作
卷积
########################################################### #名称:CONVOLUTION #参数:A、B序列。 #return:A和B的卷积 ###########################################################
定义卷积(A,B): m=最小值(长度(A),长度(B)) C=[] 对于范围(m)内的n: s=总和(A[k]*B[n-k]代表k in(0..n)) C.附加 返回C
二项式卷积
########################################################### #名称:BINOMIALCONVOLUTION #参数:A,B序列。 #return:A和B的卷积 ###########################################################
定义二项式卷积(A,B): m=最小值(长度(A),长度(B)) C=[] 对于范围(m)内的n: s=总和((0..n)中k的二项式(n,k)*A[k]*B[n-k]) C.附加 返回C
Divconv分子
########################################################### #名称:DIVCONVNUMERATOR #参数:A,B序列,所有n的B[n]<>0。 #return:和的分子(A[k]/B[n-k],k=0..n) ###########################################################
定义divconv_numerator(A,B): m=最小值(长度(A),长度(B)) C=[] 对于范围(m)内的n: s=总和(A[k]/B[n-k]表示k in(0..n)) C.append(s.numerator()) 返回C
Divconv分母
########################################################### #名称:DIVCONVDENOMINATOR #参数:A,B序列,所有n的B[n]<>0。 #return:和的分母(A[k]/B[n-k],k=0..n) ###########################################################
定义divconv_denominator(A,B): m=最小值(长度(A),长度(B)) C=[] 对于范围(m)内的n: s=总和(A[k]/B[n-k]表示k in(0..n)) C.附加(s.分母()) 返回C
序列到三角形的变换
的 多项式本身, 多项式的系数(将给出 三角形)和 在某个 特定参数。
A多项式
########################################################### #name:APOLYNOMIALS(专名) #参数:f函数,n整数,x变量。 ###########################################################
定义A_多项式(f,n,x): s=加法(加法((-1)^v*二项式(k,v)*f(k+1)*(x+v+1)^n 对于v in(0..k))对于k in(0..n)) 返回展开 定义三角形(f,n)(_T): var('x') 返回系数列表(A_多项式(f,n,x),x) 定义A_list(f,len,A): return[A_polyminal(f,n,x=A)for n in(0..len)]
让f生成常数序列1,1,1,1,。。。 定义uno(n):返回1。 多项式(uno,n,x)是1,x,x^2,x^3,。。。 三角形(uno,n)是(作为矩阵)单位矩阵。 A_list(uno,len,n)是序列n^k,k=0,1,2,。。
让f生成序列1、2、3、4,。。。 定义id(n):返回n。 三角形(id,n)为(_T) A130595型 A_list(id,len,-n)是序列(-n-1)^k,k=0,1,2,。。
让f生成谐波数, def H(n):返回加法(1/i代表(1..n)中的i)。 A_多项式(H,n,x)瞧! 这些是伯努利多项式! A_list(H,len,-1)的分子是 A164558号 用不同的符号。
设f=skp,定义为 def-skp(m):如果m%4==0:返回0否则:返回 1/((-1)^(m//4)*2^((m-1)//2))
C变换
########################################################### #name:CTRANSFORMATION(另一个特殊名称) #param:序列 #return:三角形A的变换 ###########################################################
定义c_trans(A): L=长度(A)+1 C=[1(0..L)中的i)]; C[0]=0 对于k in(1..L): 对于范围(k-1,0,-1)内的n: C[n]=C[n-1]+C[n+1]*A[n-1] 在(1..k)中打印n的[C[n]
|
||||
Deleham三角洲
########################################################### #姓名:DELEHAMDELTA #参数:r,s序列 #返回:rΔs,三角形 ###########################################################
定义deleham_delta(R,S): L=最小值(长度(R),长度(S))+1 A=[SR(R[k]+x*S[k]),对于范围(L-1)中的k C=[SR(1),对于范围(L+1)中的i)]; C[0]=SR(0) 对于k in(1..L): 对于范围(k-1,0,-1)内的n: C[n]=C[n-1]+C[n+1]*A[n-1] p=展开(C[1]) 打印[(0..k-1)中n的系数(x,n)]
|
|||
|
|||
DELEHAMDELTA:=进程(r,s)局部L,k,A,p,r,C,n,W; R:=空; C[0]:=0; L:=最小值(nops(r),nops(s))+1; 对于从0到L-2的k do A[k]:=x*r[k+1]+s[k+1]; 日期: 对于k从1到L do C[k]:=1; 对于从k-1到-1 do的n C[n]:=C[n-1]+C[n+1]*A[n-1] od; p:=展开(C[1]); W:=序列(系数(p,x,k-n),n=1..k); R:=R,W; l打印(W); 日期: R端:
其他转换
指数变换
########################################################### #名称:EXP-TRANSFORM #param:s序列 #返回:s的变换 ###########################################################
exptrans:=进程局部g; g:=proc(n)选项记忆; 局部k; `如果`(n=0,1,加上(二项式(n-1,k-1)*s(k)*g(n-k),k=1..n))end-end:
A000110号 :=n->exptrans(m->1)(n): A000587号 :=n->exptrans(m->-1)(n): A000248美元 :=n->exptrans(m->m)(n): A007837号 :=n->导出(m-> A182927号 (m) )(n): A005651号 :=n->导出(m-> A182926号 (m) )(n):
|
|
||||
新:=n->exptrans(m-> A038041号 (m) )(n): 1, 1, 3, 9, 38, 168, 915, 5225, 34228, 236622, 1805297,...
迭代指数变换
########################################################### #名称:迭代EXP-TRANSFORM #param:s序列 #返回:s的变换 ###########################################################
迭代表达式:=s->proc(n,k)(exptr@@n)(m->s(m))(k)结束:
A144150型 :=iterexp(m->1):序列(lprint(seq( A144150型 (k,n),k=0..6)),n=0..6; A210638型 :=iterexp(m->-1):序列(lprint(seq( A210638型 (n,k),k=0..6)),n=0..6; A209631型 :=iterexp(m->m):seq(lprint(seq( A209631型 (n,k),k=0..6)),n=0..6;
汉克尔
########################################################### #姓名:汉克尔 #param:f序列生成器 #n:变换长度 #return:[f(0)..f(n-1)]的Hankel整数变换 ###########################################################
def hankel_even(f,n)(定义hankel_even(f,n)): R=[] 对于范围(n)中的k: R.append(矩阵(k,k,λi,j:f(i+j)).det()) 返回R 定义hankel_add(f,n): R=[] 对于范围(n)中的k: R.append(矩阵(k,k,λi,j:f(i+j+1)).det()) 返回R 定义汉克尔(f,n): R=[] 对于范围(n)中的k: R.append(矩阵(k,k,λi,j:f(i+j)).det()) R.append(矩阵(k,k,λi,j:f(i+j+1)).det()) 返回R
定义加泰罗尼亚语(n):返回二项式(2*n,n)/(n+1) 打印hankel_even(catalan,9) 打印hankel_even(阶乘,6) [1, 1, 1, 1, 1, 1, 1, 1, 1] [1, 1, 1, 4, 144, 82944] 打印hankel_add(catalan,9) 打印hankel_add(阶乘,6) [1, 1, 1, 1, 1, 1, 1, 1, 1] [1, 1, 2, 24, 3456, 9953280] 印花汉克尔(加泰罗尼亚,9岁) 打印汉克尔(阶乘,6) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [1, 1, 1, 1, 1, 2, 4, 24, 144, 3456, 82944, 9953280]
Layman/Sloane-Hankel的转换是多对一的。 此处定义的Hankel变换唯一地决定了 原始数列规定所有行列式都不是零。
定义 A006134号 (n) : 返回和((0..n)中k的二项式(2*k,k)) 定义 A098479号 (n) : 返回和(二项式(n-k,k)*二项式 定义 A025565号 (n) : 返回和(二项式(n-1,k)*(0..(n//2))中k的二项式 打印hankel_even( A006134号 ,9) 打印hankel_even( A098479号 ,9) 打印hankel_even( A025565号 ,9) [1, 1, 0, -4, -8, 0, 32, 64, 0] [1, 1, 0, -4, -8, 0, 32, 64, 0] [1, 1, 0, -4, -8, 0, 32, 64, 0] 打印hankel_odd( A006134号 ,9) 打印hankel_add( A098479号 ,9) 打印hankel_add( A025565号 ,9) [1, 3, 6, -8, -72, -144, 64, 960, 1920] [1, 1, 2, -8, -24, -48, 64, 320, 640] [1, 2, 4, 8, 16, 32, 64, 128, 256] 印花手帕( A006134号 ,9) 印花手帕( A098479号 ,9) 印花手帕( A025565号 ,9) [1,1,1,3,0,6,-4,-8,-8,-72,0,-144,32,64,64,960,0,1920] [1,1,1,1,0,2,-4,-8,-8,-24,0, -48,32,64,64,320,0, 640] [1,1,1,2,0,4,-4, 8,-8, 16,0, 32,32,64,64,128,0, 256]