Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Inverzna matrica

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Inverzna matrica

[ Pregleda: 4343 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

hafyy
Aldin Hafizovic

Član broj: 178802
Poruke: 8
91.191.54.*



Profil

icon [Zadatak] Inverzna matrica08.05.2008. u 10:18 - pre 194 meseci
imam problem kako postaviti formulu za izracunavanje inverzne matrice....i da li je ovo ispravno kako sam krenuo ili trebam nesto ispraviti...
Code:

include<iostream.h>
include<conio.h>
int main (){
int niz[5][5];
for(int i=0;i<5;i++);{
for(int j=0;j<5;j++);{
cin>>niz[i][j];
}
}
for(int j=0;j<5;j++);{
for(int i=0;i<5;i++);{
cout<<niz[i][j];


EDIT: X Files :
Za pocetak, imas problem da postavis zadatak u ispravnom forumu i da koristis tagove za kod: [code] kod [/code], i da 'nazubis' kod.

[Ovu poruku je menjao X Files dana 08.05.2008. u 11:31 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Inverzna matrica08.05.2008. u 10:31 - pre 194 meseci
Tačka-zarez ne ida iza for().
Nedostaju ti neke zatvorene zagrade (Nazubi malo kod, lakse ces pratiti sta pises (prepisujes))
Ispred include ide #
conio.h nije standardna biblioreka i ovde ti nije potrebna.

Code:

#include <iostream.h>
#include <conio.h>
int main ()
{
   int niz[5][5];
   for(int i=0;i<5;i++)
   {
      for(int j=0;j<5;j++)
      {
         cin>>niz[i][j];
      }
   }  

   for(int j=0;j<5;j++)
   {
      for(int i=0;i<5;i++)
      {
         cout<<niz[i][j];
      }
   }
}


 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
89.146.186.*



Profil

icon Re: [Zadatak] Inverzna matrica10.05.2008. u 17:19 - pre 194 meseci
Matrica je deklarisana kao vector vectora. Potrebne biblioteke #include <vector>, include <algorithm> (za swap funkciju).
Koristena je motoda Gauss - Jordanove eliminacije http://en.wikipedia.org/wiki/Gauss-Jordan_elimination

Code:

//Inverzna matrica Gauss - Jordanovom eliminacijom 
void gaussj(std::vector<std::vector <double> > &rezultat)
{
  int i,icol,irow,j,k,l,ll,n=brojRedovaMatrice(a);
  double big,dum,pivinv;
  std::vector <int> indxc(n),indxr(n),ipiv(n); 
  for (j=0;j<n;j++) ipiv[j]=0;
  for (i=0;i<n;i++) { 
      big=0.0;
      for (j=0;j<n;j++)                   //Vanjska petlja: pretraga za pivot
          if (ipiv[j] != 1)               //elementom.
              for (k=0;k<n;k++) {
                  if (ipiv[k] == 0) {
                      if (abs(rezultat[j][k]) >= big) {
                          big=abs(rezultat[j][k]);
                          irow=j;
                          icol=k;
                      }
                  }
              }
      ++(ipiv[icol]);
     if (irow != icol) {
         for (l=0;l<n;l++) std::swap(rezultat[irow][l],rezultat[icol][l]);
    }
    indxr[i]=irow;                 //Dijeljenje pivod reda
                                       //sa pivot elementom, koji se nalazi na irow i icol.
    indxc[i]=icol;
    if (rezultat[icol][icol] == 0.0) throw("Matrica je singularna !");

    pivinv=1.0/rezultat[icol][icol];
    rezultat[icol][icol]=1.0;
    for (l=0;l<n;l++) rezultat[icol][l] *= pivinv;

    for (ll=0;ll<n;ll++)            //reduciranje redova
        if (ll != icol) {           //osim onog kojeg sa kojim smo radili pivot
            dum=rezultat[ll][icol];
            rezultat[ll][icol]=0.0;
            for (l=0;l<n;l++) rezultat[ll][l] -= rezultat[icol][l]*dum;
        }
    }
    for (l=n-1;l>=0;l--) {
        if (indxr[l] != indxc[l])
            for (k=0;k<n;k++)
                std::swap(rezultat[k][indxr[l]],rezultat[k][indxc[l]]);
    }                                  // ...Kraj !
}



if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Inverzna matrica

[ Pregleda: 4343 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.