Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 4.889 pregleda

Najnovija ↓

[Zadatak] Inverzna matrica 08.05.2008. u 11:18 · pre 225 meseci
izmenjeno 1 put, poslednji put X Files 08.05.2008. u 11:31
  1. X Files08.05.2008. u 11:31zapis iz teksta poruke
#1
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.
Re: [Zadatak] Inverzna matrica 08.05.2008. u 11:31 · pre 225 meseci #2
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];
      }
   }
}


Re: [Zadatak] Inverzna matrica 10.05.2008. u 18:19 · pre 225 meseci #3
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 !
}


Potpis
if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme