matlab中對復對稱矩陣A qr分解結束後,怎樣求特徵值特徵向量

2021-05-22 10:44:17 字數 6536 閱讀 8916

1樓:在野之雲

轉換陣就是特徵向量組成的呀。直接把轉換陣拿來就是特徵向量

2樓:幻想波波

兄弟做任務來了,給一個答案,我就做完了,謝謝!

急求,matlab中, 已知矩陣a,已完成對a的qr分解,下一步求a的特徵值和特徵向量,程式怎麼編寫?

3樓:匿名使用者

樓主的問題是自己寫程式完成矩陣的qr分解,既然是迭代實現qr分解,就與矩陣論中說的計算特徵值和特徵向量的方法有些區別了。大體的步驟應該是首先將矩陣化成雙對角矩陣,然後追趕計算特徵值和特徵向量,程式**可以參考 徐士良編的 常用數值演算法 c語言描述

4樓:匿名使用者

求特徵向量用matlab中eig命令

第三個問題應該是階段誤差的原因吧!

matlab中如何用qr函式求特徵值和特徵向量,矩陣是mxn

5樓:匿名使用者

1.矩陣qr分解直接用函式qr就可以了。qr函式適用於不是方針的矩陣分解。

2.用法[q,r]=qr(a)得到q是mm矩陣,r是mn.

3.排列大小的可以採用sort函式。

具體情況建議開啟matlab 幫助瀏覽器詳細看qr函式的用法。

6樓:電燈劍客

先不要考慮matlab了, 先回去複習一下線性代數, 單個的矩陣但不是方陣何談特徵值

即使是方陣, qr分解也不是直接用來求特徵值和特徵向量的.

儘管求所有特徵值和特徵向量最重要的演算法是qr演算法, 數學上可以解釋為反覆做qr分解, 但實際上也並不該qr這個函式來實現.

當然, 如果你一定想用qr, 那麼可以反覆迭代[q,r]=qr(a); a=q'*a*q;

直到a收斂到對角塊不超過2階的分塊上三角陣.

至於求特徵向量, 對每個特徵值各解一次方程組就行了.

就講這些, 即使你看不明白, 我也不會繼續回答了, 這純粹是浪費時間.

如何計算矩陣a關於矩陣b的廣義特徵值(matlab實現)

7樓:匿名使用者

若b可逆比較好計算,如下:

[v,d]=eig(a/b)

d是廣義特徵值構成的對角矩陣,v是相應特徵向量。進一步用qr分解還可以得到正交基,不過你只要特徵值,所以就不用了。

matlab程式設計 用乘冪法近似計算矩陣a的主特徵值和特徵向量,其中a=[2 -1 0;-1 2 0

8樓:匿名使用者

雅克賓方法

clc;

clear all;

%矩陣a

a=[2 ,-1,0;-1,2,-1;0,-1,2]%取矩陣a的維數

n=max(size(a));

%迭代誤差

eps=1e-5;

r=1;

%最大迭代次數為100

m=100;

k=1;

%小於迭代次數或迭代誤差進入計算

while r>=eps & k<=m

p=1;

q=1;

amax=0;

for i=1:n

for j=1:n

if i~=j & abs(a(i,j))>amaxamax=abs(a(i,j));

p=i;

q=j;

endend

endr=amax;%計算當前迭代誤差

%以下為構造正交矩陣u

l=-a(p,q);

u=(a(p,p)-a(q,q))/2;

if u==0

w=1;

else

w=sign(u)*l/sqrt(l*l+u*u);

ends=-w/sqrt(2*(1+sqrt(1-w*w)));

c=sqrt(1-s*s);

u=eye(n);

u(p,p)=c;

u(q,q)=c;

u(p,q)=-s;

u(q,p)=s;

%旋轉計算

a=u'*a*u%顯示每步計算a的計算結果k=k+1;

endif k>m

disp('a矩陣不收斂');

else

for i=1:n

d(i)=a(i,i);

enddisp('a特徵值為:');

dend

qr方法以a=[1 -1 2;-2 0 5;6 -3 6]為例不改了,自己改

構造矩陣

>>a=[1 -1 2;-2 0 5;6 -3 6]a =1 -1 2

-2 0 5

6 -3 6

將矩陣a變換為相似的擬上三角矩陣(即為上hessenberg矩陣)>>h=hess(a)

h =1.0000 2.2136 -0.

31626.3246 4.8000 -1.

40000 6.6000 1.2000對h矩陣作qr分解:

>>[q,r]=qr(h)

q =-0.1562 0.2101 -0.

9651-0.9877 -0.0332 0.

15260 0.9771 0.2127r =-6.

4031 -5.0868 1.43220 6.

7546 1.15260 0 0.3468作50次迭代計算(具體迭代次數可依具體實驗矩陣進行)>>for i=1:

50b=r*q;

[q,r]=qr(b);

end>>r*q

ans =

5.0000 7.4864 0.

5929-0.0000 3.0000 4.

96000 0.0000 -1.0000由以上結果可得到迭代計算的特徵值為,可見基本qr法的迭代精度還是很高的.

求三對稱矩陣特徵值 用二分法來解的matlab程式 ,有些高校有上數值線性代數的

9樓:江南

program ex0001 integer n

real x1,x2,x,f1,f2,fx,eps

real,allocatable::d(,e(

write(*,*) "please enter n:" read(*,*) n

allocate(d(n),e(n-1)) eps=1.0e-6 fx=1.0 do j=1,n d(j)=-2 end do do j=1,n-1 e(j)=1 end do

!write(*,*) "please enter array d and e:" !

read(*,*) d,e a1=d(1)-e(1) a2=d(1)-2*e(1) a3=d(1)+e(1) a4=d(1)+2*e(2) y1=min(a1,a2)

- 2 -

y2=max(a4,a3) y=(y2-y1)/n x1=y1 x2=y1+y

write(*,*)"矩陣的特徵值為:" do m=1,n temp=x2

10 if(abs(fx)>eps) then x=(x1+x2)/2

f1=mvalue(x1,n,d,e) f2=mvalue(x2,n,d,e) fx=mvalue(x,n,d,e)

if (fx*f1>0) then x1=x else x2=x end if

go to 10 end if

print*,"--------------------" write(*,*) x x1=temp x2=temp+y z=(x1+x2)/2

fx=mvalue(z,n,d,e) end do

print*,"--------------------"

contains

real function mvalue(x,n,d,e) integer n,i real x

real d(n),e(n-1),s(n) s(1)=x-d(1)

s(2)=(x-d(1))*(x-d(2))-e(1)**2

- 3 -

do i=3,n

s(i)=(x-d(i))*s(i-1)-e(i-1)**2*s(i-2) end do

mvalue=s(n) return

end function mvalue

end這是程式,沒排版的,自己排吧,絕對能用

qr分解怎麼求特徵向量,求矩陣e的特徵值和特徵向量

10樓:馥馥幽襟披

樓主的問題是自己寫程式完成矩陣的qr分解,既然是迭代實現qr分解,就與矩陣論中說的計算特徵值和特徵向量的方法有些區別了。大體的步驟應該是首先將矩陣化成雙對角矩陣,然後追趕計算特徵值和特徵向量,程式**可以參考 徐士良編的 常用數值算...

11樓:匿名使用者

qr分解迭代求矩陣a的特徵值,每次qr分解後r對角元必須全為正,否則qr分解不唯一。若遇到r對角有負時,構造一個(準單位矩陣d),對角元1的(+-)號由r的正負號決定。然後求出 qo=qd,ro=(d逆)r。

這裡ro已經滿足對角元全正要求,且qoro=迭代矩陣ak。如此繼續分解迭代可求出a特徵值。

12樓:溫振華詩詞

對於任意方陣a,首先求出方程|λe-a|=0的解,這些解就是a的特徵值,再將其分別代入方程(λe-a)x=0中,求得它們所對應的基礎解系,則對於某一個λ,以它所對應的基礎解係為基形成的線性空間中的任意一個向量,均為λ所對應的特徵向量。

matlab用qr方法怎麼求特徵值,把程式寫出來,謝謝

13樓:匿名使用者

function l = rqrtz(a,m)%qr演算法求矩陣全部特徵值

%已知矩陣:a

%迭代步數:m

%求得的矩陣特徵值:l

a = hess(a);

for i=1:m

n = size(a);

n = n(1,1);

u = a(n,n);

[q,r]=qr(a-u*eye(n,n));

a = r*q+u*eye(n,n);

l = diag(a);

end------------------------------------

a=[0 5 0 0 0 0;1 0 4 0 0 0;0 1 0 3 0 0;0 0 1 0 2 0;0 0 0 1 0 1;0 0 0 0 1 0]

a =0 5 0 0 0 01 0 4 0 0 00 1 0 3 0 00 0 1 0 2 00 0 0 1 0 10 0 0 0 1 0>> rqrtz(a,50)

ans =

-3.2030

3.2030

-1.8837

1.8837

-0.6167

0.6167

>> eig(a)

ans =

-3.3243

3.3243

-1.8892

-0.6167

1.8892

0.6167

14樓:匿名使用者

看matlab幫助檔案,裡邊都有例程,電腦沒有安裝matlab,懶得安裝了,但是我知道幫助檔案裡有這個例子

15樓:言清韻柯北

前面的函式是求特徵值的函式,後面的是呼叫的例子和驗證functionl=

rqrtz(a,m)

%qr演算法求矩陣全部特徵值

%已知矩陣:a

%迭代步數:m

%求得的矩陣特徵值:la=

hess(a);

fori=1:mn=

size(a);n=

n(1,1);u=

a(n,n);

[q,r]=qr(a-u*eye(n,n));a=r*q+u*eye(n,n);l=

diag(a);

enda=[050

000;1040

00;010

300;0010

20;000

101;0000

10]a=

0500

0010

4000

0103

0000

1020

0001

0100

0010

>>rqrtz(a,50)

ans=

-3.2030

3.2030

-1.8837

1.8837

-0.6167

0.6167

>>eig(a)

ans=

-3.3243

3.3243

-1.8892

-0.6167

1.8892

0.6167

matlab中A 1 2 3 4 5 6 7 8 9取矩陣A 6 表示什麼

大括號是cell結構 小括號是矩陣結構 a是cell結構,你可以把它看成是很多子矩陣組成的新矩陣。每一個位置就是一個矩陣,每一個矩陣下的某個位置就是一個數值 matlab裡a 1 2 3 4 5 6 7 8 9 a 1 2,2 3 什麼意思 a 1 2,2 3 表示a的第1 2行,第2 3列的元素,...

matlab中A是194 196 4維的矩陣,請問如何處理使其變為4 196 194的矩陣

for i 1 4 b i,a i end 你好用reshape命令可以辦到,命令 reshape a,4,194,194 matlab一個n m的矩陣變成一維矩陣,再怎麼恢復成原來的n m矩陣 這個要看你是怎樣變成一維矩陣的了,若是這樣 a b a 則可這樣改回來 c reshape b,size...

matlab中怎樣建立對角矩陣,matlab中怎樣建立一個對角矩陣

材料 工具 電腦 matlab軟體 1 首先開啟電腦上的 matlab 軟體,在命令列視窗輸入一個向量n,向量n有4個元素。接著使用diag函式生成對角矩陣。2 diag n,k 可以把向量放在第k條對角線上,k為正值,表示右上。k為負值,則表示左下。在命令列輸入diag n,2 即可把向量放在右上...