Upload
branka-pljevaljcic
View
11
Download
0
Embed Size (px)
DESCRIPTION
gaussss
Citation preview
Zadatak: Rešiti sistem algebarskih jednačina
bAx
bLRxbLRxLRAbAx 1
Teorijska osnova:
1
01
001
21
21
nn mm
mL
nn
n
n
r
rr
rrr
R
00
0 222
11211
Sistem
bAx se svodi na sistem
cRx
nn
nn r
cx
gde je R trougaona matrica. Rešenje ovakvog sistema:
)0(1,,11
1
ii
n
ikkiki
iii rnixrcr
x
nnnn
n
n
c
...
c
c
x
...
x
x
r
rr
rrr
2
1
2
1
222
11211
00
0
poslednji član svi ostali članovi
Primer
3
1
4
678
654
231
3
2
1
x
x
xk=1
i=21
4m
01
414 7
1
435 2
1
426
151
441
j=1 j=2 j=3
3
15
4
678
270
231
3
2
1
x
x
x
i=2 i=3
29
15
4
10170
270
231
3
2
1
x
x
x
k=2
i=37
17
m
0717 m)(
j=2
14295210 .m)(
j=3 428671529 .m)(
maaa j,kj,ij,i mbbb kii
29
15
4
10170
270
231
3
2
1
x
x
x
42867
15
4
1429500
270
231
3
2
1
.x
x
x
.
Algoritam za svođenje u trougaonu formu
for k=1:n
for i=k+1:n
k,k
k,i
a
am
for j=k:nmaaa j,kj,ij,i
mbbb kii
Funkcija u matlabufunction [x, flag] = gauss(a, b) % ulazna matrica % ulazni vektor kolona % x rezultat % flag indikator greske % 0 - sve je u redu % 1 - greska [n, m] = size(a); % n je broj vrsta % m je broj kolona % ovde bi trebalo proveriti da li su n i m isti nB = length(b); % ovde bi trebalo proveriti da je nB isto sto i n % svodjenje na trougaonu matricu for k=1:n for i=k+1:n m = a(i,k)/a(k,k); for j=k:n a(i,j) = a(i,j)-m*a(k,j); end
b(i) = b(i)-m*b(k); end end % Matrica a je u ovom trenutku svedena na trougaonu formu
aend
Rešenje trougaonog sistema
cRx
nn
nn r
cx )0(1,,1
1
1
ii
n
ikkiki
iii rnixrcr
x
nnnn
n
n
c
...
c
c
x
...
x
x
r
rr
rrr
2
1
2
1
222
11211
00
0
Funkcija u matlabufunction [x, flag] = gauss(a, b) % ulazna matrica % ulazni vektor kolona % x rezultat % flag indikator greske % 0 - sve je u redu % 1 - greska [n, m] = size(a); % n je broj vrsta % m je broj kolona % ovde bi trebalo proveriti da li su n i m isti nB = length(b); % ovde bi trebalo proveriti da je nB isto sto i n % svodjenje na trougaonu matricu for k=1:n for i=k+1:n m = a(i, k)/a(k,k); for j=k:n a(i, j) = a(i,j)-m*a(k,j); end b(i) = b(i)-m*b(k); end end % sistem je sveden u trougaoni oblik x = zeros(n,1); for i=n:-1:1 s = 0; for k=i+1:n s = s + a(i,k)*x(k); end x(i) = (b(i)-s)/a(i,i); endend
Greškefunction [x, flag] = gauss(a, b) % ulazna matrica % ulazni vektor kolona % x rezultat % flag indikator greske % 0 - sve je u redu % 1 - greska [n, m] = size(a); % n je broj vrsta % m je broj kolona % ovde bi trebalo proveriti da li su n i m isti nB = length(b); % ovde bi trebalo proveriti da je nB isto sto i n % svodjenje na trougaonu matricu for k=1:n for i=k+1:n m = a(i, k)/a(k,k); for j=k:n a(i, j) = a(i,j)-m*a(k,j); end b(i) = b(i)-m*b(k); end end % sistem je sveden u trougaoni oblik x = zeros(n,1); for i=n:-1:1 s = 0; for k=i+1:n s = s + a(i,k)*x(k); end x(i) = (b(i)-s)/a(i,i); endend
Potencijalno mestogreške!
Poželjno je da a(k,k) bude što veći jer je tada greškanajmanja
Kako?
Rasporediti vrste tako da vrsta sa najvećim prvim elementom bude na vrhu[a,b] = swrow(a, b, k);
swrow(X, Y, n, k)MAXELEM(X,k,l,n)X - matrica sistemak - korak eliminacijel - indeks maksimalnogelementa u k-toj kolonimatrice Xn - red sistema
POCETAK POCETAK
MAXELEM(X,k,l,n)
kl
POVRATAK
kj
tempjlx
jlxjkx
jkxtemp
),(
),(),(
),(
1 jj
nj
temply
lyky
kytemp
)(
)()(
)(
DA
POVRATAK
kl
)),((max kkxabsf
1 kj
)),((max kjxabsf
)),((max kjxabsf
jl
1 jj
nj
DA
NE
SWROW(X,Y,n,k)X - matrica sistemaY - vektor slobodnih clanovan - red sistemak - korak eliminacijel - indeks maksimalnogelementa u k-toj kolonimatrice
swrow(A, b, k)function [A, b] = swrow(A, b, k) % A ulazna matrica % b ulazna matrica % k indeks kolone odnosno vrste u kojima se zamena vrsi l = maxelem(A, k); [n,m] = size(A); % zameniti elemente k-te i l-te vrste for j=k:n temp = A(k, j); A(k,j) = A(l,j); A(l,j) = temp; end % zameniti b komponente temp = b(k); b(k) = b(l); b(l) = temp;end
maxelem(X, k)
function l = maxelem(X, k) % X matrica u kojoj se trazi maksimalni element % k indeks kolone i vrste od kojih pocinje trazenje n = length(X); l = k; for j=k:n if(abs(X(j,k))>X(l,k)) l = j; end endend
gauss(a, b)function [x, flag] = gauss(a, b) % ulazna matrica % ulazni vektor kolona % x rezultat % flag indikator greske % 0 - sve je u redu % 1 - greska [n, m] = size(a); % n je broj vrsta % m je broj kolona % ovde bi trebalo proveriti da li su n i m isti nB = length(b); % ovde bi trebalo proveriti da je nB isto sto i n % svodjenje na trougaonu matricu for k=1:n [a,b] = swrow(a, b, k) for i=k+1:n m = a(i, k)/a(k,k); for j=k:n a(i, j) = a(i,j)-m*a(k,j); end b(i) = b(i)-m*b(k); end end % sistem je sveden u trougaoni oblik x = zeros(n,1); for i=n:-1:1 s = 0; for k=i+1:n s = s + a(i,k)*x(k); end x(i) = (b(i)-s)/a(i,i); endend
Ubačeno!
Primeri za vežbu
3
1
4
678
654
231
3
2
1
x
x
x
1. Rešiti sistem
Rešenje
x1 = -0.7778x2 = 2.5556x3 = -1.4444
2. Rešiti sistem
2251
437
4308592
5921
2
1
x
xRešenje
x1 = -1.5889x2 = 0.7409
Primeri za vežbu3. Ako su prave p1, p2 i p3 definisane u 3D prostoru na sledeći način
512323
032
3431
.zyx:p
zx:p
zyx:p
Odrediti presečnu tačku
4. Odrediti parametre tako da funkcija 3210 ,,, aaaa3
32
210)( xaxaxaaxP
zadovoljava sledeće:
064.9)2.1(
368.2)6.0(
261.1)3.0(
023.1)1.0(
P
P
P
P