cg.m

来自「给出了线性方程组的CG法、Gauss_Seidel、SOR、Jacobi、fem」· M 代码 · 共 44 行

M
44
字号
% CG即共轭梯度法求解对称正定型线性方程组
clc
clear all

% u=4;v=4;a0=1;b0=1;
% [A,b]=fem(u,v,a0,b0);
tic
A=[2 -1 0 0;-1 3 -2 0;0 -2 4 -3;0 0 -3 5];
b=[6 1 -2 1]';
% A=[6 3;3 2];
% b=[0;-1];
n=length(b);
%%=========初始化=====================================
x1=zeros(n,1);
x2=zeros(n,1);
r1=zeros(n,1);
r2=zeros(n,1);
p1=zeros(n,1);
p2=zeros(n,1);

r1=b-A*x1;
p1=r1;

k=0;
jingdu=1;
while k<=n | jingdu>1e-6
    k=k+1;
    if r1==0
        break
    else
        alphi=(r1'*r1)/((A*p1)'*p1);
        x2=x1+alphi*p1;
        r2=r1-alphi*A*p1;
        beta=(r2'*r2)/(r1'*r1);
        p2=r2+beta*p1;
    end
    jingdu=norm(x2-x1,inf);
    x1=x2;
    r1=r2;
    p1=p2;
end
x2
toc    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?