File: t_PenalizedLeastSquaresAlgorithm_std.py

package info (click to toggle)
openturns 1.24-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 66,204 kB
  • sloc: cpp: 256,662; python: 63,381; ansic: 4,414; javascript: 406; sh: 180; xml: 164; yacc: 123; makefile: 98; lex: 55
file content (82 lines) | stat: -rwxr-xr-x 2,626 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#! /usr/bin/env python

import openturns as ot

ot.TESTPREAMBLE()


dimension = 2
inVar = ot.Description(dimension)
inVar[0] = "x1"
inVar[1] = "x2"
formula = ot.Description(1)
formula[0] = "x1^3+1.5*x2^3-x1*x2"
model = ot.SymbolicFunction(inVar, formula)
coll = []
formula[0] = "x1"
coll.append(ot.SymbolicFunction(inVar, formula))
formula[0] = "x2"
coll.append(ot.SymbolicFunction(inVar, formula))
formula[0] = "x1^2"
coll.append(ot.SymbolicFunction(inVar, formula))
formula[0] = "x2^2"
coll.append(ot.SymbolicFunction(inVar, formula))
basis = ot.Basis(coll)
indices = list(range(len(coll)))
size = 5
inputSample = ot.Sample(size * size, dimension)
weight = ot.Point(inputSample.getSize(), 1)
for i in range(inputSample.getSize()):
    inputSample[i] = ot.Point((float(i % size) / size, (1.0 * (i // size)) / size))
    weight[i] = (i % size + 1) * ((i // size) + 1)
penalizationFactor = 0.25
# Uniform weight, no penalization
algo = ot.PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), ot.Point(inputSample.getSize(), 1.0), coll, indices
)
print("Uniform weight, no penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
print("RelativeError=%g" % algo.getRelativeError())
# Uniform weight, spherical penalization
algo = ot.PenalizedLeastSquaresAlgorithm(
    inputSample,
    model(inputSample),
    ot.Point(inputSample.getSize(), 1.0),
    coll,
    indices,
    penalizationFactor,
)
print("Uniform weight, spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
# Non uniform weight, spherical penalization
algo = ot.PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), weight, coll, indices
)
print("Non uniform weight, no penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
algo = ot.PenalizedLeastSquaresAlgorithm(
    inputSample, model(inputSample), weight, coll, indices, penalizationFactor
)
print("Non uniform weight, spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())
penalizationMatrix = ot.CovarianceMatrix(4)
for i in range(4):
    penalizationMatrix[i, i] = 1.0
for i in range(3):
    penalizationMatrix[i, i + 1] = 1.0 / 8.0
algo = ot.PenalizedLeastSquaresAlgorithm(
    inputSample,
    model(inputSample),
    weight,
    coll,
    indices,
    penalizationFactor,
    penalizationMatrix,
)
print("Non uniform weight, non spherical penalization")
print("Coefficients=", (algo.getCoefficients()))
print("Residual=%g" % algo.getResidual())