⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3.m

📁 包括使用修正Gram-Schmit算法实现QR分解
💻 M
字号:
%     练习3:矩阵A的QR分解及最小二乘问题
% ——gogomx—— 2005.5

clc;
clear;

temp=[100 1:49];
B=toeplitz(temp);			    
A=B(:,1:25);                  % Toeplitz矩阵A
b=[1:49 100];


%%%%%%%%%%%%%%  计算A的QR分解  %%%%%%%%%%%%%%
[Q,R]=my_cgs_qr(A);           % 利用自编函数(修正Gram-Schmidt法)计算A的QR分解,A=QR,R为上三角阵,Q为对应的列正交矩阵
[Q0,R0]=qr(A);                % 利用Matlab自带函数计算A的QR分解,A=Q0*R0,R0为上三角阵,Q0为对应的酉矩阵
%   简要分析:
%   Matlab自带函数算出的Q0为m×m矩阵,R0为m×n矩阵;
%   自编函数算出的Q为m×n矩阵,R为n×n矩阵;
%   且Q=Q0(1:m,1:n),R=R0(1:n,1:n),(此时要求m>=n),
%   他们之间的这种关系也说明了自编函数的正确性^_^



%%%%%%%%%%%%%%  方程的最小二乘解问题  %%%%%%%%%%%%%%
Ab=[A,b'];                    % 构造增广矩阵Ab
[Q1,R1]=my_cgs_qr(Ab);        % 增广矩阵Ab的QR分解,R1为上三角阵,Q1为对应的酉矩阵

RR=R1(1:25,1:25);             % 构造系数矩阵RR
bb=R1(1:25,26);               % 构造列向量bb

x=(inv(RR))*bb;               % 解方程RR*x=bb即得所求的最小二乘解
x0=inv(A'*A)*A'*b';           % x0为使用左伪逆阵方法计算得到的最小二乘解,验证时使用
%   简要分析:
%   利用自编函数QR分解算出的结果为x;
%   使用前面学过的左伪逆阵方法算出的结果为x0;
%   结果表明x=x0, 由此可以验证此方法的正确性^_^


disp('练习3运行完毕^_^');
disp('计算结果已存于Wokspace中,');
disp('请参阅本程序中的注释查看相关结果。');

⌨️ 快捷键说明

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