#稀疏 #线性 #线性代数 #代数

gmres

使用GMRES迭代法的稀疏线性系统求解器

4个版本 (1个稳定版)

1.0.0 2024年4月12日
0.1.2 2023年4月7日
0.1.1 2023年4月6日
0.1.0 2023年4月6日

#676 in 数学

MIT许可证

175KB
573

GMRES:广义最小残差法

使用GMRES迭代法的稀疏线性系统求解器。

GitHub Workflow Status Crates.io Crates.io


本包提供了一种使用GMRES方法求解Ax=b线性问题的求解器。稀疏矩阵是许多现实世界中常见问题的常见表示形式,特别是在工程和科学应用中。这种GMRES方法的实现专门针对稀疏矩阵,使其成为解决现实世界问题中产生的大型线性系统的高效有效工具。

示例

求解线性系统

use gmres;
use rsparse::data::Sprs;

fn main() {
    // Define an arbitrary matrix `A`
    let a = Sprs::new_from_vec(&[
        vec![0.888641, 0.477151, 0.764081, 0.244348, 0.662542],
        vec![0.695741, 0.991383, 0.800932, 0.089616, 0.250400],
        vec![0.149974, 0.584978, 0.937576, 0.870798, 0.990016],
        vec![0.429292, 0.459984, 0.056629, 0.567589, 0.048561],
        vec![0.454428, 0.253192, 0.173598, 0.321640, 0.632031],
    ]);

    // Define a vector `b`
    let b = vec![0.104594, 0.437549, 0.040264, 0.298842, 0.254451];

    // Provide an initial guess
    let mut x = vec![0.; b.len()];

    // Solve for `x`
    gmres::gmres(&a, &b, &mut x, 100, 1e-5).unwrap();

    // Check if the result is correct
    gmres::test_utils::assert_eq_f_vec(
        &x,
        &vec![0.037919, 0.888551, -0.657575, -0.181680, 0.292447],
        1e-5,
    );
}

依赖项

~655KB