use eqsolver::integrators::MonteCarlo;
use nalgebra::{vector, Vector2};
use rand::rng;
use rand_distr::{Distribution, Uniform};
use std::f64::consts::PI;
fn main() {
let f = |v: Vector2<f64>| v.norm_squared();
let unit_uniform = Uniform::new_inclusive(0., 1.).unwrap();
let sampler = || {
let radius = f64::sqrt(unit_uniform.sample(&mut rng())); let angle = 2. * PI * unit_uniform.sample(&mut rng());
radius * (vector![angle.cos(), angle.sin()])
};
let result = MonteCarlo::new(f)
.integrate_with_sampler(sampler, PI) .unwrap();
println!("{result:?}");
}