Ejemplo n.º 1
0
 def apply(self,v,A=None,h=1):
     nrm = np.linalg.norm(v)
     v = v/nrm
     if self.CppFlag:
         from expint.lib.carnoldi import arnoldi
         V,H = arnoldi(A,v,self.k)
     else:
         from expint.util import arnoldi
         V,H = arnoldi(A,v,self.k)
     
     from scipy.linalg import expm
     result = nrm*np.dot(V,expm(h*H[:self.k,:self.k])[:,0])
     result.shape = (max(result.shape),1)
     return result
Ejemplo n.º 2
0
 def apply(self,v,A=None,h=1):
     T = v.dtype
     nrm = np.linalg.norm(v)
     v = v/nrm
     n = np.max(v.shape)
     from expint.util import arnoldi
     from scipy.linalg import expm
     V = np.zeros((n,self.k), dtype=T)
     H = np.zeros((self.k+1,self.k), dtype=T)
     V,H = arnoldi(A,v,self.k)
     result = nrm*np.dot(V,expm(h*H[:self.k,:self.k])[:,0])
     result.shape = (max(result.shape),1)
     return result