QR分解求最小二乘拟合

例:

x = [1,2,3,4,5]’;
y = [4,4.5,6,8,8.5]’;

A= [ones(size(x)),x];
b = A’*y;
A1 = A’*A;
[Q,R] = qr(A1);
X = R(Q’*b) %利用Matlab库函数QR分解求解最小二乘拟合

p = polyfit(x,y,1) %利用Matlab库函数直接求解最小二乘拟合

[X,Q,R] = QR_LSF(A1,b) %自编程序利用QR分解求最小二乘拟合

以下为自编QR分解求最小二乘拟合

function [X,Q,R] = QR_LSF(A,b)
%方阵的QR的Gram-Schmidt正交化分解法,并用于求解AX=b方程组

[m,n]=size(A);
Q=[];
R=[];
X=[];
%施密特正交方法进行QR分解
for k=1:n
R(k,k)=norm(A(:,k)); %norm(A(:,k))为向量A的第k列向量的2-范数
Q(:,k)=A(:,k)/R(k,k); %计算Q
for j=k+1:n
R(k,j)=Q(:,k)’*A(:,j); %计算R
A(:,j)=A(:,j)-R(k,j)*Q(:,k);
end
end
%利用QR分解结果求解最小二乘法
X=R(Q’*b);

你可能感兴趣的:(Computational,Mathematics)