Class MonteCarloIntegration

java.lang.Object
org.episteme.core.mathematics.statistics.montecarlo.MonteCarloIntegration

public class MonteCarloIntegration extends Object
Monte Carlo integration methods.

Uses random sampling to estimate integrals. Particularly effective for high-dimensional integrals where grid methods fail.

*

Reference:
Metropolis, N., et al. (1953). Equation of State Calculations by Fast Computing Machines. The Journal of Chemical Physics, 21(6), 1087.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • MonteCarloIntegration

      public MonteCarloIntegration()
    • MonteCarloIntegration

      public MonteCarloIntegration(long seed)
  • Method Details

    • integrate1D

      public double integrate1D(Function<Double,Double> f, double a, double b, int samples)
      1D Monte Carlo integration: ∫[a,b] f(x) dx.
      Parameters:
      f - Function to integrate
      a - Lower bound
      b - Upper bound
      samples - Number of random samples
      Returns:
      Estimated integral value
    • integrateND

      public double integrateND(Function<double[],Double> f, double[] lower, double[] upper, int samples)
      Multi-dimensional Monte Carlo integration over a hypercube.
      Parameters:
      f - Function to integrate (takes double[] point)
      lower - Lower bounds for each dimension
      upper - Upper bounds for each dimension
      samples - Number of random samples
      Returns:
      Estimated integral value
    • importanceSampling

      public double importanceSampling(Function<Double,Double> f, Function<Double,Double> proposal, Supplier<Double> sampler, int samples)
      Importance sampling Monte Carlo.

      Uses a proposal distribution to reduce variance.

      Parameters:
      f - Function to integrate
      proposal - Proposal PDF q(x) from which we sample
      sampler - Samples from proposal distribution
      samples - Number of samples
      Returns:
      Estimated integral of f(x) * target(x) / q(x) with respect to q(x)
    • integrate1DWithError

      public double[] integrate1DWithError(Function<Double,Double> f, double a, double b, int samples)
      Estimate integral with variance (for error bounds).
      Parameters:
      f - Function to integrate
      a - Lower bound
      b - Upper bound
      samples - Number of samples
      Returns:
      [estimate, standard_error]