Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as mtl
- import scipy.optimize as ort
- f=open('input.txt')
- array=[]
- arrayCor=[]
- arrayNormCor=[]
- tNormCor0=[]
- tNormCor1=[]
- tNormCor2=[]
- tNormCor3=[]
- num=[]
- average =0
- eps0=0
- eps1=0
- eps2=0
- eps3=0
- dis=0
- rmin=0
- i=0
- while i!=5000:
- line = f.readline()
- array.append(float(line))
- i=i+1
- #print(array)
- def averageF():
- sum=0
- for i in range(5000):
- sum=sum+array[i]
- return sum/5000
- average=averageF()
- def disF():
- sum=0
- for i in range(5000):
- sum=sum+(array[i]-average)**2
- return sum/4999
- dis=disF()
- def corF():
- for i in range(4999):
- sum=0
- for j in range(5000-i):
- sum= sum + (array[j]-average)*(array[j+i]-average)
- arrayCor.append(sum/(4999-i))
- return arrayCor
- arrayCor = corF()
- def normCorF():
- for i in range(4999):
- arrayNormCor.append(arrayCor[i]/dis)
- return arrayNormCor
- arrayNormCor = normCorF()
- def rminF():
- i = 20
- while(i>=0) & (abs(arrayNormCor[i])< 1/np.e):
- i=i-1
- return i
- rmin = rminF()
- for i in range(100):
- num.append(i)
- x=[0, 101]
- y=[average,average]
- y1 = [average + np.math.sqrt(dis),average + np.math.sqrt(dis)]
- y2 = [average - np.math.sqrt(dis),average - np.math.sqrt(dis)]
- y3 = [1/np.e,1/np.e]
- y4 = [-1/np.e,-1/np.e]
- x3 = [0,20]
- mtl.figure(1)
- mtl.grid()
- leg1,leg2,leg3,leg4= mtl.plot(num,array[0:100],'b',x,y,'r',x,y1,'g',x,y2)
- mtl.legend((leg1,leg2,leg3,leg4),("function","average","MX+S","MX-S"))
- mtl.figure(2)
- mtl.grid()
- leg1,leg2,leg3,leg4=mtl.plot(num[0:20],arrayNormCor[0:20],'b',[rmin,rmin],[-1,1],'r',x3,y3,'g',x3,y4)
- mtl.legend((leg1,leg2,leg3,leg4),("NCor","interval","e^(-1)", "-e^(-1)"))
- mtl.show()
- a0 = np.math.sqrt(arrayCor[0])
- print('коэффициент Ар(0)', a0)
- A=[[arrayCor[1], 1],[arrayCor[0],0]]
- B=[[arrayCor[0]],[arrayCor[1]]]
- ar1=np.linalg.solve(A,B)
- print("Коэффициенты АР(1) ",ar1[0][0],np.math.sqrt(ar1[1][0]))
- A=[[arrayCor[1],arrayCor[2], 1],[arrayCor[0],arrayCor[1],0],[arrayCor[1],arrayCor[0],0]]
- B=[[arrayCor[0]],[arrayCor[1]],[arrayCor[2]]]
- ar2=np.linalg.solve(A,B)
- print("Коэффициенты АР(2) ",ar2[0][0],ar2[1][0],np.math.sqrt(ar2[2][0]))
- A=[[arrayCor[1],arrayCor[2],arrayCor[3], 1],[arrayCor[0],arrayCor[1],arrayCor[2],0],[arrayCor[1],arrayCor[0],arrayCor[1],0],[arrayCor[2],arrayCor[1],arrayCor[0],0]]
- B=[[arrayCor[0]],[arrayCor[1]],[arrayCor[2]],[arrayCor[3]]]
- ar3=np.linalg.solve(A,B)
- print("Коэффициенты АР(3) ",ar3[0][0],ar3[1][0],ar3[2][0],np.math.sqrt(ar3[3][0]))
- a0ss = np.math.sqrt(arrayCor[0])
- print('коэффициент CC(0)', a0ss)
- def recAr0(i):
- if(i==0):
- return 1
- else:
- return 0*recAr0(i-1)
- def recAr1(i):
- if (i == 0):
- return arrayNormCor[0]
- if( i==1):
- return arrayNormCor[1]
- else:
- return ar1[0][0] * recAr1(i - 1)
- def recAr2(i):
- if (i == 0):
- return arrayNormCor[0]
- if( i==1):
- return arrayNormCor[1]
- if(i==2):
- return arrayNormCor[2]
- else:
- return ar2[0][0] * recAr2(i - 1)+ar2[1][0] *recAr2(i-2)
- def recAr3(i):
- if (i == 0):
- return arrayNormCor[0]
- if( i==1):
- return arrayNormCor[1]
- if(i==2):
- return arrayNormCor[2]
- if (i == 2):
- return arrayNormCor[3]
- else:
- return ar3[0][0] * recAr3(i - 1)+ar3[1][0] *recAr3(i-2)+ar3[2][0]*recAr3(i-3)
- for i in range(11):
- tNormCor3.append(recAr3(i))
- tNormCor2.append(recAr2(i))
- tNormCor1.append(recAr1(i))
- tNormCor0.append(recAr0(i))
- for i in range(11):
- eps0= eps0+(tNormCor0[i]-arrayNormCor[i])**2
- eps1 = eps1 + (tNormCor1[i] - arrayNormCor[i]) ** 2
- eps2 = eps2 + (tNormCor2[i] - arrayNormCor[i]) ** 2
- eps3 = eps3 + (tNormCor3[i] - arrayNormCor[i]) ** 2
- print(tNormCor0)
- print ('eps0',eps0)
- print ('eps1',eps1)
- print ('eps2',eps2)
- print ('eps3',eps3)
- aSS1 = []
- aSS2 = []
- aSS3 = []
- emptyArray =[]
- def SS1():
- a0= (np.math.sqrt(arrayCor[0]+2*arrayCor[1])+ np.math.sqrt(arrayCor[0]-2*arrayCor[1]))/2
- a1= (np.math.sqrt(arrayCor[0]+2*arrayCor[1])- np.math.sqrt(arrayCor[0]-2*arrayCor[1]))/2
- aSS1.append(a0)
- aSS1.append(a1)
- return aSS1
- def SS2():
- a0=np.math.sqrt(arrayCor[0])
- a1=0
- a2=0
- i=0
- while (i !=200):
- a2 = arrayCor[2]/a0
- a1= (arrayCor[1]-a1*a2)/a0
- i=i+1
- if(arrayCor[0]<(a1**2+a2**2)):
- return emptyArray
- else:
- a0=np.math.sqrt(arrayCor[0]-a1**2-a2**2)
- aSS2.append(a0)
- aSS2.append(a1)
- aSS2.append(a2)
- return aSS2
- def SS3():
- a0=np.math.sqrt(arrayCor[0])
- a1=0
- a2=0
- a3=0
- emptyArray =[]
- i=0
- while (i !=200):
- a3 = arrayCor[3]/a0
- a2= (arrayCor[2]-a1*a3)/a0
- a1=(arrayCor[1]-a1*a2-a2*a3)/a0
- i=i+1
- if(arrayCor[0]<(a1**2+a2**2+a3**2)):
- return emptyArray
- else:
- a0=np.math.sqrt(arrayCor[0]-a1**2-a2**2-a3**2)
- aSS3.append(a0)
- aSS3.append(a1)
- aSS3.append(a2)
- aSS3.append(a3)
- return aSS3
- aSS1=SS1()
- aSS2=SS2()
- aSS3=SS3()
- def recSS1(i):
- if (i == 0):
- return arrayNormCor[0]
- if( i==1):
- return arrayNormCor[1]
- else:
- return aSS1[0] * recSS1(i - 1)
- tNormSS1=[]
- for i in range(11):
- tNormSS1.append(recSS1(i))
- print('hhhhhh',tNormSS1)
- print(aSS1)
- print(aSS2)
- print(aSS3)
- print('Среднее', average)
- print('Дисперсия', dis)
- print('Среднеквадротичное отклонение', np.math.sqrt(dis))
- print('Выборочная корреляционная функция',arrayCor)
- print('Нормированная корреляционная функция',arrayNormCor)
- print('Интервал корреляционной функции',rmin)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement