Class MonteCarloIntegration
java.lang.Object
org.episteme.core.mathematics.statistics.montecarlo.MonteCarloIntegration
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoubleimportanceSampling(Function<Double, Double> f, Function<Double, Double> proposal, Supplier<Double> sampler, int samples) Importance sampling Monte Carlo.doubleintegrate1D(Function<Double, Double> f, double a, double b, int samples) 1D Monte Carlo integration: ∫[a,b] f(x) dx.double[]integrate1DWithError(Function<Double, Double> f, double a, double b, int samples) Estimate integral with variance (for error bounds).doubleintegrateND(Function<double[], Double> f, double[] lower, double[] upper, int samples) Multi-dimensional Monte Carlo integration over a hypercube.
-
Constructor Details
-
MonteCarloIntegration
public MonteCarloIntegration() -
MonteCarloIntegration
public MonteCarloIntegration(long seed)
-
-
Method Details
-
integrate1D
-
integrateND
Multi-dimensional Monte Carlo integration over a hypercube.- Parameters:
f- Function to integrate (takes double[] point)lower- Lower bounds for each dimensionupper- Upper bounds for each dimensionsamples- 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 integrateproposal- Proposal PDF q(x) from which we samplesampler- Samples from proposal distributionsamples- Number of samples- Returns:
- Estimated integral of f(x) * target(x) / q(x) with respect to q(x)
-
integrate1DWithError
-