Basic GMRES 您所在的位置:网站首页 minres算法代码 Basic GMRES

Basic GMRES

2024-06-08 17:37| 来源: 网络整理| 查看: 265

Basic GMRES 概述

GMRES意思为广义最小残差法,在求解稀疏矩阵上,是一个比较有效的方法。

我们要解决的问题依旧是一个方程组求解的问题 A X = b AX=b AX=b

这个算法可以理解为 r 0 r_{0} r0​在 ( A r 0 , A 2 r 0 , . . . , A n − 1 ) (Ar_{0}, A^{2}r_{0},...,A^{n-1}) (Ar0​,A2r0​,...,An−1)这组基上的线性表示(可参考Krylov子空间的内容)

该算法参考的也是一个Arnoldi过程: 在这里插入图片描述 矩阵的结构为 在这里插入图片描述 生成的 H H H也是一个上Hesenborg矩阵

我们通过如下的推导 在这里插入图片描述 可知,我们将一个求解稀疏矩阵方程组问题转化为了最小化上Hessenborg矩阵方程组的问题。

算法

在这里插入图片描述 最后关于系数 y m y_{m} ym​怎么求,本文暂不考虑这个问题

matlab实现 %Basic GMRES %Ax = b function [V,R,H,res] = bGMRES(A,b,x0) %bGMRES:basic GMRES method %Input: x0:初值;A为mxm矩阵,b为解 %Output: res为残差 [m, ~] = size(A); R = Inf(m,m);omiga = zeros(m,m);%R为残差值,omiga为剩余向量 H = zeros(m+1,m);V = zeros(m,m+1);%A*V=V*H %设定初值 r0 = b-A*x0; V(:,1) = r0/norm(r0); for j = 1:m omiga(:,j) = A*V(:,j); for i = 1:j H(i,j) = omiga(:,j)'*V(:,i); omiga(:,j) = omiga(:,j) - H(i,j)*V(:,i); end H(j+1,j) = norm(omiga(:,j)); R(:,j) = omiga(:,j); if abs(H(j+1,j))


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有