pub struct Ishigami {
pub a: f64,
pub b: f64,
}Expand description
Ishigami and Homma’s function, y = sin x₁ + a sin² x₂ + b x₃⁴ sin x₁, each xᵢ uniform on
[−π, π].
Its mean is a/2 and its variance and the parts of it are (I. M. Sobol’ and Y. L. Levitan,
“On the use of variance reducing multipliers in Monte Carlo computations of a global
sensitivity index”, Computer Physics Communications 117, 52–61, 1999,
https://doi.org/10.1016/S0010-4655(98)00156-8, p. 57, §5; A. Saltelli and others, Global
Sensitivity Analysis: The Primer, Wiley, 2008, pp. 179–182)
V = 1/2 + a²/8 + bπ⁴/5 + b²π⁸/18,V₁ = (1 + bπ⁴/5)²/2,V₂ = a²/8,V₃ = 0,V₁₃ = (1/18 − 1/50) b²π⁸ = 8b²π⁸/225, every other part zero,
so Sᵢ = Vᵢ/V, S_T₁ = (V₁ + V₁₃)/V, S_T₂ = V₂/V and S_T₃ = V₁₃/V. The usual
parameters, Ishigami::STANDARD, are a = 7, b = 0.1. T. Ishigami and T. Homma, “An
importance quantification technique in uncertainty analysis for computer models”, Proceedings
of ISUMA ’90, 398–403, 1990, https://doi.org/10.1109/ISUMA.1990.151285, introduced it.
Fields§
§a: f64The weight of sin² x₂.
b: f64The weight of x₃⁴ sin x₁.
Implementations§
Source§impl Ishigami
impl Ishigami
Sourcepub fn factors() -> Result<Vec<Factor>, AnalysisError>
pub fn factors() -> Result<Vec<Factor>, AnalysisError>
Its three factors, x1 to x3, each on [−π, π].
§Errors
None in practice; Factor::new’s, as the type requires.
Sourcepub fn evaluate(&self, x: &[f64]) -> f64
pub fn evaluate(&self, x: &[f64]) -> f64
y at x = [x₁, x₂, x₃]; NaN for a slice of another length.
Sourcepub fn first_order(&self) -> [f64; 3]
pub fn first_order(&self) -> [f64; 3]
The first-order indices, S₁, S₂, S₃.
Trait Implementations§
impl Copy for Ishigami
Source§impl<'de> Deserialize<'de> for Ishigami
impl<'de> Deserialize<'de> for Ishigami
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for Ishigami
Auto Trait Implementations§
impl Freeze for Ishigami
impl RefUnwindSafe for Ishigami
impl Send for Ishigami
impl Sync for Ishigami
impl Unpin for Ishigami
impl UnsafeUnpin for Ishigami
impl UnwindSafe for Ishigami
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more