Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza



























Matrice rare

c











ALTE DOCUMENTE

Exemple de probleme rezolvate
Tablouri multi-dimensionale
Salvarea spatiului
INSTRUCTIUNI
Exemple de probleme rezolvate
Aplicatii - Construirea de obiecte
Probleme insolvabile algoritmic
FUNCTII CARE RETURNEAZA POINTERI
DECLARAREA POINTERILOR
Compactarea datelor




Matrice rare

            Matricele rare îsi gasesc aplicabilitatea în modelarea unor procese de natura industriala, economica, tehnica, sociala etc. Materialul de fata îsi propune sa trateze modalitatile de reprezentare în structuri de date a matricelor rare, precum si principalele operatii matriceale implementate într-un limbaj orientat pe obiecte. În final este prezentata o aplicatie concreta - estimarea parametrilor unei regresii statistice.

1.      Introducere

            În rezolvarea multor probleme de natura economica, tehnica, sociala, a diverselor probleme de optimizare, precum si în modelarea unor procese industriale si tehnologice este necesar sa se determine modelul matematic care descrie functionarea procesului respectiv. Descrierea acestor sisteme fizice conduce la obtinerea unor modele matematice care fie în mod direct, prin modelare, fie prin metoda de rezolvare implica sisteme de ecuatii algebrice liniare 656g64g sau probleme de programare liniara a caror matrice a coeficientilor este rara ( sparse ), în sensul ca ponderea elementelor nenule în totalul elementelor matricei este mica.

            Din punct de vedere practic trebuie remarcat faptul ca analiza sistemelor mai sus amintite conduce la obtinerea unor modele matematice de mari dimensiuni care implica sisteme de ecuatii algebrice liniare 656g64g de mii de ecuatii, pentru a caror rezolvare sunt necesare resurse mari de memorie si timp de calcul. În multe cazuri practice, cum ar fi sistemele în timp real, timpul de calcul este o resursa critica, careia nu-I este permis sa depaseasca o valoare limita.

            Modelele matematice ale proceselor reale implica un numar foarte mare de variabile si restrictii care prezinta fenomenul de raritate ( sparsity ), adica de slaba interconectare a elementelor sale. Luarea în consideratie a fenomenului de raritate furnizeaza un nou mod de abordare foarte eficient, ce implica în dezvoltarea aplicatiilor informatice folosirea unor structuri de date speciale, care sa conduca la reducerea resurselor de memorie si a timpului de calcul.

            În general, o matrice  - dimensionala este rara daca contine un numar mic de elemente nenule , adica . Cantitativ, matricele rare sunt caracterizate de ponderea numarului de elemente nenule în totalul de elemente, pondere ce defineste gradul de umplere al matricei. În aplicatiile curente se întâlnesc matrice rare cu grade de umplere între 0,15% si 3%.

2. Memorarea matricelor rare.

            Se considera matricea:

Matricea A este un exemplu de matrice rara, ea continând 16 elemente nule din totalul de 20.

Se defineste gradul de umplere (densitatea) unei matrice prin raportul dintre numarul elementelor nenule si numarul total al elementelor sale:

(1)

unde:    p - numarul de elemente nenule;

            n - numarul de linii;

            m - numarul de coloane.

Se accepta, în general, ca o matrice este rara daca densitatea sa este de cel mult 3%. Densitatea matricei A este , ea fiind prezentata aici în scopul ilustrarii conceptului de matrice rara.

            Structura de date "clasica" folosita pentru manipularea matricelor obisnuite - tablou de dimensiune ( n, m ) alocat la compilare - se dovedeste a fi ineficienta în cazul în care ,matricea este rara. Un prim avantaj este legat de folosirea neeconomica a spatiului de memorie prin alocarea de zone mari pentru memorarea elementelor nule, care nu sunt purtatoare de informatie. Ocuparea unor zone de memorie cu elemente nule nu se justifica deoarece acestea nu contribuie la formarea rezultatului operatiilor cu matrice (adunare, înmultire, etc) ducând totodata si la marirea duratei de realizare a acestor operatii prin ocuparea procesorului cu adunari si înmultiri scalare cu zero. Acest inconvenient se manifesta cu atât mai pregnant cu cât dimensiunea matricei este mai mare.

            Prin urmare, pentru probleme de dimensiuni mari, s-a cautat gasirea unor modalitati de reprezentare compacta a matricelor rare, în care sa se renunte la memorarea elementelor nule. În acest caz este necesar ca tehnicile de memorare sa încorporeze îe lânga elementele nenule si mijloacele de identificare a pozitiilor acestor elemente în matrice.

            Sunt prezentate în continuare câteva posibilitati de memorare compacta a MR. Se face de asemeni o analiza a oportunitatii folosirii fiecarei tehnici în parte, în functie de densitatea matricei.

            Memorarea prin identificare binara se bazeaza pe natura binara a sistemului de calcul, constând în memorarea numai a elementelor nenule ale matricei într-o zona primara ZP având tipul de baza corespunzator tipului elementelor matricei si dimensiunea egala cu numarul elementelor nenule.

Structura matricei este indicata printr-o secventa binara memorata într-o zona secundara ZS.

            Matricea A prezentata anterior se memoreaza astfel:

            Zona primara

Locatie

1

2

3

4

Valoare

1

-2

4

-1

           

Zona secundara

Locatie

1                                      5

6                                           10

Valoare

1

0

0

0

0

0

0

1

0

1

Locatie

11                                    15

16                                         20

Valoare

0

0

0

0

0

0

1

            Matricea A a fost memorata în ordinea liniilor, dar se poate imagina o alta posibilitate de memorare, în ordinea coloanelor. Zona secundara prezentata mai sus poate fi memorata chiar la nivel de bit.

            Daca matricea B ( m, n ) - dimensionala are densitatea G si daca tipul de baza al matricei (tipul fiecaruia dintre elemente nenule ale matricei) este reprezentat printr-un cuvânt de b octeti, atunci zona primara va necesita mnG cuvinte de b octeti iar zona secundara mn/8b cuvinte. Numarul total de cuvinte necesare memorarii matricei B prin intermediul celor doua zone este mnG + mn/8b. Întrucât pentru memorarea matricei în forma clasica sunt necesare mn cuvinte, raportul dintre cerintele de memorie ale structurii de mai sus si a celei standard este:

           (2)

În relatia (2) s-a considerat ca memorarea zonei secundare se face la nivel de bit.

            Considerând ca elementele matricei A sunt reale si se reprezinta pe 4 octeti, rezulta:

adica memorarea matricei A conform acestei structuri ocupa de circa 4 ori mai putina memorie decât cea standard.

            Folosind relatia (2) în care se egaleaza  se determina limita superioara a densitatii unei matrice pentru care aceasta structura necesita mai putina memorie decât cea standard:

         (3)

            Pentru matricea A:

            Aceasta structura de memorare difera de altele prin aceea ca în zona secundara este alocata memorie si pentru elementele nule ale matricei (un singur bit). Structura este mai putin eficienta pentru matricele de mari dimensiuni foarte rare. Principala dificultate consta în complexitatea programelor de implementare a operatiilor matriciale.

            O alta modalitate de memorare prin identificare binara se obtine prin modificarea informatiilor din zona secundara. Aceasta zona va contine pe jumatati de cuvânt indicii de coloana ai elementelor nenule din matrice, precum si anumite informatii de control pentru identificarea rapida a pozitiei elementelor nenule în matrice. Structura ZS pe cuvinte este urmatoarea:

Numarul

cuvântului

Jumatatea stânga

Jumatatea dreapta

1

Numarul de linii

Numarul de coloane

2

Numarul de elemente nenule

3

Numarul de elemente nenule în linia1

Numarul de elemente nenule în linia 2

4

Numarul de elemente nenule în linia 3

etc

.

.

.

k

Numarul de elemente nenule în ultima linie

k + 1

Indicele de coloana al primului element memorat

Indicele de coloana al celui de-al doilea element memorat

k + 2

Indicele de coloana al celui de-al treilea element memorat

