1樓:匿名使用者
>> c=[1 5 0.5;0.2 1 1/7;2 7 1];
[x,lumda]=eig(c);
r=abs(sum(lumda));
n=find(r==max(r));
max_lumda_c=lumda(n,n) %最大特徵根max_x_c=x(:,n); %最大特徵根的對應的特徵向量max_x_c_1=max_x_c/norm(max_x_c) %歸一化
得到結果:*************************=max_lumda_c =
3.0142
max_x_c_1 =
0.4877
0.1099
0.8661
***********************************
和為1,將最後一句改為:
max_x_c_1=max_x_c/sum(max_x_c)
2樓:電燈劍客
在你的**後面加一句
v(:,1)=v(:,1)/norm(v(:,1),2)
matlab中如何求矩陣的特徵值和特徵向量
3樓:枕風宿雪流年
具體步驟分析如下:
1、第一步我們首先需要知道計算矩陣的特徵值和特徵向量要用eig函式,可以在命令列視窗中輸入help eig,檢視一下eig函式的用法,如下圖所示:
2、第二步在命令列視窗中輸入a=[1 2 3;2 4 5;7 8 9],按回車鍵之後,輸入[x,y]=eig(a),如下圖所示:
3、第三步按回車鍵之後,得到了x,y的值,其中x的每一列值表示矩陣a的一個特徵向量,這裡有3個特徵向量,y的對角元素值代表a矩陣的特徵值,如下圖所示:
4、第四步如果我們要取y的對角元素值,可以使用diag(y),如下圖所示:
5、第五步按回車鍵之後,可以看到已經取出y的對角線元素值,也就是a矩陣的特徵值,如下圖所示:
6、第六步我們也可以在命令列視窗help diag,可以看到關於diag函式的用法,如下圖所示:
4樓:子衿悠你心
可以運用eig函式求特徵值和特徵向量。
e=eig(a):求矩陣a的全部特徵值,構成向量e。
[v,d]=eig(a):求矩陣a的全部特徵值,構成對角陣d,並求a的特徵向量構成v的列向量。
[v,d]=eig(a,'nobalance'):與第2種格式類似,但第2種格式中先對a作相似變換後求矩陣a的特徵值和特徵向量,而格式3直接求矩陣a的特徵值和特徵向量。
例項:求矩陣a=[1,2;2,1]的特徵值和特徵向量。
拓展說明:
在matlab中,還有個函式eigs,可以求特徵向量和特徵值的子集。
d = eigs(a) %求稀疏矩陣a的6個絕對值最大特徵值d,d以向量形式存放。
d = eigs(a,k) %返回k個最大特徵值
5樓:百度使用者
a=[1 1/4;4 1]
a =1.0000 0.2500
4.0000 1.0000
>> [v,d]=eig(a)
v =0.2425 -0.2425
0.9701 0.9701
d =2 0
0 0
按照這道題的計算過程算就可以了,eig是求特徵值和特徵向量命令,v是特徵向量,是列向量,d是特徵值矩陣,主對角線元素就是特徵值,與特徵向量的列對應的
6樓:匿名使用者
[v.d]=eig(a) a為矩陣
我用matlab中eig函式做了主成分分析,但是得到的特徵值和原來的矩陣參量之間是什麼對應關係那?
7樓:深海
不知道你的msa2是怎麼回事
用[v,d]=eig(a)就好了,得到v就是特徵向量,d得到是特徵值對應的對角陣
我用matlab算矩陣特徵值特徵向量,直接用eig函式,可是算出來的矩陣特徵向量有虛數,該怎麼辦?
8樓:匿名使用者
特徵向量和特bai徵值裡du面有複數很正常啊,並沒有什zhi麼問題。
求用matlab計算出我**中矩陣的最大特徵值及其對應的特徵向量,謝謝謝
9樓:我行我素
a=[1 1/5 1/7 3;5 1 1/7 7;7 7 1 9;1/3 1/7 1/9 1];
[v,d]=eig(a);
m=d(1,1)%最大特徵值
n=v(:,1)%最大特徵值對應的特徵向量結果:m =
4.4420
n =0.1026
0.2958
0.9483
0.0528
用matlab求矩陣的最大特徵值及對應的特徵向量
10樓:匿名使用者
>> a=[1, 1/3,1/3,1/5,1/9;
3, 1, 1, 1/2,1/3;
3, 1, 1, 1/2,1/3;
5, 2, 2, 1, 1/2;
9, 3, 3, 2, 1];
[x,lumda]=eig(a);
r=abs(sum(lumda));
n=find(r==max(r));
max_lumda=lumda(n,n)
max_x=x(:,n)
輸出結果:
max_lumda =
5.0097
max_x =
0.0875
0.2534
0.2534
0.4625
0.8063 把a換成你自己的矩陣就是了
用matlab求解矩陣的最大特徵值及對應的正規化特徵向量並做一致性檢驗
11樓:
[v, d] = eig(a);
d = diag(d); % 特徵值
[d, idx] = sort(d, 'descend');
v = v(:, idx); % 特徵向量矩陣這樣,d(1)是最大特徵值,v(:,1)是最大特徵向量只會這些了。
12樓:嚇棟棟
你說的應該是層次分析中的一致性檢驗吧。下面是我準備美賽建模時提前寫的一個程式。
輸入相應矩陣後自動判斷是否通過一致性檢驗。若通過則給出最大特徵值和標準化特徵向量。
結果為「pass」,恭喜通過一致性檢驗。
輸入要判定的矩陣
a=[1,1/2,2,1/3,3,1/4;2,1,3,1/2,4,1/3;1/2,1/3,1,1/4,2,1/5;3,2,4,1,5,1/2;1/3,1/4,1/2,1/5,1,1/6;4,3,5,2,6,1]
特徵向量及特徵值為:
v =-0.2010 -0.1745 + 0.
0436i -0.1745 - 0.0436i 0.
2290 - 0.0656i 0.2290 + 0.
0656i -0.2957
-0.3188 -0.1092 + 0.
2551i -0.1092 - 0.2551i -0.
2238 - 0.2904i -0.2238 + 0.
2904i 0.3946
-0.1280 -0.0814 - 0.
0764i -0.0814 + 0.0764i -0.
0090 + 0.1722i -0.0090 - 0.
1722i 0.2061
-0.5003 0.2477 + 0.
3589i 0.2477 - 0.3589i -0.
2917 + 0.4246i -0.2917 - 0.
4246i -0.5680
-0.0855 0.0211 - 0.
0954i 0.0211 + 0.0954i -0.
0614 - 0.0801i -0.0614 + 0.
0801i -0.0895
-0.7642 0.8237 0.
8237 0.7096 0.7096 0.
6195
d =6.1225 0 0 0 0 0
0 0.0162 + 0.8535i 0 0 0 0
0 0 0.0162 - 0.8535i 0 0 0
0 0 0 -0.0594 + 0.1353i 0 0
0 0 0 0 -0.0594 - 0.1353i 0
0 0 0 0 0 -0.0361
cr =
0.0198
pass
權向量為
b =0.1006
0.1596
0.0641
0.2504
0.0428
0.3825
13樓:連霞禮雲
給你提供一種很專業的數值演算法「冪法」,這是專門用來算矩陣最大特徵值的經典演算法。「冪法「的演算法過程其實很簡單,就是拿一個向量,不停地用a乘,最後就會慢慢趨近於最大特徵值對應的特徵向量。「冪法」在矩陣擁有唯一最大特徵值的前提下,迭代足夠多次,就一定能收斂的,可以用線性代數的矩陣相似性原理證明。
我這段**迭代了100次,取了隨便一個向量[10000
0]'作為初始值(一般是取個隨機向量,其實沒啥大差別)。
a=[1
11/433
3;111/433
3;441
555;1/3
1/31/512
2;1/3
1/31/5
1/21
3;1/3
1/31/5
1/21/3
1];v=[100
000]';
fori
=1:100
v=a*v;
v=v/sqrt(sum(v.^2));
endlamda=sqrt(sum((a*v).^2))/sqrt(sum(v.^2))
v結果:
lamda
=6.3526v=
0.3242
0.3242
0.8571
0.1612
0.1414
0.0963
你會發現,和內建演算法的eigs命令求出的結果是一樣的。
>>eigs(a)
ans=
6.3526
0.0737
-1.4350i
0.0737
+1.4350i
-0.2500
-0.4319i
-0.2500
+0.4319i
-0.0000
最大特徵值同樣是6.3526。
matlab中的bar函式怎麼用
它共有四種形式 bar,bar3,barh 和bar3h,其中bar 和bar3 分別用來繪製二維和三維豎直方圖,barh 和b ar3h 分別用來繪製二維和三維水平直方圖,呼叫格式是 bar x,y 其中x 必須單調遞增或遞減,y 為n m 矩陣,視覺化結果為m 組,每 組n 個垂直柱,也就是把y...
matlab中if語句後的條件判斷可以用或者and的連
還可以用單符號,例如 表示兩個邏輯值,而 表示兩個邏輯矩陣,可以用 any,all 等來判斷邏輯矩陣的一些情況 if x 5 y 5 且 if x 5 y 8 或 matlab 中if語句後的條件判斷可以用 或者and的連線表示式麼?a b或函式and a,b 表示a和b做邏輯與運算,當a b全為非...
matlab中,我要選擇向量中的部分值賦值到另向量中
b a 1 10 a 20 25 a 51 60 matlab中如何給一個矩陣中的某幾個特定位置賦值 用sub2ind a zeros 5 i 2 3 4 j 1 4 2 a sub2ind size a i,j 1 a 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0...