转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html

主要内容:

1、QR分解定义

2、QR分解求法

3、QR分解与最小二乘

4、Matlab实现

一、QR分解

R分解法是三种将矩阵分解的方式之一。这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的积。

QR 分解经常用来解线性最小二乘法问题。QR 分解也是特定特征值算法QR算法的基础。

定义:

实数矩阵 A 的 QR 分解是把 A 分解为Q、R,这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵。类似的,我们可以定义 A 的 QL, RQ 和 LQ 分解。

更一般的说,我们可以因数分解复数 m×n 矩阵(有着 m ≥ n)为 m×n 酉矩阵(在 QQ = 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://blog.sina.com.cn/s/blog_64367bb90100ikji.html

http://www.360doc.com/content/13/1015/09/12712639_321543226.shtml

QR分解与最小二乘(转载自AndyJee)的更多相关文章

  1. QR分解与最小二乘

    主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现   一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的 ...

  2. 机器学习中的矩阵方法03:QR 分解

    1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其 ...

  3. QR分解

        从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...

  4. QR 分解

    将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质.   预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...

  5. QR分解迭代求特征值——原生python实现(不使用numpy)

    QR分解: 有很多方法可以进行QR迭代,本文使用的是Schmidt正交化方法 具体证明请参考链接 https://wenku.baidu.com/view/c2e34678168884868762d6 ...

  6. 矩阵QR分解

    1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量  相互垂直,且模长为1: 如果将  orthonormal 向量按列组织成矩阵,矩阵为  ...

  7. 【矩阵】RQ/QR 分解

    Multiple View Geometry in Computer Vision A.4.1.1 (page 579) 将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 ...

  8. 矩阵的QR分解

    #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...

  9. SVD分解的理解[转载]

    http://www.bfcat.com/index.php/2012/03/svd-tutorial/ SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很 ...

随机推荐

  1. B. Sereja and Suffixes

    B. Sereja and Suffixes time limit per test 1 second memory limit per test 256 megabytes input standa ...

  2. SQL Server 数据导入与导出

    1. BCP 命令 用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件 [-m 最大错误数] [-f 格式化文件] [-e 错误 ...

  3. selenium处理页面select元素

    selenium为网页中选择框元素的获取特别引入了一个Select对象, 引入对象的方式: from selenium.webdriver.support.ui import Select 查询文档可 ...

  4. Problem09 求完数

    题目:一个数如果恰好等于它的因子之和,这个数就称为"完数". 分析:例如6=1+2+3. 编程找出1000以内的所有完数. 假如整数n除以m,结果是无余数的整数,那么我们称m就是n ...

  5. Nmap工具使用

    Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...

  6. 为啥Spring和Spring MVC包扫描要分开?

    背景:       最近在搭建新工程的时候发现有些Spring的配置不是很了解,比如Spring 配置里面明明配置了component-scan,为啥Spring MVC配置文件还需要配置一下,这样岂 ...

  7. Python APIs

    NDArray API Python API速查

  8. Win7 IIS 局域网中无法访问网页

    安装好iis后,在局域网中无法浏览网页一,关闭防火墙即可 或者建立入站规则 打开控制面板——window防火墙——高级设置 在入站规则上右键新建入站规则,选择端口然后下一步 选择tcp和特定端口在端口 ...

  9. 2019.03.21 读书笔记 readonly与const

    区别: const是编译时常量(指反编译时看到的源码是常量本身,而不是变量),自带static,只能修饰基元类型.枚举.字符串,readonly是运行时常量(全局变量或者构造赋值),不受类型限制,但在 ...

  10. python的基础数据类型

    Python基础数据类型 定义: int    => 数字类型 str   => 字符串数据类型 bool  =>布尔值,True False list 列表,用来存放大量数据  [ ...