ot.Log.Show(ot.Log.NONE) # %% # Define the coefficients distribution mu = [2.0]*2 sigma = [5.0]*2 R = ot.CorrelationMatrix(2) coefDist = ot.Normal(mu, sigma, R) # %% # Create a basis of functions phi_1 = ot.SymbolicFunction(['t'], ['sin(t)']) phi_2 = ot.SymbolicFunction(['t'], ['cos(t)^2']) myBasis = ot.Basis([phi_1, phi_2]) # %% # Create the mesh myMesh = ot.RegularGrid(0.0, 0.1, 100) # %% # Create the process process = ot.FunctionalBasisProcess(coefDist, myBasis, myMesh) # %% # Draw a sample N = 6 sample = process.getSample(N) graph = sample.drawMarginal(0) graph.setTitle(str(N)+' realizations of functional basis process') view = viewer.View(graph)
def _exec(self, X): Xs = ot.Sample(X) x1, x2, x3, x4 = Xs.computeMean() y = x1 + x2 + x3 - x4 + x1 * x2 - x3 * x4 - 0.1 * x1 * x2 * x3 return [y] f = ot.FieldToPointFunction(pyf2p(tg)) # First process: elementary process based on a bivariate random vector f1 = ot.SymbolicFunction(['t'], ['sin(t)']) f2 = ot.SymbolicFunction(['t'], ['cos(t)^2']) myBasis = ot.Basis([f1, f2]) coefDis = ot.Normal([1.0] * 2, [0.6] * 2, ot.CorrelationMatrix(2)) p1 = ot.FunctionalBasisProcess(coefDis, myBasis, tg) # Second process: smooth Gaussian process p2 = ot.GaussianProcess(ot.SquaredExponential([1.0], [T / 4.0]), tg) # Third process: elementary process based on a bivariate random vector randomParameters = ot.ComposedDistribution([ot.Uniform(), ot.Normal()]) p3 = ot.FunctionalBasisProcess( randomParameters, ot.Basis([ ot.SymbolicFunction(["t"], ["1", "0"]), ot.SymbolicFunction(["t"], ["0", "1"]) ])) X = ot.AggregatedProcess([p1, p2, p3]) X.setMesh(tg)
# # %% import openturns as ot from openturns.viewer import View # %% # First build a process to generate the input data. # We assemble a 4-d process from functional and Gaussian processes. T = 3.0 NT = 32 tg = ot.RegularGrid(0.0, T / NT, NT) f1 = ot.SymbolicFunction(['t'], ['sin(t)']) f2 = ot.SymbolicFunction(['t'], ['cos(t)^2']) coeff1_dist = ot.Normal([1.0] * 2, [0.6] * 2, ot.CorrelationMatrix(2)) p1 = ot.FunctionalBasisProcess(coeff1_dist, ot.Basis([f1, f2]), tg) p2 = ot.GaussianProcess(ot.SquaredExponential([1.0], [T / 4.0]), tg) coeff3_dist = ot.ComposedDistribution([ot.Uniform(), ot.Normal()]) f1 = ot.SymbolicFunction(["t"], ["1", "0"]) f2 = ot.SymbolicFunction(["t"], ["0", "1"]) p3 = ot.FunctionalBasisProcess(coeff3_dist, ot.Basis([f1, f2])) X = ot.AggregatedProcess([p1, p2, p3]) X.setMesh(tg) # %% # Draw some input trajectories from our process ot.RandomGenerator.SetSeed(0) x = X.getSample(10) graph = x.drawMarginal(0) graph.setTitle(f'{x.getSize()} input trajectories') _ = View(graph)
import openturns as ot from math import exp from matplotlib import pyplot as plt from openturns.viewer import View f1 = ot.SymbolicFunction(['t'], ['sin(t)']) f2 = ot.SymbolicFunction(['t'], ['cos(t)*cos(t)']) myBasis = ot.Basis([f1, f2]) coefDis = ot.Normal([2] * 2, [5] * 2, ot.CorrelationMatrix(2)) myTG = ot.RegularGrid(0.0, 0.1, 250) myFBP = ot.FunctionalBasisProcess(coefDis, myBasis, myTG) TS = myFBP.getRealization() graph = TS.draw() graph.add(myFBP.getRealization().draw()) graph.add(myFBP.getRealization().draw()) graph.setColors(['red', 'blue', 'green']) fig = plt.figure(figsize=(10, 4)) plt.suptitle('Functional Basis Process') fbp_axis = fig.add_subplot(111) view = View(graph, figure=fig, axes=[fbp_axis], add_legend=False)