etc.

.

.

.

j

Indicele de coloana al ultimului element memorat

Pentru matricea A, ZS are urmatoarea structura:

Locatie

1

2

3

4

5

6

Valoare

4

5

4

1

2

0

1

1

3

5

2

În reprezentarea de mai sus s-a considerat ca elementele nenule sunt reprezentate pe 4 octeti astfel ca o jumatate de cuvânt în zona secundara se reprezinta pe 2 octeti. Prin structura de memorare prezentata mai sus se pot memora matrice a caror dimensiune maxima este de 9999 de linii sau coloane cu numarul de elemente nenule memorate de 108 - 1. Se face observatia ca în cazul matricelor patrate în primul cuvânt din ZS se va memora dimensiunea matricei.

Numarul total de cuvinte necesare zonei secundare va fi  rotunjit la cel mai mare întreg. Numarul total de cuvinte necesar memorarii unei matrice prin intermediul celor doua zone ZP si ZS este .

Raportul dintre cerintele de memorie ale acestei structuri de identificare binara si a celei standard este:

      (4)

            Pentru o matrice patrata (m = n), egalând c2 = 1 în (4) si trecând la limita pentru  rezulta valoarea maxima a densitatii unei matrice rare pentru care structura prezentata este eficienta:

 (5)

            În relatia (5) se ajunge la acelasi rezultat în cazul unei matrice nepatratice pentru care se trece la limita pentru  si .

            Pentru o matrice rara (100,100) - dimensionala cu o medie de 66 elemente nenule pe linie, structura de mai sus necesita un total de 6600 + ( 5 + 100 + 6600 )/2 = 9952 cuvinte, cu ceva mai putin (0,6%) de 10.000 cuvinte necesare pentru memorarea standard. Întrucât densitatea elementelor nenule ale unei matrice rare este de obicei între 1% si 3%. Structura se dovedeste a fi deosebit de eficienta.

            Memorarea compacta aleatoare consta în utilizarea unei zone primare ZP, continând numai elementele nenule ale matricei si a doua zone secundare continând indicii de linie si de coloana corespunzatoare elementelor nenule.

            Deoarece fiecare element nenul al matricei este identificat individual, este posibil ca matricea sa fie memorata în ordine aleatoare. Matricea A se memoreaza astfel:

Locatia

1

2

3

4

Valoare

1

-2

4

-1

Indice linie

1

2

2

4

Indice coloana

1

3

5

2

            Avantajele memorarii compacte aleatoare constau în faptul ca noi elemente nenule ale matricei pot fi adaugate la sfârsitul zonelor de memorare fara a perturba celelalte elemente, precum si o manevrabilitate rapida a datelor. În cazul matricelor simetrice aceasta structura de memorare se poate simplifica prin memorarea numai a elementelor nenule de deasupra diagonalei principale, precum si a elementelor nenule situate pe aceasta diagonala.

            Numarul total de cuvinte necesare memorarii unei matrice ( m,n ) - dimensionale este în acest caz 3mn. Raportul dintre cerintele de memorie ale acestei structuri si a celei standard este:

(6)

Egalând relatia (6) cu unitatea se determina valoarea limita a densitatii matricei pentru rare aceasta structura este eficienta: .

            În structura de mai sus pentru identificarea elementelor nenule ale matricei rare au fost folosite doua zone secundare corespunzatoare indicelui de linie si de coloana. Se prezinta în continuare o alta posibilitate de memorare în care se va utiliza o singura zona secundara de dimensiune egala cu numarul de elemente nenusle ale matricei, continând simultan informatii asupra indicilor de linie si de coloana.

            Astfel, fiecarui element din zona primara i se ataseaza în zona secundara un numar întreg din care se pot determina indicii de linie si de coloana. Daca elementul  este memorat în locatia k a zonei primare atunci în zona secundara se va memora numarul , unde n este numarul de coloane a matricei. Acest numar, singur, este suficient pentru identificarea elementului în matrice.

            Utilizând acest artificiu, matricea A se memoreaza astfel:

Locatia

1

2

3

4

Valoare

1

