3个版本
| 0.1.2 | 2022年2月28日 | 
|---|---|
| 0.1.1 | 2022年2月6日 | 
| 0.1.0 | 2022年2月6日 | 
#1338 in 数学
57KB
 1K  SLoC
quad-rs
Rust中的Gauss-Kronrod积分。
特性
- 自适应积分器,高精度
- 原生支持复积分和路径
- 支持复平面上的轮廓积分
示例 - 实数积分
依赖项
[dependencies]
quad_rs = "0.1"
:
use quad_rs::prelude::*;
fn integrand(x: f64) -> f64 {
    x.exp()
}
fn main() {
    let integrator = GaussKronrod::default();
    let range = -1f64..1f64;
    let result = integrator
		        .integrate(&integrand, range, None)
            .unwrap();
}
示例 - 复数积分
依赖项
[dependencies]
num_complex = "0.4.0"
quad_rs = "0.1"
:
use quad_rs::prelude::*;
use num_complex::Complex;
use std::ops::Range;
fn integrand(z: Complex<f64>) -> Complex<f64> {
    z.exp()
}
fn main() {
    let integrator = GaussKronrod::default();
    let range = Range {
			start: Complex::new(-1f64, -1f64),
			end: Complex::new(1f64, 1f64)
		};
    let result = integrator
		        .integrate(&integrand, range, None)
            .unwrap();
}
示例 - 轮廓积分
依赖项
[dependencies]
num_complex = "0.4.0"
quad_rs = "0.1"
:
use quad_rs::{Contour, Direction, prelude::*};
use num_complex::Complex;
fn integrand(z: Complex<f64>) -> Complex<f64> {
    z.exp()
}
fn main() {
    let integrator = GaussKronrod::default();
    let x_range =-5f64..5f64;
    let y_range = -5f64..5f64;
    let contour = Contour::generate_rectangular(&x_range, &y_range, Direction::Clockwise);
    let result = integrator
		        .path_integrate(&integrand, contour)
            .unwrap();
}
依赖项
~3.5MB
~77K SLoC