超定方程组的经典Gram-Schmidt正交化解法
matlab代码
function [Q,R,X]=Gram(A,B)
%%%输入超定方程组(列满秩)系数矩阵A和右端列向量B;
%%%采用Gram-Schmidt正交化过程解最小乘二问题;
%%%输出正交矩阵Q,上三角矩阵R和最小二乘解X。
[m,n]=size(A);
Q=zeros(m,n);
R=zeros(n,n);
for k=1:n
v=A(:,k);
for i=1:k-1
R(i,k)=Q(:,i)'*A(:,k);
v=v-R(i,k)*Q(:,i);
end
R(k,k)=Vector_norm(v,2); %%%调用Vector_norm(a,p)计算向量v的L2范数
Q(:,k)=v/R(k,k);
end
B1=Q'*B;
X=a_Back_subtitution(R,B1); %%%调用上三角回代法解适定方程组:R*X=Q'*B