-2

4

-1

Indice agregat

1

12

22

9

Pentru a regasi indicele de linie si de coloana al oricarui element memorat în locatia k se utilizeaza urmatoarea tehnica de calcul:

-         coloana j este obtinuta ca:

j este mai mic întreg  Indice agregat (k)/n,

-         linia i este determinata astfel:

i = Indice agregat (k) - ( j - 1 ) n.

            Avantajul acestei structuri de memorare consta în faptul ca necesita mai putina memorie decât cea precedenta, fiind în schimb mai putin rapida în ce priveste manevrarea datelor.

            Numarul total de cuvinte necesar memorarii matricei este 2mnG. Raportul dintre cerintele de memorie ale acestei structuri si a celei standard este

          (7)

            Valoarea limita a densitatii matricei pentru care aceasta structura este eficienta este: G = 50%.

            Memorarea compacta sistematica presupune ca elementele nenule ale unei matrice rare sunt memorate într-o anumita ordine (pe linii sau pe coloane). În acest caz nu este necesar sa se memoreze în zonele secundare indicii de linie, respectiv de coloana. Pentru o memorare în ordinea liniilor, ne putwem dispersa de indicii de linie, însa se cere specificarea începutului fiecarei linii.

            si în acest caz se pot imagina mai multe structuri de memorare. Cea prezentata în continuare este caracterizata prin faptul ca utilizeaza o singura zona secundara ZS, care contine indicii de coloana ale elementelor nenule din matricea considerata, precum si elemente false care indica începutul fiecarei linii si sfârsitul memorarii întregii matrice. De exemplu, un element zero în ZS marcheaza prezenta unui element fals si acesta specifica în ZP numarul liniei elementelor de la dreapta locatiei. Sfârsitul matricei este marcat prin prezenta în ZP a unui element fals cu valoarea zero.

            Pentru matricea A, memorarea în acesta forma este urmatoarea:

Locatia

1

2

3

4

5

6

7

8

ZP

1

1

2

-2

4

4

-1

0

ZS

0

1

0

3

5

0

2

0

            Pentru aceasta structura de memorare numarul maxim de cuvinte necesar pentru a memora o matrice rara ( m, n ) - dimensionala este . Raportul de memorare este:

(8)

Se constata ca structura este eficienta pentru memorarea matricelor rare cu o densitate a elementelor nenule de maximum 50%.

            Memorarea cu ajutorul listelor reprezinta o extensie a memorarii compacte aleatoare. În timpul operatiilor de inversare a matricelor rare noi elemente nenule sunt continuu generate iar altele sunt anulate si deci structurile de memorare trebuie sa fie capabile sa execute aceste modificari într-un mod eficient. De aceea structurile de memorare bazate pe aceasta tehnica sunt folosite pentru memorarea si manipularea matricelor rare de mari dimensiuni.

            Structura propusa utilizeaza o zona principala ZP pentru memorarea elementelor nenule si trei zone secundare, astfel: ZSL pentru memorarea indicilor de linie ai elementelor nenule, ZSC - pentru indicii de coloana si ZSU pentru memorarea adresei urmatorului element al matricei. Matricea A se memoreaza dupa cum urmeaza:

Locatia

1

2

3

4

ZP

1

-2

4

-1

ZSL

1

2

2

4

ZSC

1

3

5

2

ZSU

&2

&3

&4

NULL

unde prin "&2" se întelege adresa celei de-a doua locatii.

            Raportul dintre cerintele de memorare ale acestei structuri si a celei standard este:

