Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import random
- import math
- import scipy.stats as sc
- MO = 0
- PV = 0.1
- def gen(n):
- arr = [random.triangular(a,b) for i in range(2**n)]
- return arr
- def cnt(arr,x,y):
- k = 0
- for i in range(len(arr)):
- if x <= arr[i] < y:
- k+=1
- return k
- def FR(x):
- fr = (x - a)/(b - a)
- return fr
- def cm(arr,k):
- cmk = 0
- for i in range(len(arr)):
- cmk += (arr[i] - MO)**k
- cmk/= len(arr)
- return cmk
- def hist(arr,f,a,b):
- n = 100
- step = (b-a)/n
- x = a
- y = a+step
- k = 1
- harr = []
- while k<n:
- harr.append(cnt(arr,x,y)/(len(arr)*step))
- k+=1
- x=y
- y=x+step
- harr.append(cnt(arr, x, b) / (len(arr) * step))
- x = a
- y = a + step
- plt.figure(f)
- for i in range(len(harr)):
- plt.plot([x,x,y,y],[0,harr[i],harr[i],0],color = 'blue')
- x = y
- y = x + step
- def ing(arr,f):
- step = 1/len(arr)
- y = a + step
- n = (b-a) * len(arr)
- iarr = [0]
- x = [0]
- for i in range(n):
- iarr.append(cnt(arr,a,y)/len(arr))
- x.append(y)
- y+=step
- plt.figure(f)
- plt.plot(x,iarr)
- fx = [i for i in range(11)]
- fy = [FR(i) for i in range(11)]
- plt.plot(fx,fy)
- def ka(arr):
- k = cm(arr,3)/(cm(arr,2)**(3/2))
- return k
- def ke(arr):
- k = cm(arr,4)/(cm(arr,2)**(4/2))
- return k
- def kplot(arr,f):
- plt.figure(f)
- plt.plot(ka(arr),ke(arr),'ro')
- plt.plot(0, 1.8, 'bs')
- plt.axis([-0.2,4,10,1])
- def eh(arr):
- n = 1 + math.log2(len(arr))
- step = (b-a)/n
- x = a
- y = a+step
- k = 1
- harr = []
- xh = []
- while k<n:
- harr.append(cnt(arr,x,y)/(len(arr)*step))
- k+=1
- xh.append((x+y)/2)
- x=y
- y=x+step
- harr.append(cnt(arr, x, b) / (len(arr) * step))
- xh.append((x+y)/2)
- e = 0
- trg = sc.triang(scale=40, c=0.5, loc=-20)
- for i in range(len(harr)):
- e += (1 - harr[i]/trg.pdf(xh[i]))**2
- e = e*0.025
- return e
- def ec(arr):
- step = 1/len(arr)
- y = a + step
- n = (b-a) * len(arr)
- iarr = [0]
- x = [0]
- for i in range(n):
- iarr.append(cnt(arr,a,y)/len(arr))
- x.append(y)
- y+=step
- k = 0
- i = 0
- while 1:
- if iarr[k] == 1:
- i = k
- break
- k+=1
- e = iarr[i] - FR(x[i])
- return(e)
- """""
- arr = gen(9)
- hist(arr,1)
- ing(arr,2)
- kplot(arr,3)
- print(ec(arr))
- plt.figure(4)
- e1 = []
- x = []
- for i in range(10):
- e1.append(ec(gen(i+1)))
- x.append(2**(i+1))
- plt.xscale('log',basex = 2)
- plt.plot(x,e1)
- plt.figure(5)
- e2 = []
- x2 = []
- for i in range(10):
- e2.append(eh(gen(i+1)))
- x2.append(2**(i+1))
- plt.xscale('log',basex = 2)
- plt.plot(x2,e2)
- plt.show()
- """""
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement