Exemple #1
0
#   [  0.   0.   0.   0.  24.]]
#end

dist = pc.Gamma(2)
print pc.orth_bert(2, dist)
#  [1.0, q0-2.0, q0^2-6.0q0+6.0]
#end

dist = pc.Uniform(-1, 1)
print dist.ttr([0, 1, 2, 3])
#  [[ 0.          0.          0.          0.        ]
#   [-0.          0.33333333  0.26666667  0.25714286]]
#end

dist = pc.Lognormal(0.01)
orths = pc.orth_ttr(2, dist)
print orths
#  [1.0, q0-1.00501252086, q0^2-2.04042818514q0+0.842739860094]
#end

dist = pc.Iid(pc.Gamma(1), 2)
orths = pc.orth_ttr(2, dist)
print orths
#  [1.0, q1-1.0, q0-1.0, q1^2-4.0q1+2.0, q0q1-q1-q0+1.0, q0^2-4.0q0+2.0]
#end

q = pc.variable()
dist = pc.Normal()
print pc.E(q, dist)
#  0.0
#end
Exemple #2
0
dist = pc.Iid(pc.Normal(), 2)
# end

nodes, weights = pc.quadgen(2, dist, rule="G")
print nodes
#  [[-1.73205081 -1.73205081 -1.73205081  0.          0.
#     0.          1.73205081  1.73205081  1.73205081]
#   [-1.73205081  0.          1.73205081 -1.73205081  0.
#     1.73205081 -1.73205081  0.          1.73205081]]
print weights
#  [ 0.02777778  0.11111111  0.02777778  0.11111111  0.44444444
#    0.11111111  0.02777778  0.11111111  0.02777778]
# end

orth = pc.orth_ttr(2, dist)
print orth
#  [1.0, q1, q0, q1^2-1.0, q0q1, q0^2-1.0]
# 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]
# end

approx = pc.fitter_quad(orth, nodes, weights, solves)
print pc.around(approx, 14)
#  [q0q1, -1.58058656357q0q1+1.63819248006q0+1.0]
Exemple #3
0
axis([0, 1, 0, 1])
legend(loc="upper left")

savefig("intro3.pdf")
clf()

mu = [0.001, 0.01, 0.1]
Sigma = [[1, .5, .5], [.5, 1, .5], [.5, .5, 1]]
#end

N = pc.Iid(pc.Normal(0, 1), 3)
L = linalg.cholesky(Sigma)
Q = e**(N0 * L + mu)
#end

orth_poly = pc.orth_ttr(2, N)
#end

approx = pc.pcm(model_wrapper, 2, Q, proxy_dist=N)
fail

print len(w)
#  9

print approx
#  [0.0, -0.014499323957q1-0.014499323957q0+0.240519453193,
#      -0.0289986479139q1-0.0289986479139q0+0.481038906386]
#end

print pc.E(approx, Q)
#  [ 0.          0.19270877  0.38541753]
Exemple #4
0
    return q[0] * e**-q[1] / (q[2] + 1) + sin(q[3])


model_solver = pc.lazy_eval(model_solver)
#end

current = array([1, 1, 1, 1, 1])
current_error = inf
#end

for step in range(10):

    for direction in eye(len(dist), dtype=int):
        #end

        orth = pc.orth_ttr(current + direction, dist)
        nodes, weights = pc.quadgen(current + direction,
                                    dist,
                                    rule="C",
                                    growth=True)
        vals = [model_solver(q) for q in nodes.T]
        #end

        residuals = pc.cross_validate(orth, nodes, vals, folds=5)
        error = sum(residuals**2)
        #end

        if error < current_error:
            current_error = error
            proposed_dir = current + direction
        #end
Exemple #5
0
#   [  0.   0.   0.   0.  24.]]
#end

dist = pc.Gamma(2)
print pc.orth_bert(2, dist)
#  [1.0, q0-2.0, q0^2-6.0q0+6.0]
#end

dist = pc.Uniform(-1,1)
print dist.ttr([0,1,2,3])
#  [[ 0.          0.          0.          0.        ]
#   [-0.          0.33333333  0.26666667  0.25714286]]
#end

dist = pc.Lognormal(0.01)
orths = pc.orth_ttr(2, dist)
print orths
#  [1.0, q0-1.00501252086, q0^2-2.04042818514q0+0.842739860094]
#end

dist = pc.Iid(pc.Gamma(1), 2)
orths = pc.orth_ttr(2, dist)
print orths
#  [1.0, q1-1.0, q0-1.0, q1^2-4.0q1+2.0, q0q1-q1-q0+1.0, q0^2-4.0q0+2.0]
#end

q = pc.variable()
dist = pc.Normal()
print pc.E(q, dist)
#  0.0
#end
Exemple #6
0
ylabel(r"Flow velocity")
axis([0,1,0,1])
legend(loc="upper left")

savefig("intro3.pdf"); clf()

mu = [0.001, 0.01, 0.1]
Sigma = [[1,.5,.5],[.5,1,.5],[.5,.5,1]]
#end

N = pc.Iid(pc.Normal(0,1), 3)
L = linalg.cholesky(Sigma)
Q = e**(N0*L + mu)
#end

orth_poly = pc.orth_ttr(2, N)
#end

approx = pc.pcm(model_wrapper, 2, Q, proxy_dist=N)
fail


print len(w)
#  9

print approx
#  [0.0, -0.014499323957q1-0.014499323957q0+0.240519453193,
#      -0.0289986479139q1-0.0289986479139q0+0.481038906386]
#end

print pc.E(approx, Q)
Exemple #7
0
from pylab import *
import current as pc

dist_main = pc.MvNormal([0, 0], [[1, .5], [.5, 1]])
#end

dist_aux = pc.Iid(pc.Normal(), 2)
#end

orth, norms = pc.orth_ttr(2, dist_aux, retall=True)
print orth
#  [1.0, q1, q0, q1^2-1.0, q0q1, q0^2-1.0]
#end

nodes_aux, weights = pc.quadgen(3, dist_aux, rule="G")
#end

function = lambda q: q[0] * e**-q[1] + 1
#end

nodes_main = dist_main.inv(dist_aux.fwd(nodes_aux))
solves = [function(q) for q in nodes_main.T]
#end

approx = pc.fitter_quad(orth, nodes_aux, weights, solves, norms=norms)
print pc.E(approx, dist_aux)
#  0.175824752014
#end
Exemple #8
0
def model_solver(q):
    return q[0]*e**-q[1]/(q[2]+1) + sin(q[3])
model_solver = pc.lazy_eval(model_solver)
#end

current = array([1,1,1,1,1])
current_error = inf
#end

for step in range(10):

    for direction in eye(len(dist), dtype=int):
        #end

        orth = pc.orth_ttr(current+direction, dist)
        nodes, weights = pc.quadgen(current+direction, dist,
                rule="C", growth=True)
        vals = [model_solver(q) for q in nodes.T]
        #end

        residuals = pc.cross_validate(orth, nodes, vals, folds=5)
        error = sum(residuals**2)
        #end

        if error < current_error:
            current_error = error
            proposed_dir = current+direction
        #end

    current = proposed_dir