(9)

            Prin urmare aceasta structura de memorare este eficienta pentru memorarea matricelor cu o densitate a elementelor nenule de maximum 25%.

            3. Software orientat spre lucrul cu matrice rare

            Metodele de calcul cu matrice rara pentru a fi eficiente trebuie sa beneficieze de proportia mare de elemente nule din aceste matrice, ceea ce creeaza necesitatea considerarii unor tehnici speciale de memorare, programare si analiza numerica.

            O cerinta esentiala în programarea matricelor rare consta în memorarea si executarea operatiilor numerice numai cu elementele nenule ale matricei, de a salva memorie si timp de calcul. În acest caz memorarea standard, devenind ineficienta, este abandonata si înlocuita cu metode de memorare adecvate, câteva dintre acestea fiind prezentate în paragraful anterior.

            Un program de calcul cu matrice rare este cu atât mai eficient cu cât timpul de calcul si cerintele de memorie necesare sunt mai reduse fata de acelea ale unui program readitional. De aceea tehnica de programare trebuie sa realizeze o proportie convenabila între timpul de calcul si memoria utilizata, cerinte care de cele mai multe ori sunt contradictorii. În general, este recunoscuta necesitatea unei anumite de structuri de memorare a datelor si o anumita tehnica de manipulare a acestora în cadrul unui algoritm în care sunt implicate matricele rare. Principiul fundamental de programare cu matrice rare consta în memorarea si manipularea numai a elementelor nenule, de sortare si ordonare în structuri speciale în vederea mentinerii structurii de matrice rara si a stabilitatii numerice, de evitare a buclelor complete.

            În scopul ilustrarii principalelor operatii efectuate asupra matricelor rare s-a facut implementarea acestora în limbajul VisualC++. Pentru reprezentarea matricelor s-a ales memorarea compacta aleatoare, datorita flexibilitatii în manevrarea datelor. Este prezentata în continuare o parte a clasei MR, continând constructorii, destructorul, câteva dintre functiile si operatorii implementati si sectiunea privata.

În cadrul sectiunii private, label reprezinta o eticheta ce serveste pentru identificarea matricei, n este dimensiunea matricei, dim serveste pentru memorarea numarului de elemente nenule, l si c sunt pointeri la masive de întregi reprezentând linia, respectiv coloana elementelor nenule, iar e este pointer la un masiv având tipul de baza tip (tipul de baza al elementelor matricei).

            Softul realizat vizeaza principalele operatii necesare manipularii matricelor rare: construirea acestora (prin introducerea datelor de la tastatura), vizualizarea lor, scrierea si citirea din fisiere, principalele operatii matriceale: adunarea, scaderea, transpunerea, înmultirea si inversarea.

            Pe parcursul dezvoltarii clasei MR s-a dovedit necesara implementarea unei functii ( void Zero (float) ) care sa elimine dintr-o matrice acele elemente care sunt foarte mici (cu câteva ordine de marime mai mici decât restul elementelor). Aceste elemente cu valoare nesemnificativa sunt rezultatul erorilor sistematice introduse prin rotunjiri, datorate numarului finit de octeti în care se face reprezentarea diverselor tipuri de date în calculator. S-a realizat de asemeni o functie (Generate(float)) care sa construiasca o matrice rara cu elemente aleatoare, având impusa în schimb valoarea gradului de umplere.

            În continuare se face o prezentare detaliata a operatorilor care implementeaza principalele operatii matriceale: adunarea, scaderea, transpunerea, înmultirea si inversarea.

            4. Adunarea, scaderea si transpunerea

            Adunarea matricelor rare presupune parcurgerea câtorva pasi:

·        determinarea numarului de elemente nenule ale matricei suma;

·        alocarea memoriei corespunzatoare acestui numar;

·        determinarea acelor elemente din prima matrice care nu au corespondent în cea de-a doua si adaugarea lor la matricea suma;

·        determinarea elementelor din cea de-a doua matrice care nu au corespondent în prima si adaugarea lor la matricea suma;

·        determinarea elementelor comune celor doua matrice, însumarea lor si adaugarea la matricea suma.

Prin "elemente comune" au fost desemnate acele elemente caracterizate prin indicii de linie si de coloana care sunt nenule în ambele matrice.

Pentru implementare s-a folosit suprascrierea operatorilor, pentru a conferi o mai mare putere de sugestie operatiilor matriceale implementate. Este prezentat în continuare operatorul care implementeaza operatia de adunare, structurata conform pasilor prezentati mai sus. Functia Found ( ) este definita în afara clasei MR si serveste pentru gasirea elementelor comune celor doua matrice.

