Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program InverznMatrica;
- type niz = array [1 .. 20 ] of real;
- matrica=array [1 .. 20 ] of niz;
- var n,ind:integer;a,b,c:matrica;
- procedure UnosMatrice (var n:INTEGER; var A:matrica);
- var i,j:INTEGER;
- begin
- write ('broj kolona kvadratne matrice:');readln(n);
- for i:=1 to n do
- for j:=1 to n do begin write('A[',I,':',j,']=');readln(a[i,j]);end;
- end;
- procedure StampanjeMatrice(m,n:INTEGER;A:matrica);
- var i,j:INTEGER;
- begin
- writeln;
- for i:=1 to m do begin
- for j:=1 to n do write(a[i,j]:7:2);writeln;writeln; end;
- writeln;
- end;
- procedure dopuna(n:integer;a:matrica;var c:matrica);
- // zadatoj matrici se dodaje jedinicna
- // matrica sa desne strane
- var i,j:integer;
- begin
- for i:=1 to n do
- begin
- for j:=1 to n do
- begin
- c[i,j]:=a[i,j];
- c[i,j+n]:=0;
- end;
- c[i,n+i]:=1;
- end;
- end;
- procedure ciscenje(n,v,k:integer;var c:matrica);
- // n dimenzija matrice
- // v,k pozicija elementa sa kojim stvaramo nule iznad i ispod
- var i,j:integer;faktor:real;
- begin
- write('ciscenje ',v:5,k:5);readln();
- for i:=1 to n do
- begin
- if(i<>v) then begin
- faktor:=(-1)*c[i,k]/c[v,k];
- for j:=1 to 2*n do c[i,j]:=c[i,j]+faktor*c[v,j];
- end
- else
- begin
- for j:=1 to 2*n do if(j<>k) then c[i,j]:=c[i,j]/c[i,k];
- c[i,k]:=1;
- end;
- end;
- end;
- procedure zamjena(n,v1,v2:integer;var c:matrica);
- var t:niz;
- begin
- t:=c[v1];c[v1]:=c[v2];c[v2]:=t;
- end;
- procedure inverzna(n:integer;c:matrica;var b:matrica;var ind:integer);
- var i,j,i1:integer;
- begin
- ind:=1;i:=1;
- repeat
- // stampanjematrice(n,2*n,c);readln();
- if (c[i,i] <> 0)
- then ciscenje(n,i,i,c)
- else begin
- i1:=i; while(i1<=n) and (c[i1,i]=0) do i1:=i1+1;
- if(i1<=n) then
- begin zamjena(n,i,i1,c);
- ciscenje(n,i,i,c);
- end
- else ind:=0;
- end;
- i:=i+1;
- until(i>n)or(ind=0);
- if(ind=1) then begin
- for i:=1 to n do
- for j:=1 to n do
- b[i,j]:=c[i,j+n];
- end;
- end;
- begin
- unosmatrice(n,a);stampanjematrice(n,n,a);dopuna(n,a,c);stampanjematrice(n,2*n,c);inverzna(n,c,b,ind);
- if(ind=0) then
- writeln('Inverzne matrice nema')
- else begin
- stampanjematrice(n,n,a);
- stampanjematrice(n,n,b);
- end;
- readln();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement