线性代数二、正定矩阵及其最小值

一、说明

  本博客讲述内容根据MIT线性代数第二十八课归纳而成。

  MIT线性代数链接:http://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fdaishu.html

二、主要讲述问题

  1-如何判断一个矩阵是正定矩阵

  2-正定矩阵的最小值

  3-正定矩阵的几何解释

三、如何判断一个矩阵是正定矩阵

  1-首先我们需要明确一个概念-正定矩阵

  一个矩阵是正定矩阵,那么必须要满足以下的关系

  (1)它必须是一个nXn的方阵(我们用符号A来表示)

   (2)对于任意的一个向量x(不是每一个元素都是0),  都必须满足这样的一个条件:$x^{T}Ax>0$

  2-正定矩阵具有的特点(这个可以参考第二十六课内容,如果有时间我会补充)

  (1)它的所有的主元都必须是大于0的

  (2)它的所有的特征值都是大于0的(实际上,特征值和主元的符号是相同的,比如,如果主元有三个正的,两个负的,那么特征值也是这样)

  (3)它的所有的子行列式都是大于0的。

  至于什么是子行列式,我们可以看一下下面的例子:

  对于一个矩阵:  

  $\begin{bmatrix}2 & 3 & 1\\ 0 & 2 & 2\\  1 & 1 & 1\end{bmatrix}$

    那么它的子行列式有:$\begin{bmatrix}2\end{bmatrix}$,

$\begin{bmatrix}2 & 3\\ 0& 2\end{bmatrix}$

  $\begin{bmatrix} 2 & 3 & 1\\ 0 & 2 & 2\\  1 & 1 & 1\end{bmatrix}$

  3-如何判断

  根据上面的条件,那么自然而然就知道如何判断一个矩阵是不是正定矩阵:

  (1)只有所有的主元都是正的,那么这个矩阵是正定矩阵

  (2)所有的特征值是正的,那么这个矩阵是正定矩阵

  (3)这个矩阵的所有子行列式是正的,那么这个矩阵是正定矩阵

  (4)如果对于矩阵A, $x^{T}Ax>0$ (这个是根据定义式出发)

  4-一个例子

  对于一个二阶矩阵$\begin{bmatrix}a & b\\ c & d\end{bmatrix}$,那么下面的四个条件都可以判断:

  (1) $\lambda _{1}>0, \lambda _{2}>0$

  (2) $a>0, \frac{ac-bd}{a}>0$

  (3)$a>0, ac-bd>0$

  (4)  $x^{T}Ax>0$

  如下面一个矩阵:$\begin{bmatrix}2 & 6\\ 6 & 18\end{bmatrix}$

  我们可以看到,第一列和第二列存在一个倍数的关系,所以这是一个奇异矩阵。

  奇异矩阵一定有一个特征值是0, 另外一个特征值就等于迹减去这个特征值(这里是根据特征值之和等于主对角线的元素之和,也就是迹)

  所以另外一个特征值是:20。

  可以看到,一个特征值是0,另外一个特征值大于0,这个时候我们说这个矩阵是一个半正定矩阵。

  这个时候我们根据$x^{T}Ax$,看一下其得到的结果:

  $x=\begin{bmatrix}x_{1}\\ x_{1}\end{bmatrix} $

  $f(x_{1},x_{2})=\begin{bmatrix} x_{1}&x_{2} \end{bmatrix}\begin{bmatrix}2 &6 \\ 6 & 18\end{bmatrix}\begin{bmatrix}x_{1}\\ x_{2}\end{bmatrix}$

  $f(x_{1},x_{2})=2x_{1}^{2}+12x_{1}x_{2}+18x_{2}^{2}$

  这个时候函数就相当于:

  $f(x,y)=2x^{2}+12xy+18y^{2}$

  这个时候我们画出它的图像:

  

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/fantianliang/p/12080264.html

时间: 2024-10-16 12:11:53

线性代数二、正定矩阵及其最小值的相关文章

线性代数导论35——线性代数全总结(麻省理工公开课:线性代数)

