+ All Categories
Home > Documents > Geoinformatic ă Laborator 08 Prelucrarea datelor...

Geoinformatic ă Laborator 08 Prelucrarea datelor...

Date post: 31-Aug-2019
Category:
Upload: others
View: 12 times
Download: 0 times
Share this document with a friend
23
1 Geoinformatică_Laborator 08 Prelucrarea datelor geografice cu ajutorul calculatorului (2) [ In aceste referate ne vom referi frecvent la cursul de Informaticǎ pentru Neinformaticieni (prescurtat I_pt_N_I ) şi Cursul de Matematici Generale pentru Prelucrarea Automatǎ a Ddatelor (presc. MGPAI) Numerele de forma n.n.n.n reprezinta numerotarea din acest curs. ] 1. Facilitǎţi grafice oferite de VB6 (vezi şi I_pt_N_I pag. 77) În VISUAL-BASIC pe lângǎ instrucţiunile de calcul şi de decizie se pot realiza desene în obiectele de tip “Picture-Box” cu instrucţiuni grafice prezentate mai jos, Desenarea se face "aprinzând" câte un pixel. Instrucţiunile ce permit aprinderea si stingerea pixelilor au forma: PSET (X,Y) pentru aprindere, si PRESET (X,Y) pentru stingere pixel., unde X,Y reprezintǎ coordonatele punctului (a pixelului), coordinate ce pot fi coordinate carteziene sau “coordinate ecran Fig. 6.2.a: Coord.Carteziene Fig. 6.2.b. Coord. Fizice (C."ecran") Spre deosebire de cele învǎţtate la matematicǎ, unde ne-am obişnuit cu coordonatele carteziene, adicǎ cele prezentate în figura 6.2.a, la desenarea pe ecranul monitorului - se pot folosi şi "coordonate ecran", ce au originea (punctul cu coordonatele (0,0) în colţul stânga sus (vezi fig. 6.2.b) Coordonatele colţului stânga-sus şi dreapta-jos se precizeazǎ prin instrucţiunea: <obiect>.SCALE. (X_St_Sus, Y_St_Sus) – (X_Dr_Jos, Y_Dr_Jos)
Transcript

1

Geoinformatică_Laborator 08

Prelucrarea datelor geografice cu ajutorul calculatorului (2)

[ In aceste referate ne vom referi frecvent la cursul de Informaticǎ pentru Neinformaticieni (prescurtat I_pt_N_I ) şi

Cursul de Matematici Generale pentru Prelucrarea Automatǎ a Ddatelor (presc. MGPAI) Numerele de forma n.n.n.n reprezinta numerotarea din acest curs. ]

1. Facilitǎţi grafice oferite de VB6

(vezi şi I_pt_N_I pag. 77)

În VISUAL-BASIC pe lângǎ instrucţiunile de calcul şi de decizie se pot realiza

desene în obiectele de tip “Picture-Box” cu instrucţiuni grafice prezentate mai jos, Desenarea se face "aprinzând" câte un pixel. Instrucţiunile ce permit aprinderea si

stingerea pixelilor au forma: PSET (X,Y) pentru aprindere, si PRESET (X,Y) pentru stingere pixel., unde X,Y reprezintǎ coordonatele punctului (a pixelului), coordinate ce pot fi coordinate

carteziene sau “coordinate ecran”

Fig. 6.2.a: Coord.Carteziene Fig. 6.2.b. Coord. Fizice (C."ecran") Spre deosebire de cele învǎţtate la matematicǎ, unde ne-am obişnuit cu

coordonatele carteziene, adicǎ cele prezentate în figura 6.2.a, la desenarea pe ecranul monitorului - se pot folosi şi "coordonate ecran", ce au originea (punctul cu coordonatele (0,0) în colţul stânga sus (vezi fig. 6.2.b)

Coordonatele colţului stânga-sus şi dreapta-jos se precizeazǎ prin instrucţiunea: <obiect>.SCALE. (X_St_Sus, Y_St_Sus) – (X_Dr_Jos, Y_Dr_Jos)

2

Pentru coordonate carteziene între 0 şi 100 pe orizontalǎ şi verticalǎ vom avea: <Obiect>.SCALE(0,100)-(100,0)

iar pentru coordonate ecran cu aceleaşi limite, vom folosi: <Obiect>.SCALE(0,0)-(100,100) ]

La urma urmei toate desenele sunt fǎcute din puncte, deci putem elabora orice desen cu ajutorul instrucţiunilor PSET şi PRESET, pentru o linie aprinzând mai multe puncte alǎturate. Procedura descrisǎ fiind insǎ “anevoioasǎ” programatorii au pus la punct o serie de instrucţiuni ce uşureazǎ elaborarea desenelor.

Instructiunea ce permite trasarea liniilor, a dreptunghiurilor (goale şi haşurate) are forma:

LINE [(x1,y1)] - [STEP](x2,y2) [,attr][,B][F] (6.5) (Trad.Rom.: LINE = "linie")

- (x1, y1) sunt coordonatele punctului de start, - (x2, y2) sunt coordonatele punctului final.

Explicaţii suplimentare : - Dacǎ (x1,y1) lipseşte se presupune cǎ desenul continuǎ din punctul final anterior. - Dacǎ înainte de (x2,y2) apare cuvântul STEP, x2 şi y2 vor reprezenta – nu valorile lui x şi y pentru punctual final- , ci creşterile lui x şi y pentru a ajunge la punctul final. - attr reprezintǎ culoarea liniei (vbRed-rosu, vbBlue-albastru, vbGreen- verde, etc.) - Dacǎ existǎ B respectiv BF în instrucţiune, programul traseazǎ dreptunghiul

pentru care linia – fǎrǎ B – ar fi diagonala. [ B duce la un dreptunghi gol, BF la un dreptunghi haşurat ]

Fig. 6.3. Dreaptǎ desenatǎ cu instr. LINE

3

Fig 6.3 prezintǎ o linie obţinutǎ cu

Pic_desen.LINE (10,10) -(85,85),vbGreen

Fig. 6.4. Dreptunghiuri obţinute cu instrucţiunea LINE

În figura 6.4 se vǎd dreptunghiuri obţinute cu instrucţiunile: Pic_desen.Line (30, 30)-(80, 90), vbBlue, B şi Pic_desen.Line (20, 30)-(80, 90), vbRed, BF

Folosind doar linii, putem elabora desene destul de “simpatice” [ vezi cǎsuţa din fig. 6.5 ]

Fig. 6.5. “Cǎsuţǎ” desenatǎ cu ajutorul instrucţiunilor LINE

Figura geometricǎ cea mai frecventǎ -dupǎ linie- este cercul. Trasarea lui se face cu instrucţiunea:

CIRCLE (xc, yc ), R [,CUL, ST, SF, ASP ] (6.14)

[Trad.Rom.:CIRCLE = "cerc" ]

unde: - xc, yc sunt coordonatele centrului, - R este Raza cercului, [ restul de parametri opţionali ne permit sǎ trasǎm cercuri colorate,

elipse şi arcuri de cerc:]

ASP = 1 pentru cerc, şi are valori diferite de 1 pentru elipse “turtite”

4

Fig. 6.5. Cerc şi elipsǎ trasatǎ cu CIRCLE Cercul din desen s-a obţinut cu:

Pic_desen.CIRCLE (50, 50), 30, vbBlue

iar elipsa cu Pic_desen.CIRCLE (50, 50), 30, vbMagenta, , , 0.5

2. INTERPOLAREA POLINOMIALĂ. (MGPAD pag. 55)

Pentru a afla logaritmul numerelor 26711, 26712, 26713 pentru care nu mai există

valori afişate în tabele de logaritmi [ avem doar valori pt 26710, 26720] aţi folosit un algoritm care la început calcula diferenţa funcţiei logaritmice între 26710 şi 26720

[4,42684 - 4,42667 = 0,00017], Şi a împărţit această valoare la 10:

0,00017 / 10 = 0,000017 Presupunând că în acest interval funcţia logaritmică variază liniar- aţi calculat de

ex. log (26713) adunând la log (26710) = [4,42667] de 3 ori creşterea calculată pentru o unitate, adică:

log(26713) = 4,42667 + 3 * 0,000017 = 4,42667 + 0,00005 = 4,42672 După cum se ştie funcţia logaritmică nu creşte liniar (vezi Fig . 1.2.3.4 din

MGPAD respective curba ingroşatǎ din fig. 1.2.5.1 ) ) dar pe porţiuni mici nu facem o eroare mare dacă aproximăm funcţia logaritmică printr-o linie.

