예제 #1
0
 def evaluate_at_box(self,k,coeff,n,l,nn,ll,x):
     if isinstance(x,list) or isinstance(x,Vector):
         value_list = []
         for i in range(len(x)):
             coordinate = (x[i]+ll)*(2.0**(n-nn))-l
             p = Vector(phi(coordinate,k))                                                                                                  
             value_list.append(coeff.inner(p)*math.sqrt(2.0**n))
         return Vector(value_list)
     else:
         coordinate = (x + ll)*(2.0**(n-nn))-l
         p = Vector(phi(coordinate,self.k))                                                                                                  
         value = coeff.inner(p)*math.sqrt(2.0**n)
         return value
예제 #2
0
파일: onedAST.py 프로젝트: srki/madpy
 def evaluate_at_box(self, k, coeff, n, l, nn, ll, x):
     if isinstance(x, list) or isinstance(x, Vector):
         value_list = []
         for i in range(len(x)):
             coordinate = (x[i] + ll) * (2.0**(n - nn)) - l
             p = Vector(phi(coordinate, k))
             value_list.append(coeff.inner(p) * math.sqrt(2.0**n))
         return Vector(value_list)
     else:
         coordinate = (x + ll) * (2.0**(n - nn)) - l
         p = Vector(phi(coordinate, self.k))
         value = coeff.inner(p) * math.sqrt(2.0**n)
         return value
예제 #3
0
 def init_quadrature(self, order):
     x, w = gauss_legendre(order)
     self.quad_w = Vector(w)
     self.quad_x = Vector(x)
     self.quad_npt = npt = len(w)
     self.quad_phi = Matrix(npt, self.k)  # phi[point,i]
     self.quad_phiT = Matrix(self.k, npt)  # phi[point,i] transpose
     self.quad_phiw = Matrix(npt, self.k)  # phi[point,i]*weight[point]
     for i in xrange(npt):
         p = phi(self.quad_x[i], self.k)
         for m in xrange(self.k):
             self.quad_phi[i, m] = p[m]
             self.quad_phiT[m, i] = p[m]
             self.quad_phiw[i, m] = w[i] * p[m]
예제 #4
0
파일: oned.py 프로젝트: m-a-d-n-e-s-s/madpy
 def init_quadrature(self, order):
     x, w = gauss_legendre(order)
     self.quad_w = Vector(w)
     self.quad_x = Vector(x)
     self.quad_npt = npt = len(w)
     self.quad_phi  = Matrix(npt, self.k) # phi[point,i]
     self.quad_phiT = Matrix(self.k, npt) # phi[point,i] transpose
     self.quad_phiw = Matrix(npt, self.k) # phi[point,i]*weight[point]
     for i in xrange(npt):
         p = phi(self.quad_x[i], self.k)
         for m in xrange(self.k):
             self.quad_phi[i, m] = p[m]
             self.quad_phiT[m, i] = p[m]
             self.quad_phiw[i, m] = w[i] * p[m]
예제 #5
0
    def __evaluate(self, n, l, x):
        '''
        eval f(x) using adaptively refined numerical representation of f(x)
        answer should be within tolerance of the analytical f(x)

        Descend tree looking for box (n,l) with scaling function
        coefficients containing the point x.
        '''
        if self.s[n].has_key(l):
            p = Vector(phi(x, self.k))
            return self.s[n][l].inner(p) * math.sqrt(2.0**n)
        else:
            n, l, x = n + 1, 2 * l, 2 * x
            if x >= 1: l, x = l + 1, x - 1
            return self.__evaluate(n, l, x)
예제 #6
0
파일: oned.py 프로젝트: m-a-d-n-e-s-s/madpy
    def __evaluate(self, n, l, x):
        '''
        eval f(x) using adaptively refined numerical representation of f(x)
        answer should be within tolerance of the analytical f(x)

        Descend tree looking for box (n,l) with scaling function
        coefficients containing the point x.
        '''
        if self.s[n].has_key(l):
            p = Vector(phi(x, self.k))
            return self.s[n][l].inner(p)*math.sqrt(2.0**n)
        else:
            n, l, x = n + 1, 2 * l, 2 * x
            if x >= 1:  l, x = l + 1, x - 1
            return self.__evaluate(n, l, x)