File: t_Function_linearity.py

package info (click to toggle)
openturns 1.26-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 67,708 kB
  • sloc: cpp: 261,605; python: 67,030; ansic: 4,378; javascript: 406; sh: 185; xml: 164; makefile: 101
file content (78 lines) | stat: -rwxr-xr-x 1,689 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
#! /usr/bin/env python

import openturns as ot

ot.TESTPREAMBLE()

# 1. Basic 1D linear function
func1 = ot.SymbolicFunction(["x1", "x2"], ["3*x1 - 2*x2 +5"])
lin1 = func1.isLinear()
lin10 = func1.isLinearlyDependent(0)
lin11 = func1.isLinearlyDependent(1)
assert lin1
assert lin10
assert lin11

# 2. Basic 2D linear function
func2 = ot.SymbolicFunction(["x1", "x2"], ["3*x1 - 2*x2 +5", "-x1 + x2"])
lin2 = func2.isLinear()
lin20 = func2.isLinearlyDependent(0)
lin21 = func2.isLinearlyDependent(1)
assert lin2
assert lin20
assert lin21

# 3. 2D non linear function
func3 = ot.SymbolicFunction(["x1", "x2"], ["3*x1 - 2*x2 +5", "-x1^2 + x2"])
lin3 = func3.isLinear()
lin30 = func3.isLinearlyDependent(0)
lin31 = func3.isLinearlyDependent(1)
assert not lin3
assert not lin30
assert lin31


# 4. 2D non linear function
func4 = ot.SymbolicFunction(["x1", "x2"], ["3*x1*x2"])
lin4 = func4.isLinear()
lin40 = func4.isLinearlyDependent(0)
lin41 = func4.isLinearlyDependent(1)
assert not lin4
assert lin40
assert lin41

# 5. Aggregated function
func5 = ot.AggregatedFunction([func2, func4])
lin5 = func5.isLinear()
lin50 = func5.isLinearlyDependent(0)
lin51 = func5.isLinearlyDependent(1)
assert not lin5
assert lin50
assert lin51

# 6. Python function


def pyFunc6(x):
    x1, x2 = x
    result = [3 * x1 - 2 * x2 + 5, -x1 + x2, 3 * x1 * x2]
    return result


def funLinearity():
    return False


def varLinearity(index):
    return True


func6 = ot.PythonFunction(
    2, 3, pyFunc6, functionLinearity=funLinearity, variablesLinearity=varLinearity
)
lin6 = func6.isLinear()
lin60 = func6.isLinearlyDependent(0)
lin61 = func6.isLinearlyDependent(1)
assert not lin6
assert lin60
assert lin61