共轭梯度法 MATLAB函数代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

function x = My_CGM(x0,A,b)
% 共轭梯度法(Conjugate Gradient Method)求解求解线性方程 Ax = b
%SYNTAX:
% x = My_CGM(x0,A,b,epsilon)
%DESCRIPTION:
%
% INPUT:
% x0 -- 初始解
% A -- 系数矩阵
% b -- 线性方程右端列向量
% OUTPUT:
% x -- 解列向量
%REFERENCES:
% 《有限单元法》 by 王勖成 P246
%REVISION: 1.0

b = b(:);
x0 = x0(:);

x_old = x0;
gamma_old = b - A*x_old;
p_old = gamma_old;
N = length(b);
for ii = 1:N
alpha = (p_old.'*gamma_old)/(p_old.'*A*p_old);% Eq.6.5.13
x_new = x_old + alpha*p_old;

gamma_new = b - A*x_new;
beta = -(p_old.'*A*p_old)/(p_old.'*A*gamma_new);% Eq.6.5.13
p_new = p_old + beta*gamma_new;

% update
x_old = x_new;
p_old = p_new;

end

x = x_new;
end

相关文档
最新文档