4.TABLOU. Lect. dr. Trimbitas Gabriela

Σχετικά έγγραφα
Sisteme diferenţiale liniare de ordinul 1

Esalonul Redus pe Linii (ERL). Subspatii.

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Metode iterative pentru probleme neliniare - contractii

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

5.4. MULTIPLEXOARE A 0 A 1 A 2

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.


R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Curs 4 Serii de numere reale

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

Laborator 11. Mulţimi Julia. Temă

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Seminar 5 Analiza stabilității sistemelor liniare

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

riptografie şi Securitate

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Subiecte Clasa a VII-a

2 Transformări liniare între spaţii finit dimensionale

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Curs 1 Şiruri de numere reale

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

V O. = v I v stabilizator

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Metode de interpolare bazate pe diferenţe divizate

Matrice. Determinanti. Sisteme liniare

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Examen AG. Student:... Grupa: ianuarie 2016

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.


Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

CIRCUITE INTEGRATE MONOLITICE DE MICROUNDE. MMIC Monolithic Microwave Integrated Circuit

4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Criptosisteme cu cheie publică III

1.3 Baza a unui spaţiu vectorial. Dimensiune

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

Subiecte Clasa a VIII-a

Transformata Radon. Reconstructia unei imagini bidimensionale cu ajutorul proiectiilor rezultate de-a lungul unor drepte.

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I.

MARCAREA REZISTOARELOR

INTRODUCERE ÎN PROGRAMAREA MATLAB

Nicolae Cotfas ELEMENTE DE EDITURA UNIVERSITĂŢII DIN BUCUREŞTI

Geometrie computationala 2. Preliminarii geometrice

Curs 2 DIODE. CIRCUITE DR

Spaţii vectoriale. Definiţia 1.1. Fie (K, +, ) un corp şi (V, +) un grup abelian.

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

CAPITOLUL 4 FUNCŢIONALE LINIARE, BILINIARE ŞI PĂTRATICE

ANEXA 4. OPERAŢII ARITMETICE IMPLEMENTĂRI

CURS 5 Spaţii liniare. Spaţiul liniar R n

Capitolul ASAMBLAREA LAGĂRELOR LECŢIA 25

a. 11 % b. 12 % c. 13 % d. 14 %

Proiectarea filtrelor prin metoda pierderilor de inserţie

Integrala nedefinită (primitive)

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

Sisteme liniare - metode directe

Foarte formal, destinatarul ocupă o funcţie care trebuie folosită în locul numelui

Μπορώ να κάνω ανάληψη στην [χώρα] χωρίς να πληρώσω προμήθεια; Informează dacă există comisioane bancare la retragere numerar într-o anumită țară

III. Reprezentarea informaţiei în sistemele de calcul

5.1. Noţiuni introductive

Asupra unei inegalităţi date la barajul OBMJ 2006

Metode de sortare. Se dau n numere întregi, elemente ale unui vector a. Se cere să se aranjeze elementele vectorului a în ordine crescătoare.

1.4 Schimbarea bazei unui spaţiu vectorial

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

Profesor Blaga Mirela-Gabriela DREAPTA

Algoritmica grafurilor XI. Cuplaje in grafuri. Masuri de calitate. Numere Ramsey

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă.

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Universitatea din Bucureşti Facultatea de Matematică şi Informatică. Algebră (1)

Aparate de măsurat. Măsurări electronice Rezumatul cursului 2. MEE - prof. dr. ing. Ioan D. Oltean 1

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener

REACŢII DE ADIŢIE NUCLEOFILĂ (AN-REACŢII) (ALDEHIDE ŞI CETONE)

VII.2. PROBLEME REZOLVATE

Capitolul 2 - HIDROCARBURI 2.4.ALCADIENE

Sortare. 29 martie Utilizarea şi programarea calculatoarelor. Curs 16

Câmp de probabilitate II

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Subiecte Clasa a V-a

PROBLEME DE VALORI ŞI VECTORI PROPRII

SIGURANŢE CILINDRICE

Curs 2 Şiruri de numere reale

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Transcript:

4.TABLOU 1