p = new MR (this ->n, D, tis ->label+x.label);

            for (i = 0; i <this-> dim; i ++)

                       

            k=this->dim;

            for(i=0; i<x.dim; i++)

                       

                        }

            Sortare(p->1,p->c,p->e,p->dim);

            x.FileWrite("x.txt");

            this->FileWrite("this.txt");

            p->FileWrite("p.txt");

            return *p;

5. Implementarea si inversarea matricelor rare

Pentru înmultirea matricei rare A, (m, 1) - dimensionala, cu matricea rara B, (l, n) - dimensionala, se utilizeaza o modificare a procedurii standard, considerând influenta liniilor matricei A asupra matricei produs C, (m,n) - dimensionala, prin coloanele matricei B. Procedura standard de înmultire se modifica astfel încât în bucla interna sa se execute toate operatiile corespunzatoare unui element al matricei A. Întrucât elementul aik al matricei A poate conntribui la formarea tuturor elementelor liniei i a matricei C, se determina mai întâi aceasta contributie dupa care se continua cu urmatorul element al liniei i a matricei A, pâna la determinarea completa a liniei i a matricei C.

            Acest principiu este utilizat în implementarea operatorului de înmultire a matricelor rare din cadrul clasei MR prezentate în paragraful anterior. Se prezinta în continuare acest operator.

MR& operator * (MR &x)

            int i, j, k, D;

            tip S, R;

            long T;

            Mr *p, * q;

            printf ("\nÎnmultire : &d * *d", this->label, x.label);

            if (this ->n!=x.n)

                        return *this;

            // Pas 1 : Câte elemente va avea matricea finala?

            D=0;

            for(i=0; i<this->dim; i++)

                        for(j=0; j<x.dim; j++)

                                    if(this->c[i] ==x.1[j])

                                                D++;

                                    // Sunt cel mult D.

            p=new MR(this->n, D this->label * x. label);

            // pas 2 : Calcul efectiv.

            // Se ia fiecare element din A si se înmulteste cu tot ce

            // se poate din B

            // Elem. p -> e[i] trebuie sa fie (si sunt) nule dupa initializare

            R=0;

            for (i =0; i<this->dim; i++)

                        for (j=0;j<x.dim; j++)

                                    if(this->c[i]==x.1[j]

                                               

                                                                        else

                                                                                   

                                                }

                        else

                                    if(this->c[i] <x.1[j])) // x e totusi sortat

                                    j=x.dim;

// Se scot zerourile si se sorteaza

D=p->dim;

for(i=0; i<p->dim; i++)

            if (!p->e[i])

                        D- -;

q=new MR(this->n,D, this->label-x.label);

for(i=0; i<p->dim; i++)

            if(p->e[i])

                       

delete p;

