该方法是快速求解Ax=b线性系统的方法,他要求矩阵A是对称正定矩阵。
算法执行过程:
matlab实现:
clear;%删除工作空间的所有变量,释放系统内存
clc;%清楚命名窗口
A=[4 1;1 3];
b=[1,2]‘;
N=length(b); %解向量的维数
fprintf(‘库函数计算结果:‘);
x=inv(A)*b %库函数计算结果
x=[2;1]; %初始点
eps=0.0000001; %精度
r=b-A*x;
p=r;
for k=0:N-1
fprintf(‘第%d次迭代:‘,k+1);
a=(norm(r)^2)/(p‘*A*p)
x=x+a*p
rr =r-a*A*p; %rr=r(k+1),它和b-A*x等价
if (norm(rr)<=eps)||(k==N-1)
break;
end
B=(norm(rr)^2)/(norm(r)^2);
p=rr+B*p;
r=rr;
end
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-09 14:05:09