data 18.04.2013
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
Ćwiczenie nr 2
Temat: Numeryczne zagadnienie algebry liniowej
Wydział: EEiA
rok akademicki: 2012/2013 semestr: IV
Grupa: 4C5
Dzień: czwartek godz. 1415-1600
Kubiak Łukasz 171367
Leśnik Przemysław 171374
Eliminacja Gaussa
Z wyborem elementu głównego
function [L, U] = wybor(A)
b=size(A);
b=b(1);
U=A;
L=eye(b); %macierz jednostkowa
for a=1:(b-1)
C=0;
for j=1:(b-a+1)
C(j)=abs(U(j-1+a,a));
end
for j=a:b
if max(C)==abs(U(j,a))
index=j;
end
end
if max(C)~=0
D=U(a,:);
U(a,:)=U(index,:);
U(index,:)=D;
for k=-a+1:-1
D=L(a,-k);
L(a,-k)=L(index,-k);
L(index,-k)=D;
end
for i=a:(b-1)
L(i+1,a)=U(i+1,a)/U(a,a);
U(i+1,:)=U(i+1,:)-U(i+1,a)/U(a,a)*U(a,:);
end
end
end
Bez wyboru elementu głównego
function [ x,L,A] = gauss(A )
[n,x]=size(A)
L=eye(n);
if(n==x)
for i=1:n-1 %kolumny macierzy
for z=i+1:n %wiersze
if (A(z,i)==A(i,i))&(A(z,i)==0)&(A(i,i)==0); %jak elementy zerowe na przekątnej i pod nią to petal nic nie robi
else
o=A(z,i)/A(i,i);%element na przekątnej jest mnożony przez współczynnik
L(z,i)=o;
for y=i:n
A(z,y)=A(z,y)-o*A(i,y); %odejmowanie wierszy
end
end
end
end
end
L
A
X=L*A;
end
Pomiar czasu
function [ILOCZYN, TRACE, DET, ROZKLAD_LU, ROZKLAD_QR] = time( N )
A=randn(N)
B=randn(N) %generowanie macierzy kwadratowych
tic
%MNOŻENIE
for n=1:100 %1000 krotne mnożenie macierzy
C=A*B;
end
toc;
p=toc;
x=p/1000; %czas mnożenia z realizacją pętli
tic;
for i=1:1000
end
toc;
u=toc;
z=u/1000; %czas realizacji pustej pętli
ILOCZYN=x-z %wynik czasu mnożenia macierzy o zadanych wymiarach
%TRACE
tic;
for j=1:1000
trace(A);
end
toc;
v=toc;
TRACE=v/1000-z %czas wyznaczania śladu macierzy
%WYZNACZNIK
tic;
for h=1:1000
det(A);
end
toc;
k=toc;
DET=k/1000-z %czas wyznaczania wyznacznika macierzy
%LU
tic;
for h1=1:1000
[L,U]=lu(A);
end
toc;
h2=toc;
ROZKLAD_LU=h2/1000-z %czas rozkladu LU
%QR
tic;
for p1=1:1000
qr(A);
end
toc;
p2=toc;
ROZKLAD_QR=p2/1000-z %czas rozkładu QR
end
Wielkość macierzy | Iloczyn | Ślad (TRACE) | Wyznacznik (DET) | Rozkład LU | Rozkład QR |
---|---|---|---|---|---|
4 | 1.9500e-007 | 4.2053e-006 | 3.0826e-006 | 3.6019e-006 | 4.2053e-006 |
8 | 5.9671e-005 | 2.8790e-006 | 3.2353e-006 | 3.6154e-006 | 4.7337e-006 |
16 | 6.8105e-007 | 4.1503e-006 | 1.0097e-005 | 6.4701e-006 | 6.6820e-006 |
32 | 2.0165e-006 | 4.3482e-006 | 2.1750e-005 | 1.2618e-005 | 2.0772e-005 |
64 | 6.8778e-006 | 2.4968e-006 | 5.8704e-005 | 5.6932e-005 | 9.0525e-005 |
Wykres przedstawia zależność czasu obliczeń od wielkości macierzy.
Wnioski
W przypadku gdy na przekątnej któreś ze współczynników są równe zeru należy stosować metodę z częściowym wyborem elementu głównego. Metoda ta jest dokładniejsza niż eliminacja bez wyboru. Gdy współczynniki nie są zerowe, ale bliskie zeru, również lepiej jest zastosować eliminację z częściowym wyborem.