Sortare (q->1, q->c, q->e, q->dim;

return *q;

                        A=T*(*B);

                        A.FileWrite("A.txt");

                        P=((float)1/(float)n*Atras();

                        B=(B*)((float) 1/(float)P;

                        A.FileWrite("A.txt");

                        (*B).FileWrite("B.txt");

                        return *B;

            }

Avantajele acestui algoritm constau în simplitatea implementarii si precizia rezultatelor, datorata folosirii unui numar redus de operatii de împartire.

6. Estimarea parametrilor unei regresii statistice folosind clasa MR

            Se considera datele din tabelul 1 ce caracterizeaza cinci întreprinderi din punctul de vedere al productivitatii (y), al numarului de utilaje de mare performanta detinute (x1) si al veniturilor suplimentare acordate salariatilor (x2). Se doreste determinarea unei functii care sa caracterizeze dependenta dintre productivitate si celelalte doua variabile considerate independente (numar de utilaje si venituri suplimentare).

Tabelul 1

y - productivitatea muncii (cresteri procentuale)

1

2

5

6

7

x1 - utilaje de mare randament (bucati)

2

4

4

4

5

x2 - venituri suplimentare (mil. lei)

1

1

3

5

5

            Pentru a specifica forma functiei, se analizeaza pe cale grafica dependenta variabilei - efect (y) în raport cu fiecare dintre variabilele cauzale.


Figura 1 - Dependenta y=f(x1), y=f(x2)

            Întrucât norul de puncte din fiecare reprezentare grafica sugereaza o linie dreapta, specificam modelul astfel:

yi = a0 + a1x1i + a2x2i + ui   (11)

unde ui reprezinta o variabila "reziduala" ce caracterizeaza influenta altori factori asupra variabilei efect y, factori care din diverse motive nu pot fi luati în considerare.

            Daca simbolizam "" valorile "ajustate", rezultate în urma aplicarii modelului liniar, specificam modelul astfel:

   (12)

            Relatia (12) se scrie pentru fiecare set de valori prezentate în tabelul 1, rezultând:

  (13)

            Asadar,

Y = XA + U                   (14)

iar

          (15)

            Determinarea dependentei dintre variabila efect si variabilele cauza însemna determinarea valorilor numerice ale parametrilor  si . În acest scop se utilizeaza metoda celor mai mici patrate. [3] Aceasta metoda presupune minimizarea expresiei , adica, matriceal, U U. Dar

         (16)

unde prin U' s-a notat transpusa matricei U.

            În [3] se demonstreaza ca prin minimizarea relatiei (16) se ajunge la expresia:

             (17)

            O determinare cât mai precisa a matricei parametrilor unei regresii presupune existenta unui numar foarte mare de date (numar mare de linii în matricea X). În multe cazuri practice valorile acestor date sunt nule, fapt ce justifica implementarea relatiei (17) pe o structura de matrice rare. Având deja definitii operatorii de transpunere, înmultire si inversare, implementarea relatiei (17) presupune scrierea unei singure linii de cod:

          (18)

            Asadar, pentru aflarea matricei  sunt necesare doua operatii de transpunere, trei înmultiri si o inversare. Matricele X si Y asupra carora se opereaza au în multe dintre cazurile practice o densitate foarte mica, astfel ca este pe deplin justificata folosirea unor structuri de memorare specifice matricelor rare.

            7. Concluzii

            Asistam în prezent la un fenomen care tinde sa atinga tot mai multe domenii de activitate: necesitatea  de a  cunoaste cît mai precis anumiti factori sau parametri ce caracterizeaza domeniul respectiv, care pâna nu de mult erau fie considerati aleatori, fie nu se punea problema determinarii lor, considerata a fi imposibila. Cunoasterea acestor factori ofera o descriere mai detaliata a sistemului în care se lucreaza, permitând în acest fel o mai buna activitate de control si comanda a acestuia.

            În cele mai multe dintre cazuri baza de calcul a acestor factori o constituie statistica matematica si teoria probabilitatilor, ceea ce conduce la necesitatea rezolvarii unor probleme liniare de foarte mari dimensiuni. Caracterul de raritate al structurilor implicate în rezolvarea problemelor, datorat caracteristicilor reale ale sistemelor, la care se adauga necesitatea unei rezolvari rapide, în concordanta cu dinamica crescânda a sistemelor actuale, justifica pe deplin introducerea în aplicatiile informatice asociate a unor structuri de date adaptate acestor particularitati.

            Softul orientat spre lucrul cu matrice rare exploateaza caracterul de raritate al structurilor manipulate, oferind un dublu avantaj: memorie si timp. În ultimii ani memoria nu mai constituie o problema, însa timpul necesar calculelor, odata cu aparitia sistemelor în timp real, se dovedeste a fi tot mai mult o resursa critica.

            Referitor la lucrul cu matrice în general, în cadrul unui sistem în care timpul reprezinta o resursa critica, se poate imagina un soft care sa faca o evaluare anterioara calculelor asupra densitatii matricei, si, în functie de aceasta, sa decida asupra structurilor de date ce vor fi folosite pentru memorare si efectuarea calculelor, astfel încât timpul afectat calculelor sa fie minim.

           


Document Info


Accesari: 1746
Apreciat:

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site

Copiaza codul
in pagina web a site-ului tau.

 


Copyright © Contact (SCRIGROUP Int. 2014 )