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 数学
175KB
573 行
GMRES:广义最小残差法
使用GMRES迭代法的稀疏线性系统求解器。
本包提供了一种使用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