QR分解与最小二乘
主要内容:
1、QR分解定义
2、QR分解求法
3、QR分解与最小二乘
4、Matlab实现
一、QR分解
定义:
实数矩阵 A 的 QR 分解是把 A 分解为Q、R,这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵。类似的,我们可以定义 A 的 QL, RQ 和 LQ 分解。
更一般的说,我们可以因数分解复数 m×n 矩阵(有着 m ≥ n)为 m×n 酉矩阵(在 Q∗Q = I 的意义上)和n×n 上三角矩阵的乘积。
如果 A 是非奇异的,则这个因数分解为是唯一,当我们要求 R 的对角是正数的时候。
二、QR分解的求法
QR分解的实际计算有很多方法,例如Givens旋转、Householder变换,以及Gram-Schmidt正交化等等。每一种方法都有其优点和不足。
三、QR分解与最小二乘
最小二乘:
对给定数据点{(Xi,Yi)}(i=0,1,…,m),在取定的函数类Φ 中,求p(x)∈Φ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲,就是寻求与给定点 {(Xi,Yi)}(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。
最小二乘的矩阵形式:Ax=b,其中A为nxk的矩阵,x为kx1的列向量,b为nx1的列向量。如果n>k(方程的个数大于未知量的个数),这个方程系统称为Over Determined System,如果n<k(方程的个数小于未知量的个数),这个系统就是Under Determined System。
最小二乘与QR分解:
正常来看,这个方程是没有解的,但在数值计算领域,我们通常是计算 min ||Ax-b||,解出其中的x。比较直观的做法是求解A'Ax=A'b,但通常比较低效。其中一种常见的解法是对A进行QR分解(A=QR),其中Q是nxk正交矩阵(Orthonormal Matrix),R是kxk上三角矩阵(Upper Triangular Matrix),然后min ||Ax-b|| = min ||QRx-b|| = min ||Rx-Q'b||,用MATLAB命令x=R\(Q'*b)可解得x。
最小二乘的Matlab实现:
① 一次函数使用polyfit(x,y,1)
②多项式函数使用 polyfit(x,y,n),n为次数
拟合曲线
x=[0.5,1.0,1.5,2.0,2.5,3.0],
y=[1.75,2.45,3.81,4.80,7.00,8.60]。
解:MATLAB程序如下:
x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.60];
p=polyfit(x,y,2)
x1=0.5:0.5:3.0;
y1=polyval(p,x1);
plot(x,y,'*r',x1,y1,'-b')
计算结果为:
p =0.5614 0.8287 1.1560
即所得多项式为y=0.5614x^2+0.8287x+1.15560
③非线性函数使用 lsqcurvefit(fun,x0,x,y)
四、QR分解的Matlab实现
- [Q,R]=qr(A) or [Q,R]=qr(A,0) (二者的区别自行help或doc一下)
- 其中Q代表正规正交矩阵,
- 而R代表上三角形矩阵。
此外,原矩阵A不必为正方矩阵; 如果矩阵A大小为n*m,则矩阵Q大小为n*m,矩阵R大小为m*m。
五、参考文献:
http://www.360doc.com/content/13/1015/09/12712639_321543226.shtml
QR分解与最小二乘的更多相关文章
- QR分解与最小二乘(转载自AndyJee)
转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...
- 机器学习中的矩阵方法03:QR 分解
1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...
- QR分解
从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...
- QR 分解
将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质. 预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...
- QR分解迭代求特征值——原生python实现(不使用numpy)
QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...
- 矩阵QR分解
1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1: 如果将 orthonormal 向量按列组织成矩阵,矩阵为 ...
- 【矩阵】RQ/QR 分解
Multiple View Geometry in Computer Vision A.4.1.1 (page 579) 将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 ...
- 矩阵的QR分解
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...
- 【matlab】 QR分解 求矩阵的特征值
"QR_H.m" function [Q,R] = QR_tao(A) %输入矩阵A %输出正交矩阵Q和上三角矩阵R [n,n]=size(A); E = eye(n); X = ...
随机推荐
- BZOJ.5311.贞鱼(DP 决策单调)
题目链接 很容易写出\(O(n^2k)\)的DP方程.然后显然决策点是单调的,于是维护决策点就可以了.. 这个过程看代码或者别的博客吧我不写了..(其实是忘了) 这样复杂度\(O(nk\log n)\ ...
- Android中利用ant进行多渠道循环批量打包
公司负责Android开发的小伙伴学习能力稍微偏弱,交代给他的自动化打包的任务,弄了好久依然没有成效.无奈只好亲自出手. 没有想到过程很顺利,我完全按照如下文章的步骤进行: 主要参考: Android ...
- Javascript 继承-原型的陷阱
注:本文为翻译文章,原文为"JavaScript Inheritance – How To Shoot Yourself In the Foot With Prototypes!" ...
- libuuid.so: cannot open shared object file: No such file or directory
在玩ngx-lua时候有个 resty-uuid 需要引用 libuuid.so 动态库 打印log提示信息是这样的: libuuid.so: cannot open shared object fi ...
- python3登录网页(163邮箱)实例
# -*- coding: utf-8 -*- import urllibimport http.cookiejar as cookielibimport urllib.request as urll ...
- windows下tomcat的安装配置
一.下载相应的JDK以及tomcat的版本 JDK:jdk-8u131-windows-x64 tomcat:apache-tomcat-8.5.23-windows-x64.zip 二.JDK的安装 ...
- 彻底解决每次打开visio都提示windows正在配置visio的问题
出现这个提示windows正在配置XXX软件的问题,是由于在安装一个新的版本时,之前那个版本的office没有完全卸载,注册表内有残留. 最简单的方式,并不是 把HKEY_CURRENT_USER\S ...
- git服务器安装和配置
http://www.cnblogs.com/dee0912/p/5815267.html
- spring---aop(3)---Spring AOP的拦截器链
写在前面 时间断断续续,这次写一点关于spring aop拦截器链的记载.至于如何获取spring的拦截器,前一篇博客已经写的很清楚(spring---aop(2)---Spring AOP的JDK动 ...
- BrowserRouter和HashRouter的区别
BrowserRouter: 原理是H5的history API,IE9及以下不兼容,需要由web server支持,在web client这边window.location.pathname被rea ...