from numpy import * import matplotlib.pyplot from numpy.linalg import * vecSize=2**12 vec=zeros([vecSize,1]) vec[4]=1 vec[29]=1 c0=(1+sqrt(3))/(4*sqrt(2)); c1=(3+sqrt(3))/(4*sqrt(2)); c2=(3-sqrt(3))/(4*sqrt(2)); c3=(1-sqrt(3))/(4*sqrt(2)); for i in range(11): splitSize=(2**(i+2)) splitVec=zeros([splitSize,splitSize]) for j in range(int(splitSize/2)): splitVec[j,2*j]=1 for k in range(int(splitSize/2)): splitVec[k+splitSize/2,2*k+1]=1 Csize=splitSize Circ=zeros([Csize,Csize]) Circ[Csize-2,0]=c2 Circ[Csize-2,1]=c3 Circ[Csize-1,0]=c1 Circ[Csize-1,1]=-c0 Circ[Csize-2,Csize-2]=c0 Circ[Csize-2,Csize-1]=c1 Circ[Csize-1,Csize-2]=c3 Circ[Csize-1,Csize-1]=-c2 for l in range(0,Csize-2,2): Circ[l,l]=c0 Circ[l,l+1]=c1 Circ[l,l+2]=c2 Circ[l,l+3]=c3 Circ[l+1,l]=c3 Circ[l+1,l+1]=-c2 Circ[l+1,l+1]=c1 Circ[l+1,l+1]=-c0 Circ=Circ.transpose() vec[:splitSize]=dot(inv(splitVec),vec[:splitSize]) vec[:Csize]=dot(Circ,vec[:Csize]) t=arange(0,vecSize) fig=matplotlib.pyplot.figure() inf=fig.add_subplot(111) inf.plot(t,vec) matplotlib.pyplot.show()