Programiranje elementarne matrice

poruka: 2
|
čitano: 1.706
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
neaktivan
offline
Programiranje elementarne matrice

Imam jedan zadatak za projekt na fakultetu. Neznam kako da započnem, pa ako može tko dati kakvu ideju.

Zadatak glasi:

Napravite program koji u matricu tima 10X23 upisuje slova "OPM" kao na slika 1.. Algoritam funkcionira na način da se od početne pozicije elementarnim trensformacijama krećemo po matrici te za sobom bojimo polja na kojima smo bili i na taj način ispisujemo tražena slova. Početna pozicija je (3,3). Ispišite sve elementarne matrice transformacija i matricu E. Napravite animaciju cijelog puta ispisivanja traženih slova.

Slika 1. Slika 1.
 
0 0 hvala 0
10 godina
neaktivan
offline
Programiranje elementarne matrice

Imam još jedan zadatak.
Zadatak glasi:

Konstruirajte algoritam koji će kao ulazni parametar uzimati kvadratnu matricu te provjeravati regularnost matrice (računajući pripadnu determinantu).

Uz regularnost, izlazni parametri su još i determinanta, lista elementarnih matrica pripadnih elementarnih transformacija potrebnih za izračunavanje determinante, te matrica E.

Algoritam testirajte na primjerima sa slike.

Primjeri matrica Primjeri matrica

Napravila sam dio algoritma u C++, ali neznam je li dobro. Pa ako može tko pomoći. {#}

 

 

#include<iostream>
#include <cstdlib>
#include<iomanip>
using namespace std;

int main(){
    int n, i, j, zamjena, k, br=1, t=0,c;
    double koef;
    //unos matrice
    cout<<"Unesite red kvadratne matrice: "<<endl;
    cin>>n;
    float a[n][n];
    for(i=0;i<n;i++)
       for(j=0;j<n;j++)
          {
           cout<<"Unesite element matrice na poziciji a["<<i+1<<"]["<<j+1<<"]: ";
           cin>>a[i][j];          
           }
    //ispis matrice
    cout<<"Unesena matrica:"<<endl;
    for(i=0;i<n;i++)
       {
       for(j=0;j<n;j++)
           cout<< a[i][j] << " ";
       cout<<endl;
       }
    //provjeravamo glavnu dijagonalu matrice
    for(i=0;i<n-1;i++)
       {
       int provjera=0;
       if(!a[i][i])  //ako je na glavnoj dijagonali vrijednost elementa nula
         {
          for(j=i;j<n-1;j++)
              if(a[j+1][i]!=0 && provjera==0)
                 {
                 for(k=0; k<n; k++)
                    {
                    zamjena = a[i][k];
                    a[i][k] = a[j+1][k];
                    a[j+1][k] = zamjena;
                    }
                 br *= (-1);
                 provjera++;
                 }
          }
        for(int j=i; j<n-1; j++)
           {
            if(!a[j+1][i]) continue;
            koef = a[j+1][i]/a[i][i];
            t++;
            for(k=i; k<n; k++)
               {
                a[j+1][k] += (-koef) * a[i][k];
               }
            cout<<endl<<t<<". promjena: "<<endl;
            for(int i=0; i<n; i++)
               {
               for(int j=0; j<n; j++)
                  {
                  cout<<fixed<< setprecision(2)<< a[i][j] << " ";
                  }
               cout<<endl;
              } 
           }
       }
    //ispist gornju trokutastu matricu
    cout<<endl<<"Ispis gornje trokutaste matrice:\n";
    for(int i=0; i<n; i++)
       {
        for(int j=0; j<n; j++)
           {
            cout<<fixed<< setprecision(2)<< a[i][j] << " ";
            }
        cout<<endl;
        } 
    //izracunavanje determinante
    double det = 1;
    for(int i=0; i<n; i++)
       {
       det *= a[i][i];
       }
    cout<< "Determinanta matrice: " <<det * br;
    cout<< endl;
    //provjera regularnosti matrice
    if(det==0)
       cout<<"Matrica nije regularna."<<endl;
       else
           cout<<"Matrica je regularna."<<endl;
    system("PAUSE");
    return 0;
    }

Poruka je uređivana zadnji put čet 17.4.2014 8:48 (martugnc).
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice