(6th) Franke Function
Contents
(6th) Franke Function#
import numpy as np
import matplotlib.pyplot as plt
import uqtestfuns as uqtf
The (6th) Franke function is a two-dimensional scalar-valued function. The function was first introduced in [Fra79] in the context of interpolation problem.
Note
The Franke’s original report [Fra79] contains in total six two-dimensional test functions:
(1st) Franke function: Two Gaussian peaks and a Gaussian dip on a surface slopping down the upper right boundary
(2nd) Franke function: Two nearly flat regions joined by a sharp rise running diagonally
(3rd) Franke function: A saddle shaped surface
(4th) Franke function: A Gaussian hill that slopes off in a gentle fashion
(5th) Franke function: A steep Gaussian hill that approaches zero at the boundaries
(6th) Franke function: A part of a sphere (this function)
The term “Franke function” typically only refers to the (1st) Franke function.
As shown in the plots above, the function features a part of a sphere with a radius of \(\frac{8}{9}\) and a center at \((\frac{1}{2}, \frac{1}{2}, -\frac{1}{2})\).
Note
The (6th) Franke function is a modified form of the McLain S1 function [McL74].
Specifically, the domain of the function is translated from \([1.0, 10.0]^2\) to \([0.0, 1.0]^2\) with some additional slight modifications to “enhance the visual aspects” of the resulting surfaces.
Test function instance#
To create a default instance of the (6th) Franke function:
my_testfun = uqtf.Franke6()
Check if it has been correctly instantiated:
print(my_testfun)
Name : Franke6
Spatial dimension : 2
Description : (6th) Franke function from Franke (1979)
Description#
The (4th) Franke function is defined as follows:
where \(\boldsymbol{x} = \{ x_1, x_2 \}\) is the two-dimensional vector of input variables further defined below.
Probabilistic input#
Based on [Fra79], the probabilistic input model for the function consists of two independent random variables as shown below.
my_testfun.prob_input
Name: Franke1979
Spatial Dimension: 2
Description: Input specification for the test functions from Franke (1979).
Marginals:
No. | Name | Distribution | Parameters | Description |
---|---|---|---|---|
1 | X1 | uniform | [0. 1.] | None |
2 | X2 | uniform | [0. 1.] | None |
Copulas: None
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:
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);
References#
- Fra79(1,2,3)
Richard Franke. A critical comparison of some methods for interpolation of scattered data. techreport NPS53-79-003, Naval Postgraduate School, Monterey, Canada, 1979. URL: https://core.ac.uk/reader/36727660.
- McL74
D. H. McLain. Drawing contours from arbitrary data points. The Computer Journal, 17(4):318–324, 1974. doi:10.1093/comjnl/17.4.318.