什么是正定矩阵?Positive Definite Matrices (done)

2024-02-22 09:20

本文主要是介绍什么是正定矩阵?Positive Definite Matrices (done),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

正定矩阵的定义:https://baike.baidu.com/item/%E6%AD%A3%E5%AE%9A%E7%9F%A9%E9%98%B5/11030459

正定矩阵的作用、验证视频:https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from=333.337.search-card.all.click&vd_source=7a1a0bc74158c6993c7355c5490fc600


先来看正定矩阵的定义
在这里插入图片描述


正定矩阵必须是对称矩阵
在这里插入图片描述

第一个问题:为什么需要正定矩阵?正定矩阵的作用是什么?
如下图,任意一个 ”二元二次“ 函数都可以写成 “矩阵运算” 的形式
在这里插入图片描述

扩展到 “二次多元” 形式,我们可以写出一个一般形式,如下图
它的一阶导数就是常见的 Ax + b。
它的二阶导就是 A(如果 f(x) 没有前面那个 1/2,那么它的二阶导就是 2A)(二阶导也可以称为 Hessian 矩阵)
如果 矩阵A 是正定的,那么 f(x) 的二阶导就是正定的,此时,f(x) 就是一个严格的下凸函数,拥有唯一全局极小值
二阶导正定是什么意思:(个人直觉) 二阶偏导在所有方向上 > 0
在这里插入图片描述
在这里插入图片描述

相对的,半正定矩阵的意思是,最小值不唯一
在这里插入图片描述

不定矩阵
在这里插入图片描述

如下图,面对二次多元函数,如果 A 是正定的,那么要求全局极小值,只需要求一阶偏导 Ax + b =0 的解即可,而这个问题的计算方法和理论是非常丰富的
此外,正定矩阵还可以用来定义一个合理的内积。因为,内积要求任意一个非零向量对自己的内积必须大于 0。而根据正定矩阵的定义,这是恰好满足的,这种性质在 SVM 的核方法里很有用
在这里插入图片描述


那么,怎么判断一个矩阵是否是正定矩阵呢?

方法1:从定义出发进行证明,证明对于任意非零向量 x,x^T A x > 0。如下图
但这种方法太复杂,我们几乎不采用
在这里插入图片描述

===

方法2:在矩阵A是实对称阵的前提下,计算矩阵 A 的各个特征值,若特征值都大于 0,则矩阵A是正定阵
实际上,A实对称+特征值都大于0 <=> 矩阵A是正定阵。这是一个充分必要条件
我们看看如何证明:
1.证明 A是正定 -> 特征值都大于0:

  • 取 x 为特征向量,则 x^T A x = x^T (lamda) x = (lamda) x^T x
  • 由于 A正定,所以 x^T A x > 0,也就是说 (lamda) x^T x > 0
  • 由于 x^T x > 0,所以 (lamda) >0
  • 如此证明了所有特征值 > 0

反过来的证明放下面
在这里插入图片描述
2.证明 特征值都大于0 -> A是正定矩阵:

  • 若所有特征值都 > 0,那么对于任意向量 x,x^T A x = x^T Q^T (hat) Qx (任意实对称阵可以分解成 正交阵和对角阵 的二次型)
  • x^T A x = x^T Q^T (hat) Qx = (Qx)^T (hat) (Qx) 此时我们知道,(hat) 是由矩阵 A 的特征值组成的对角阵,它们都大于 0,那么 (hat) 同时也是一个正定阵,因此 (Qx)^T (hat) (Qx) > 0。所以 x^T A x > 0。
  • 证明完毕,A是正定矩阵

这个判别法比较强,因为我们知道特征值了就可以知道很多其它事情,但是,求特征值的计算量比较大,所以这种方法不是我们首选的判别方法

===

方法3:对于实对称阵,若各阶顺序主子式 都大于0 <=> 该矩阵正定 (Sylvester’s Criterion)
(关于这个定理的证明我们先跳过)
这是我们在手算做题时,常用的方法
在这里插入图片描述

===

方法4:Cholesky 分解
A = R^T R (R 是可逆矩阵) 这个公式是正定阵的一个性质 (证明就 skip 吧,人生苦短)
为了让分解出来的 R矩阵 具有唯一性,它需要满足如下图的性质
在这里插入图片描述

下图是一个 Cholesky 分解的手算例子
在这里插入图片描述

如下图,是用程序进行计算的算法。事件复杂度大约是 n^3/3 的浮点数运算 (在矩阵运算中其实算少的)
在这里插入图片描述

如果矩阵不是正定的,可能会在下面两个地方报相应的错误
在这里插入图片描述

在 MATLAB 中,可以用 chol() 这个命令来得到矩阵A的 cholesky 分解
R = chol(A)
A = R^T R

