curs 11 - babeș-bolyai universityvasile.chis/cursuri/info/c11ppt.pdf · cum se defineste o...

16
CURS 11 Rezolvarea ecuaţiilor transcendente Fie ecuatia: f(x)=0 algebrică - dacă poate fi adusă la o formă polinomială transcendentă dacă nu este algebrică Ecuaţii algebrice: 3x=9; 2x 2 -3x+2=0; x5=x(2x-1); Ecuaţii transcendente: sin(x)+cos(x)=0.5; e ln(x)-x =π; Pentru determinarea soluţiilor ecuaţiilor transcendente este nevoie de metode de aproximare. Cum se defineste o rădăcină aproximativă? Rădăcină unei ecuatii:

Upload: others

Post on 06-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

CURS 11

Rezolvarea ecuaţiilor transcendente Fie ecuatia: f(x)=0 algebrică - dacă poate fi adusă la o formă polinomială transcendentă – dacă nu este algebrică

Ecuaţii algebrice: 3x=9; 2x2-3x+2=0; x5=x(2x-1); Ecuaţii transcendente: sin(x)+cos(x)=0.5; eln(x)-x=π;

Pentru determinarea soluţiilor ecuaţiilor transcendente este nevoie de metode de aproximare.

Cum se defineste o rădăcină aproximativă?

Rădăcină unei ecuatii:

Page 2: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Pentru determinarea soluţiilor unei ecuaţii de forma f(x)=0 trebuie parcurse două etape:

1. separarea rădăcinilor - partiţionarea intervalului de definiţie al funcţiei în mai multe subintervale determinate de nodurile xmin=x1, x2, ... , xM=xmax astfel încât oricare subinterval să conţină cel mult o rădăcină a ecuaţiei

2. calculul rădăcinilor cu o anumită precizie

