3个版本

0.1.4 2022年6月9日
0.1.3 2022年5月24日
0.1.2 2021年4月8日
0.1.1 2021年3月11日
0.1.0 2021年3月11日

数学 类别中排名 1017

MIT 许可证

210KB
258

sparse_complex

crate documentation minimum rustc 1.61 build status

基于 Eigen::SparseLU 的稀疏复杂线性系统简单求解器。

复数表示

我们使用 num::Complex 来表示复数。有关更多信息,请参阅 num Crate。

示例

考虑以下复数线性系统

$$ \begin{bmatrix} 1 - j1 & 0\ 0 & -1 + j1 \end{bmatrix} \begin{bmatrix} x_1 \ x_2 \end{bmatrix}= \begin{bmatrix} 1 \ j1 \end{bmatrix} $$

我们可以按照以下方式解决这个问题

use num::Complex;
use sparse_complex::ComplexMatrix;

let mut m = ComplexMatrix::<f64>::new();
m.add_element(0, 0, Complex { re: 1., im: -1. });
m.add_element(1, 1, Complex { re: -1., im: 1. });
let mut b = vec![Complex::new(1., 0.), Complex::new(0., 1.)];
m.solve(&mut b).unwrap();

let expected = vec![Complex::new(0.5, 0.5), Complex::new(0.5, -0.5)];
assert_eq!(b, expected);

该系统的解为

$$ \frac{1}{2} \begin{bmatrix} 1 + j1 \ 1 - j1 \end{bmatrix} $$

版本兼容性

sparse_complex Crate已在 rustc 1.61 及更高版本上进行了测试。

许可证

MIT许可证。请参阅 LICENSE

sparse_complex 还依赖于Eigen v3.4.0,该软件的许可证为 MPL v2.0。Eigen的源代码可以在 Eigen的主页 上找到。

依赖项

~0.4–3MB
~54K SLoC