📄 ex3.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 + -