类 CorrelatedRandomVectorGenerator

java.lang.Object
org.hipparchus.random.CorrelatedRandomVectorGenerator
所有已实现的接口:
RandomVectorGenerator

public class CorrelatedRandomVectorGenerator extends Object implements RandomVectorGenerator
从具有相关分量的随机向量生成器中生成随机向量。

具有相关分量的随机向量是通过以使得生成的相关性符合正定协方差矩阵指定的相关性的方式组合另一个随机向量的不相关分量而构建的。

生成具有相关分量的随机向量的主要用途是用于具有多个变量的物理问题的蒙特卡洛模拟,例如生成要添加到名义向量的误差向量。一个特别有趣的情况是生成的向量应该从多元正态分布中抽取。在这种情况下,使用Cholesky分解的方法是相当常见的。但是,只要基础随机生成器提供类似于标准化值的值,如GaussianRandomGeneratorUniformRandomGenerator,就可以将其扩展到其他情况。

有时,对于给定模拟的协方差矩阵不严格正定。这意味着相关性不是全部彼此独立的。但是,在这种情况下,协方差矩阵的Cholesky分解期间发现的非严格正元素也不应为负,它们应为零。这里使用的是处理此情况的非常规扩展。我们计算C = B.BT,其中C是协方差矩阵,B是一个行数多于列数的矩阵。矩阵B的列数是协方差矩阵的秩,它是需要计算相关向量分量的不相关随机向量的维数。这个类会自动处理这种情况。

  • 构造器详细资料

    • CorrelatedRandomVectorGenerator

      public CorrelatedRandomVectorGenerator(double[] mean, RealMatrix covariance, double small, NormalizedRandomGenerator generator)
      从其均值向量和协方差矩阵构建相关的随机向量生成器。
      参数:
      mean - 所有分量的期望均值。
      covariance - 协方差矩阵。
      small - 对角线元素阈值,低于该阈值的列被视为依赖于前面的列并被丢弃。
      generator - 用于不相关标准化分量的基础生成器。
      抛出:
      MathIllegalArgumentException - 如果协方差矩阵不是严格正定的。
      MathIllegalArgumentException - 如果均值和协方差数组的维度不匹配。
    • CorrelatedRandomVectorGenerator

      public CorrelatedRandomVectorGenerator(RealMatrix covariance, double small, NormalizedRandomGenerator generator)
      从其协方差矩阵构建零均值随机相关向量生成器。
      参数:
      covariance - 协方差矩阵。
      small - 对角线元素阈值,低于该阈值的列被视为依赖于前面的列并被丢弃。
      generator - 用于不相关标准化分量的基础生成器。
      抛出:
      MathIllegalArgumentException - 如果协方差矩阵不是严格正定的。
  • 方法详细资料

    • getGenerator

      public NormalizedRandomGenerator getGenerator()
      获取基础标准化分量生成器。
      返回:
      基础不相关分量生成器
    • getRank

      public int getRank()
      获取协方差矩阵的秩。秩是协方差矩阵中独立行的数量,也是根矩阵的列数。
      返回:
      方阵的秩。
      另请参阅:
    • getRootMatrix

      public RealMatrix getRootMatrix()
      获取协方差矩阵的根。根是矩形矩阵B,使得协方差矩阵等于B.BT
      返回:
      方阵的根
      另请参阅:
    • nextVector

      public double[] nextVector()
      生成相关的随机向量。
      指定者:
      nextVector 在接口中 RandomVectorGenerator
      返回:
      作为双精度数组的随机向量。每次调用时都会创建返回的数组,调用者可以对其进行任何操作。