Extras din laborator
1. Calcularea determinantului:
a) cu GPP
function [d]=determinant(a)
%Algoritmul GPP:
n=length(a);
p=linspace(0,0,n);
for k=1:n-1
%gasim maximu
max=abs(a(1,k));
p(k)=1;
for i=k:n
if abs(a(i,k))>max
max=abs(a(i,k));
p(k)=i;
end
end
for j=k:n
a(k,j)=a(p(k),j);
end
for i=k+1:n
a(i,k)=a(i,k)/a(k,k);
end
for i=k+1:n
for j=k+1:n
a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
end
end
%calcularea determinantului:
d=1;
for k=1:n
d=d*a(k,k);
end
for k=1:n-1
if p(k)~=k
d=-d
end
end
b) cu factorizarea LU (crout)
function [d]=detLU(a)
%factorizarea LU (Crout)
n=length(a);
for j=2:n
a(1,j)=a(1,j)/a(1,1);
end
for k=2:n
for i=k:n
s=0;
for j=1:k-1
s=s+a(i,j)*a(j,k);
end
a(i,k)=a(i,k)-s;
end
if k==n
return
end
for j=k+1:n
s=0;
for i=1:k-1
s=s+a(k,i)*a(i,j);
end
a(k,j)=(a(k,j)-s)/a(k,k);
end
end
d=1;
for k=1:n
d=d*a(k,k);
end
2. matrici Hessenberg:
a) factorizarea Crout:
function [L,U]=Crout_h(H)
n=length(H);
L=zeros(n);
U=eye(n);
L(1,1)=H(1,1); %singurul element nenul de pe prima coloana a lui L
for j=2:n
U(1,j)=H(1,j)/L(1,1);
end
for i=1:n
L(i,i)=H(i,i);
end
%pt ca matricea e Hessenberg, L va fi diagonala
for k=2:n-1
for j=k+1:n
U(k,j)=H(k,j)/L(k,k);
end
end
b) determinantul
function [d]=detH(H)
%facturizarea LU
n=length(H);
for j=2:n
H(1,j)=H(1,j)/H(1,1);
end
for k=2:n-1
for j=k+1:n
H(k,j)=H(k,j)/H(k,k);
end
end
%calcularea determinantului:
d=1;
for i=1:n
d=d*H(i,i);
end
Preview document
Conținut arhivă zip
- Teme Metode Numerice
- 324AA_tema MN.doc
- Tema MN (324AA).doc
- tema342AA.doc