用matlab求矩陣的最大特徵值怎麼求?AHP分析法中,最大特徵值有虛部嗎?是否可以求出所有特徵值找最大的?
01-07
求最大或者前k大特徵值建議使用eigs函數,該函數對於大的稀疏的矩陣會比用eig求出所有特徵值之後再排序要快很多eigs有很多參數可調以改善性能的,詳細用法參見幫助文檔
該函數的演算法參見文檔末尾tips部分給出的文獻
求出所有特徵值找最大的顯然不是一個 efficient 的方法。數值方法裡面,有個很基本的演算法是專門求 dominant eigenvalue 的—— power method.
Power method 的基本思想非常簡單。假設我們想要求矩陣的最大特徵值(這裡指的是絕對值最大),從任意一個向量出發,不停地用矩陣作用在上,得到的向量序列會不斷地收斂到最大特徵值對應的特徵向量上。對應的特徵值也就很容易能求出來。
推導參見wiki:Power iteration
結論就是:假設已經進行了次迭代,我們從出發了,第一次迭代得到, 第二次得到, 那麼最大特徵值近似地或者,後者有個名字叫 Raleigh-Rietz Quotient。
----
不過有一種可能,就是我們有兩個互為復共軛的 dominant eigenvalue。 我看了下 wiki,似乎沒有寫這種情況?這種情況下也很簡單。假設我們迭代了次之後,就已經有以下近似:
跟是特徵值,因為它們共軛,所以存在,使得:
跟是兩個目前未知的參數,那麼我們就有
也就是說對向量 (呃這是一個列向量,按 MatLab 的寫法),成立:
虛部全是0啊
Format long g
最大特徵值的話用乘冪法
對稱矩陣特徵根都在實軸上。
用eig函數求特徵值,求完之後sort一下不就可以找到最大的了么……
我也在查這個問題,目前只找到這個--&>http://blog.pluskid.org/?p=720
推薦閱讀:
※matlab矩陣對角元元素修改問題?
※幾億的數據讀取作圖怎樣做到速度快呢?
※用matlab實現樂曲演奏的難度?在網上聽到一首用matlab編寫的卡農,求分析一下實現及難度所在?
※Matlab啟動後,current folder顯示processing,然後就很卡,不能用了怎麼辦?
※matlab如何很好的處理比較大的數據?