Exemple #1
0
f = cb.model

# %%
# The random variable of interest Y is then
Y = ot.CompositeRandomVector(f, X)
Y.setDescription('Y')

# %%
# Taylor expansion
# ----------------

# %%
# Perform Taylor approximation to get the expected value of Y and the importance factors.

# %%
taylor = ot.TaylorExpansionMoments(Y)
taylor_mean_fo = taylor.getMeanFirstOrder()
taylor_mean_so = taylor.getMeanSecondOrder()
taylor_cov = taylor.getCovariance()
taylor_if = taylor.getImportanceFactors()
print('model evaluation calls number=', f.getGradientCallsNumber())
print('model gradient calls number=', f.getGradientCallsNumber())
print('model hessian calls number=', f.getHessianCallsNumber())
print('taylor mean first order=', taylor_mean_fo)
print('taylor variance=', taylor_cov)
print('taylor importance factors=', taylor_if)

# %%
graph = taylor.drawImportanceFactors()
view = viewer.View(graph)
    formulas = ot.Description(3)
    formulas[0] = 'a+b+c'
    formulas[1] = 'a-b*c'
    formulas[2] = '(a+2*b^2+3*c^3)/6'
    analytical = ot.SymbolicFunction(input, formulas)
    analytical.setName('analytical')
    analytical.setOutputDescription(['z1', 'z2', 'z3'])
    myStudy.add('analytical', analytical)

    # Create a TaylorExpansionMoments algorithm
    antecedent = ot.RandomVector(
        ot.IndependentCopula(analytical.getInputDimension()))
    antecedent.setName('antecedent')
    composite = ot.CompositeRandomVector(analytical, antecedent)
    composite.setName('composite')
    taylorExpansionsMoments = ot.TaylorExpansionMoments(composite)
    taylorExpansionsMoments.setName('taylorExpansionsMoments')
    taylorExpansionsMoments.getMeanFirstOrder()
    taylorExpansionsMoments.getMeanSecondOrder()
    taylorExpansionsMoments.getCovariance()

    myStudy.add('taylorExpansionsMoments', taylorExpansionsMoments)

    # Create a FORMResult
    input2 = ot.Description(2)
    input2[0] = 'x'
    input2[1] = 'y'
    formula2 = ot.Description(1)
    formula2[0] = 'y^2-x'
    model = ot.SymbolicFunction(input2, formula2)
    model.setName('sum')
Exemple #3
0
for i in range(dim):
    sigma[i] = 0.1 * (i + 1)
R = ot.CorrelationMatrix(dim)
for i in range(1, dim):
    R[i, i - 1] = 0.25

distribution = ot.Normal(meanPoint, sigma, R)

# We create a distribution-based RandomVector
X = ot.RandomVector(distribution)

# We create a composite RandomVector Y from X and myFunction
Y = ot.RandomVector(myFunc, X)

# We create a quadraticCumul algorithm
algo = ot.TaylorExpansionMoments(Y)

# We test the attributes here
print('algo=', algo)

# We compute the several elements provided by the quadratic cumul algorithm
print('First order mean=', repr(algo.getMeanFirstOrder()))
print('Second order mean=', repr(algo.getMeanSecondOrder()))
print('Covariance=', repr(algo.getCovariance()))
print('Value at mean=', repr(algo.getValueAtMean()))
print('Gradient at mean=', repr(algo.getGradientAtMean()))
print('Hessian at mean=', repr(algo.getHessianAtMean()))

algo_1 = ot.TaylorExpansionMoments(Y.getMarginal(0))
print('Importance factors=', repr(algo_1.getImportanceFactors()))