import current as pc def model_solver(q): return q[1] * e**q[0] + 1 #end coll_points = array([[0, 0, 1], [0, 1, 1]]) #end basis = pc.basis(0, 1, 2) print basis # [1, q0, q1] #end solves = model_solver(coll_points) print solves # [ 1. 2. 3.71828183] #end approx_solver = pc.fitter_lr(basis, coll_points, solves) print approx_solver # q1+1.71828182846q0+1.0 #end print approx_solver(*coll_points) # [ 1. 2. 3.71828183] #end
print np.max(abs(approx - approx2).coeffs(), -1) # [ 2.44249065e-15 3.77475828e-15] # end nodes = dist.sample(12, "M") print nodes # [[ 1.3074948 1.1461811 0.48907479 -0.99729764 -2.04207273 0.3737412 # -0.17126603 0.40045745 0.25582169 -1.50683751 -0.47799293 1.21890579] # [ 0.61939522 1.72367491 -0.55533514 -0.00905152 -0.87071076 -0.04532524 # -0.95908033 -1.5433918 -1.10189542 1.19303123 -0.85594892 -0.97358421]] # end def model_solver(q): return [q[0] * q[1], q[0] * e ** -q[1] + 1] solves = [model_solver(q) for q in nodes.T] approx = pc.fitter_lr(orth, nodes, solves) print pc.around(approx, 14) # [q0q1, 0.161037230451q1^2-1.23004736008q0q1+0.152745901925q0^2+ # 0.0439971157359q1+1.21399892993q0+0.86841679007] # end approx = pc.fitter_lr(orth, nodes, solves, rule="OMP", n_nonzero_coefs=1) print approx # [q0q1, 1.52536467971q0] # end
from numpy import * import current as pc def model_solver(q): return q[1]*e**q[0]+1 #end coll_points = array([[0,0,1],[0,1,1]]) #end basis = pc.basis(0,1,2) print basis # [1, q0, q1] #end solves = model_solver(coll_points) print solves # [ 1. 2. 3.71828183] #end approx_solver = pc.fitter_lr(basis, coll_points, solves) print approx_solver # q1+1.71828182846q0+1.0 #end print approx_solver(*coll_points) # [ 1. 2. 3.71828183] #end
E,V = np.empty((2,len(Z))) N = 4*pc.terms(order, 2) q = Q.sample(N, "H") for i in xrange(len(Z)): print "i", i z = Z[i] solver = Solver(z) trans = lambda q: \ [z/q[0]*(z<q[3]) + \ (q[3]/q[0]+(z-q[3])/q[1])*(z>=q[3])*(z<q[4]) + \ (q[3]/q[0]+(q[4]-q[3])/q[1]+(z-q[4])/q[2])*(z>=q[4]), q[3]/q[0]+(q[4]-q[3])/q[1]+(1-q[4])/q[2]] dist = pc.Dist(_length=2) dist._mom = pc.momgen(trans, 15, Q, rule="C", composit=[.15,.9,.15, z, z]) orth = pc.orth_chol(order, dist, normed=0) y = np.array(map(solver, q.T)) approx = pc.fitter_lr(orth, trans(q), y, rule="T", order=1, alpha=1e-8) E[i] = pc.E(approx, dist) V[i] = pc.Var(approx, dist) E = np.abs(E-E0) V = np.abs(V-V0) os.system('echo "%d\n%s\n%s" >> 3a.log' % (N, repr(E), repr(V))) os.system('echo "%s, %s" >> 3a.log' % (np.mean(E), np.mean(V)))
N = 4 * pc.terms(order, 2) q = Q.sample(N, "H") for i in xrange(len(Z)): print "i", i z = Z[i] solver = Solver(z) trans = lambda q: \ [z/q[0]*(z<q[3]) + \ (q[3]/q[0]+(z-q[3])/q[1])*(z>=q[3])*(z<q[4]) + \ (q[3]/q[0]+(q[4]-q[3])/q[1]+(z-q[4])/q[2])*(z>=q[4]), q[3]/q[0]+(q[4]-q[3])/q[1]+(1-q[4])/q[2]] dist = pc.Dist(_length=2) dist._mom = pc.momgen(trans, 15, Q, rule="C", composit=[.15, .9, .15, z, z]) orth = pc.orth_chol(order, dist, normed=0) y = np.array(map(solver, q.T)) approx = pc.fitter_lr(orth, trans(q), y, rule="T", order=1, alpha=1e-8) E[i] = pc.E(approx, dist) V[i] = pc.Var(approx, dist) E = np.abs(E - E0) V = np.abs(V - V0) os.system('echo "%d\n%s\n%s" >> 3a.log' % (N, repr(E), repr(V))) os.system('echo "%s, %s" >> 3a.log' % (np.mean(E), np.mean(V)))