matlab中,我用eig c 求出了矩陣的最大特徵值和對應的特徵向量,如何將進行歸一化呢

2022-04-19 12:46:57 字數 5941 閱讀 2954

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...