课程介绍 "线性代数",同微积分一样,是高等数学中两大入门课程之一,不仅是一门非常好的数学课程,也是一门非常好的工具学科,在很多领域都有广泛的用途.本课程讲述了矩阵理论及线性代数的基本知识,侧重于那些与其他学科相关的内容,包括方程组.向量空间.行列式.特征值.相似矩阵及正定矩阵. [第1集] 方程组的几何解释    [第2集] 矩阵消元    [第3集] 乘法和逆矩阵    [第4集] A的LU分解    [第5集] 转置-置换-向量空间R    [第6集] 列空间和零空间    [第

关于二分操作的基本应用

前言:二分答案最重要的一点就是答案具有连续性,即有单调性的连续函数. 一:可以验证答案是否正确,来改变答案区间 如:求零点,求最接近元素. 还可以用于某些去掉重复元素的操作. 这一类比较简单,不做详细解释 二:最大化最小值/最小化最大值 如noip2015: 2257: [NOIP2015]跳石头 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有N块岩石(不

javascript数据结构与算法---检索算法

查找数据有2种方式,顺序查找和二分查找.顺序查找适用于元素随机排列的列表.二分查找适用于元素已排序的列表.二分查找效率更高,但是必须是已经排好序的列表元素集合. 一:顺序查找 顺序查找是从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,或者直到列表的结尾都没有找到想要找的元素. 代码如下: function seqSearch(data,arr) { for(var i = 0; i < arr.length; ++i) { if(arr[i] == data) { retur

好书一起读(85):算法笔记

这阵子看了两本算法书,<算法>和<算法导论>. 前一本读着很轻松,内容基本与大学数据结构课程重叠,示例代码用java编写,学习曲线平缓,对应用程序员来说,读它就挺好. 后一本我是边看麻省理工的<算法导论>公开课边读的,力不从心,因为我数学基础不好(详下),如果不看数学证明,其内容跟前一本就差不多了,数学基础比较好.对算法感兴趣的朋友,可以尝试之. 强烈建议各公开课平台的学习资源,质量非常高,相见恨晚!足不出户,就能学习名校的课程.但学习时别忘了跟着做习题.做笔记.预习复

浙江大学-计算机中的数学(诙谐幽默的短视频)

视频优酷网址:http://list.youku.com/albumlist/show?id=19465801&ascending=1&page=1 1.计算机中的数学[01]_<数学分析(一):导数> 2.计算机中的数学[02]_<数学分析(二):参变量函数> 3.计算机中的数学[03]_<数学分析(三):泰勒展开> 4.计算机中的数学[04]_<数学分析(四):幂级数> 5.计算机中的数学[05]_<数学分析(五):隐函数>

javascript检索算法代码举例

今天看到一篇谈javascript的文章.引起我的好奇.主要讲查找数据有2种方式,顺序查找和二分查找.顺序查找适用于元素随机排列的列表.二分查找适用于元素已排序的列表.二分查找效率更高,但是必须是已经排好序的列表元素集合. 在多是泛泛之谈的今天.有这个javascript的文章实属难得.在这篇CODEGO.NET的javascript文章里面谈的主要是检索算法.包括数据结构与算法的一些演示. 个人觉得挺有用.所以不敢独享就发出来.加上我自己的一些经验之谈了. 一:顺序查找 顺序查找是从列表的第一

Java实现二叉搜索树的添加,前序、后序、中序及层序遍历,求树的节点数,求树的最大值、最小值,查找等操作

什么也不说了,直接上代码. 首先是节点类,大家都懂得 /** * 二叉树的节点类 * * @author HeYufan * * @param <T> */ class Node<T extends Comparable<? super T>> { /** * 节点储存的值 */ private T data; /** * 左子节点 */ private Node<T> leftNode; /** * 右子节点 */ private Node<T>

华为机试—二维数组列最小值

比较二维数组列最小值,组成一个新数组返回. 实现核心算法,不需要使用IO 输入:{{5,6,1,16},{7,3,9}} 输出:{1,3} import java.util.Arrays; public class Col { public static int[] getColMin(int a[][]) { int[] res = new int[a.length]; for (int i = 0; i < a.length; i++) { int[] s = a[i]; Arrays.so

Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作

1.首先,需要一个节点对象的类.这些对象包含数据,数据代表存储的内容,而且还有指向节点的两个子节点的引用 class Node { public int iData; public double dData; public Node leftChild; public Node rightChild; public void displayNode() { System.out.print("{"); System.out.print(iData); System.out.print(