利用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);
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值