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 即可把向量放在右上...