TABLOUL Structură de date statică. Definiţie: Fie C o colecţie de elemente de tipul TE şi [n]={1,2,3,...,n cu n N* o mulţime de indici. Aplicaţia f : [n 1 ] x [n 2 ] x x [n k ] C care ataşează fiecărui tuplu de k indici (i 1, i 2,, i k ) unde i j [n j ], un element c i1, i2,, ik defineşte un tablou k dimensional T(n 1, n 2,, n k ) Secvenţele sunt deci aplicaţii ale domeniului indecşilor pe domeniul de valori. Deci pentru k = 1 se obţine un tablou unidimensional numit vector, f :[n] C, având elementele c 1 = f(1); c 2 = f(2); ; c n = f(n). 2

Un tablou este static: nu pot fi inserate sau şterse elemente de tablou (celule). Identificarea elementelor se face cu ajutorul indicilor. În memoria internă elementele unui tablou static vor ocupa o zonă compactă (contiguă) de memorie, adică locaţii succesive de memorie, ceea ce asigură accesul direct (radom) la un element - reprezentare secvenţială. 3

Pentru tablourile statice limbajele de programare au un tip de dată predefinit: array în Pascal; [ ] C/C+ +, Accesul la elementul x[i]: adresa de început a tabloului (a) + poziţia în vector * dimensiunea ocupată în memorie de un element Tablou Unidimensional: x: array[n] of TE înseamnă : x 0,,x n-1 x[i]= a + i*sizeof(te) x: array[ i in..i fin ] of TE x[i]= a + (i- i in )*sizeof(te) 4

Tablou Multidimensional (de k dimensiuni) reprezentarea în memorie este liniară La tablourile bidimensionale: linie după linie (indicii variază de la dreapta la stânga) coloană după coloană (indicii variază de la stânga la dreapta) Tablourile k dimensionale - interpretate ca vectori de tablouri k-1 dimensionale. Accesul la un element x[i 1,i 2,,i k-1,i k ] : x: array[n 1,n 2,,n k ] of TE x[i 1,i 2,,i k-1,i k ] = a + i j 1 * n i * sizeof(te) k 1 j 1 j i k 1 5

Domeniul indecşilor depinde de limbaj. Există 3 implementări importante: index {0,1,, n-1 index {1,, n (Matlab,Fortran) index {l in,,l fin Default Base index Specifiable Index Type Specifiable Base Index Bound Check Multidimensional C 0 No No unchecked array of array C++ 0 No No unchecked array of array Java 0 No No checked array of array Pascal index type Yes Yes varies yes 6

Tablourile k dimensionale interpretate ca vectori de tablouri k-1 dimensionale. Exemplu: Imagine RGB 3 dimensiuni Vector de 3 matrice (una pentru fiecare culoare) 7

Imagine RGB reprezentare: matrice bidimensională de triplete sau vector de 3 matrice bidimensionale 8

Memorarea tablourilor : înlănţuit (cazul matricilor rare) Tabloul este folosit ca SD pentru mai multe TAD-uri: Containere; Vectori; Matrice; Liste; Dicţionare Exemplu: Matrice de numere complexe 9

typedef struct { /*definim tipul elementului */ double real; double imag; complex; /*definim unele operatii*/ complex cadd ( complex z1, complex z2 ) { complex z; z.real = z1.real + z2.real; z.imag = z1.imag + z2.imag; return z; complex cmul ( complex z1, complex z2 ) { complex z; z.real = z1.real * z2.real - z1.imag * z2.imag; z.imag = z1.real * z2.imag + z1.imag * z2.real; return z; 10

complex conj ( complex z1 ) { complex z; z.real = z1.real; z.imag = -z1.imag; return z; void cprn ( complex z ) { printf("(%lf) + i(%lf)", z.real, z.imag); 11

#define MAXROW 10 #define MAXCOL 15 typedef struct /*definim matricea*/ { int rowdim; /* nr. linii*/ int coldim; /* nr. coloane*/ complex entry[maxrow][maxcol]; matrix; 12

matrix msetid ( int n ) /* matricea unitate*/ { matrix C; int i, j; if ((n > MAXROW) (n > MAXCOL)) { fprintf(stderr, "msetid: Matrice prea mare\n"); C.rowdim = C.coldim = 0; return C; C.rowdim = C.coldim = n; for (i = 0; i < C.rowdim; ++i) { for (j = 0; j < C.coldim; ++j) { A.entry[i][j].real = (i == j)? 1 : 0; A.entry[i][j].imag = 0; return C; 13

matrix madd ( matrix A, matrix B ) { matrix C; int i, j; /* adunarea a 2 matrice*/ if ((A.rowdim!= B.rowdim) (A.coldim!= B.coldim)) { fprintf(stderr, "madd: Matrice de dimensiuni incompatibile\n"); C.rowdim = C.coldim = 0; return C; C.rowdim = A.rowdim; C.coldim = A.coldim; for (i = 0; i < C.rowdim; ++i) for (j = 0; j < C.coldim; ++j) C.entry[i][j] = cadd(a.entry[i][j],b.entry[i][j]); return C; 14

matrix mmul ( matrix A, matrix B ) { matrix C; int i, j, k; complex z; /*inmultirea a 2 matrice*/ if (A.coldim!= B.rowdim) { fprintf(stderr, "mmul: Matrice de dimensiuni incompatibile\n"); C.rowdim = C.coldim = 0; return C; C.rowdim = A.rowdim; C.coldim = B.coldim; for (i = 0; i < A.rowdim; ++i) { for (j = 0; j < B.coldim; ++j) { C.entry[i][j].real = 0; C.entry[i][j].imag = 0; for (k = 0; k < A.coldim; ++k) { z = cmul(a.entry[i][k], B.entry[k][j]); C.entry[i][j] = cadd(c.entry[i][j],z); return C; 15

O impementare completa a unuei matrice vezi : Liviu Negrescu Limbajele C si C++ pentru incepatori ; Editura Albastra http://cse.iitkgp.ac.in/~pds/notes/swf/list1.html 16

Vector dinamic 0 1 2 10 11 Constă: o dintr-un vector (normal) care nu este complet ocupat cu elemente o dintr-un indice care indică prima poziţie neocupată (primul element liber al vectorului) 17

Atât timp cât noul element mai încape în vector el va fi inserat => inserarea unui element: O(1) Dacă noul element nu mai încape în câmp (vector) : Se generează un nou vector mai mare; Se copiază elementele existente în noul vector; Se adaugă la sfârşit noul element Practic: de câte ori dimensiunea devine insuficientă se generează un vector de dimensiune dublă şi se copiază elementele existente. În realitate factorul folosit de diferitele limbaje este: Sun-Java: 1,5 Gnu-Java: 2 C# (Mono): 2 Python: 1,125 18

Precondiţie: Afirmaţie care trebuie să fie adevărată înainte de apelul operaţiei (sarcina utilizatorului) Postcondiţie Afirmaţie care trebuie să fie adevărată în urma efectuarii operaţiei => formează baza argumentării corectitudinii TAD-ului 19

TAD Vector Dinamic β = 2 α = 4 w = 1 n = 0 v = new TE[w] //factorul de creştere //consum max suplimentar de memorie //dimensiunea curentă a câmpului //numărul curent de elemente //vector static V[0] V[1] V[w-1] 20

Dăm unele operaţii pentru TAD vector dinamic Procedure Creare (V,n,TE) O(n) Crează un vector V de n elements de tip TE Pre : n, TE Post: V D Procedure Set(V,i,e) O(1) Setează e in poziţia i în vectorul V; //de obicei cu [] Pre : V D, i<n, e TE Post: V[i]=e Function Get(V,i) O(1) Returneaza valoarea elementului de pe poziţia i din vectorul v. Pre : V D, i <n, Post: Get = V[i] Size (dimensiune curentă) set(int i, TE& e) { assert(0 i<n); v[i] = e; TE get(int i) { assert(0 i<n); return v[i]; int size() { return n; 21

n=5, w=5 void insert (TE e) { if (n==w) reallocate(β*n); v[n]=e; n++; 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 e n=6, w=10 22

void remove () { assert(n>0); n--; if (α*n w and n>0) reallocate(β*n); n=3, w=10 0 1 2 0 1 0 1 n=2, w=4 23

void reallocate (int new_w) { w = new_w; TE[ ] new_v = new TE[new_w]; for (i=0; i<n; i++) new_v[i] = v[i]; v = new_b; 24

Foarte curând oamenii se vor împărţi în două categorii: oameni bătrâni şi oameni care ştiu să lucreze la calculator. (Grigore Moisil) Grigore Constantin Moisil (n. 10 ianuarie 1906, Tulcea - d. 21 mai 1973, Ottawa, Canada) a fost un matematician român, considerat părintele informaticii românești cu invenția de circuite electronice tristabile 25