Two-dimensional Non-Polynomial Function from Lim et al. (2002)

Two-dimensional Non-Polynomial Function from Lim et al. (2002)#

import numpy as np
import matplotlib.pyplot as plt
import uqtestfuns as uqtf

The non-polynomial test function from Lim et al. (2002) (or LimNonPoly for short) is a two-dimensional scalar-valued function. The function was used in [LSSW02] in the context of establishing the connection between Gaussian process metamodel and polynomials.

../_images/c6dd3bca81f1a7c3e625200117cd7d643a99cb5b33da736f91de2d7e2ed457f4.png

Test function instance#

To create a default instance of the test function:

my_testfun = uqtf.LimNonPoly()

Check if it has been correctly instantiated:

print(my_testfun)
Function ID      : LimNonPoly
Input Dimension  : 2 (fixed)
Output Dimension : 1
Parameterized    : False
Description      : Two-dimensional non-polynomial function from Lim et al. (2002)
Applications     : metamodeling

Description#

The test function is defined as follows[1]:

\[ \mathcal{M}(\boldsymbol{x}) = \frac{(30 + 5 x_1 \sin{(5 x_1)}) (4 + \exp{(-5x_2)}) - 100}{6} \]

where \(\boldsymbol{x} = \{ x_1, x_2 \}\) is the two-dimensional vector of input variables further defined below.

Note

This function is a rescaled version of Eq. (6) in [WBS+92]. The function is also similar to its polynomial counterpart; in fact, the coefficients of the polynomial are chosen with that goal in mind.

Probabilistic input#

The input consists of two uniformly distributed random variables as shown below.

Hide code cell source
print(my_testfun.prob_input)
Function ID     : LimNonPoly
Input ID        : Lim2002
Input Dimension : 2
Description     : Input specification for the non-polynomial function from
                  Lim et al. (2002)
Marginals       :

 No.    Name    Distribution    Parameters    Description
-----  ------  --------------  ------------  -------------
  1      x1       uniform        [0. 1.]           -
  2      x2       uniform        [0. 1.]           -

Copulas         : Independence

Reference results#

This section provides several reference results of typical UQ analyses involving the test function.

Sample histogram#

Shown below is the histogram of the output based on \(100'000\) random points:

Hide code cell source
xx_test = my_testfun.prob_input.get_sample(100000)
yy_test = my_testfun(xx_test)

plt.hist(yy_test, bins="auto", color="#8da0cb");
plt.grid();
plt.ylabel("Counts [-]");
plt.xlabel("$\mathcal{M}(\mathbf{X})$");
plt.gcf().set_dpi(150);
../_images/ba919e32bc4f3145be82a3f7019db8dcc1a0fe4dd87ebbb5c6e0ce79c2637482.png

References#

[LSSW02] (1,2)

Yong B. Lim, Jerome Sacks, W. J. Studden, and William J. Welch. Design and analysis of computer experiments when the output is highly correlated over the input space. Canadian Journal of Statistics, 30(1):109–126, 2002. doi:10.2307/3315868.

[WBS+92]

William J. Welch, Robert. J. Buck, Jerome Sacks, Henry P. Wynn, Toby J. Mitchell, and Max D. Morris. Screening, predicting, and computer experiments. Technometrics, 34(1):15, 1992. doi:10.2307/1269548.