精华内容
下载资源
问答
  • 先前由于项目需要,自己实现了二阶矩阵特征值与特征向量的求取代码,其实很简单,主要部分就是求解一个二次方程的根,现在分享给大家作为参考(因为组长说求平方根可能比较费资源,为方便硬件实现,甚至连平方根求取...

    先前由于项目需要,自己实现了二阶矩阵特征值与特征向量的求取代码,其实很简单,主要部分就是求解一个二次方程的根,现在分享给大家作为参考(因为组长说求平方根可能比较费资源,为方便硬件实现,甚至连平方根求取的代码都是自己写的\笑哭):

    function [V,lamda]=myEig(A,err);
    % 求特征值与特征向量的程序
    % err为指定的计算误差
    a11=A(1,1);
    a12=A(1,2);
    a21=A(2,1);
    a22=A(2,2);
    delta=(a11-a22)^2+4*a12*a21;
    if delta<0
        disp('the input matrix has no eigen values and featrue vector!');
    end
    sqrtDelta=sqrtByBisection(delta,err);
    eig1=((a11+a22)-sqrtDelta)/2;
    eig2=((a11+a22)+sqrtDelta)/2;
    lamda=[eig1,eig2];
    v1=[a12,eig1-a11];
    v2=[a12,eig2-a11];
    v1=v1/norm(v1);
    v2=v2/norm(v2);
    V=[v1;v2];
    
    function mid=sqrtByBisection(x,err)
    % 二分法开平方根程序
    % x为输入值
    % err为计算精度
    if err^2>x
        mid=0;
        return;
    end
    up=max(1,x);
    low=0;
    mid=(up+low)/2;
    while ~( (mid+err)^2>x && (max(0,mid-err))^2<x)
        if mid^2<x
            low=mid;
        else
            up=mid;
        end
        mid=(up+low)/2;
    end

     

     

    展开全文
  • 这个二阶矩阵的二范数怎么分享先把A^TA算出来, 再算A^TA的最大特征值, 再开个平方就行了小编想看你静静入睡。小编想和你一起看雪。小编想静静等你归来。c语言矩阵的2范数怎么分享啊,c++也可以啊有那么一个人曾坚信...

    这个二阶矩阵的二范数怎么分享

    先把A^TA算出来, 再算A^TA的最大特征值, 再开个平方就行了小编想看你静静入睡。小编想和你一起看雪。小编想静静等你归来。

    c语言矩阵的2范数怎么分享啊,c++也可以啊有那么一个人曾坚信一些东西无奈现实狠狠的甩了他一耳光

    9e0d76506973d68c7d56021cb7242a07.png

    矩阵A的2范数就是 A的转置乘以A矩阵特征根 最大值的开根号 如A={ 1 -2 -3 4 } 那么A的2范数就是(15+221^1/2)^1/2 了 程序如下: #include "stdio.h" #include "math.h" #define N 20 main() { int i,j,k; int size,max; int a[N][N],b[N][N],c[当小编流着泪向你说再见,你只是冷漠的向小编告别,不敢看你冷漠的眼,心已碎成千片。

    矩阵的2范数和F范数之间的区别

    1-范数:是指向量(矩阵)里面非零元素的个数。类似于分享棋盘上两个点间的沿方格边缘的距离。 ||x||1 = sum(abs(xi)); 2-范数(或Euclid范数):是指空间上两个向量矩阵的直线距离。类似于分享棋盘上两点见的直线距离 (无需只沿方格边缘)。

    一般来讲矩阵范数除了正定性,齐次性和三角不等式之外,还规定其必须满足相容性:║XY║≤║X║║Y║。所以矩阵范数通常也称为相容范数。如果║·║α是相容范数,且任何满足║·║β≤║·║α的范数║·║β都不是相容范数,那么║·║α称为极小范数。

    根据矩阵F(简称)范数的定义: 以及矩阵的迹与F范数的关系(方框中的内容): 得到 (因为都是实矩阵、实向量,所以共轭转置就等同于转置了) 因此只要证明: 在这里依然没有看到可以简化的迹象,所以就不打算写成迹的形式来证明了。

    A的转置矩阵与A乘积的最大特征值开方

    矩阵的二范数一般怎么计算??没有人会喜欢孤独,只是比起失望随欲,以及冷热交替后的纵横来说,孤独会让人更踏实

    矩阵的2范数与向量的2范数有什么关系矩阵范数2 与 向量范数2 在数学理论中具有逻辑一致性。看下面例子。

    矩阵 乘以一个向量的2范数大于这个矩阵的特征值乘(3)式是怎么证明的啊?小编多么希望,有一个门口,早晨,阳光照在草上。小编们站着,扶着自己的门窗,门很低,但太阳是明亮的。草在结它的种子,风在摇它的叶子,小编们站着,不说话,就十分美好。

    举个例子 在数值计算中计算矩阵的算法中常常要判断算法的解是否收敛 这时最准确的方法是判断矩阵的最大特征值 但是矩阵的特征值得计算相对麻烦 所以可以近似的用范数代替 但是不够准确 但是很高效理论上讲范数的概念属于赋范线性空间。

    为简化书写,把转置符号T改成' 根据α^2I - (CT+T'C')/20 【1】 设C'C的2范数是β, 根据矩阵范数的相容性,有 αβ≥(C'C)(T'T)的2范数 即α^2β^2I≥C'CT'T 则α^2T'T≥C'CT'T 再根据【0】式,得到 (CT+(CT)')T'T > 2α^2T'T≥2C'CT'T 则[(CT+(CT)'-2C'C]T有时候,在乎得太多,对自己而言也是一种折磨。

    展开全文
  • 矩阵特征值

    2019-10-07 22:58:18
    ...如何理解矩阵特征值? 想要理解特征值,首先要理解矩阵相似。什么是矩阵相似呢?从定义角度就是:存在可逆矩阵P...
     参考:https://www.zhihu.com/question/21874816


    想要理解特征值,首先要理解矩阵相似。什么是矩阵相似呢?从定义角度就是:存在可逆矩阵P满足B=P^{-1} AP则我们说A和B是相似的。让我们来回顾一下之前得出的重要结论:对于同一个线性空间,可以用两组不同的基[\alpha ]和基[\beta ]来描述,他们之间的过渡关系是这样的:[\beta ]=[\alpha ]P,而对应坐标之间的过渡关系是这样的:x_{2}=P^{-1}x_{1}。其中P是可逆矩阵,可逆的意义是我们能变换过去也要能变换回来,这一点很重要。


    我们知道,对于一个线性变换,只要你选定一组基,那么就可以用一个矩阵T1来描述这个线性变换。换一组基,就得到另一个不同的矩阵T2(之所以会不同,是因为选定了不同的基,也就是选定了不同的坐标系)。所有这些矩阵都是这同一个线性变换的描述,但又都不是线性变换本身。具体来说,有一个线性变换x_{1}\rightarrow y_{1},我们选择基[\alpha ]来描述,对应矩阵是T_{1} ;同样的道理,我们选择基[\beta ]来描述x_{2}\rightarrow y_{2},,对应矩阵是T_{2} ;我们知道基[\alpha ]和基[\beta ]是有联系的,那么他们之间的变换T_{1}T_{2} 有没有联系呢?


    当然有,T_{1}T_{2} 就是相似的关系,具体的请看下图:

    &amp;amp;lt;img src="https://pic1.zhimg.com/6cf43eca0f26cb1752f8fbf2633b699c_b.jpg" data-rawwidth="721" data-rawheight="449" class="origin_image zh-lightbox-thumb" width="721" data-original="https://pic1.zhimg.com/6cf43eca0f26cb1752f8fbf2633b699c_r.jpg"&amp;amp;gt;

    没错,所谓相似矩阵,就是同一个线性变换的不同基的描述矩阵。这就是相似变换的几何意义。


    这个发现太重要了。原来一族相似矩阵都是同一个线性变换的描述啊!难怪这么重要!工科研究生课程中有矩阵论、矩阵分析等课程,其中讲了各种各样的相似变换,比如什么相似标准型,对角化之类的内容,都要求变换以后得到的那个矩阵与先前的那个矩阵式相似的,为什么这么要求?因为只有这样要求,才能保证变换前后的两个矩阵是描述同一个线性变换的。就像信号处理(积分变换)中将信号(函数)进行拉氏变换,在复数域处理完了之后又进行拉式反变换,回到实数域一样。信号处理中是主要是为了将复杂的卷积运算变成乘法运算。其实这样的变换还有好多,有兴趣可以看积分变换的教材。


    为什么这样做呢?矩阵的相似变换可以把一个比较丑的矩阵变成一个比较美的矩阵,而保证这两个矩阵都是描述了同一个线性变换。至于什么样的矩阵是“美”的,什么样的是“丑”的,我们说对角阵是美的。在线性代数中,我们会看到,如果把复杂的矩阵变换成对角矩阵,作用完了之后再变换回来,这种转换很有用处,比如求解矩阵的n次幂!而学了矩阵论之后你会发现,矩阵的n次幂是工程中非常常见的运算。这里顺便说一句,将矩阵对角化在控制工程和机械振动领域具有将复杂方程解耦的妙用!总而言之,相似变换是为了简化计算!


    从另一个角度理解矩阵就是:矩阵主对角线上的元素表示自身和自身的关系,其他位置的元素aij表示i位置和j位置元素之间的相互关系。那么好,特征值问题其实就是选取了一组很好的基,就把矩阵 i位置和j位置元素之间的相互关系消除了。而且因为是相似变换,并没有改变矩阵本身的特性。因此矩阵对角化才如此的重要!


    特征向量的引入是为了选取一组很好的基。空间中因为有了矩阵,才有了坐标的优劣。对角化的过程,实质上就是找特征向量的过程。如果一个矩阵在复数域不能对角化,我们还有办法把它化成比较优美的形式——Jordan标准型。高等代数理论已经证明:一个方阵在复数域一定可以化成Jordan标准型。这一点有兴趣的同学可以看一下高等代数后或者矩阵论。


    经过上面的分析相信你已经可以得出如下结论了:坐标有优劣,于是我们选取特征向量作为基底,那么一个线性变换最核心的部分就被揭露出来——当矩阵表示线性变换时,特征值就是变换的本质!特征值的几何意义前面的答主已经用很多图解释过了,接下来我们分析一下特征值的物理意义:特征值英文名eigen value。“特征”一词译自德语的eigen,由希尔伯特在1904年首先在这个意义下使用(赫尔曼·冯·亥姆霍兹在更早的时候也在类似意义下使用过这一概念)。eigen一词可翻译为“自身的”,“特定于...的”,“有特征的”或者“个体的”—这强调了特征值对于定义特定的变换上是很重要的。它还有好多名字,比如谱,本征值。为什么会有这么多名字呢?


    原因就在于他们应用的领域不同,中国人为了区分,给特不同的名字。你看英文文献就会发现,他们的名字都是同一个。当然,特征值的思想不仅仅局限于线性代数,它还延伸到其他领域。在数学物理方程的研究领域,我们就把特征值称为本征值。如在求解薛定谔波动方程时,在波函数满足单值、有限、连续性和归一化条件下,势场中运动粒子的总能量(正)所必须取的特定值,这些值就是正的本征值。


    前面我们讨论特征值问题面对的都是有限维度的特征向量,下面我们来看看特征值对应的特征向量都是无限维函数的例子。这时候的特征向量我们称为特征函数,或者本证函数。这还要从你熟悉的微分方程说起。方程本质是一种约束,微分方程就是在世界上各种各样的函数中,约束出一类函数。对于一阶微分方程

    \frac{dy}{dt} =\lambda y

    我们发现如果我将变量y用括号[]包围起来,微分运算的结构和线性代数中特征值特征向量的结构,即\frac{d}{dt}[ y]=\lambda yT[y] =\lambda y竟是如此相似。这就是一个求解特征向量的问题啊!只不过“特征向量”变成函数!我们知道只有e^{\lambda t}满足这个式子。这里出现了神奇的数e,一杯开水放在室内,它温度的下降是指数形式的;听说过放射性元素的原子核发生衰变么?随着放射的不断进行,放射强度将按指数曲线下降;化学反应的进程也可以用指数函数描述……类似的现象还有好多。


    为什么选择指数函数而不选择其他函数,因为指数函数是特征函数。为什么指数函数是特征?我们从线性代数的特征向量的角度来解释。这已经很明显了e^{\lambda t}就是“特征向量”。于是,很自然的将线性代数的理论应用到线性微分方程中。那么指数函数就是微分方程(实际物理系统)的特征向量。用特征向量作为基表示的矩阵最为简洁。就像你把一个方阵经过相似对角化变换,耦合的矩阵就变成不耦合的对角阵一样。在机械振动里面所说的模态空间也是同样的道理。如果你恰巧学过振动分析一类的课程,也可以来和我交流。


    同理,用特征函数解的方程也是最简洁的,不信你用级数的方法解方程,你会发现方程的解有无穷多项。解一些其他方程的时候(比如贝塞尔方程)我们目前没有找到特征函数,于是退而求其次才选择级数求解,至少级数具有完备性。实数的特征值代表能量的耗散或者扩散,比如空间中热量的传导、化学反应的扩散、放射性元素的衰变等。虚数的特征值(对应三角函数)代表能量的无损耗交换,比如空间中的电磁波传递、振动信号的动能势能等。复数的特征值代表既有交换又有耗散的过程,实际过程一般都是这样的。复特征值在电路领域以及振动领域将发挥重要的作用,可以说,没有复数,就没有现代的电气化时代!


    对于二阶微分方程方程,它的解都是指数形式或者复指数形式。可以通过欧拉公式将其写成三角函数的形式。复特征值体现最多的地方是在二阶系统,别小看这个方程,整本自动控制原理都在讲它,整个振动分析课程也在讲它、还有好多课程的基础都是以这个微分方程为基础,这里我就不详细说了,有兴趣可以学习先关课程。说了这么多只是想向你传达一个思想,就是复指数函数式系统的特征向量!


    如果将二阶微分方程转化成状态空间\frac{dx}{dt} =Ax的形式(具体转化方法见现代控制理论,很简单的)

    。则一个二阶线性微分方程就变成一个微分方程组的形式这时就出现了矩阵A,矩阵可以用来描述一个系统:如果是振动问题,矩阵A的特征值是虚数,对应系统的固有频率,也就是我们常说的,特征值代表振动的谱。如果含有耗散过程,特征值是负实数,对应指数衰减;特征值是正实数,对应指数发散过程,这时是不稳定的,说明系统极容易崩溃,如何抑制这种发散就是控制科学研究的内容。


    提到振动的谱,突然想到了这个经典的例子:美国数学家斯特让(G..Strang)在其经典教材《线性代数及其应用》中这样介绍了特征值作为频率的物理意义,他说:"大概最简单的例子(我从不相信其真实性,虽然据说1831年有一桥梁毁于此因)是一对士兵通过桥梁的例子。传统上,他们要停止齐步前进而要散步通过。这个理由是因为他们可能以等于桥的特征值之一的频率齐步行进,从而将发生共振。就像孩子的秋千那样,你一旦注意到一个秋千的频率,和此频率相配,你就使频率荡得更高。一个工程师总是试图使他的桥梁或他的火箭的自然频率远离风的频率或液体燃料的频率;而在另一种极端情况,一个证券经纪人则尽毕生精力于努力到达市场的自然频率线。特征值是几乎任何一个动力系统的最重要的特征。"

    &amp;amp;lt;img src="https://pic2.zhimg.com/0a02c56afda30b25d653ae4e24629d5d_b.jpg" data-rawwidth="395" data-rawheight="216" class="content_image" width="395"&amp;amp;gt;

    对于一个线性系统,总可以把高阶的方程转化成一个方程组描述,这被称为状态空间描述。因此,他们之间是等价的。特征值还有好多用处,原因不在特征值本身,而在于特征值问题和你的物理现象有着某种一致的对应关系。学习特征值问题告诉你一种解决问题的方法:寻找事物的特征,然后特征分解。


    最后声明一下, 本文是在整理孟岩老师的《理解矩阵》和任广千、胡翠芳老师的《线性代数的几何意义》基础上形成的,只是出于一种对数学的爱好!有兴趣的读者建议阅读原文。也欢迎下载《神奇的矩阵》和《神奇的矩阵第二季》了解更多有关线性代数和矩阵的知识。

    41581 条评论
    分享
    收藏感谢
    收起

    补充:答主现在用到的多数是对称矩阵或酉矩阵的情况,有思维定势了,写了半天才发现主要讲的是对称矩阵,这答案就当科普用了。特征值在很多领域应该都有自己的用途,它的物理意义到了本科高年级或者研究生阶段涉及到具体问题的时候就容易理解了,刚学线性代数的话,确实抽象。

    ——————————————————以下为正文——————————————————

    从线性空间的角度看,在一个定义了内积的线性空间里,对一个N阶对称方阵进行特征分解,就是产生了该空间的N个标准正交基,然后把矩阵投影到这N个基上。N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。
    特征值越大,说明矩阵在对应的特征向量上的方差越大,功率越大,信息量越多。

    应用到最优化中,意思就是对于R的二次型,自变量在这个方向上变化的时候,对函数值的影响最大,也就是该方向上的方向导数最大。
    应用到数据挖掘中,意思就是最大特征值对应的特征向量方向上包含最多的信息量,如果某几个特征值很小,说明这几个方向信息量很小,可以用来降维,也就是删除小特征值对应方向的数据,只保留大特征值方向对应的数据,这样做以后数据量减小,但有用信息量变化不大。

    ——————————————————举两个栗子——————————————————

    应用1 二次型最优化问题

    二次型y=x^{T} Rx,其中R是已知的二阶矩阵,R=[1,0.5;0.5,1],x是二维列向量,x=[x1;x2],求y的最小值。

    求解很简单,讲一下这个问题与特征值的关系。
    对R特征分解,特征向量是[-0.7071;0.7071]和[0.7071;0.7071],对应的特征值分别是0.5和1.5。
    然后把y的等高线图画一下
    &amp;amp;amp;lt;img src="https://pic4.zhimg.com/7274a04a7a947640122b225967a8385b_b.jpg" data-rawwidth="561" data-rawheight="420" class="origin_image zh-lightbox-thumb" width="561" data-original="https://pic4.zhimg.com/7274a04a7a947640122b225967a8385b_r.jpg"&amp;amp;amp;gt;从图中看,函数值变化最快的方向,也就是曲面最陡峭的方向,归一化以后是[0.7071;0.7071],嗯哼,这恰好是矩阵R的一个特征值,而且它对应的特征向量是最大的。因为这个问题是二阶的,只有两个特征向量,所以另一个特征向量方向就是曲面最平滑的方向。这一点在分析最优化算法收敛性能的时候需要用到。

    从图中看,函数值变化最快的方向,也就是曲面最陡峭的方向,归一化以后是[0.7071;0.7071],嗯哼,这恰好是矩阵R的一个特征值,而且它对应的特征向量是最大的。因为这个问题是二阶的,只有两个特征向量,所以另一个特征向量方向就是曲面最平滑的方向。这一点在分析最优化算法收敛性能的时候需要用到。
    二阶问题比较直观,当R阶数升高时,也是一样的道理。

    应用2 数据降维

    兴趣不大的可以跳过问题,直接看后面降维方法。
    机器学习中的分类问题,给出178个葡萄酒样本,每个样本含有13个参数,比如酒精度、酸度、镁含量等,这些样本属于3个不同种类的葡萄酒。任务是提取3种葡萄酒的特征,以便下一次给出一个新的葡萄酒样本的时候,能根据已有数据判断出新样本是哪一种葡萄酒。
    问题详细描述:UCI Machine Learning Repository: Wine Data Set
    训练样本数据:archive.ics.uci.edu/ml/

    原数据有13维,但这之中含有冗余,减少数据量最直接的方法就是降维。
    做法:把数据集赋给一个178行13列的矩阵R,减掉均值并归一化,它的协方差矩阵C=R^{T}R,C是13行13列的矩阵,对C进行特征分解,对角化C=UDU^{T},其中U是特征向量组成的矩阵,D是特征之组成的对角矩阵,并按由大到小排列。然后,另R' =RU,就实现了数据集在特征向量这组正交基上的投影。嗯,重点来了,R’中的数据列是按照对应特征值的大小排列的,后面的列对应小特征值,去掉以后对整个数据集的影响比较小。比如,现在我们直接去掉后面的7列,只保留前6列,就完成了降维。这个降维方法叫PCA(Principal Component Analysis)。
    下面看结果:
    &amp;amp;amp;lt;img src="https://pic2.zhimg.com/1c59933649aa655b14d648300fd2c559_b.jpg" data-rawwidth="562" data-rawheight="413" class="origin_image zh-lightbox-thumb" width="562" data-original="https://pic2.zhimg.com/1c59933649aa655b14d648300fd2c559_r.jpg"&amp;amp;amp;gt;这是不降维时候的分类错误率。这是不降维时候的分类错误率。&amp;amp;amp;lt;img src="https://pic2.zhimg.com/30b87d38961b880fca2fea790bf5f515_b.jpg" data-rawwidth="552" data-rawheight="408" class="origin_image zh-lightbox-thumb" width="552" data-original="https://pic2.zhimg.com/30b87d38961b880fca2fea790bf5f515_r.jpg"&amp;amp;amp;gt;

    这是降维以后的分类错误率。

    结论:降维以后分类错误率与不降维的方法相差无几,但需要处理的数据量减小了一半(不降维需要处理13维,降维后只需要处理6维)。
    1073114 条评论
    分享
    收藏感谢
    收起

    特征值不仅仅是数学上的一个定义或是工具,特征值是有具体含义的,是完全看得见摸得着的。

    1. 比如说一个三维矩阵,理解成线性变换,作用在一个球体上:

    三个特征值决定了 对球体在三个维度上的拉伸/压缩,把球体塑造成一个橄榄球;

    剩下的部分决定了这个橄榄球在三维空间里面怎么旋转。


    2. 对于一个微分方程:

    &amp;amp;lt;img src="https://pic1.zhimg.com/059f6f160cb805012c8266eccc575b10_b.jpg" data-rawwidth="230" data-rawheight="102" class="content_image" width="230"&amp;amp;gt;

    将系数提取出来

    &amp;amp;lt;img src="https://pic1.zhimg.com/8a2685d051d47c7be0f0d062dee5eca4_b.jpg" data-rawwidth="187" data-rawheight="83" class="content_image" width="187"&amp;amp;gt;

    对角化:

    &amp;amp;lt;img src="https://pic4.zhimg.com/d4438e57b29d86ccbe5acd8136ea5227_b.jpg" data-rawwidth="240" data-rawheight="90" class="content_image" width="240"&amp;amp;gt;

    其中

    &amp;amp;lt;img src="https://pic1.zhimg.com/0ea72d53419fda40c8c4e08522eb0c20_b.jpg" data-rawwidth="228" data-rawheight="73" class="content_image" width="228"&amp;amp;gt;

    由于

    &amp;amp;lt;img src="https://pic1.zhimg.com/0588de5107d6dd2331ae8c223616233c_b.jpg" data-rawwidth="221" data-rawheight="49" class="content_image" width="221"&amp;amp;gt;

    定义

    &amp;amp;lt;img src="https://pic3.zhimg.com/0ea3ae6ed484e1c2b1a943044d9c8676_b.jpg" data-rawwidth="102" data-rawheight="23" class="content_image" width="102"&amp;amp;gt;

    于是有

    &amp;amp;lt;img src="https://pic4.zhimg.com/a6e4c0e1755c7259ad10df312362c7ef_b.jpg" data-rawwidth="110" data-rawheight="25" class="content_image" width="110"&amp;amp;gt;

    因此y的变化率与特征值息息相关:

    &amp;amp;lt;img src="https://pic2.zhimg.com/28211481cc93355c212a40f0c4fce039_b.jpg" data-rawwidth="210" data-rawheight="75" class="content_image" width="210"&amp;amp;gt;

    再将y由Q变换回x,我们就能得出x在不同时间的值。x的增长速度就是特征值λ,Q用来把x旋转成y。

    13512 条评论
    分享
    收藏感谢
    收起

    各位知友在点赞同之前请看一下评论区。这个例子有待讨论。

    -----------
    我举一个直观一点的例子吧...我也喜欢数学的直观之美。

    我们知道,一张图像的像素(如:320 x 320)到了计算机里面事实上就是320x320的矩阵,每一个元素都代表这个像素点的颜色..

    如果我们把基于特征值的应用,如PCA、向量奇异值分解SVD这种东西放到图像处理上,大概就可以提供一个看得到的、直观的感受。关于SVD的文章可以参考LeftNotEasy的文章:机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用


    简单的说,SVD的效果就是..用一个规模更小的矩阵去近似原矩阵...
    A_{m\times n} \approx U_{m\times r} \Sigma_{r\times r} V_{r\times n}
    这里A就是代表图像的原矩阵..其中的\Sigma_{r\times r}尤其值得关注,它是由A的特征值从大到小放到对角线上的..也就是说,我们可以选择其中的某些具有“代表性”的特征值去近似原矩阵!

    左边的是原始图片
    &amp;amp;amp;lt;img src="https://pic3.zhimg.com/58a5bda06fd38662cd0868efdc9e91a2_b.jpg" data-rawwidth="510" data-rawheight="384" class="origin_image zh-lightbox-thumb" width="510" data-original="https://pic3.zhimg.com/58a5bda06fd38662cd0868efdc9e91a2_r.jpg"&amp;amp;amp;gt;当我把特征值的数量减少几个的时候...后面的图像变“模糊”了..当我把特征值的数量减少几个的时候...后面的图像变“模糊”了..
    &amp;amp;amp;lt;img src="https://pic3.zhimg.com/c9a2b470aec764ea8564c07f038ab46a_b.jpg" data-rawwidth="510" data-rawheight="384" class="origin_image zh-lightbox-thumb" width="510" data-original="https://pic3.zhimg.com/c9a2b470aec764ea8564c07f038ab46a_r.jpg"&amp;amp;amp;gt;同样地...同样地...
    &amp;amp;amp;lt;img src="https://pic4.zhimg.com/d99db09dade1a9b7bb41b9190535d22f_b.jpg" data-rawwidth="510" data-rawheight="384" class="origin_image zh-lightbox-thumb" width="510" data-original="https://pic4.zhimg.com/d99db09dade1a9b7bb41b9190535d22f_r.jpg"&amp;amp;amp;gt;
    关键的地方来了!如果我们只看到这里的模糊..而没有看到计算机(或者说数学)对于人脸的描述,那就太可惜了...我们看到,不论如何模糊,脸部的关键部位(我们人类认为的关键部位)——五官并没有变化太多...这能否说:数学揭示了世界的奥秘?
    19733 条评论
    分享
    收藏感谢
    收起
    前面的回答比较专业化,而且好像没说特征值是虚数的情况,并不是只有特征向量的伸缩。作为工科线代水平,我说下自己的理解。
    矩阵特征值是对特征向量进行伸缩和旋转程度的度量,实数是只进行伸缩,虚数是只进行旋转,复数就是有伸缩有旋转。其实最重要的是特征向量,从它的定义可以看出来,特征向量是在矩阵变换下只进行“规则”变换的向量,这个“规则”就是特征值。推荐教材linear algebra and its application
    7216 条评论
    分享
    收藏感谢
    特徵向量反映了線性變換的方向,在這幾個方向上線性變換只導致伸縮,沒有旋轉;特徵值反映線性變換在這幾個方向上導致的伸縮的大小。
    282 条评论
    分享
    收藏感谢

    定义很抽象我也一直搞不懂,但是最近开始在图像处理方面具体应用的时候就清晰很多了,用学渣的语言沟通一下吧我们。

    抛开学术研究不谈,其实根本不会,特征值eigenvalue和特征向量eigenvector的一大应用是用于大量数据的降维


    比如拿淘宝举个例子,每个淘宝店铺有N个统计数据:商品类型,日销量周销量月销量、好评率中评差评率……全淘宝有M家店铺,那么服务器需要记录的数据就是M*N的矩阵;

    这是一个很大的数据,实际上我们可以通过求这个矩阵的特征向量和对应的特征值来重新表示这个M*N的矩阵:
    我们可以用周销量来误差不大的表示日销量和月销量(除以七和乘以四),这个时候周销量就可以当作一个特征向量,它能够表示每个店铺销量这个空间方向的主要能量(也就是数据),这样我们就简略的把一个35维的向量简化成四维的(30个日销量加4个周销量加1个月销量);
    同理我们也可以把好评率中评率差评率用一个好评率来表示(剩余的百分比默认为差评率),这样的降维大致上也能反映一个店铺的诚信度;
    这样通过不断的降维我们可以提取到某系列数据最主要的几个特征向量(对应特征值最大的),这些向量反映了这个矩阵空间最主要的能量分布,所以我们可以用这几个特征向量来表示整个空间,实现空间的降维。

    这个方法叫做Principle Components Analysis,有兴趣的同学可以wiki一下。

    学渣飘过了
    5717 条评论
    分享
    收藏感谢

    作为一个线性代数考60+的学渣,我是这么直观地理解的:

    Ax = \lambda x 把式子中的A看作一个线性变换,那么这个定义式就表示对于 向量x而言,经过A变换之后该向量的方向没有变化(可能会反向),而只是长度变化了(乘以 \lambda)。

    也就是对于变换A来说,存在一些“不变”的量(比如特征向量x的方向),我想,“特征”的含义就是“不变”

    而特征值\lambda,如你所见,就是变换 A 在特征方向上的伸展系数吧(乱诹了个名词 :P)。

    嗯,觉得维基其实讲的就挺好的:zh.wikipedia.org/wiki/%
    454 条评论
    分享
    收藏感谢

    如果把矩阵理解为空间变换的参数,那特征值和特征向量可这样理解:

    现在将x(m*1)向量按照A(m*m)矩阵进行空间变换,A矩阵的特征向量为a1,a2,a3,...,am,特征值为b1,b2,b3,...,bm。
    可以把a1,a2,a3,...,am想象成m维坐标系下的m根柱子,每根柱子都相当于一个有刻度的轨道,上边有一个支点,空间系在这m个支点上,并且会因为支点的变化而变化。支点变化导致空间变化,空间变化导致空间中的向量变化。这个空间中的所有向量,都会随着任何支点的变化而变化,被拉伸旋转。

    在原始空间的情况下,每根柱子的支点都在刻度1上。现在要对向量b按照A矩阵进行空间变换,则每根柱子上的支点按照b1,b2,b3,...,bm进行伸缩,空间随之伸缩。而随着空间在不同维度上不同量的伸缩,向量b也随之被伸缩旋转。

    特征向量决定了空间变化时,空间伸缩的不同方向,特征值决定伸缩的程度。方向和特征值相配合,使空间中的任何向量都发生了该矩阵所代表的空间变化。
    1添加评论
    分享
    收藏感谢

    推荐一种看法吧,粗略描述如下:

    把矩阵看成线性变换,找特征值就是找这个线性变换下的不变自空间。

    然后一些好的矩阵、线性变换,就可以分成好多个简单的变换了。
    不好的矩阵也可以作进一步处理,也能分解。

    将复杂的东西变成很多简单的东西,这是数学很美的一点。

    很多应用也是基于这样的直观。
    有时间再补充一些细节吧。
    41 条评论
    分享
    收藏感谢

    什么是方阵?方阵就是n维线性空间上的线性变换。那么我们总要考虑最简单的情况:什么是一维的线性变换呢?就是简单的常数倍拉伸
    A: x -> ax

    在高维的时候,线性变换A的结构可能很复杂,但它总会保持某些一维子空间不变。在这些子空间上它的限制就是一个一维线性变换,这个变换的拉伸常数就是A在这个子空间上的特征值。
    11添加评论
    分享
    收藏感谢

    看了大部分的回答,基本都没有回答出为什么要求特征值。

    特征值和特征向量是为了研究向量在经过线性变换后的方向不变性而提出的,一个空间里的元素通过线性变换到另一个相同维数的空间,那么会有某些向量的方向在变换前后不会改变,方向不变但是这些向量的范数可能会改变,我这里说的都是实数空间的向量。

    定义x'=Ax,定义x为原始空间中的向量,x'为变换后空间的向量,简单起见令An阶方阵且特征值\lambda_{1}, \lambda_{2}, \cdot \cdot \cdot ,\lambda_{n}互不相同,对应的特征向量P_{1},P_{2},\cdot \cdot \cdot ,  P_{n}线性无关。那么原始空间中的任何一个向量都可以由A的特征向量表示,既x=k_{1}P_{1}+k_{2}P_{2}+\cdot \cdot \cdot +k_{n}P_{n}那么在变换到另一个空间时Ax=\lambda_{1}k_{1}P_{1}+\lambda_{2}k_{2}P_{2}+\cdot \cdot \cdot +\lambda_{n}k_{n}P_{n},这就求完了!

    好,下面再说更深层次的含义。

    在不同的领域特征值的大小与特征向量的方向所表示的含义也不同,但是从数学定义上来看,每一个原始空间中的向量都要变换到新空间中,所以他们之间的差异也会随之变化,但是为了保持相对位置,每个方向变换的幅度要随着向量的分散程度进行调整。

    你们体会一下拖拽图片使之放大缩小的感觉。

    如果A为样本的协方差矩阵,特征值的大小就反映了变换后在特征向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,换句话说这个方向上的元素更分散。
    204 条评论
    分享
    收藏感谢
    就去让你给我接个人,她有很多特征,我会挑几个特典型如长发超级大美女、身材高挑皮肤好。。。其中特征值就是多高,多美,特征向量就是这些分类。。因为不需要给你所有信息,只要几个典型也不会让你找错人,所以能给你降维。
    如果你要找女友,只要几个典型如美,高之类的,估计你很快就能在100人中就能找到你心仪的,所以能寻优
    32添加评论
    分享
    收藏感谢

    /* 多图预警 */
    用特征向量作为基,线性变换会很简单,仅仅是伸缩变换,而特征值就是伸缩的大小。
    各位已经说的很清楚了,我就发几张用mathematica做的图吧。

    这里只给出一些“可视化”的2D线性变换。
    \mathbb{R}^{2}平面当中的一个向量(x,y)经过一个线性变换(乘上一个矩阵)之后变成了另一个\mathbb{R}^{2}的向量(x',y'),把它的起点接在(x,y),就可以表示线性变换的特性。再画出一组特征向量,我们就有下图:
    &amp;amp;amp;lt;img src="https://pic3.zhimg.com/77e42baa0d26fbfa31a364a59d97c09a_b.jpg" data-rawwidth="746" data-rawheight="746" class="origin_image zh-lightbox-thumb" width="746" data-original="https://pic3.zhimg.com/77e42baa0d26fbfa31a364a59d97c09a_r.jpg"&amp;amp;amp;gt;

    颜色越深冷,代表向量长度越小。
    可以看出特征向量所在的直线上的向量经过变换之后方向不变,这意味着一个向量的分量是各自独立的,这对于我们分析矩阵、线性变换就方便了很多。


    (绿色箭头是矩阵的行向量,红色是特征向量)
    &amp;amp;amp;lt;img src="https://pic4.zhimg.com/4af4920e24c36091ca5d821ac03b68a3_b.jpg" data-rawwidth="643" data-rawheight="302" class="origin_image zh-lightbox-thumb" width="643" data-original="https://pic4.zhimg.com/4af4920e24c36091ca5d821ac03b68a3_r.jpg"&amp;amp;amp;gt;&amp;amp;amp;lt;img src="https://pic3.zhimg.com/337980b9707cd3668eee3dbfe39e2a42_b.jpg" data-rawwidth="528" data-rawheight="302" class="origin_image zh-lightbox-thumb" width="528" data-original="https://pic3.zhimg.com/337980b9707cd3668eee3dbfe39e2a42_r.jpg"&amp;amp;amp;gt;
    只有一个特征值-1的情况:
    &amp;amp;amp;lt;img src="https://pic1.zhimg.com/3b7cd76570f4fd6b0490806baacaec28_b.jpg" data-rawwidth="528" data-rawheight="302" class="origin_image zh-lightbox-thumb" width="528" data-original="https://pic1.zhimg.com/3b7cd76570f4fd6b0490806baacaec28_r.jpg"&amp;amp;amp;gt;
    &amp;amp;amp;lt;img src="https://pic4.zhimg.com/309df13a20128f0c73f1fdc050ff8887_b.jpg" data-rawwidth="528" data-rawheight="302" class="origin_image zh-lightbox-thumb" width="528" data-original="https://pic4.zhimg.com/309df13a20128f0c73f1fdc050ff8887_r.jpg"&amp;amp;amp;gt;
    特征值是虚数的反对称矩阵:
    &amp;amp;amp;lt;img src="https://pic1.zhimg.com/57d08d51668ba13a83a99ccba39447ec_b.jpg" data-rawwidth="787" data-rawheight="182" class="origin_image zh-lightbox-thumb" width="787" data-original="https://pic1.zhimg.com/57d08d51668ba13a83a99ccba39447ec_r.jpg"&amp;amp;amp;gt;其实做的是动图,可惜知乎不支持动图。其实做的是动图,可惜知乎不支持动图。
    494 条评论
    分享
    收藏感谢
    收起
    站在线性变换的角度来看矩阵的话。
    矩阵(线性变换)作用在一个向量上无非是将该向量伸缩(包括反向伸缩)与旋转。
    忽略复杂的旋转变换,只考虑各个方向(特征方向)伸缩的比例,所提取出的最有用,最关键的信息就是特征值了。
    268 条评论
    分享
    收藏感谢
    特征向量可以看作坐标向量,特征值就是矩阵在该坐标方向上的分量大小值,特征分析相当于提取矩阵的信息出来吧。较大的特征值对应的特征向量就较为重要,矩阵降维就用的提取主特征向量思想。
    149 条评论
    分享
    收藏感谢

    从相似变换开始讲吧。
    A=PNP-1
    如果我们取N是对角阵,那主对角线上的三个数就是三个特征值,而P矩阵就是特征向量的排列。
    随便给一个向量x,有
    Ax=PNP-1x

    左边我们都知道是线性变换,而右边怎么看呢?
    首先我们看P-1x
    P的每一个列向量都是一个特征向量,也就是说P构成线性空间的一组基。那么P逆x即将x变换为特征向量为基表示的坐标。
    为便于直观理解,特殊的,如果P为单位正交阵(即几个特征向量互相垂直且模长为1),那么P逆等于P转置,即P逆是特征向量排列出来的,每一行元素其实是一个特征向量。由于特征向量无所谓尺度,我们把它的模长归一化一下。
    这样,P逆x相当于把每一个特征向量与x做内积。由于特征向量模长为1,内积得到的实际上是x在特征向量上的投影长度。整体而言,这一步得到的是x向量在特征向量坐标系下面的坐标值。
    再乘中间的对角矩阵N,实际上是把刚才得到的新坐标在每一个特征向量上放大或者缩小特征值倍。
    最后一步,再乘P,相当于把坐标还原到原来的坐标系下面。

    所以说,
    矩阵代表一个线性变换(在某几个方向放大或者缩小)。
    特征向量代表这个线性变换的几个方向。
    特征值代表放大或者缩小的倍数。
    以上。
    私以为这样理解是直观的。

    (这个答案已经和三个月前的回答很不一样了,当初啥都不懂强答的,后来学了点图像的知识理解深刻了以后重新回答了一下。)
    99 条评论
    分享
    收藏感谢

    找了几天, 这个视频(7分钟)是我见过讲解最为直观的, 强烈推荐.
    源视频在youtube上: youtube.com/watch?
    为了让国内的童鞋也可以看到, 我把它上传到youku了:
    introduction to Eigenvalues and Eigenvectors

    另外, 这个简单的网页也挺好的: File:Eigenvectors.gif

    不过真的是上面那个视频让我对特征值和特征向量真正有一个直观的认识. youtube上两万多收看, 两百多点up, 没有点down的.
    95 条评论
    分享
    收藏感谢
    假设有一个向量x(特征向量)和矩阵A,Ax的过程相当于矩阵A对向量x做各种 方向上的伸缩变换,变换后的向量为y。而存在特征值t(常数),即说明x通过各种变换得到的y正好与x在一个方向上,只有长度上的变化,中间相差的倍数则为t。Ax=tx
    84 条评论
    分享
    收藏感谢

    仅考虑非奇异矩阵。

    以3阶非奇异矩阵{A}为例,设它的3个特征值(多重特征值就重复写)分别为 \lambda_1,\lambda_2,\lambda_3, 对应的特征向量分别为X_1,X_2X_3,则X_1 X_2 X_3线性无关。

    此时任一向量X可表示为X_1 X_2 X_3的线性组合,设X=aX_1+bX_2+cX_3,则有

    AX=A(aX_1+bX_2+cX_3)=aAX_1+bAX_2+cAX_3=a\lambda_1X_1+b\lambda_2X_2+c\lambda_3X_3=\lambda_1(aX_1)+\lambda_2(bX_2)+\lambda_3(cX_3)

    正好是XA的各特征向量上分量乘以特征值之和。
    81 条评论
    分享
    收藏感谢
    更多
    人中的路
    人中的路
    计算机硕士编辑话题经验
    使用匿名身份回答
     
    写回答...
     
    相关 Live 推荐
    数分入门:极限与实数理论
    谈谈微积分的学习方法
    线性代数入门:从方程到映射
    从几何学看数学之美
    如何学好本科数学?

    转载于:https://www.cnblogs.com/hd-chenwei/p/6807978.html

    展开全文
  • 基于二阶矩阵的优化问题(一)非精确搜索更新Xk+1X_{k+1}Xk+1​线搜索策略牛顿方向拟牛顿方向共轭梯度方向信任域方法设定内容居中、居左、居右设定内容居中、居左、居右设定内容居中、居左、居右 非精确搜索更新Xk+1...

    非精确线搜索更新Xk+1X_{k+1}

    优化算法的问题在于如何从XkX_k更新到Xk+1X_{k+1}、确定步长公式详见 基于二阶矩阵的优化问题(二)和判定迭代终止的条件(详见 于二阶矩阵的优化问题(三))是我们需要在不精确搜索中解决的问题。
    我们有两种方法来解决这个问题:
    1.线搜索策略
    2.信任域策略

    线搜索策略

    我们选择一个下降方向来使得lost function慢慢迭代至最小值。

    Xk+1=Xk+αkpkX_{k+1}=X_k+α_kp_k

    这是Xk+1X_{k+1}的更新公式,可以看到,我们需要知道其αkα_kpkp_k的值才能进行迭代(αkα_k代表了步长、pkp_k代表下降方向),第一种方法就是pkp_k走一个最速下降方向(负梯度),而αkα_k走一个极其猥琐的距离,但这种方法在函数比较诡异时效果较差(如rosenbrock函数),但在某些复杂问题时,我们还是使用最速下降来解决问题,详见 大规模的优化问题(一)

    最速下降+牛顿法

    让我们来列一下牛顿方向的式子:

    f(xk+p)fk+pTfk+12pT2fkpf(x_k+p)\approx f_k+p^T\nabla f_k+\frac{1}{2}p^T\nabla^2f_kp

    在这里,我们要假设这里的二次型(2fk\nabla^2 f_k)是正定的,这是函数的局部二次型构型就是碗状的,我们可以求出这里的pk(下降方向):

    pKN=(2fk)1fkp^N_K=-(\nabla^2f_k)^{-1}\nabla f_k;

    这边的pKNp^N_K就是这里的局部二次型的顶点,在牛顿法中,我们可以一步就走到这个点。
    ok,这个问题的理论情况是这样的,但在实际问题中,我们不可能去求一个hessian矩阵的逆矩阵,所以,我们把1/(2fk)1/(\nabla^2f_k)移到等式的左边,变成:

    pKN(2fk)=fkp^N_K*(\nabla^2f_k)=-\nabla f_k

    这个等式实际上就等于Ax=b的形式,这边我们只需要求解一个线性方程组即可。
    以上为牛顿法的基础理论,下面看一下牛顿法的实现步骤:

    Created with Raphaël 2.2.0开始最速下降▽fk<阈值转到Newtonyesno

    可以看到,牛顿法的意义在于足够靠近真解时的快速收敛,我们先走几部最速下降法,使得足够靠近阈值,后再启动牛顿法,会有较好的效果,即保证了算法的效率,有保证了算法的鲁棒性。

    下面是最速下降法+牛顿法matlab实现的代码:

    function [x1] = min_hybrid(func, dfunc, d2func ,x, MAX_IT ,eps, threshold)
        err = 10.0;
        steps = 0;
        alpha = 1.0;
        //最速下降法
        while (err > threshold)//此处阈值需要调参
            f = func(x);
            g = dfunc(x);
            p = -g;
            step=step+1;
            alpha = backtracking(@func, x, f, g, p, 1e-4, 0.8, alpha * 2.0);
            x = x + alpha * p;
            if (steps > MAX_IT)
                break;
            end
            error = norm(g);
        end
        //牛顿法
        while (error > eps)
            f = func(x);
            g = dfunc(x);
            G = d2func(x);
            p = -G\g;
            x = x + p;
            step=step+1;
            if (steps > MAX_IT)
                break;
            end
            error = norm(g);
        end
    	x1=x;
    end
    
    function alpha = backtracking(func, x, f, df, p, c, rho, alpha0)
        alpha = alpha0;
        while (func(x(1) + alpha * p(1), x(2) + alpha * p(2)) > f + c * alpha * df' * p)
            alpha = alpha * rho;
        end
    end
    

    其中func、gfunc和hess需要自行解析计算,func的接口只有x,gfunc和hess没有输入参数。(这边要注意,使用wolfe条件时,alpha可以恒取1)

    启发

    牛顿法实际上是在改进真解,用少量次数的迭代即可实现一阶方法上千次的迭代效果,首先系数矩阵必须要正定,否则牛顿法不能保证收敛。

    修正牛顿法

    牛顿法最大的问题在于,系数矩阵必须要正定,那么如果系数矩阵不正定,则BkB_k改成正定(modification),下面是修改系数矩阵的算法框架:

    初值x0x_0
    for k=0,1,2,…
            令 Bk=2fk+EkB_k=\nabla^2 f_k+E_k,其中EkE_k为修正项,使得BkB_k充分正定。
            求解 Bkpk=fkB_kp_k=-\nabla f_k
            xk+1=xk+αkpkx_{k+1}=x_k+α_kp_k(其中αkα_k在wolfe条件时可以取1)
    end

    好了,现在我们需要解决四件事,就可以实现修正牛顿法的运用:
    1.判定2fk\nabla^2 f_k是否正定;
    2.解方程组Bkpk=fkB_kp_k=-\nabla f_k
    3.如何构建EkE_k
    4.如何使得Ek\vert\vert E_k\vert\vert最小;

    特征值修正(eigenvalue modification)

    谱分解

    首先我们先对对称矩阵BkB_k正交分解(householder等),得到正交阵Q,和对角阵V,然后就可以得到BkB_k的所有特征值,我们知道,正定矩阵所有的特征值都是充分大的正数,即λmin>δ>>eps>0λ_{min}>δ>>eps>0,当出现负的特征值时,我们添加一个修正项EkE_k使得特征值大于等于δ。此时的Ek\vert\vert E_k\vert\vert的Frobenius范数最小。
    即用Matlab中的eig()函数求出特征值后,直接对特征值修改即可。

    单位增量法

    谱分解的问题在于,其真正改变的是特征值,所以对BkB_k的改动是比较的,当我们不希望BkB_k发生很大的变动时,我们就使用单位增量法。单位增量法直接对BkB_k添加一个修正项EkIE_kI,使得其正定。
    首先,我们对BkB_k进行cholesky分解:

    Bk=LDLTB_k=LDL^T

    L是对角线均为1的下三角阵,D为对角阵,若BkB_k不定,D的对角元diid_{ii}会过大。
    下面是单位增量法的Matlab代码:

    function[L,D]=modification(A,delta,beta)
    	if(norm(A-A')>eps
    		return;
    	end
    	n=size(A,1);
    	d=zero(n,1);
    	L=zero(n);
    	C=zero(n);
    	theta=zeros(n,1);
    	for j = 1:n
    		C(j,j) = A(j,j)-sum(d(1:j-1)'.*L(j,1:j-1).^2);
    		for i = j+1:n
    			C(i,j) = A(i,j)-sum(d(1:j-1)'.*L(i,1:j-1).*L(j,1:j-1));
    			absjj=abs(C(i,j));
    			if theta < abs(C(i,j))
    				theta = abs(C(i,j));
    			end
    		end
    		d(j) = max([abs(C(j,j)), (theta/beta)^2, \delta]);
    		for i = j+1:n
    			L(i,j) = C(i,j)/d(j);
    		end
    		L(j,j) = 1.0;
    	end
    	D=diag(d);
    end
    

    单位增量法得到的BkB_kBk+EkB_k+E_k在形式上很接近,但其特征值完全不同,所以两种方法各有优势,可根据情况自行选择。

    拟牛顿法

    如果你的数据维数过大或者无法承受计算二阶矩阵的消耗,这边也可以使用拟牛顿法来计算下降方向,当然拟牛顿法也有其缺陷,下面我们来分析一下。
    首先我们介绍一下割线法,用弦的斜率近似代替目标函数的切线斜率,下面给出割线法的公式

    xk+1=xkf(xk)xk1xkf(xk1)f(xk)x_{k+1}=x_k-f(x_k)*\frac{x_{k-1}-x_k}{f(x_{k-1})-f(x_k)}

    这在本质上是计算函数的数值微分,但这种方法在接近收敛时会出现数值不稳定的情况,当接近收敛时,舍入误差占比变大,数值会发生很大的起伏变化。
    由此我们可以推导出拟牛顿法的公式

    xk+1=xkf(xk)xk1xkf(xk1)f(xk)x_{k+1}=x_k-\nabla f(x_k)*\frac{x_{k-1}-x_k}{\nabla f(x_{k-1})-\nabla f(x_k)}

    这里不在需要计算其hessian矩阵,由于hessian矩阵是n2n^2级别的,拟牛顿法对于大规模问题来说是非常节约资源的方法

    于是我们知道了

    2f(xk)(xk+1xk)fx+1fk\nabla ^2f(x_k)*(x_{k+1}-x_k)\approx\nabla f_{x+1}-\nabla f_k

    现在的情况与牛顿发不同,f(xk)\nabla f(x_k)并不知道,这是一个不定方程组:

    Bk+1sk=ykB_{k+1}*s_k=y_k

    这里的Bk+1B_{k+1}n2n^2阶的矩阵,而我们只有n个方程,下面有SR1、BFGS等方法来求解Bk+1B_{k+1}
    详见 拟牛顿法的下降方向计算(一)
    此时,局部二次型的pKNp_K^N方程变为

    pKN=(Bk)1fkp^N_K=-(B_k)^{-1}\nabla f_k;

    这里还有一条路,就是去构建(Bk)1(B_k)^{-1},这时我们不需要再去求解线性方程组(这里设Hk=(Bk)1H_k=(B_k)^{-1}),这里BkB_k=I时,就是最速下降。

    pk=Hkfkp_k=-H_k*\nabla f_k

    这里有拟BFGS等方法来求解HkH_k,详见 拟牛顿法的下降方向计算(二)

    github代码地址

    展开全文
  • 2阶实对称矩阵特征值和特征向量的简单求解方法。因为2阶实对称矩阵的特殊性,可以直接使用初中的2阶方程 x = -b±sqrt(b*b -4*a*c) / 2*a进行求解。这个方法在求解平面点的hessian矩阵很有用处。
  • 对于一个二阶矩阵AAA,它的特征值为λ1\lambda_1λ1​和λ2\lambda_2λ2​,对应的特征向量为α1\alpha_1α1​和α2\alpha_2α2​。考虑线性变换,[x1x2]=A[u1u2]\begin{bmatrix}x_1\\x_2\end{bmatrix}=A\begin{b...
  • 如何理解矩阵特征值

    万次阅读 2016-05-19 12:31:15
    李浩 ,FPA蓝色 / EE。...特征值在很多领域应该都有自己的用途,它的物理意义到了本科高年级或者研究生阶段涉及到具体问题的时候就容易理解了,刚学线性代数的话,确实抽象。 ——————————————————
  • 理解矩阵特征值与特征向量

    千次阅读 2014-12-25 18:50:33
    N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。特征值越大,说明矩阵在对应的特征向量上的方差越大,功率越大,信息量越多。 (1)应用到最优化中,意思就是对于R的二次型,自变量在这...
  • 深入理解矩阵特征值

    2013-10-25 10:54:05
    从线性空间的角度看,在一个定义了内积的线性空间里,对...N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。 特征值越大,说明矩阵在对应的特征向量上的方差越大,功率越大,信息量越多。
  • 眼底视网膜图像增强方法(五)Hessian矩阵最大特征值说明在上一篇文章中讲到...因此,血管点处的Hessian矩阵特征值一大一小,血管交叉点处Hessian矩阵特征值两个都很大,背景点处Hessian矩阵的特征值两个都很小。frangi
  • 第8章 矩阵特征值问题计算

    千次阅读 2012-06-05 21:59:08
    矩阵特征值问题计算 8.1 引 言 物理、力学和工程技术中的很多问题在数学上都归结为求矩阵特征值问题。例如,振动问题(大型桥梁或建筑物的振动、机械的振动、电磁振荡等),物理学中某些临界值的确定...
  • §6.5 对称矩阵,实特征值,正交特征向量Symmetric Matrices, Real Eigenvalues, Orthogonal EigenvectorsMIT公开课《微分方程和线性代数》6.5 对称矩阵、实特征值和正交特征向量​v.youku.com在线性微分方程组中会...
  • 定理:2阶实对称矩阵H的特征值是实数 H=[a,b;b,c] a,b,c是实数,λ 是特征值 A=[a-λ,b;b,c-λ] 特征值求解方法为:(a- λ )(c- λ) - b2 = 0 求解方程得到两个根为:λ=(a+c)±(a+c)2-4(ac-b2)2 ...
  • 二、矩阵二阶偏导数  1. X轴方向上二阶偏导  2. Y轴方向上二阶偏导  3.第一次在X轴方向上求偏导,第二次在Y轴方向上求偏导  4.第一次在Y轴方向上求偏导,第二次在X轴方向上求偏导  5.结论 三、拉普拉斯...
  • 特征值矩阵,有矩阵A的所有特征值放在对角线位置组成的对角矩阵。   矩阵对角化:AS = S(讲AS展开可以推导出这个公式) 上式两边的左边同时乘以S-1,得出S-1AS = 。这就是方阵的对角化公式 上式两边的右边...
  • 口算三阶矩阵特征值和特征向量

    千次阅读 2020-05-18 13:37:34
    注意到第一行加第二行等于第三行 A-E=0,0,-2 令 A= (1,1,1)^T* (1,1,1) + 3满足题设,所以A=
  • 若同阶矩阵A B的特征值之一分别为x ,y那么A+B的特征值是不是有一个为x+y答:特征值的个数不一定只有一个,故一般说A的特征值之一为x,或x是A的一个特征值,或x是A的特征值之一。因此我将题目略作了修改,同意不?...
  • 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是“前一个矩阵的行乘以后一个矩阵的列”,还会一点的可能还会说“前一个矩阵的列数等于后一个矩阵的行数才能相乘”,然而,这里却会和你说——那都...
  • 利用QR算法求解矩阵特征值和特征向量

    万次阅读 多人点赞 2015-03-05 22:02:55
    利用QR算法求解矩阵特征值和特征向量为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破...折腾了好久 1.我要求...
  • 待求特征值和特征向量的矩阵A:\n " ); 27 printMatrix(a, M, M); 28 printf( " \n " ); 29 printf( " 初始向量u0:\n " ); 30 printVector(uk0, M); 31 printf( " \n " ); 32 printf( " 第几...
  • 在计算出A的基础上,先利用Householder矩阵矩阵A作相似变换,把A化为拟上三角矩阵A(n-1),然后进行带双步位移的QR分解(其中Mk的QR分解可调用子程序),通过调用一元二次方程的根解二阶矩阵特征值,最后计算出...
  • 矩阵特征值、秩

    千次阅读 2015-03-08 16:26:39
    矩阵特征值定义 设A是n阶方阵,如果数λ和n维非零列向量x使关系式 AX=λXAX=λX (1) 成立,那么这样的数λ称为矩阵A特征值,非零向量x称为A的对应于特征值λ的特征向量.(1)式也可写成, (A−λE)X=0( A-λE)...
  • 将两种测量闭环特征值灵敏度方法有机地结合起来, 给出一个新的优化性能指标, 此指标的优化过程完全依赖于特征结构配置中的设计自由度.为进一步提高闭环系统的鲁棒稳定性, 闭环极点也作为设计自由度的一部分参与优化....
  • 利用Lax对非线性化方法,讨论二阶矩阵特征值问题。利用位势函数与特征函数之间的Bargmann约束,将二阶矩阵特征值问题非线性化,获得一个新的有限维Hamilton系统和发展方程族解的对合表示。
  • 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中....
  • 矩阵的条件数的函数:cond(A) 求矩阵特征值和特征向量:eig函数 特征值的几何意义:
  • 本篇博客针对三种联系十分紧密的矩阵分解(Schur分解、特征值分解、奇异值分解)依次介绍,它们的关系是Schur→EVD→SVDSchur\rightarrow{}EVD\rightarrow{}SVDSchur→EVD→SVD,也就是说由Schur分解可以推导出EVD,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,776
精华内容 5,110
关键字:

二阶矩阵特征值