18
Rešavanje sistema algebarskih jednačina Gausova metoda eliminacije

Gausova_eliminacija

Embed Size (px)

DESCRIPTION

gaussss

Citation preview

Rešavanje sistema algebarskih jednačina

Gausova metoda eliminacije

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

Algoritam za rešenje trougaonog oblika

for i=n:-1:1

S=0for k=i+1:n

kk,i xass

i,i

ii a

sbx

S

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

Primeri za vežbu5. Rešiti matričnu jednačinu

DCBxAT 2

ako je:

9.11.234.0

7.122.4

131

A

9.2

8.1

2.3

B

2.4

1.2

1.1

C

33.0

25.1

75.0

D

6. Modifikovati funkciju gauss tako da umesto svođenja na gornju trougaonu matricu A svodi na donju trougaonu matricu.