#quadrature #integral

quad_gk

基于Gauss-Kronrod求积规则的纯Rust数值积分库

3个版本 (1个稳定版)

1.0.0 2024年4月28日
0.1.1 2024年4月6日
0.1.0 2024年4月6日

#324 in 数学

每月30次下载

MIT许可协议

58KB
2.5K SLoC

quad_gk

基于Gauss-Kronrod求积规则的快速精确数值积分库。

基本用法

use std::sync::Arc;

use quad_gk::*;

let integral: Integral = quad_gk!(
    Arc::new(|x: f64| x.sin() * (-x).exp()),
    0.0..100.0,
);

// estimated relative error in numerical integration is smaller than 1e-6 by default.
assert!(integral.is_ok(1e-6))

更精确的计算

use std::sync::Arc;

use quad_gk::*;

let integral: Integral = quad_gk!(
    Arc::new(|x: f64| x.sin() * (-x).exp()),
    0.0..100.0,
    rel_tol=1e-14,
    max_interval_count=1_000_000,
    coef=GK91,
);

// estimated relative error in numerical integration is smaller than 1e-14!
assert!(integral.is_ok(1e-14))

lib.rs:

quad_gk

基于Gauss-Kronrod求积规则的快速精确数值积分库。

基本用法

use std::sync::Arc;

use quad_gk::*;

let integral: Integral = quad_gk!(
Arc::new(|x: f64| x.sin() * (-x).exp()),
0.0..100.0,
);

// estimated relative error in numerical integration is smaller than 1e-6 by default.
assert!(integral.is_ok(1e-6))

更精确的计算

use std::sync::Arc;

use quad_gk::*;

let integral: Integral = quad_gk!(
Arc::new(|x: f64| x.sin() * (-x).exp()),
0.0..100.0,
rel_tol=1e-14,
max_interval_count=1_000_000,
coef=GK91,
);

// estimated relative error in numerical integration is smaller than 1e-14!
assert!(integral.is_ok(1e-14))

依赖项

~1.5MB
~25K SLoC