1樓:匿名使用者
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
2樓:匿名使用者
看matlab幫助檔案,裡邊都有例程,電腦沒有安裝matlab,懶得安裝了,但是我知道幫助檔案裡有這個例子
3樓:言清韻柯北
前面的函式是求特徵值的函式,後面的是呼叫的例子和驗證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中如何用qr函式求特徵值和特徵向量,矩陣是mxn
4樓:匿名使用者
1.矩陣qr分解直接用函式qr就可以了。qr函式適用於不是方針的矩陣分解。
2.用法[q,r]=qr(a)得到q是mm矩陣,r是mn.
3.排列大小的可以採用sort函式。
具體情況建議開啟matlab 幫助瀏覽器詳細看qr函式的用法。
5樓:電燈劍客
先不要考慮matlab了, 先回去複習一下線性代數, 單個的矩陣但不是方陣何談特徵值
即使是方陣, qr分解也不是直接用來求特徵值和特徵向量的.
儘管求所有特徵值和特徵向量最重要的演算法是qr演算法, 數學上可以解釋為反覆做qr分解, 但實際上也並不該qr這個函式來實現.
當然, 如果你一定想用qr, 那麼可以反覆迭代[q,r]=qr(a); a=q'*a*q;
直到a收斂到對角塊不超過2階的分塊上三角陣.
至於求特徵向量, 對每個特徵值各解一次方程組就行了.
就講這些, 即使你看不明白, 我也不會繼續回答了, 這純粹是浪費時間.
a=(2,-1,0;-1,2,-1;0,-1,2) 在matlab中按雅克賓方法和qr方法求矩陣特徵值 帶程式 謝謝
6樓:白楊龍
雅克賓方法
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中, 已知矩陣a,已完成對a的qr分解,下一步求a的特徵值和特徵向量,程式怎麼編寫?
7樓:匿名使用者
樓主的問題是自己寫程式完成矩陣的qr分解,既然是迭代實現qr分解,就與矩陣論中說的計算特徵值和特徵向量的方法有些區別了。大體的步驟應該是首先將矩陣化成雙對角矩陣,然後追趕計算特徵值和特徵向量,程式**可以參考 徐士良編的 常用數值演算法 c語言描述
8樓:匿名使用者
求特徵向量用matlab中eig命令
第三個問題應該是階段誤差的原因吧!
用qr方法怎樣求矩陣的特徵值?
9樓:匿名使用者
對稱矩陣用雅可比迭代法求特徵值;一般矩陣 (非對稱矩陣) 用qr迭代法求特徵值。看下面例題。
10樓:匿名使用者
a=q r
a1=r q=q1 r1
a2=r1 q1=q2 r2
...注意所有的a,a1,...相似(a1=rq=q^t a q =q^ a q),具有相同的特徵值。
在一定條件下最終收斂到一個上三角陣,把對角線上的元拿出來就是特徵值。事實上,因為a是對稱矩陣,a1=q1^t a q 所以a1是對稱陣(顯然a1^t=a1),以此類推,a2,a3...都是對稱陣。
所以當a是對稱陣時an收斂於對角陣(既是上三角陣又是對稱陣,所以是對角陣),對角線上的元素就是特徵值。
matlab中對復對稱矩陣a qr分解結束後,怎樣求特徵值特徵向量? 30
11樓:在野之雲
轉換陣就是特徵向量組成的呀。直接把轉換陣拿來就是特徵向量
12樓:幻想波波
兄弟做任務來了,給一個答案,我就做完了,謝謝!
用matlab求切線,怎麼用matlab在曲線上畫切線
求原函式在 的切線?我假設是函式在點 x0,y0 切線 1對原函式進行一專階求導 matlab實現diff n,t,1 屬實現 2把 x0,y0 代入求導後的方程,得到斜率 matlab實現n x0 t 1307.7011 1 exp 1.5422 0.72423 t 3寫出切線方程並化簡 matl...
怎麼用matlab畫散點圖,用matlab畫散點圖
一般有兩種方法 一 scatter 1.scatter x,y x和y是資料向量,以x中資料為橫座標,以y中資料位縱座標描繪散點圖,點的形狀預設使用圈。例子 x 1 10 y x rand size x scatter x,y 2.scatter filled 描繪實心點。3.scatter3 x,...
怎麼用MATLAB程式設計求方程組的解
b 4 3 9 8 a1 a b r rref a1 r 1.0000 0 0 0 1.4841 0 1.0000 0 0 0.6816 0 0 1.0000 0 0.5337 0 0 0 1.0000 1.2429 最後一列為方程的抄解,跟樓上的那位仁兄的好像有點差別,不過我把我的解代入原方程檢驗...