使用chol()分解正定矩阵(positive definite matrix), Choleskey

正定矩阵的定义 : 

一个n×n的实对称矩阵正定的,当且仅当对于所有的非零实系数向量z,都有zTz > 0。其中zT表示z转置

对于复数的情况,定义则为:一个n×n埃尔米特矩阵(或厄米矩阵)是正定的当且仅当对于每个非零的複向量z,都有z*z > 0。其中z*表示z共轭转置。由于埃尔米特矩阵,经计算可知,对于任意的複向量zz*z必然是实数,从而可以与0比较大小。因此这个定义是自洽的。

使用chol可以分解为上三角和下三角矩阵.

对于正定矩阵A,可对其进行Choleskey分解,即:A=P'P,其中P为上三角矩阵,在R中可以用函数chol()进行Choleskey分解.

例子 : 

> a <- diag(3)+1
> a
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    1    2    1
[3,]    1    1    2
> chol(a)
         [,1]      [,2]      [,3]
[1,] 1.414214 0.7071068 0.7071068
[2,] 0.000000 1.2247449 0.4082483
[3,] 0.000000 0.0000000 1.1547005
> t(chol(a))
          [,1]      [,2]     [,3]
[1,] 1.4142136 0.0000000 0.000000
[2,] 0.7071068 1.2247449 0.000000
[3,] 0.7071068 0.4082483 1.154701

验证 :  A=P'P

> crossprod(chol(a))
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    1    2    1
[3,]    1    1    2
> t(chol(a)) %*% chol(a)
     [,1] [,2] [,3]
[1,]    2    1    1
[2,]    1    2    1
[3,]    1    1    2

若矩阵为对称正定矩阵,可以利用Choleskey分解求行列式的值,如:

> prod(diag(chol(A))^2)
[1] 5
> det(A)
[1] 5

若矩阵为对称正定矩阵,可以利用Choleskey分解求矩阵的逆,这时用函数chol2inv(),这种用法更有效。如:

> chol2inv(chol(A))
      [,1] [,2] [,3] [,4]
[1,] 0.8 -0.2 -0.2 -0.2
[2,] -0.2 0.8 -0.2 -0.2
[3,] -0.2 -0.2 0.8 -0.2
[4,] -0.2 -0.2 -0.2 0.8
> solve(A)
  [,1] [,2] [,3] [,4]
[1,] 0.8 -0.2 -0.2 -0.2
[2,] -0.2 0.8 -0.2 -0.2
[3,] -0.2 -0.2 0.8 -0.2
[4,] -0.2 -0.2 -0.2 0.8

[参考]
1. http://zh.wikipedia.org/zh/%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5

时间: 2024-10-10 12:12:34

使用chol()分解正定矩阵(positive definite matrix), Choleskey的相关文章

AI人工智能专业词汇集

作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客.论文.专家观点等内容上已经积累了超过两年多的经验.期间,从无到有,机器之心的编译团队一直在积累专业词汇.虽然有很多的文章因为专业性我们没能尽善尽美的编译为中文呈现给大家,但我们一直在进步.一直在积累.一直在提高自己的专业性. 两年来,机器之心编译团队整理过翻译词汇对照表「红宝书」,编辑个人也整理过类似的词典.而我们也从机器之心读者留言中发现,有些人工智能专业词汇没有统一的翻译标准,这可能是因地区.跨专业等等原因造成的.举个例子,Deep

与线性代数相关的数学词汇

(按英文字母排序) A adjont(adjugate) of matrix A            A 的伴随矩阵augmented matrix                        A 的增广矩阵  B block diagonal matrix                   块对角矩阵block matrix                            块矩阵basic solution set                      基础解系 C Cauch

高斯分布简述

A Brief of Gaussian Distribution Gaussian distribution, also known as normal distribution, is the most popular continuous probability distribution. In monovariate case, x∈(−∞,∞), parameters of the Gaussian distribution are average μ∈(−∞,∞)and varianc

[Bhatia.Matrix Analysis.Solutions to Exercises and Problems]Contents

I find it may cost me so much time in doing such solutions to exercises and problems....I am sorry that I could not be persistent in doing it...Wish I could just recover it later on.   [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]PrI.6

分解 atrix-C++ 关于QR矩阵分解

问题描述 C++ 关于QR矩阵分解 void QR(const Matrix& m, Matrix& Q,Matrix& R) { int n = 0; int row = m.rows(); int col = m.cols(); if (row>col){ n =col; } else{ n =row; } Matrix mtemp = m; Matrix q1(row, col); Q.resize(row,row); R.resize(row,col); int i,

[Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.2

Show that the following statements are equivalent: (1). $A$ is positive. (2). $A=B^*B$ for some $B$. (3). $A=T^*T$ for some upper triangular $T$. (4). $A=T^*T$ for some upper triangular $T$ with nonnegative diagonal entries. If $A$ is positive defini

R语言中矩阵运算

目录: 1_矩阵的生成 2_矩阵的四则运算 3_矩阵的矩阵运算 4_矩阵的分解 1_1将向量定义成数组     向量只有定义了维数向量(dim属性)后才能被看作是数组.比如: > z=1:12; > dim(z)=c(3,4); > z;     [,1] [,2] [,3] [,4] [1,]   1   4   7  10 [2,]   2   5   8  11 [3,]   3   6   9  12 注意:生成矩阵是按列排列的. 1_2用array ( )函数构造多维数组   

机器学习--线性代数基础

数学是计算机技术的基础,线性代数是机器学习和深度学习的基础,了解数据知识最好的方法我觉得是理解概念,数学不只是上学时用来考试的,也是工作中必不可少的基础知识,实际上有很多有趣的数学门类在学校里学不到,有很多拓展类的数据能让我们发散思维,但掌握最基本的数学知识是前提,本文就以线性代数的各种词条来做一下预热,不懂的记得百度一下. 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 矩阵与方程组 还记得n*n方程组是怎么求解的吗?这个术语叫"回代法",即转成三

TensorFlow教程之API DOC 6.3.9. MATH OPS

本文档为TensorFlow参考文档,本转载已得到TensorFlow中文社区授权. Math Note: Functions taking Tensor arguments can also take anything accepted by tf.convert_to_tensor. Contents Math Arithmetic Operators tf.add(x, y, name=None) tf.sub(x, y, name=None) tf.mul(x, y, name=None