Page 3: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Dacă o funcţie continuă f(x) are valori de semn opus la capetele unui interval [a,b] (dacă f(a)·f(b)<0) atunci în acel interval se găseşte cel puţin o rădăcină a ecuaţiei f(x)=0. Rădăcina este unică în intervalul [a,b] dacă derivata funcţiei (f'(x)) există şi îşi păstrează semnul în acel interval.

1. Separarea rădăcinilor

Nici o radacina in intervalul [-10,-5]

Radacini multiple in intervalul intervalul [0,10]

O singura radacina in intervalul [10,15]

Dacă subintervalele rezultate în urma partiţionării domeniului de definiţie al funcţiei sau a domeniului în care se caută zerourile funcţiei, [xm,xm+1], sunt suficient de mici astfel ca fiecare să conţină cel mult o rădăcină, atunci:

Teorema:

Page 4: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

- metoda bisecţiei (înjumătăţirii intervalului) - metoda lui Newton (metoda tangentei) - metoda secantei - metoda falsei poziţii -metoda aproximaţiilor succesive - ...

2. Calculul rădăcinilor cu o anumită precizie

Metode:

Page 5: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Metoda bisecţiei

- constă în împărţirea repetată a intervalului iniţial [a,b] în jumătăţi ale acestuia şi selectarea intervalului (jumătăţii) în care se află soluţia.

Page 6: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Conditia de oprire a procesului iterativ :

Page 7: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

- oferă convergenţă liniară a soluţiei ecuaţiei - convergenţă lentă - garantează convergenţa la soluţia exactă dacă valorile f(a) şi f(b) sunt de semne contrare

Avantaje si dezavantaje

Page 8: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Program exemplu: metoda bisecţiei

//metoda bisectiei

#include<stdio.h>

#include<math.h>

#include <conio.h>

#include <stdlib.h>

#define eps 1e-8

double f(double x)

{

return 4.5*cos(x/3)*cos(x/3)-x/4;

}

double bisect(double inf, double sup, double (*pf)(double))

{

double c;

if((*pf)(inf)==0) return inf; if((*pf)(sup)==0) return sup; if((*pf)(inf)*(*pf)(sup)>0)

{

printf("\nNu exista sol sau exista solutii multiple");

while(!_kbhit());

exit(1);

}

do {

c=(inf+sup)/2.0;

if((*pf)(c)==0) return c;

if((*pf)(inf)*(*pf)(c)<0)

sup=c;

else

inf=c;

}

while((sup-inf) >= eps); // conditia de oprire

return c;

}

int main()

{

double s;

float A=3.0, B=4;

s=bisect(A,B,f);

printf("\nSolutia este s= %lf\a",s); while(!_kbhit()); return 0;

}

Page 9: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Metoda lui Newton

- propusă de către Isaac Newton în anul 1669 - revăzută de către Joseph Raphson în 1690 si Thomas Simpson în 1740 - una dintre cele mai răspândite metode folosite în acest scop - algoritmul bazat pe această metodă poate fi folosit şi la determinarea minimului sau maximului unei funcţii prin determinarea zeroului primei derivate a funcţiei, în metode de optimizare.

Fie ecuatia: f(x)=0

Page 10: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Conditia de oprire a procesului iterativ :

Calculul soluţiei exacte implică: 1. alegerea unei aproximaţii iniţiale (x0) a soluţiei ecuaţiei f(x)=0

- condiţie necesară şi suficientă: f(x0)f"(x0)>0. 2. calculul derivatei funcţiei al cărui zero se calculează

- calcul numeric (daca nu este posibil analitic)

Deoarece în relaţia iterativă de calcul a rădăcinii valoarea f'(x0) apare la numitor, în cazul accidental în care derivata funcţiei în punctul xi este zero, se va alege pentru aceasta valoarea ε (o valoare mică, diferită de zero) folosită la calculul derivatei sale.

1. în unele cazuri este necesară o alegere atentă a valorii de start, x0 2. necesită evaluarea a două funcţii. 3. la o iteraţie, se poate determina numai una dintre rădăcinile ecuaţiei cu rădăcini

multiple (depinde de rădăcina aproximativă de "guess" de la care se porneşte)

Dezavantajele metodei lui Newton

Page 11: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Calculul numeric al derivatelor

1. Forward differences method (FDM)

2. Central differences method (CDM)

Page 12: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

Vezi cursul 2 – pasul de reprezentare a numerelor reale simpla precizie: 2-23 = 1.192 x 10-7

dubla precizie: 2-52= 2.22 x 10-16

Pentru valori de tip REAL, stocate pe 4 octeţi, p 10-7, iar pentru valori de tip DOUBLE, stocate pe 8 octeţi, p 10-16.

Conditii pentru alegerea valorii

Page 13: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii
Page 14: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii

//Metoda Newton

#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> double f(double x) { return 4.5*cos(x/3)*cos(x/3)-x/4; } double newton(double (*) (double), double x0) { double p=1.0,eps,x,df; int k; //Calculul preciziei masinii si a valorii eps do p=p/2.0; while(p+1.0!=1.0); eps=pow(p,1/3.0); printf("p= %.20lf\teps= %.20lf",p,eps); //Calculul solutiei x=x0; k=0; do { k++; x0=x; //calculul numeric al derivatei prin CDM df=(f(x+eps)-f(x-eps))/2/eps; //evitarea cazului in care df este zero if(df==0) df=eps; //actualizarea solutiei x=x0-f(x)/df; printf("\nIteratia: %d: x= %15.12lf",k,x);

if(k>20) { printf("\nNu converge!"); exit(1); } } while(x!=x0); printf("\nSolutia ecuatiei este

%15.12lf\nNr. de iteratii: %d",x,k); return x; } int main () { double x0,x; int k; printf("Solutia initiala: x0= "); scanf("%lf",&x0); newton(f,x0); while(!_kbhit()); return 0; }

Page 15: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii
Page 16: CURS 11 - Babeș-Bolyai Universityvasile.chis/cursuri/info/c11ppt.pdf · Cum se defineste o rădăcină aproximativ ... în unele cazuri este necesară o alegere atentă a valorii