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