def runpwbasis(k, u, Npw, quadrule): bc = pcad.PWFBCreator(k, origin, npw, nfb, params = None) newnbc = puo.optimalbasis3(lsf.optimise, nbc.pwbasis, nbc.params, None, nbc.newparams) if nbc.npw > 0 else nbc gen, ini = pcad.pwbasisgeneration(k, Npw) basis, (coeffs, err) = pcad.optimalbasis2(u, gen, ini, quadrule) l2err = math.sqrt(np.vdot(err,err)) print l2err, basis, coeffs return pcb.BasisReduce(basis, coeffs)
def runadaptivebasis(k, u, Nb, origin, quadrule): bases = [] coefflist = [] for nfb in range(Nb/2): npw = Nb - (2*nfb + 1) if npw > 0: gen, ini = pcad.pwfbbasisgeneration(k, origin, npw, nfb) basis, (coeffs, err) = pcad.optimalbasis2(u, gen, ini, quadrule) l2err = math.sqrt(np.vdot(err,err)) # print nfb, npw, basis,coeffs,l2err print nfb, npw, l2err print basis print coeffs bases.append(basis) coefflist.append(coeffs) return pcb.BasisReduce(bases[-1], coefflist[-1])
def runadaptivebasis2(k, u, Nb, origin, quadrule): bases = [] coefflist = [] for nfb in range(Nb/2): npw = Nb - (2*nfb + 1) if npw > 0: gen, ini = pcad.pwbasisgeneration(k, npw) ini = ini fb = pcb.FourierBessel(origin, range(-nfb,nfb+1), k) basis, (coeffs, err) = pcad.optimalbasis2(u, gen, ini, quadrule, fb) l2err = math.sqrt(np.vdot(err,err)) # print nfb, npw, basis,coeffs,l2err print nfb, npw, l2err print basis print coeffs bases.append(basis) coefflist.append(coeffs) return [pcb.BasisReduce(b, c) for b,c in zip(bases, coefflist)]