sparse_complex

crate documentation minimum rustc 1.61 build status

An simple solver for sparse complex linear systems based on Eigen::SparseLU.

Complex Number representation

We use num::Complex to represent complex numbers. See num crate for more information.

Example

Lets consider the complex linear system bellow:

$$ \begin{bmatrix} 1 - j1 & 0\ 0 & -1 + j1 \end{bmatrix} \begin{bmatrix} x1 \ x2 \end{bmatrix}= \begin{bmatrix} 1 \ j1 \end{bmatrix} $$

We can solve this system as follows:

```rust use num::Complex; use sparse_complex::ComplexMatrix;

let mut m = ComplexMatrix::::new(); m.addelement(0, 0, Complex { re: 1., im: -1. }); m.addelement(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); ```

The solution of this system is:

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

Version Compatible

The sparse_complex crate is tested for rustc 1.61 and greater.

License

MIT License. See LICENSE.

sparse_complex also depends on Eigen v3.4.0 which is licensed under MPL v2.0. The source code of Eigen can be found on Eigen's Home Page.