Ejemplo n.º 1
0
def test_1d_gauss_hermite_quadrature(recurrence_algorithm):
    distribution = Normal(2, 2)
    abscissas, weights = quad_gaussian(
        10, distribution, recurrence_algorithm=recurrence_algorithm)
    assert abscissas.shape == (1, 11)
    assert weights.shape == (11, )
    assert numpy.allclose(numpy.sum(abscissas * weights, -1),
                          distribution.mom(1))
    assert numpy.allclose(numpy.sum(abscissas**2 * weights, -1),
                          distribution.mom(2))
Ejemplo n.º 2
0
def test_3d_gauss_hermite_quadrature(recurrence_algorithm):
    distribution = Iid(Normal(0, 1), 3)
    abscissas, weights = quad_gaussian(
        3, distribution, recurrence_algorithm=recurrence_algorithm)
    assert abscissas.shape == (3, 4**3)
    assert weights.shape == (4**3, )
    kloc = numpy.eye(3, dtype=int)
    assert numpy.allclose(numpy.sum(abscissas * weights, -1),
                          distribution.mom(kloc))
    assert numpy.allclose(numpy.sum(abscissas**2 * weights, -1),
                          distribution.mom(2 * kloc))
Ejemplo n.º 3
0
"""
Created: Fri Jul 26 09:57:16 2019
@author: Christopher Albert <*****@*****.**>
"""

import time

from chaospy import Normal, J, generate_quadrature

params = [Normal(mu=0.999,  sigma=0.0052), 
          Normal(mu=27.1,   sigma=17.0), 
          Normal(mu=0.318,  sigma=0.1),
          Normal(mu=0.015,  sigma=0.0087),
          Normal(mu=0.0817, sigma=0.0077),
          Normal(mu=1.309,  sigma=0.086),
          Normal(mu=2.19,   sigma=0.22)]

dist = J(*params)
#%%
t = time.time()
nodes, weights = generate_quadrature(4, dist, rule='G', sparse=True)
print('time elapsed: {} s'.format(time.time() - t))
Ejemplo n.º 4
0
#%% save to disk
def save(approx):
  with open('pce.pickle', 'wb') as filehandler:
      pickle.dump(approx, filehandler)

#%%
indata = np.load('indata.npy')
outdata = np.load('outdata.npy')
with open('pce.pickle', 'rb') as filehandler:
  approx = pickle.load(filehandler)

params = OrderedDict()
data = np.genfromtxt('params_1998.txt', dtype=None, encoding=None)
for param in data:
    if(param[1] == 'Normal'):
        params[param[0]] = Normal(param[2], param[3])

#%%
distribution = J(*params.values())

#%%
F0 = E(approx, distribution)
dF = Std(approx, distribution)

#%%
F0[0] = F0[1]
dF[0] = dF[1]
plt.plot(np.arange(len(F0))-38, F0, 'k')
plt.fill_between(np.arange(len(F0))-38,F0-dF, F0+dF, color='k', alpha=0.3)
plt.ylim(-100,200)
plt.xlabel('t')
Ejemplo n.º 5
0
#%%

data = np.genfromtxt('2019-07_run_1998/params.txt',
                     skip_header=1,
                     dtype=('|U64', '|U64', float, float))

labels = data['f0']  # parameter labels
mean = data['f2']  # E0
std = data['f3']  # sqrt(Var0)

s = sqrt(log(std**2 / mean**2 + 1))
mu = log(mean) - 0.5 * s**2

params = []
for k in range(len(mu)):
    params.append(Normal(mu=mu[k], sigma=s[k]))

dist = J(*params)
#%%

nodes, weights = generate_quadrature(4, dist, rule='G', sparse=True)
expansion = orth_ttr(3, dist)

#%%
approx = fit_quadrature(expansion, nodes, weights, outdata)

#%%

F0 = E(approx, dist)
dF = Std(approx, dist)
Ejemplo n.º 6
0
import numpoly

import chaospy as cpy
import numpy as np

from time import time
from chaospy import Normal, generate_expansion

if __name__ == '__main__':

    prior_mean = 0.
    prior_sigma = 5.
    dim = 2
    prior = cpy.Iid(Normal(prior_mean, prior_sigma), dim)

    poly_order = 2
    abscissas, weights = cpy.generate_quadrature(poly_order,
                                                 prior,
                                                 rule='gaussian')
    expansion = generate_expansion(poly_order, prior, retall=False)

    def forward_model(params):
        return np.prod(np.exp(-params**2))

    evals = np.array([forward_model(sample) for sample in abscissas.T])
    surrogate = cpy.fit_quadrature(expansion, abscissas, weights, evals)

    coefficients = np.array(surrogate.coefficients)
    indeterminants = surrogate.indeterminants
    exponents = surrogate.exponents