如果 A 不正定,那么 chol() 就会报错,因此我们可以使用 chol() 判断一个矩阵是否正定

此外,cholesky 分解还可以用来加速解方程组 (面对大型矩阵时有用),比如下图
我们把原来的 Ax = 1 经过分解和换元,得到了 Ry = 1 和 R^T x = y 这两个方程组
虽然方程组数量变多,但是 A 被分解成了上三角和下三角,计算起来方便多了,在大型矩阵中更是如此
在这里插入图片描述
在这里插入图片描述

正定矩阵还有一个性质,如下图:
证明过程:

  • 先把 A 分解成 R^T R (把 R 按照列分块,R^T 按照行分块)
  • 那么,aij 的值就是 ri 和 rj 的内积
  • 因此,要证明的公式其实就是 ri * rj < ||ri|| * ||rj||
  • 这其实就是柯西不等式

在这里插入图片描述

这篇关于什么是正定矩阵?Positive Definite Matrices (done)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734806

相关文章

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

线性代数|机器学习-P35距离矩阵和普鲁克问题

文章目录 1. 距离矩阵2. 正交普鲁克问题3. 实例说明 1. 距离矩阵 假设有三个点 x 1 , x 2 , x 3 x_1,x_2,x_3 x1​,x2​,x3​,三个点距离如下: ∣ ∣ x 1 − x 2 ∣ ∣ 2 = 1 , ∣ ∣ x 2 − x 3 ∣ ∣ 2 = 1 , ∣ ∣ x 1 − x 3 ∣ ∣ 2 = 6 \begin{equation} ||x

【线性代数】正定矩阵,二次型函数

本文主要介绍正定矩阵,二次型函数,及其相关的解析证明过程和各个过程的可视化几何解释(深蓝色字体)。 非常喜欢清华大学张颢老师说过的一段话:如果你不能用可视化的方式看到事情的结果,那么你就很难对这个事情有认知,认知就是直觉,解析的东西可以让你理解,但未必能让你形成直觉,因为他太反直觉了。 正定矩阵 定义 给定一个大小为 n×n 的实对称矩阵 A ,若对于任意长度为 n 的非零向量 ,有 恒成

python科学计算:NumPy 线性代数与矩阵操作

1 NumPy 中的矩阵与数组 在 NumPy 中,矩阵实际上是一种特殊的二维数组,因此几乎所有数组的操作都可以应用到矩阵上。不过,矩阵运算与一般的数组运算存在一定的区别,尤其是在点积、乘法等操作中。 1.1 创建矩阵 矩阵可以通过 NumPy 的 array() 函数创建。矩阵的形状可以通过 shape 属性来访问。 import numpy as np# 创建一个 2x3 矩阵mat

【UVA】10003-Cutting Sticks(动态规划、矩阵链乘)

一道动态规划题,不过似乎可以用回溯水过去,回溯的话效率很烂的。 13988658 10003 Cutting Sticks Accepted C++ 1.882 2014-08-04 09:26:49 AC代码: #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include

算法练习题17——leetcode54螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。  代码 import java.util.*;class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 用于存储螺旋顺序遍历的结果List<Integer> result = new ArrayList

线性代数 第六讲 特征值和特征向量_相似对角化_实对称矩阵_重点题型总结详细解析

文章目录 1.特征值和特征向量1.1 特征值和特征向量的定义1.2 特征值和特征向量的求法1.3 特征值特征向量的主要结论 2.相似2.1 相似的定义2.2 相似的性质2.3 相似的结论 3.相似对角化4.实对称矩阵4.1 实对称矩阵的基本性质4.2 施密特正交化 5.重难点题型总结5.1 判断矩阵能否相似对角化5.2 已知两个矩阵相似,求某个矩阵中的未知参数5.3 相似时,求可逆矩阵P,使

最大子矩阵和问题归纳总结

一,最大子矩阵问题: 给定一个n*n(0< n <=100)的矩阵,请找到此矩阵的一个子矩阵,并且此子矩阵的各个元素的和最大,输出这个最大的值。 Example: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其中左上角的子矩阵: 9 2 -4 1 -1 8 此子矩阵的值为9+2+(-4)+1+(-1)+8=15。 二,分析 子矩阵是在矩阵

3.门锁_STM32_矩阵按键设备实现

概述 需求来源: 门锁肯定是要输入密码,这个门锁提供了两个输入密码的方式:一个是蓝牙输入,一个是按键输入。对于按键输入,采用矩阵按键来实现。矩阵按键是为了模拟触摸屏的按键输入,后续如果项目结束前还有时间就更新为触摸屏按键输入。 矩阵按键开发整体思路: 由于矩阵按键就是GPIO的控制,所以不进行芯片和设备的分层编写,控制写在同一个文件中,最终向应用层提供一个接口。 代码层级关系: