|
@@ -65,6 +65,17 @@ def getLTransformGrid(sigma,fz, mu=0):
|
|
|
fn=len(fa)
|
|
|
return numpy.array([getLTransform(z,fa,fb,mu) for z in fz])
|
|
|
|
|
|
+def getComplexConjugatedLTransformAtMinusComplexConjugatedZGrid(sigma,fz, mu=0):
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ fa,fb=readCoef(sigma)
|
|
|
+ fn=len(fa)
|
|
|
+ zPrime=-numpy.conj(fz)
|
|
|
+ return numpy.conj(numpy.array([getLTransform(z,fa,fb,mu) for z in zPrime]))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
def getLTransformPart(z, fa, fb, i):
|
|
|
|
|
|
|
|
@@ -83,13 +94,11 @@ def addExpA(fz,fq,x):
|
|
|
|
|
|
return fq*numpy.exp(numpy.real(fz)*x)
|
|
|
|
|
|
-def convolveLN(fx,sigma,mu):
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+def getZArray(n=2000):
|
|
|
|
|
|
|
|
|
- n=2000
|
|
|
+
|
|
|
|
|
|
u0=0
|
|
|
u1=300
|
|
@@ -104,23 +113,38 @@ def convolveLN(fx,sigma,mu):
|
|
|
h=(u1-u0)/2/n
|
|
|
|
|
|
qz=c+fa/numpy.absolute(fa)*qh
|
|
|
-
|
|
|
- qPhi=numpy.ones(qh.size,dtype=complex)
|
|
|
- for i in range(len(sigma)):
|
|
|
- m=mu[i]
|
|
|
- s=sigma[i]
|
|
|
- qPhi*=getLTransformGrid(sigma[i],qz,mu[i])
|
|
|
-
|
|
|
+ return qz,fa,u0,h
|
|
|
+
|
|
|
+def inverseL(fx,qz,qPhi,fa,u0,h,n):
|
|
|
+
|
|
|
+ fI=numpy.zeros(len(fx),dtype=complex)
|
|
|
+ for i in range(len(fx)):
|
|
|
+ x=fx[i]
|
|
|
+ qPhi1=addExpA(qz,qPhi,x)
|
|
|
+ fRc=filionQuadrature.filionQuadrature(numpy.real(qPhi1),x,u0,h,n,'cos')
|
|
|
+ fIc=filionQuadrature.filionQuadrature(numpy.imag(qPhi1),x,u0,h,n,'cos')
|
|
|
+ fRs=filionQuadrature.filionQuadrature(numpy.real(qPhi1),x,u0,h,n,'sin')
|
|
|
+ fIs=filionQuadrature.filionQuadrature(numpy.imag(qPhi1),x,u0,h,n,'sin')
|
|
|
+ fI[i]=numpy.complex(fRc-fIs,fIc+fRs)
|
|
|
+ fI1=fa*fI
|
|
|
+ return numpy.imag(fI1)
|
|
|
+
|
|
|
+def convolveLN(fx,sigma,mu,sign):
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
- fI=numpy.zeros(len(fx),dtype=complex)
|
|
|
- for i in range(len(fx)):
|
|
|
- x=fx[i]
|
|
|
- qPhi1=addExpA(qz,qPhi,x)
|
|
|
- fRc=filionQuadrature.filionQuadrature(numpy.real(qPhi1),x,u0,h,n,'cos')
|
|
|
- fIc=filionQuadrature.filionQuadrature(numpy.imag(qPhi1),x,u0,h,n,'cos')
|
|
|
- fRs=filionQuadrature.filionQuadrature(numpy.real(qPhi1),x,u0,h,n,'sin')
|
|
|
- fIs=filionQuadrature.filionQuadrature(numpy.imag(qPhi1),x,u0,h,n,'sin')
|
|
|
- fI[i]=numpy.complex(fRc-fIs,fIc+fRs)
|
|
|
- fI1=fa*fI
|
|
|
- return numpy.imag(fI1)
|
|
|
+
|
|
|
+
|
|
|
+ n=2000
|
|
|
+ qz,fa,u0,h=getZArray(n)
|
|
|
+
|
|
|
+ qPhi=numpy.ones(qz.size,dtype=complex)
|
|
|
+ for i in range(len(sigma)):
|
|
|
+ m=mu[i]
|
|
|
+ s=sigma[i]
|
|
|
+ if sign[i]:
|
|
|
+ qPhi*=getLTransformGrid(sigma[i],qz,mu[i])
|
|
|
+ continue
|
|
|
+ qPhi*=getComplexConjugatedLTransformAtMinusComplexConjugatedZGrid(s,qz,m)
|
|
|
+
|
|
|
+ return inverseL(fx,qz,qPhi,fa,u0,h,n)
|