pub struct MultivariateNormal<S: State>where
    DefaultAllocator: Allocator<f64, S::Size> + Allocator<f64, S::Size, S::Size> + Allocator<usize, S::Size, S::Size> + Allocator<f64, S::VecLength> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <<S::Size as DimMin<S::Size>>::Output as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output, S::Size> + Allocator<f64, <S::Size as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimSub<Const<1>>>::Output>,
    <DefaultAllocator as Allocator<f64, S::VecLength>>::Buffer: Send,
    S::Size: DimMin<S::Size> + DimSub<Const<1>>,
    <S::Size as DimMin<S::Size>>::Output: DimSub<Const<1>>,{
    pub template: S,
    pub params: Vec<StateParameter>,
    pub mean: OVector<f64, DimMinimum<S::Size, S::Size>>,
    pub sqrt_s_v: OMatrix<f64, S::Size, DimMinimum<S::Size, S::Size>>,
    pub std_norm_distr: Normal<f64>,
}
Expand description

A state generator for Monte Carlo analyses.

Fields§

§template: S

The template state

§params: Vec<StateParameter>

The ordered vector of parameters to which the mean and covariance correspond to.

§mean: OVector<f64, DimMinimum<S::Size, S::Size>>

The mean of the multivariate normal distribution

§sqrt_s_v: OMatrix<f64, S::Size, DimMinimum<S::Size, S::Size>>

The dot product \sqrt{\vec s} \cdot \vec v, where S is the singular values and V the V matrix from the SVD decomp of the covariance of multivariate normal distribution

§std_norm_distr: Normal<f64>

The standard normal distribution used to seed the multivariate normal distribution

Implementations§

source§

impl<S: State> MultivariateNormal<S>where DefaultAllocator: Allocator<f64, S::Size> + Allocator<f64, S::Size, S::Size> + Allocator<usize, S::Size, S::Size> + Allocator<f64, S::VecLength> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <<S::Size as DimMin<S::Size>>::Output as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output, S::Size> + Allocator<f64, <S::Size as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimSub<Const<1>>>::Output>, <DefaultAllocator as Allocator<f64, S::VecLength>>::Buffer: Send, S::Size: DimMin<S::Size> + DimSub<Const<1>>, <S::Size as DimMin<S::Size>>::Output: DimSub<Const<1>>,

source

pub fn new( template: S, params: Vec<StateParameter>, mean: OVector<f64, DimMinimum<S::Size, S::Size>>, cov: OMatrix<f64, S::Size, S::Size> ) -> Result<Self, NyxError>

Creates a new Monte Carlos state generator from a mean and covariance which must be of the same size as the state vector The covariance must be positive semi definite. The algorithm is the one from numpy https://github.com/numpy/numpy/blob/6c16f23c30fe490422959d30c2e22345211a2fe3/numpy/random/mtrand.pyx#L3979

source

pub fn zero_mean( template: S, params: Vec<StateParameter>, cov: OMatrix<f64, S::Size, S::Size> ) -> Result<Self, NyxError>where <S::Size as DimMin<S::Size>>::Output: DimName,

Same as new but with a zero mean

Trait Implementations§

source§

impl<S: State> Distribution<DispersedState<S>> for MultivariateNormal<S>where DefaultAllocator: Allocator<f64, S::Size> + Allocator<f64, S::Size, S::Size> + Allocator<usize, S::Size, S::Size> + Allocator<f64, S::VecLength> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <<S::Size as DimMin<S::Size>>::Output as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimMin<S::Size>>::Output> + Allocator<f64, <S::Size as DimMin<S::Size>>::Output, S::Size> + Allocator<f64, <S::Size as DimSub<Const<1>>>::Output> + Allocator<f64, S::Size, <S::Size as DimSub<Const<1>>>::Output>, <DefaultAllocator as Allocator<f64, S::VecLength>>::Buffer: Send, S::Size: DimMin<S::Size> + DimSub<Const<1>>, <S::Size as DimMin<S::Size>>::Output: DimSub<Const<1>> + DimName,

source§

fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> DispersedState<S>

Generate a random value of T, using rng as the source of randomness.
source§

fn sample_iter<R>(self, rng: R) -> DistIter<Self, R, T>where R: Rng, Self: Sized,

Create an iterator that generates random values of T, using rng as the source of randomness. Read more
source§

fn map<F, S>(self, func: F) -> DistMap<Self, F, T, S>where F: Fn(T) -> S, Self: Sized,

Create a distribution of values of ‘S’ by mapping the output of Self through the closure F Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V