é
å
宾æ¹æ³
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))>amax
amax=abs(A(i,j));
p=i;
q=j;
end
end
end
r=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);
end
s=-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;
end
if k>m
disp('Aç©éµä¸æ¶æ');
else
for i=1:n
D(i)=A(i,i);
end
disp('Aç¹å¾å¼ä¸º:');
D
end
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.3162
6.3246 4.8000 -1.4000
0 6.6000 1.2000
对Hç©éµä½QRå解:
>>[Q,R]=qr(H)
Q =
-0.1562 0.2101 -0.9651
-0.9877 -0.0332 0.1526
0 0.9771 0.2127
R =
-6.4031 -5.0868 1.4322
0 6.7546 1.1526
0 0 0.3468
ä½50次è¿ä»£è®¡ç®(å
·ä½è¿ä»£æ¬¡æ°å¯ä¾å
·ä½å®éªç©éµè¿è¡)
>>for i=1:50
B=R*Q;
[Q,R]=qr(B);
end
>>R*Q
ans =
5.0000 7.4864 0.5929
-0.0000 3.0000 4.9600
0 0.0000 -1.0000
ç±ä»¥ä¸ç»æå¯å¾å°è¿ä»£è®¡ç®çç¹å¾å¼ä¸º,å¯è§åºæ¬QRæ³çè¿ä»£ç²¾åº¦è¿æ¯å¾é«ç.
追é®ä¸ç®¡å¯¹ä¸å¯¹ï¼å°±æ¼ä½ æé£ä¹é¿çä¸è¥¿ï¼å°±éä½ äº*^_^*