5

Fig. 1.2.5.1 Interpolarea liniară.

Vom afla valoarea necunoscută - yk - a funcţiei în punctul xk dacă se cunoaşte

valoarea lui în punctele xm şi xm+1 si se aproximează valoarea necunoscutǎ calculând valoarea lui din ecuaţia dreptei ce trece prin cele 2 puncte cunoscute astfel:

mmkmm

mm yxxxx

xfxfy +−

−=

+

+ )()(

)()(

1

1 (1.2.5.1)

[ Folosnd aceastǎ metodǎ, apelǎm la INTERPOLAREA LINIARĂ ] Generalizând, putem descrie problema generală cu care s-au confruntat

matematicienii în decursul elaborării acestor tabele astfel:

Se cunosc exact valorile unei funcţii în n + 1 puncte şi se caută valorile acestei funcţii în alte puncte. În majoritatea cazurilor funcţia prin care aproximăm o funcţie necunoscută va fi un polinom de gradul “n”, pentru care avem date suficiente, date fiind cele n+1 ecuaţii ce rezultă din faptul că polinomul de aproximaţie trebuie să treacă prin cele n+1 puncte de coordonate cunoscute:

yi = Pn ( xi) pentru i = 1,2,… n + 1 (1.2.5.2.)

Metoda matematică prin care se pot calcula valorile unei funcţii în alte puncte decât

cele cunoscute, folosind polinoame ca şi funcţii de aproximaţie, se numeşte INTERPOLARE POLINOMIALĂ şi în funcţie de tipul polinomului de aproximare folosit vorbim despre interpolarea Lagrange, Newton, Cebâşev sau prin Funcţii Spline.

[ Bineînţeles dacă ar exista o formulă simplă pentru calculul valorilor funcţiei,

aceste calcule nu ar fi necesare ].

6

Interpolarea Polinomială Lagrange. Polinomul de interpolare elaborat de Lagrange are forma:

∑=n

0kkn p.y)x(L cu

)xx)....(xx)(xx)(xx)(xx(

)xx)....(xx)(xx)(xx)(xx(p

nk1kk1kk1k0k

n1k1k10k

−−−−−

−−−−−=

+−

+−

sau pe scurt:

∑ ∏−

−=

n kfaran

ki

iin xx

xxyxL

0

)_(

0 )(

)()(

(1.2.5.3)

Este o metodă simplă, nu necesită ca punctele să fie uniform repartizate pe axa x,

este uşor de programat pe calculator, [ Vezi mai jos Ajutorul pentru programatori ] Metoda are un dezavantaj: eroarea nu este uniformă pe intervalul de definiţie, şi la

marginile intervalului el poate deveni prea mare (aşa numitele “efecte de bord”),

Exemplu : . Se cunosc valorile unei funcţii necunoscute, astfel,

x | –3 -2 -1 0 1 2 3

y | 0.0022 0.0540 0.2420 0.3989 0.2420 0.0540 0.0022

( Coordonatelel au fost calculate pe baza curbei lui Gauss:

Cunoscând valorile tabelate ale funcţiei – afişat la sfârşitul EXPLICATII-lor putem verifica corectitudinea metodei de interpolare.)

7

Fig.1.2.5.2. Curba lui Gauss

Se cere metoda care să permită calculul valorilor pentru această funcţie „necunoscută” în orice punct în intervalul (–3 ,3) de exemplu pentru:

-0,9 , 1,5 sau 2,8

In acest caz funcţia de aproximare va fi de gradul 6, folosind programul de calculator obţinem valorile :

f(-0,9) = 0.267, f(1,5) = 0.121 şi f(2,8) = 0.044

[ dar f(5)= -13,15 !]

Polinomul de interpolare Newton

O altǎ formulǎ de interpolare este: formula lui NEWTON.

[ Calculele vezi în MGPAD ]

Dacă folosim acest polinom pentru aproximarea datelor prezentate mai înainte în punctul x = 1,5 vom obţine valoarea y (1,5) = 0,121 , rezultat identic cu cel obţinut prin polinomul Lagrange.

Polinoamele Cebâşev : Sunt alte polinoame de interpolare definite prin Tn (x) = cos ( n . Arccos x) având n = 0,1,2,3,… (1.2.5.10)

8

cu T0 = 1 şi T1 = x

şi

Tn+1 = 2 . x . Tn - Tn-1 (1.2.5.11)

[ Calculele detailate vezi în MGPAD ]

Aproximarea prin funcţii Cebâşev este folosită frecvent în tehnica de calcul pentru aproximarea funcţiilor trigonometrice prin polinoame. Astfel limbajele VISUAL BASIC, FORTRAN în momentul în care au o solicitare pentru sin x, cos x , etc., calculează valorile cerute în acest mod.

De exemplu pentru sin y se obţine în fimal :

sin(y) = 1 - 0.93475. y2 + 4.058041 . y

4 – 1.332369 . y

6 + 0.23965 . y

8 – 0.020577.y

10

Rezultatul aproximează valoarea sinusului cu o eroare relativă mai mică de 10–8,

eroare care este repartizată uniform pe tot domeniul de definiţie.

Functii Spline

Funcţiile SPLINE rezolvă problema interpolării nu printr-o singură funcţie polinomială care trece prin toate punctele, ci defineşte mai multe polinoame de grad inferior (deobicei: gradul = 3 ) astfel ca totalitatea acestor polinoame să aproximeze bine funcţia necunoscută şi să fie asigurată continuitatea nu numai a funcţiei ci şi a derivatelor de ordin 1 şi 2.

Folosind polinoame de gradul 3 (ele vor avea şi derivatele de ordin 2 diferite de zero) pentru aproximarea funcţiei necunoscute prin cele n polinoame, vor fi necesare să fie calculate 4.n coeficienţi ce se determină din condiţiile impuse ca funcţia de interpolare să fie:

- continuă ( în punctele de contact, funcţia din dreapta

să coincidă cu funcţia din stânga ) - cu derivata continuă

( în punctele de contact, tangenta din dreapta să coincidă cu tangenta din stânga )

- cu derivata a doua continuă ( în punctele de contact, curbura din dreapta

să nu difere de curbura din stânga )

La laborator veti avea ocazia sa verificaţi exactitatea aproximǎrilor fǎcute cu

metodele de interpolare.

============== ================ ================

In geografie interpolarea se foloseşte foarte frecvent. (Vezi de ex. Figura 8.1)

9

Fig 8.1. Interpolare în geografie

Pe acest profil avem reprezentată desfăşurarea verticală a suprafeţei unui deal. Punctele ale căror altitudini (Yi) sunt cunoscute au fost determinate pe baza cunoaşterii curbelor hipsometrice. Dacă folosim o metodă de interpolare atunci pentru orice valoare Xi se poate determina valoarea Yi corespunzătoare. Dacǎ folosim interpolarea liniară pentru aflarea valorii Ya1, [ cea care corespunde valorii Xa. ] vom folosi formu;a

1)12(

)12)(1(1 Y

XX

YYXXaYa +

−−=

[ formula este aplicarea formulei (1.2.5.1) pentru cazul nostru ]

10

3. COVARIANŢĂ, CORELARE. [ MGPAD p. 248 ]

Pentru a ne da seama dacă există sau nu o legătură liniarǎ între două mărimi măsurate de mai multe ori, apelǎm la noţiunea de coeficient de corelare.

Pentru a avea o informaţie în acest sens, se defineşte mărimea “Covarianţă” estimată prin:

)1(

))((),cov(

__

1

−−

=∑

=

n

yyxxyx

i

n

ii

(3.8.0.2)

Covarianţa calculată cu formula (3.8.0.2) va avea o valoare mare în cazul

perechiilor cu legǎturi liniare strânse şi va avea o valoare mică în cazul perechilor fǎrǎ legǎturi.

[ Mărimea astfel calculată depinde de unitatea de măsură folosită]

3.1. COEFICIENT DE CORELARE Pentru a ne da seama dacă între cele două seturi de date există sau nu o legătură

liniară, se va folosi raportul dintre covarianţă şi dispersiile celor două mărimi, mărime ce nu mai depinde de unitatea de măsură folosită pentru mărimile măsurate.

Astfel se defineşte COEFICIENTUL DE CORELARE (r ), denumită în unele cărţi ca şi “COVARIANŢĂ NORMATĂ”:

( ) ∑ ∑∑∑

∑∑∑

−−

−==

])y(yn][xxn[

yxy.xn

SS

)y,x(COV)y,x(r

yx2222

(3.8.1.1) Acest coeficient de corelare are valori între –1 şi 1 adică:

-1 =< r =< 1 (3.8.1.2.)

Valoarea lui r - în valoare absolută - tinde către 1, dacă între cele două mărimi

studiate există o legătură liniară foarte strânsă şi modificarea unuia implică obligatoriu o modificare liniarǎ(proporţionalǎ) şi la cealaltă mărime. (vezi fig. 3.8.1.1 resp. 3.8.1.2). Mai frecvente sunt însă cazurile unde valoarea lui r este mai mică ( vezi figurile 3.8.1.3 - 3.8.1.5 ).

11

Fig. 3.8.1.1. Corelare la r = 1 Fig. 3.8.1.2. Corelare la r = -1

Fig.3.8.1.3. r = 0,95 Fig.3.8.1.4. r = 0 Fig. 3.8.1.6. r = - 0,32

Se demonstrează că:

Tǎria legăturii liniare dintre cele două mărimi

este proporţională cu r2.

Dacă r2 e peste 0,5 (r > ~ 0,7) se acceptă ideea existenţei unei

legături liniare, în caz contrar se respinge presupunerea conform căreia

între cele două mărimi ar exista o legătură liniară.

Dacă datele indică existenţa legăturii liniare, avem un câştig enorm, pentru că în acest caz există o relaţie liniară de tipul:

y = a1.x + a0 (3.8.1.3)

[ Valorile a1, a0 se determinǎ cu formulele descrise în MGPAD ]

12

Această ecuaţie ne permite ca - odată determinată - să nu mai fie necesară măsurarea

ambelor mărimi (x şi y), ci măsurând doar una din ele, cealalaltă să se poată calcula, fără a mai fi necesară măsurarea lui.

[ În geografie se poate demonstra prin aceastǎ meodǎ cǎ existǎ o relaţie liniarǎ

între Temperatura medie multianualǎ şi înǎlţimea hipsometricǎ. Odatǎ gǎsitǎ relaţia liniarǎ putem prezice temperature la orice înǎlţime, fǎrǎ sǎ fie

necesarǎ plantarea unei staţii meteo la fiecare înǎlţime ]

4. METODA CELOR MAI MICI PĂTRATE. [MGPAD p. 265 ]

Interpolarea polinomialǎ ne permite sǎ gǎsim valorile unei funcţii în alte puncte decǎt în cele cunoscute, pornind de la faptul cǎ valorile funcţiei în acele puncte sunt corecte. Problema găsirii unei funcţii de aproximare apare şi atunci când - asemănător cu interpolarea -, se cunosc valorile unei funcţii în anumite puncte şi avem nevoie de valorile acestei funcţii în alte puncte, dar acum valorile cunoscute nu s-au obţinut prin calcule, ci prin măsurători.

Până când valorile calculate “ne inspiră o încredere de 100%”, adică suntem siguri, că funcţia necunoscută, şi în consecinţă şi funcţia de aproximare trece prin aceste puncte, la metoda celor mai mici pătrate ( m.c.m.m.p.) valorile fiind obţinute prin măsurători, admitem că ele pot fi afectate de erori.

Noi prin metode matematice vom căuta aceea funcţie de aproximare care este “cea mai aproape de toate punctele “.

Matematic , problema se enunţă în felul următor: Se dau n+1 puncte, la care se cunosc exact valorile xi , dar valorile yi pot fi

afectate de erori:

[ ri = F(xi ) - yi ]. (3.9.0.1.)

13

Se caută un Polinom P(x) astfel, ca suma totală a erorilor:

222

21

20 nr.....rrrR ++++= (3.9.0.2.)

să fie minimă.

Fig. 3.9.0.1. Dreapta găsită Fig. 3.9.0.2. Funcţia de prin m.c.m.m.p. aproximare prin interpolare . Pentru a înţelege diferenţa, vom aproxima nişte puncte prin metoda m.c.m.m.p., în

ipoteza că funcţia necunoscută este o dreaptă (vezi fig. 3.9.0.1), şi vom compara această funcţie cu cea obţinută prin interpolare, bineînţeles pornind de la acelaşi set de puncte. (fig 3.9.0.2.).

Pentru găsirea funcţiilor de aproximare prin m.c.m.m.p., se caută minimul erorii

totale în raport cu coeficienţii funcţiei de aproximare. [ Se ştie: pentru a găsi minimul, vom căuta acolo unde derivata este zero ]. Funcţia cea mai simplǎ ce se poate determina astfel este dreapta, deci în continuare

vom descrie cum se determinǎ “dreapta cea mai probabilă” cu m.c.m.m.p.

APROXIMAREA FUNCŢIILOR LINIARE PRIN “M. C. M. M. P.” Funcţia de aproximare căutată are forma:

y = a1 .x + a0 (3.9.0.4.)

iar restul (suma erorilor) este:

201 )yax.a(R i−+=∑ (3.9.0.5.)

Derivând restul, în raport cu coeficienţii a0 şi a1 şi egalând aceste derivate cu 0 (zero) putem afla valorile coeficienţilor :

14

∑ ∑

∑ ∑∑−

−=

221)x(xn

y.xy.x.na

ii

iiii

şi (3.9.0.7)

∑ ∑∑∑∑ ∑

−=

22

2

0)x(xn

y.x.xx.ya

ii

iiiii

Orice program ce determinǎ „dreapta cea mai probabilǎ” foloseşte aceste relaţii [ vezi partea practicǎ a laboratorului, ajutorul pt. Programatori la M_C_M_M_P ]

Cu programul M_C_M_M_P vom încerca să depistăm dacă există legătură liniară dintre altitudine şi temperatura medie anualǎ, respectiv între: numărul de medici pe cap de locuitor şi speranţa de viaţă a locuitorilor:

[ Datele sunt prezentate în partea practicǎ a referatului. ]

15

5. MATRICI. Definiţii şi mărimi fundamentale.

Un tabel dreptunghiular compus din elementele unei mulţimi M oarecare conţine m linii şi n coloane :

mnmm

n

n

mnmm

n

n

aaa

aaa

aaa

sau

aaa

aaa

aaa

..

.....

.....

..

..

.

..

.....

.....

..

..

21

22221

11211

21

22221

11211

(2.2.0.1)

se numeşte matrice de dimensiuni m x n Matricea dată se poate nota şi astfel:

),...3,2,1,...,3,2,1( njmiaA ij === (2.2.0.2)

[ În unele cărţi matricea se notează cu ijaA=

iar determinantul cu ijaADet =)( .

În acest text vom folosi notaţia ijaA= pentru matrici şi

Det(A) pentru determinant ]

O matrice diagonală este o matrice pătratică ( m = n ) la care în afara elementelor de pe diagonala principală ( aij , i = j ), toate elementele sunt egale cu zero.

mma

a

a

..00

.....

.....

0..0

0..0

22

11

(2.2.0.4)

16

Dacă în plus: * a11 = a22 = …..= ann , se numeşte matrice scalară , * a11 = a22 = …..= ann = 1, se numeşte matricea unitate (sau matricea identitate) :

U = I =

1..00

.....

.....

0..10

0..01

(2.2.0.5)

Pentru adunarea (scăderea) a 2 matrici de dimensiuni identice tehnica de calcul oferă “porţiunea” de program:

(2.2.0.8)

DIM A(m,n), B(m,n), C(m,n) ‘ Instr. ce reţine loc în memorie pt. matricile ‘ A(), B(), C() . ‘ FOR I = 1 TO m ‘ FOR J = 1 TO n ‘ C(I,J) = A(I,J) +/- B(I,J) ‘ Ac. instrucţiune se va executǎ de “m.n” –ori. NEXT J ‘ NEXT I ‘

Produsul a două matrici A(m,n) şi B(n,p) este o matrice C(m,p), ale cărei elemente se obţin prin relaţia:

∑=

=n

kkjikij bac

1

. (2.2.0.9)

Matricea produs C = A.B este rezultatul înmulţirii “la stânga” a lui B cu A, sau rezultatul înmulţirii “la dreapta” a lui A cu B.

17

Pentru ca operaţia de înmulţire a matricilor să aibă sens, este necesar ca numărul coloanelor matricii situate la stânga să fie egal cu numărul liniilor matricei situate la dreapta. În general înmulţirea matricilor nu este comutatvă, adică:

ABBA .. ≠ Aşa cum a fost menţionat anterior, pentru un singur element cij al matricii produs se vor însuma produsele aikbkj , iar pentru a obţine matricea produs în întregime, vom folosi un program ca şi cel ce urmează: (2.2.0.10)

DIM A(m,n), B(n,p),C(m,p) ‘ Se reţine loc în memorie pt. matricile ‘ A( ), B( ), C( ) FOR I = 1 TO m ‘

FOR J = 1 TO p ‘ S=0: FOR K = 1 TO n ‘ Începutul însumării S = S+ A(I,K)*B(K,J) ‘

NEXT K ‘ C(I,J) = S ‘ Suma se atribuie elementului din ‘ ‘ matricea produs NEXT J ‘ NEXT I ‘

[ Matricea unitate se comportǎ identic cu numǎrul “1” (unu) în domeniul numerelor, adicǎ o matrice inmulţitǎ cu matricea unitate rǎmâne neschimbat: A.I = I.A = A ]

Matricea inversă Pentru unele matrici există MATRICEA INVERSĂ notată: K = A

-1 (2.2.0.19)

pentru care : K . A = A . K = I (2.2.0.20) unde I este matricea unitate.

Matricile joacǎ un rol împortant în geografie, orice hartǎ afişatǎ pe ecranul unui monitor este memorat în calculator sub forma unei matrici ( vezi fig 8.1).

Matricile se utilizeazǎ pentru memorarea structurilor de tip „GRAF” (reţea de drumuri, de cǎi ferate, etc) şi în multe alte cazuri.

Deosebit de importante sunt analizele care se pot face pe baza hărţilor digitale booleene. Din punct de vedere numeric acestea sunt matrici ale căror elemente aij pot avea doar două valori:

18

0 0 0 1 1

1 1 0 0 0

1 1 0 0 1

1 1 1 1 1

0 0 0 1 1

Valoarea 1 reprezintă punctele de pe hartă în care elementul pe care îl investigăm este prezent, în timp ce valoarea 0 reprezintă punctele de pe hartă în care acesta lipseşte. O suită de hărţi (matrici) booleene construite pentru aceeaşi regiune terestră pot fi supuse operaţiilor algebrice (+, -, × sau ÷), rezultatul final fiind exprimat în hărţi tematice.

Veţi întâlni aceste hǎrţi la disciplina de Sisteme Informatice Geografice” (G.I.S)

Fig. 8.1. Matricea unei hărţi digitale hipsometrice: dreptunghiul roşu din colţul stânga-sus al hărţi este afişat pe ecranul calculatorului şi procesat în operaţii algebrice şi statistice pe baza matricei lui.

---------------------------------- --------------------------- ------------------------------------

19

Directorul de lucru pentru LAB. 8 este următorul:

C:\GEOINFORMATICA\specializarea\grupa\Lab08

A. FACILITĂŢILE GRAFICE OFERITE de VB6

A1. Intraţi în folderul TABLA_DESEN şi lansaţi proiectul

TABLA_DESEN.vbp Prin „Click” pe butoanele respective încercaţi sǎ desenaţi puncte, linii, dreptunghiuri, cercuri şi elipse. Când aţi terminat, prin butonul „Trec la case” treceţi la desenarrea de cǎsuţe. Acolo puteţi desena o cǎsuţa, apoi 3 cǎsuţe cu un program lung, trei cǎsuţe cu un program cu subrutine şi trei cǎsuţe cu ferestre. Pentru a vǎ da seama ce instrucţiuni au dus la desenele obţinute puteţi consulta codul programului [ Meniul View, opţiunea „ Code” ], sau consultaţi EXPLICATII-le.

B. INTERPOLAREA POLINOMIALĂ

B1. INTERPOLAREA cu polinomul Lagrange Intraţi în folderul INTERP_Lagrange şi lansaţi proiectul

Interp_Lagrange.vbp Dupǎ lansare este afişat alura „Funcţiei „necunoscute” ( noi ştim cǎ e

funcţia GAUSS ) , şi cele 7 valori în care cunoaştem valoarea acestei Funcţii. Calculǎm valorile aproximative prin interpolare Lagrange, introducând

pe rând - în fereastra ”bleu” pregǎtitǎ - valorile pentru x: -0.9 , 1.5 , 2.9 şi 5 .Dupǎ introducerea valorii pt. X, rugǎm programul sǎ calculeze

valoarea aproximativǎ prin „CALCULAM Y” Se vede cǎ valoarea aproximativǎ obţinutǎ este aproape de valoarea

teoreticǎ, [Puteţi verifica consultând tabelul de la capǎtul EXPLICATII-lor ] dacǎ valoarea este în interiorul intervalului [-3,3], dar duce la erori

serioase dacǎ încercǎm sǎ EXTRAPOLĂM ( adicǎ sǎ utilizǎm metoda în afara intervalului de definiţie [ vezi rezultatul pt. 5 ]. )

B2. INTERPOLAREA cu funcţii SPLINE

Intraţi în folderul INTERP_SPLINE şi lansaţi proiectul

Interp_SPLINE.vbp Dupǎ lansare este afişat alura funcţiei necunoscute, prin cele 18 valori

în care se dau valorile acestei „Funcţii necunoscute” Cu acest program utilizǎm facilitǎţile grafice ale limbajului VB6

pentru a „Desena” funcţia aproximativǎ obţinutǎ cu metodele Interpolǎrii liniare şi a interpolǎrii prin funcţii SPLINE.

Prin „click” pe „CALCULAM FUNCTIILE” programul calculeazǎ

20

valorile aproximative pentru tot intervalul dat ( atât prin Interpolare liniarǎ cât şi prin Interpolare SPLINE ), rezultatul poate fi vizionat prin „click” pe butonul cu inerpolarea aleasǎ.

[ Se vede cu cât e mai aproape este interpolarea polinomialǎ decât

interpolarea liniarǎ - faţǎ de alura probabilǎ a funcţiei necunoscute- ]

C. CORELARE, M_C_M_M_P

Intraţi în folderul M_C_M_M_P şi lansaţi proiectul M_C_M_M_P.vbp. Dupǎ lansare este afişat o listǎ de fişiere de tip *.dat din care alegeţi datele de analizat în ordinea : 12_PCT_FBUN.dat

12_PCT_BUNE.dat

12_PCT_MERG.dat

12_PCT_URAT.dat apoi ALT_TEMP.dat şi MED_SP_V.dat Primele 4(patru) conţin 12 puncte cu legǎturi liniare de la cel mai tare

( FBUN, r = 1) pânǎ la cel mai slab (URAT, r < 0,7) Dupǎ ce alegem un fişier, putem sǎ trecem la un alt fişier („ALT FISIER”) sau sǎ începem calculele (dupǎ „START CALCULE” programul afişeazǎ parametri pentru „Dreapta cea mai probabilǎ” y = A.x + B ,

( A = panta dreptei , B = „ordonata la origine”) şi valoarea coeficientului de corelare (R) Un „Click” pe „AFISAM DESEN” reprezintǎ grafic punctele cu coordonatele memorate în fişier (nişte cerculeţe roşii ) şi dreapta cea mai probabilǎ de culoare albastrǎ. [ Dacǎ punctele se „grupeazǎ” în jurul unei drepte, valoarea lui R în valoare

absolutǎ va fi în jur de 1 ( +1 dacǎ dreapta creşte şi -1 dacǎ dreapta scade). Pe mǎsurǎ ce punctele „se-ndepǎrteazǎ” valoarea lui R scade ]

21

Pentru a obţine nişte grafice clare, valorile memorate în fişierul ALT_TEMP.dat vor fi:

Nr.

X

(altitudinea –

1000*metri)

Y

(temperatura aerului - °°°°C)

1 0.345 10.2

2 0.769 7.1

3 0.998 6.3

4 1.346 5

5 1.678 4.3

6 1.853 2.8

7 2.300 0.2

8 2.436 -1.3

În CAZUL 2: în care se cautǎ o corelaţie între numărul de medici pe 100 de locuitori şi speranţa locuitorilor de a depǎsi vârsta de 40 de ani (ani de viaţă peste 40 a locuitorilor Fişierul MED_SP_V.dat va conţine aceste date:

Nr.

X

numărul de medici / 100 de locuitori

Y

speranţa de viaţă peste

40 de ani ( în ani)

1 1.1 14

2 2.0 15

3 3.0 15.2

4 5.0 20.7

5 8.0 22.9

6 14.0 33.7

7 16.0 38.9

D. VECTORI, MATRICI

Intraţi în folderul MATRICI_VECTORI şi lansaţi proiectul

MATRICI.vbp. Dupǎ lansare puteţi opta pentre studierea introducerii datelor în vectori sau matrici

sau pentru operaţii cu matrici Dacǎ alegeţi Citim VECTORI sau Citim MATRICI puteţi studia introducerea

datelor în aceste structuri de date. Dacǎ alegeţi ADUNAM, SCADEM, INMULTIM MATRICI veţi putea exersa

operaţiile cu matrici de diferite dimensiuni.

22

D.1. Alegeţi opţiunea Citim VECTORI apoi cea de

D.1.1 Introducem manual vectori

Precizaţi NUMARUL DE ELEMENTE ( sǎ zicem cǎ e 4 ) ,

dupǎ care introduceti cele 4 elemente în fereastra de interogare care apare. [ Dupǎ ce ati introdus un numǎr , confirmarea se face prin „Click” pe <O.K.>

sau prin apǎsarea tastei <ENTER> ] Numerele introduse apar în fereastra de listare alǎturatǎ.

[ Se vede cǎ introducerea unui vector mai mare este consumotoare de timp, mult mai reprde merge dacǎ apelǎm la varianta cu φişiere: ]

D.1.2. Citim Vectorul de pe fişier.

Dupǎ ce am ales aceastǎ opţiune apare o fereastrǎ cu lista fişierelor disponibile, din

care alegem fişierul „simpatic” prin „Click” pe numele fişierului. În acest moment în fereastra de listare apar elementele vectorului memorat în fişier. [Puteţi compara cu cât mai repede am terminat introducerea datelor în acest caz ,

deci putem spune cǎ :”Am înţeles cum se introduc vectorii” ]. D.2. Alegeţi opţiunea Citim MATRICI apoi cea de

D.2.1 Introducem manual o MATRICE

Precizaţi NUMARUL DE COLOANE ( sǎ zicem cǎ e 2 ) , apoi NUMARUL DE LINII ( sǎ zicem cǎ e tot 2 )

dupǎ care introduceţi cele 4 elemente în fereastra de interogare care apare.

[ Şi acum Dupǎ ce ati introdus un numǎr , confirmarea se face prin „Click” pe <O.K.> sau prin apǎsarea tastei <ENTER> ]

Numerele introduse apar în fereastra de listare alǎturatǎ.

D.2.2. Citim MATRICEA de pe fişier.

Dupǎ ce am ales aceastǎ opţiune apare o fereastrǎ cu lista fişierelor disponibile, din

care alegem fişierul „simpatic” prin „Click” pe numele fişierului. În acest moment în fereastra de listare apar elementele matriciii memorate în fişier. [Puteţi compara cu cât mai repede am terminat introducerea datelorîn acest caz ,

deci putem spune cǎ :”Am înţeles cum introducemMATRICI” ]. D.3. Alegeţi opţiunea ADUNAM,SCADEM, INMULŢIM MATRICI dupǎ

care trebuie sǎ alegeţi cele douǎ matrici cu care efectuaţi operaţiunea aleasǎ.

23

Pentru adunare şi scǎdere veţi alege matrici de dimensiuni identice ( doi pe doi, doi pe trei, trei pe doi, trei pe trei sau trei pe patru ) dupǎ care precizaţi operaţia ce doriţi sǎ efectuaţi.

Dupǎ efectuarea unei operaţii rezultatul e afişat în matricea rezultatǎ, dupǎ care puteţi reveni la alegerea matricilor dupǎ „INCERCAM si ALTE OPERATII”.

La înulţirea matricilor verificaţi proprietatea matricilor unitate ( au în denumire

litera I ( Doi_pe_doi_I.MAT , Trei_pe_TREI_I.mat) de a lǎsa nemodificatǎ matricea cu care le inmulţim

Pentru inmulţiri veţi alege matrici cu o dimensiune comunǎ ( de ex o matrice de

dimensiunile 2 x3 inmulţit cu una de 3x4 [ Incercaţi şi invers ! }


Recommended