def pdf_moments(cnt): """Return the Gaussian expanded pdf function given the list of central moments (first one is mean). """ N = len(cnt) if N < 2: raise ValueError, "At least two moments must be given to" + \ "approximate the pdf." totp = poly1d(1) sig = sqrt(cnt[1]) mu = cnt[0] if N > 2: Dvals = _hermnorm(N+1) for k in range(3,N+1): # Find Ck Ck = 0.0 for n in range((k-3)/2): m = k-2*n if m % 2: # m is odd momdiff = cnt[m-1] else: momdiff = cnt[m-1] - sig*sig*scipy.factorial2(m-1) Ck += Dvals[k][m] / sig**m * momdiff # Add to totp totp = totp + Ck*Dvals[k] def thisfunc(x): xn = (x-mu)/sig return totp(xn)*exp(-xn*xn/2.0)/sqrt(2*pi)/sig return thisfunc
def pdf_moments_st(cnt): """Return the Gaussian expanded pdf function given the list of central moments (first one is mean). version of scipy.stats, any changes ? the scipy.stats version has a bug and returns normal distribution """ N = len(cnt) if N < 2: raise ValueError("At least two moments must be given to " "approximate the pdf.") totp = poly1d(1) sig = sqrt(cnt[1]) mu = cnt[0] if N > 2: Dvals = _hermnorm(N + 1) for k in range(3, N + 1): # Find Ck Ck = 0.0 for n in range((k - 3) / 2): m = k - 2 * n if m % 2: # m is odd momdiff = cnt[m - 1] else: momdiff = cnt[m - 1] - sig * sig * scipy.factorial2(m - 1) Ck += Dvals[k][m] / sig**m * momdiff # Add to totp raise SystemError print(Dvals) print(Ck) totp = totp + Ck * Dvals[k] def thisfunc(x): xn = (x - mu) / sig return totp(xn) * exp(-xn * xn / 2.0) / sqrt(2 * np.pi) / sig return thisfunc, totp
def pdf_moments_st(cnt): """Return the Gaussian expanded pdf function given the list of central moments (first one is mean). version of scipy.stats, any changes ? the scipy.stats version has a bug and returns normal distribution """ N = len(cnt) if N < 2: raise ValueError("At least two moments must be given to" + \ "approximate the pdf.") totp = poly1d(1) sig = sqrt(cnt[1]) mu = cnt[0] if N > 2: Dvals = _hermnorm(N+1) for k in range(3,N+1): # Find Ck Ck = 0.0 for n in range((k-3)/2): m = k-2*n if m % 2: # m is odd momdiff = cnt[m-1] else: momdiff = cnt[m-1] - sig*sig*scipy.factorial2(m-1) Ck += Dvals[k][m] / sig**m * momdiff # Add to totp raise print(Dvals) print(Ck) totp = totp + Ck*Dvals[k] def thisfunc(x): xn = (x-mu)/sig return totp(xn)*exp(-xn*xn/2.0)/sqrt(2*np.pi)/sig return thisfunc, totp
def dfunc0(self,x): px=x*twopi y=numpy.ones(len(x)) for i in range(1,self.Para.para[1]+1): y+=scipy.factorial2(2*i-1)/scipy.factorial2(2*i)*numpy.sin(px)**(2*i) return self.Para.para[0]*numpy.cos(px)*y
def func0(self,x): px=x*twopi y=numpy.sin(px) for i in range(1,int(self.Para.para[1])+1): y+=scipy.factorial2(2*i-1)/scipy.factorial2(2*i)/(2*i+1)*numpy.sin(px)**(2*i+1) return self.Para.para[0]/twopi*y