Documente Academic
Documente Profesional
Documente Cultură
METODE DE OPTIMIZARE
1. SCOPUL LUCRRII
Prezentarea unor algoritmi de optimizare, implementarea acestora ntr-un limbaj de nivel nalt (n particular, C) i folosirea lor n rezolvarea unor probleme de electronic.
2. PREZENTAREA TEORETIC
Metodele de optimizare se clasific, n raport cu problema care se pune pentru funcia int sau scop, astfel: 1. Metode ce determin expresia analitic a funciei, care aproximeaz cel mai bine o funcie tabelat dat prin puncte; 2. Metode ce determin diferii parametri ai funciei scop (int), pentru a obine un extrem al funciei.
2.1.
Presupunem c avem o funcie definit printr-un tabel de valori. Se mai spune c funcia este dat implicit, deci nu i se cunoate forma n mod direct. Dac tabelul este obinut n urma unor msurtori fizice, atunci elementele lui pot avea erori. Elementele care difer mult de celelalte pot fi eliminate. Problema care se pune este s determinm funcia analitic care aproximeaz cel mai bine datele din tabel sau curba care trece prin punctele tabelului.
2.2.
COEFICIENTUL DE CORELAIE
Interpretarea erorilor de aproxima ie se poate face cu ajutorul coeficientului de corelaie. Dei se calculeaz un minim al erorii ptratice medii, exist i o interpretare grafic, din punct de vedere geometric. n final intereseaz ct de bun este potrivirea unei funcii alese de noi peste poriunea din graficul unei funcii analitici necunoscute, pentru care cunoatem doar o evoluie local, dat de setul de perechi (xi, yj) de la intrare.
Lucrarea 8
123
2.2.1. CORELAIA EANTIOANELOR (evenimentelor eantionate) Dac avem o serie de n msurtori ale variabilelor X i Y, sub forma xi si yi, cu i = 1,2,,n atunci pentru estimarea corela iei dintre X i Y se poate face pe baza coeficientului de corelaie produs-moment, cunoscut sub numele de coeficient Pearson. Acesta mai este denumit i coeficientul de corela ie al eantioanelor. Acesta este important mai ales dac att X ct i Y sunt distribuite normal. Atunci coeficientul de corelaie Pearson este cel mai bun estimat al corela iei ntre X i Y. Acest coeficient se scrie astfel:
rxy =
_
_
(x
i =1
- x)( y i - y )
(8.1)
(n - 1) s x s y
____
unde x i y sunt valorile medii ale eantioanelor xi i yi, iar sx i sy sunt deviaiile standard ale eantioanelor xi i yi. Sumarea se face dup i = 1, n . Desfcnd sumele rela ia anterioar se poate rescrie:
rxy =
n xi yi - xi yi
i =1 i =1 i =1
n xi2 - ( xi ) 2 n yi2 - ( yi ) 2
i =1 i =1 i =1 i =1
(8.2)
Reamintim c valoarea absolut a coeficientului de corelaie trebuie s fie mai mic sau egal cu 1. Cu toate c formula anterioar sugereaz un algoritm ntr-un singur pas pentru calculul corelaiei eantioanelor, este recunoscut instabilitatea numeric a unui asemenea algoritm.
2.2.2. INTERPRETAREA GEOMETRIC A CORELAIEI Coeficientul de corelaie poate fi privit i drept cosinusul unghiului ntre doi vectori de eantioane, generai de dou valori aleatoare. Atenie: aceast metod funcioneaz doar cu date centrate, adic acele date care au fost deplasate cu media eantioanelor, astfel nct au o medie aritmetic (average) egal cu 0. Exist situaii n practic n care se prefer un coeficient de corelaie necentrat, dar care este incompatibil cu coeficientul Pearson. Ca exemplu, s presupunem 5 ri pentru care produsul naional brut este, respectiv: 1, 2, 3, 5 i 8 milioane dolari. Presupunem c gradul de srcie al acelorai ri, pstrate n aceeai ordine este de 11%, 12%, 13%, 15%, i 18%. Atunci, s
124
considerm pe x i y ca fiind doi vectori ordonai, cu 5 elemente, coninnd datele exprimate anterior: x = (1, 2, 3, 5, 8) i y = (0.11, 0.12, 0.13, 0.15, 0.18) Urmnd procedura de determinare a unghiului dintre doi vectori (pe baza produsului scalar), coeficientul de corelaie necentrat va fi: (8.3) Datele anterioare au fost alese astfel nct s existe o corela ie foarte bun ntre ele: y = 0.10 + 0.01 x Coeficientul de corela ie Pearson va trebui s fie exact 1. Centrnd datele (deci deplasndu-l pe x cu valoarea E(x) = 3.8 i pe y cu valoarea E(y) = 0.138) obinem: x = (-2.8, -1.8, -0.8, 1.2, 4.2) i y = (-0.028, -0.018, -0.008, 0.012, 0.042), de unde: (8.4) aa cum ne ateptam.
2.2.3. INTERPRETAREA MRIMII CORELAIEI Mai muli autori ofer modaliti de interpretare a coeficientului de corelaie. De exemplu Cohen (1988) a sugerat urmtoarele interpretri ale corela iei, cu referire la studiile psihologice (Tabel 8.1): Tabel 8.1 Corelaia
Mic (slab) Mediu (normal)
Valori negative
Valori pozitive
Dup cum nsui Cohen a observat, toate criteriile de acest fel sunt ntr-o oarecare msur arbitrare i nu ar trebui luate n sens strict. Aceasta deoarece interpretarea unui coeficient de corelaie depinde de context i de scopurile avute n vedere. O corelaie de
Lucrarea 8
125
0.9 poate fi foarte sczut dac cineva verific legile fizicii folosind instrumente de nalt calitate, dar poate fi foarte ridicat n contextul tiinelor sociale unde apar influene datorate unor factori complica i. Pentru problemele de regresie la care ne referim n laborator, interpretarea se poate face conform tabelului indicat de Cohen, pentru c nu exist factori eseniali care influeneaz datele preluate, alii dect erorile obinuite de msurare i interpretare, pentru care se respect regulile specifice de eliminare a experimentelor eronate, de rotunjire a valorilor conform cu erorile de calcul acceptate sau de reprezentare normalizat (pentru valorile foarte mici sau foarte mari).
3. METODE DE REGRESIE
3.1.1. REGRESIA LINIAR
Se consider funcia tabelat: Tabelul 8.2
x
x1
x2
y2
x3
x4
y1
y3
y4
.. ..
xm
ym
unde m reprezint numrul de msurtori sau de valori ale funciei. Se cere s se determine funcia liniar de forma general y = ax + b (8.1) care s aproximeze cel mai bine funcia tabelat astfel ca eroarea s fie minim.
a= m x i y i - x i
i=1 i=1 m m i=1 2
yi
(8.2)
m
m
i=1
x i2
m
- xi i=1
m m i=1
b=
i=1
x i2 y i - x i x i y i
i=1 m i=1
i=1
x i2
- xi i=1
m
(8.3)
3.1.1.1.
126
Obs.: 1) Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntul-cheie void, la fel ca n C. 2) Dimensiunea vectorilor folosii de metod se stabilete funcie de numrul m al punctelor experimentale considerate. 3) Denumirile ultimelor dou argumente ale funciei respect o convenie de notaie i anume notaia ungar n care se utilizeaz i anumite indicii literale despre tipul variabilei. Aceste indicii literale preced numele variabilei. Aceste dou argumente fiind de tip referin (deci pointer) denumirile variabilelor ncep cu litera mic p, ca sugestie pentru pointeri.
3.1.2.
REGRESIA POLINOMIAL
Dac regresia liniar nu este satisfctoare se caut o funcie polinom de un anumit grad (2, 3, 4n). Fie funcia dat n tabelul (8.1). Considerm c reprezentarea grafic a acestei funcii se aseamn foarte mult cu curba unui polinom de gradul n de forma: (8.4) y = a n x n + a n -1 x n -1 + ...... + a 1 x + a 0 Coeficienii polinomului se determin cu ajutorul sistemului:
Lucrarea 8
127
m m m m ma0 + x i a1 + x i2 a 2 +L+ x ik a k + + x in a n = y i i=1 i=1 i=1 i=1 m m 2 m 3 m k+1 m n+1 x i a 0 + x i a1 + x i a 2 +L+ x i a k +L+ x i a n = x i y i i=1 i=1 i=1 i=1 i=1 ------------------------------------------- m m m m m x p a + x p+1 a + x p+2 a +L+ x p+k a +L+ x p+n a = x p y 0 i i 1 k i 2 i i i i i=1 i=1 i=1 i=1 n i=1 _____________________________________________________ m m m n+2 m n+k m 2n n+1 xn a + L L + x a x a x a + + + + x i a n = x in yi i=1 i 0 i=1 i 1 i=1 i 2 i=1 i k i=1
(8.5) Sistemul obinut este un sistem liniar n necunoscutele a 0, a 1, a 2.,..., a n i se rezolv cu una dintre metodele cunoscute n Lucrarea 3 - Metode pentru rezolvarea sistemelor liniare de ecuaii.
3.1.2.1.
// // // //
) { // declararea i definirea variabilelor locale ntreg i, j, k ; // contoare real A[N][N] ; // matrice utilizat pentru //rezolvarea sistemului (8.5). real B[N] ; //vectorul termenilor liberi (sistemul (8.5)) // corpul de instruciuni al funciei pentru i= 1 n+1 { pentru j= i n+1 { A[i][j] = 0 ; pentru k= 1 n A[i][j] = A[i][j] + pow( x[k], i+j-2) ; A[j][i] = A[i][j] ; } B[i] = 0 ; pentru k= 1 n B[i] = B[i] + y[k] * pow( x[k], i-1) ; } // rezolv sistemul 7.5 dac ( Gauss(n+1,A,B,coef) !=0 ) returneaz True ; altfel returneaz False ;
numrul de puncte cunoscute ale funciei vectorul absciselor funciei vectorul ordonatelor funciei gradul polinomului de regresie // adresa de nceput a vectorului //coeficienilor polinomului de regresie.
128
ndrumar de laborator pentru Metode Numerice Obs.: 1) Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntul-cheie void, la fel ca n C; 2) Dimensiunea N a vectorilor folosii de metod se stabilete funcie de numrul m al punctelor considerate, avnd n vedere c indexul minim al vectorilor n C este 0; 3) Funcia Gauss( ) la care se face referire este cea din Lucrarea 3 - Metode pentru rezolvarea sistemelor liniare de ecuaii.
(8.6)
care aproximeaz cel mai bine funcia numeric. Valorile lui a i b sunt:
a=
( xi )(
i =1 i =1
m x 1 ) - m i yi i=1 y i 2
(8.7)
b=
(
i=1
(8.8)
nlocuim valorile lui a i b n funcia hiperbolic (8.6) i se obine funcia care aproximeaz cel mai bine funcia numeric din tabelul 8.1. Pentru a liniariza rezolvarea sistemului s-a lucrat cu inversele valorilor lui y, adic 1/y, motiv pentru care sumele sy i sxy conin valorile inversate pentru y.
3.1.3.1.
// numrul experienelor // vectorul absciselor funciei numerice // vectorul ordonatelor funciei numerice // adresa coeficientului lui a al funciei //hiperbolice // adresa coeficientului lui b al funciei //hiperbolice
Lucrarea 8
{ // declararea i definirea variabilelor locale real sx; // variabila ce conine sumele absciselor real sy ; // variabila ce conine suma inverselor // ordonatelor. real sxx ; // variabila ce conine ptratul absciselor real sxy ; // variabila ce conine suma raportului // dintre abscise i ordonate.. ntreg i ; // contor // corpul de instruciuni al funciei sx = 0 ; sy = 0 ; sxy = 0 ; sxx = 0 ; pentru i= 1m { // urmeaz un corp de instruciuni, deci se // folosete acolada deschis. sx = sx + x[i] ; sy = sy+
129
} *pA = }
; *pB =
Obs.: 1) Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntul-cheie void, la fel ca n C; 2) Dimensiunea vectorilor folosii de metod se stabilete funcie de numrul m al punctelor considerate, avnd n vedere c indexul minim al vectorilor n C este 0; 3) Denumirile ultimelor dou argumente ale funciei respect o convenie de notaie i anume notaia ungar n care se utilizeaz i anumite indicii literale despre tipul variabilei. Aceste indicii literale preced numele variabilei. Aceste dou argumente fiind de tip referin (deci pointer) denumirile variabilelor ncep cu litera mic p, ca sugestie pentru pointeri.
130
ndrumar de laborator pentru Metode Numerice Pentru un calcul comod al constantelor a i b se logaritmeaz funcia (8.9):
(8.10) i se determin constantele astfel nct eroarea ptratic de ansamblu s fie minim. m m m ( ln y )( x 2 ) -( x )( ln y x ) i i i i i i=1 i=1 i=1 (8.11) a = exp 2 m m 2 m x i - x i i=1 i=1 m m m m x ln y - ( x )( ln y ) i i i i i=1 i=1 i=1 (8.12) b = exp 2 m 2 m m x i - xi i=1 i=1 3.1.4.1. Algoritm 8.4. Regresia exponenial
ln y = ln a + x ln b
void Reg_Exp ( ntreg m, real x[ ], real y[ ], real *pA, real *pB ) { // real real real real
// // // // // // //
numrul absciselor funciei vectorul absciselor funciei numerice vectorul ordonatelor funciei numerice adresa coeficientului lui a al funciei exponeniale. adresa coeficientului lui b al funciei exponeniale.
declararea i definirea variabilelor locale sx ; // suma absciselor sxx ; // suma ptratelor absciselor sy ; // suma logaritmilor din ordonate sxy ; // suma absciselor nmulite cu logaritmul // ordonatelor. ntreg i ; // contor pentru bucla for(). // corpul de instruciuni al funciei sx= 0 ; sy = 0 ; sxy = 0 ; sxx = 0 ; // iniializare pentru i= 1 m { sx = sx + x[i] ; sxx = sxx + x[i]*x[i] ; sy = sy+log( y[i]) ; sxy = sxy+ x[i] * log( y[i]) ; } *pA = exp }
s y s xx -s x s x y m s xx -s x s x
*pB = exp
ms xy -s x s y m s xx -s x s x
Lucrarea 8 Obs.: 1) 2) 3)
131
Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntulcheie void, la fel ca n C; Dimensiunea vectorilor folosii de metod se stabilete funcie de numrul m al punctelor experimentale considerate, avnd n vedere c indexul minim al vectorilor n C este 0; Denumirile ultimelor dou argumente ale funciei respect o convenie de notaie i anume notaia ungar n care se utilizeaz i anumite indicii literale despre tipul variabilei. Aceste indicii literale preced numele variabilei. Aceste dou argumente fiind de tip referin (deci pointer) denumirile variabilelor ncep cu litera mic p, ca sugestie pentru pointeri.
a = exp
(8.14)
b=
(8.15)
Cu aceste valori funcia y = ax b aproximeaz cel mai bine funcia tabelat (8.1) care se aseamn cel mai bine cu o funcie de tip geometric.
132
3.1.5.1.
void Reg_Geo ( ntreg m, real x[ ], real y[ ], real *pA, real *pB ) { // real real real
// numrul de abscise // vectorul absciselor funciei numerice // vectorul ordonatelor funciei numerice // adresa coeficientului lui a al funciei //geometrice // adresa coeficientului lui b al funciei //geometrice
declararea i definirea variabilelor locale sx ; // suma logaritmilor absciselor sy ; // suma logaritmilor ordonatelor sxy ; // suma produsului intre logaritmii //absciselor i logaritmilor ordonatelor real sxx ; // suma ptratelor logaritmilor absciselor ntreg i ; // contor // corpul de instruciuni al funciei sx = 0 ; sy = 0 ; sxx = 0 ; sxy= 0 ; // iniializare pentru i= 1 m { sx = sx + log(x[i]) ; sxx = sxx + log(x[i])*log(x[i]) ; sy = sy + log (y[i]) ; sxy = sxy + log(x[i])* log(y[i]) ; } *pA = exp }
s y s xx -s x s xy m s -s s xx x x
*pB =
m s xy -s x s y m s xx -s x s x
Obs.: 1) Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntul-cheie void, la fel ca n C; 2) Dimensiunea vectorilor folosii de metod se stabilete funcie de numrul m al punctelor experimentale considerate, avnd n vedere c indexul minim al vectorilor n C este 0; 3) Denumirile ultimelor dou argumente ale funciei respect o convenie de notaie i anume notaia ungar n care se utilizeaz i anumite indicii literale despre tipul variabilei. Aceste indicii literale preced numele variabilei. Aceste dou argumente fiind de tip referin (deci pointer) denumirile variabilelor ncep cu litera mic p, ca sugestie pentru pointeri.
Lucrarea 8
133
(8.17)
b=
(8.18)
w = 2 p f =
2 p T
3.1.6.1.
void Reg_Tri ( ntreg m, // numrul absciselor funciei numerice real x[ ], // vectorul absciselor funciei numerice real y[ ], // vectorul ordonatelor funciei numerice real *pA, // adresa coeficientului lui a din expresia //funciei trigonometrice real *pB // adresa coeficientului lui b din expresia //funciei trigonometrice ) { // declararea i definirea variabilelor locale real w ; // pulsaia ( =2*PI*T) real s y ; // suma ordonatelor funciei numerice real scos 2x: ; // suma ptratelor cosinusurilor din abscise real scos x ; // suma cosinusurilor din abscise real sycosx ; // suma produsului ordonatelor cu cosinusul // absciselor corespunztoare. ntreg i ; // variabila de control a ciclului for() i //index de vector. // corpul de instruciuni al funciei // iniializarea sumelor s y = 0 ; scos 2x = 0 ; scos x = 0 ; sycos pentru i= 1 m
= 0 ;
134
= scos
+ cos(w x i ) ;
x
sycos }
= sycos
s y scos m scos
+ yi* cos(w x i ) ;
s y cos x scos x ;
*pA = }
2 x -scos x 2 x -scos x
*pB =
scos x
Obs.: 1) Am marcat faptul c funcia nu ntoarce nici o valoare prin cuvntul-cheie void, la fel ca n C; 2) Dimensiunea vectorilor folosii de metod se stabilete funcie de numrul m al punctelor experimentale considerate, avnd n vedere c indexul minim al vectorilor n C este 0; 3) Denumirile ultimelor dou argumente ale funciei respect o convenie de notaie i anume notaia ungar n care se utilizeaz i anumite indicii literale despre tipul variabilei. Aceste indicii literale preced numele variabilei. Aceste dou argumente fiind de tip referin (deci pointer) denumirile variabilelor ncep cu litera mic p, ca sugestie pentru pointeri.
x2
x
x3 x4 xm
135
(8.19) Se pune problema determinrii acestui plan, adic a valorilor constantelor A, B, C astfel ca planul s aproximeze cel mai bine o funcia numeric de dou variabile dat. Valorile lui A, B, C sunt soluiile sistemului:
m n n m mnC+ x i nA+ y mB= z ij j i=1 j=1 i=1 j=1 m n m n m m 2 (8.20) x nC+ x nA+ x y = i j xi z ij i i i=1 j=1 i=1 j=1 i=1 i=1 m n n m n n 2 y mC+ x y A+ y mB= y j z ij j i j j i=1 j=1 i=1 j=1 j=1 j=1
z = Ax + By + C
Utiliznd una dintre metodele numerice de rezolvare a sistemelor liniare din capitolul 3 se determin A, B, C, deci planul cutat.
3.1.7.1.
ntreg Reg_Mul ( ntreg m, // numrul de argumente pe Ox ntreg n, // numrul de argumente pe Oy real x[ ], // vectorul argumentelor pe axa Ox a funciei // numerice. real y[ ], // vectorul argumentelor pe axa Oy a funciei // numerice. real z[ ], // vectorul valorilor funciei numerice real *coef // adresa de nceput a vectorului //coeficienilor planului. ) { // declararea i definirea variabilelor locale ntreg i, j ; // indici real A[4][N] ; // matricea sistemului (8.20); real B[4] ; // vectorul termenilor liberi ai sistemului //(8.20) // corpul de instruciuni al funciei A[1][1] = m*n ; A[1][2] = 0 ; pentru i= 1 m A[1][2] = A[1][2] + n*x[i] ; A[2][1] = A[1][2] ; A[1][3] = 0 ; pentru i= 1 n A[1][3] = A[1][3] + m*y[i] ; A[3][1] = A[1][3] ; A[2][3]=0 ; B[1] = 0 ; B[2] = 0 ; B[3 ] = 0 ; pentru i= 1 m pentru j= 1 n { A[2][3] = A[2][3] + x[i]*y[j] ; B[1] = B[1] + z[i][j] ;
136
Obs.: 1) Funcia Gauss( ) la care se face referire este cea din Lucrarea 3 - Metode pentru rezolvarea sistemelor liniare de ecuaii. 2) Dimensiunile matricelor i vectorilor folosii de metod se stabilete funcie de numerele m i n, ale punctelor experimentale considerate pe fiecare ax de coordonate.
3.2.1.1.
// Adresa unei funcii reale de dou // variabile reale(pointer la o funcie) // vectorul de start // eroarea de calcul
Lucrarea 8
{ // declararea i definirea variabilelor locale real gama0 ; // scalar ntreg contor ; // indice real minim ; // minimul dintre valorile funciilor real val_curent ; // valoarea minim curent a funciei real xcurent[ ] ; // valoarea anterioar i curent a // abscisei punctului. ntreg maxiter ; // numrul maxim de iteraii
137
// corpul de instruciuni al funciei randomize( ); // macro ce pregtete folosirea funciei // random() prin iniializarea //generatorului de numere aleatoare. gama0 = 1 ; ct timp ( gama0 >eps) { // ct timp contor = 0 ; minim = *Adr_functie( x0[0], x0[1]) ; execut { x_curent[0]=x0[0] + gama0*pow(-1, random(101) mod 2); x_curent[1]=x0[1] + gama0*pow(-1, random(101) mod 2); val_curent = *Adr_functie( x_curent[0], x_curent[1]) ; incrementeaz contor ; } ct timp( (contor <= maxiter) SI (val_curent >= minim)); dac ( val_curenta<minim) { // dac minim = val_curent ; x0[0] = x_curent[0] ; x0[1] = x_curent[1] ; } dac ( contor > maxiter) gama0 = gama0 - 0.001 ; } // ct timp returneaz minim ; }
Obs.: Notaiile Adr_functie i *Adr_functie sunt simbolice. Ele reprezint, respectiv, adresa unei funcii (deci un pointer la o funcie) i apelul unei funcii, indirect, prin pointerul al aceasta. Pentru lmuriri consultai Anexa B - Noiuni de C necesare desfurrii lucrrilor de laborator.
138
urmtoarea component a vectorului X i se procedeaz la fel pn se baleiaz toate componentele vectorului considernd, n acest caz, c s-a realizat un ciclu. Se poate ncepe un nou ciclu lund ca punct iniial minimul obinut. La fiecare iteraie se determin un nou punct funcie de precedentul astfel: X k +1 = X k + pas E k (8.22) unde E k reprezint vectorul E k =(0,0, ,1,,0), cifra 1 fiind pe locul k, k=0,1,,n, iar pas reprezint pasul cu care se modific componentele. Dup un ciclu ncheiat se trece la un nou ciclu cu vectorul iniial cel pentru care s-a obinut minimul n ciclul ncheiat (precedent), lund un nou pas mai mic, obinut din pasul precedent nmulit cu o raie subunitar. Se continu iteraia pn cnd pas < sau numrul de iteraii depesc un numr maxim dat. reprezint eroarea de calcul a punctului de minim.
3.2.2.1.
real Min_Unidimensional ( Adr_functie, // Adresa unei funcii reale de dou //variabile reale( pointer la o funcie) real x0[ ], // vectorul de start real eps // eroarea de calcul ) { // declararea i definirea variabilelor locale real pas ; // pasul de modificare al coordonatelor ntreg i ; // contor real min_curent,min_prec; // minimul curent respectiv prec. intreg nrp ; // numrul de pai real stnga = -1 ; real dreapta = 1 ; real direcie ;// direcia de deplasare: stnga sau dreapta. // corpul de instruciuni al funciei pas = 1 ; min_curent = *Adr_functie(x0[0], x0[1]) ; execut { pentru i= 0..1 { // pentru( ) nrp = 0 ; direcie = dreapta ; execut { min_prec = min_curent ; incrementeaz nrp ; x0[i]=x0[i]+directie*pas; min_curent = *Adr_functie( x0[0], x0[1]) ; dac ( (nrp=1) I (min_curent > min_prec) { x0[i] = x0[i]-2*pas ; min_curent = *Adr_functie(x0[0], x0[1]) ;
Lucrarea 8
incrementeaz nrp ; direcie = stnga ;
139
} } ct timp( min_curent <= min_prec) ; x0[i] = x0[i] - direcie*pas ; min_curent = *Adr_functie( x0[0], x0[1]) ; } // pentru( ) pas = pas - 0.0001 ; } ct timp( pas >= eps) ; returneaz min_curent ; }
Obs.: Notaiile Adrf i (*Adrf) sunt simbolice. Ele reprezint, respectiv, adresa unei funcii (deci un pointer la o funcie) i apelul indirect al unei funcii, prin intermediul pointerului la aceasta. Pentru lmuriri consultai Anexa B - Noiuni de C necesare desfurrii lucrrilor de laborator.
4. DESFURAREA LUCRRII
4.1. NTREBRI
1. Care este diferena dintre metodele de optimizare i cele de interpolare? 2. O problema de optimizare se va soluiona ntotdeauna cu succes deplin pentru orice valori ale unei funcii? 3. Prezentai pe scurt principiul de lucru al unei metode de regresie. 4. Ce poate influena precizia de calcul a oricrei metode de optimizare? 5. Cum se definete eroarea ptratic medie? Este aceasta o funcie de una sau de mai multe variabile? 6. Numii cteva utilizri practice ale operaiei de regresie.
4.2.
PROBLEME LABORATOR
1. S se implementeze metodele 2.1.12.1.7 i 2.2.12.2.2 n limbajul ANSI C. 2. Se dau datele experimentale din tabelul 8.2: Tabelul 8.2. X Y
1 1.44 2 1.728 3 2.0736 4 2.4883 5 2.9859 6 3.5831 7 4.2998 8 5.1597 9 6.191
S se determine funcia care aproximeaz cel mai bine funcia tabelat cu metodele 2.1.1. 2.1.5.
140
ndrumar de laborator pentru Metode Numerice 3. Se d funcia: z = x 2 + y 2 - 2 x - 4 y + 3 . S se determine minimul funciei cu metodele drumului aleator i a cutrii unidimensionale.
Se cer valorile I0 i (gamma) utiliznd regresia liniar asupra tabelului: v (V) ln(i) Indicaie:
.2 .28 .36 .44 .52 .6
ln(10 ) = -20.7232
-9
ln(10 ) = -18.4207
-8
ln(10 ) = -16.1181
-7
ln(10 ) = -13.8155
-6
ln(10 ) = -11.5129
-5
ln(10-4) = -9.2103
Apoi:
ceea ce respect definiia unei regresii liniare, de form y = ax+b. Din aplicarea regresiei liniare asupra tabelului vor rezulta chiar a i b. Din valoarea lui a se deduce gamma, iar din valoarea lui b rezult I0. Obs.: Valorile de tip ordonat din tabel sunt de fapt valori numerice (scalari), anume funcia logaritm natural aplicat valorilor curentului din tabelul din problema interpolrii. Aceast operaie este necesar datorit logaritmrii aplicate relaiei curentului, n deducerea teoretic. Se vor putea, astfel, scdea valori de aceeai natur, n expresia erorii ptratice.
BIBLIOGRAFIE
1. I. Rusu, Metode numerice n electronic. Aplicaii n limbaj C, Editura Tehnic, Bucureti, 1997.