1 / 13

METODA BIPARTIŢIEI PENTRU REZOLVAREA APROXIMATIVĂ A UNOR ECUAŢII Cuprins

METODA BIPARTIŢIEI PENTRU REZOLVAREA APROXIMATIVĂ A UNOR ECUAŢII Cuprins. Introducere - argument Programarea erorilor Rezolvarea aproximativă a ecuaţiilor algebrice şi transcendente. Introducere - argument.

Télécharger la présentation

METODA BIPARTIŢIEI PENTRU REZOLVAREA APROXIMATIVĂ A UNOR ECUAŢII Cuprins

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. METODA BIPARTIŢIEI PENTRU REZOLVAREA APROXIMATIVĂ A UNOR ECUAŢIICuprins Introducere- argument Programarea erorilor Rezolvarea aproximativă a ecuaţiilor algebrice şi transcendente

  2. Introducere - argument Analiza numerică este o ramură a matematicii, însă, concret, este o îmbinare benefică între matematică şi informatică, întrucât cunoaşterea unui limbaj de programare este indispensabilă. Din punct de vedere metodic, analiza numerică, dar mai ales metodele prezentate, pot fi algoritmizate foarte uşor, lucru care influenţează pozitiv gândirea algoritmică a elevilor. În liceu, pentru rezolvarea ecuaţiilor se învaţă o serie de proprietăţi, cum ar fi: natura şi numărul de rădăcini, relaţii între rădăcini şi coeficienţi, formule de rezolvare, etc. Totuşi, rezolvarea efectivă a unor ecuaţii se dovedeşte o problemă foarte dificilă. În momentul în care se trece de gradul patru, (chiar dacă nici formulele de rezolvare a ecuaţiilor de gradele trei şi patru nu se învaţă) nu mai dispunem de formule de calcul al rădăcinilor. Sfera problemelor se reduce drastic la doar câteva cazuri particulare (ecuaţii binome, ecuaţii reciproce, bipătrate, şi altele). Chiar dacă, de exemplu, la analiză se învaţă şirul lui Rolle, aceasta nu aduce contribuţii decisive în rezolvarea efectivă a unor ecuaţii. Pentru a rezolva aceste ecuaţii, este nevoie ca aceste cunoştinţe să fie sistematizate, sedimentate, selectate şi aplicate prin procedee de analiză numerică, aceasta realizând exact aceste lucruri.

  3. Un alt avantaj al dobândirii cunoştinţelor în domeniul analizei numerice în general şi al metodelor discutate în particular îl constituie faptul că o serie de rezultate din analiza matematică pot fi intuite mai uşor. Astfel, metoda bipartiţiei este un mod foarte uşor şi intuitiv, prin care se poate demonstra că dacă o funcţie este definită pe un interval compact şi este continuă pe acel interval, dacă acea funcţie îşi schimbă semnul pe intervalul considerat, atunci ea are, în mod cert, cel puţin o rădăcină reală, care chiar cu ajutorul acestei metode poate fi determinată aproximativ (cu o anumită precizie), adică se pot determina, un anumit număr de cifre exacte ale rădăcinii.

  4. 1) Propagarea erorilor Valori aproximative. Erori absolute, erori relative O aproximare a este un număr uşor diferit de numărul exact A, care in calcule îl înlocuieşte pe ultimul. Dacă a este mai mic decât A, atunci spunem că a este o aproximare prin diferenţă. Dacă însă a este mai mare decât A, atunci a este o aproximare prin adaos (sau exces)De exemplu: pentru , numărul 1,41 este o valoare aproximativă prin diferenţă, în timp ce 1,42 este o valoare aproximativă prin adaos. Definiţia 1: Se numeşte eroare absolută a numărului aproximativ a valoarea absolută a diferenţei dintre numărul exact A şi valoarea aproximativă corespunzătoare, a: . Definiţia 3:Eroarea relativă a unei valori aproximative a este raportul dintre eroarea absolută a acestui număr şi modulul numărului exact A (unde A 0).

  5. 2) Rezolvarea aproximativă a ecuaţiilor algebrice şi transcendente Separarea rădăcinilor Dacă o ecuaţie algebrică sau transcendentă este suficient de complexă, se întâmplă relativ rar să se obţină rădăcini cu precizie. Altfel, în unele cazuri, coeficienţii ecuaţiei nu sunt cunoscuţi decât aproximativ şi, în consecinţă, problema determinării exacte a rădăcinilor propriu-zise îşi pierde sensul. Fie ecuaţia:f(x)=0 (1) .unde funcţia f(x) este, prin definiţie, continuă pe un anumit interval, finit sau infinit, . Toate valorile care anulează funcţia f(x), se numesc rădăcini ale ecuaţiei sau zerouri ale funcţiei f(x). Calculul aproximativ al rădăcinilor reale izolate ale ecuaţiei (1) se face în general în două etape: - separarea rădăcinilor, care constă în stabilirea intervalelor care pot conţine o singură rădăcină a ecuaţiei (1) - ameliorarea preciziei sau determinarea rădăcinilor aproximative, adică obţinerea preciziei impuse.

  6. Pentru realizarea separării rădăcinilor se face apel la o teoremă cunoscută din analiza matematică. Teorema 1: Dacă o funcţie continuă f(x) are în extremităţile intervalului valori de semne contrare , atunci , acest interval conţine cel puţin o rădăcină a ecuaţiei f(x)=0, fapt care probează existenţa a cel puţin unui număr , adică (figura 1). y y Figura 2 Figura 1

  7. Procesul de separare a rădăcinilor începe cu determinarea semnului funcţiei f(x) în câteva puncte intermediare, alegere care trebuie să reflecte particularităţile funcţiei f(x).Trebuie stabilit, într-un fel sau altul, dacă această rădăcină este sau nu unică. Pentru separarea rădăcinilor este suficient să aplicăm metoda bipartiţiei care constă în divizarea aproximativă a intervalului dat în două, patru, opt, etc. părţi egale (până la un anumit pas), şi să determinăm semnul funcţiei f(x) în punctele de diviziune. Metoda bipartiţiei Fie ecuaţia: f(x)=0 (1), unde este o funcţie continuă pe , iar . Pentru calculul rădăcinilor ecuaţiei care aparţin intervalului dat, împărţim acest interval în două părţi. Distingem două cazuri: 1. şi atunci este rădăcina căutată şi oprim procedeul; 2. şi în acest caz selectămdin cele două intervale pe acela pentru care valorile funcţiei în capete au semne contrare. Renotăm capetele acestui interval cu a şi b şi continuăm procedeul.

  8. Se obţine astfel fie rădăcina exactă, fie un şir de intervale închise cuprinse unele în altele.Capetele din stânga ale acestor intervale formează un şir crescător şi mărginit superior de b, iar capetele din dreapta formează un şir descrescător şi mărginit inferior de a. Observaţia 1: Metoda presupune că rădăcinile ecuaţiei (1) au fost separate pe intervalul . Observaţia 2: Dacă este o valoare aproximativă a lui , la pasul avem: . Observaţia 5: În cazul în care rădăcinile nu au fost separate luăm, după caz, o valoare foarte mică pentru (de exemplu ) şi Sau astfel încât să avem . Observaţia 6: În momentul opririi procedeului, mai putem îmbunătăţi precizia calculelor, făcând media aritmetică a ultimelor două valori obţinute

  9. Exemplul 1: Să determinăm rădăcina funcţiei , rădăcină cuprinsă în intervalul . Soluţie: Avem: Deci . FacemIntervalul ales este . Continuăm procedeul: Deci intervalul ales este Intervalul aleseste

  10. Intervalul ales va fi . Intervalul ales va fi Intervalul ales va fi Intervalul ales va fi Intervalul ales va fi Intervalul ales va fi

  11. Intervalul ales va fi Luăm în final Programul C++ pentru metoda bipartiţiei Programul în C++ prezentat în continuare determină soluţia unei ecuaţii de forma în următoarele ipoteze - soluţia este separată într-un interval ; - funcţia este continuă pe intervalul ; Datele de intrare sunt: capetele intervalului în care se caută soluţia, şi precizia dorită epsilon. Să determinăm rădăcina funcţiei cuprinsă în intervalul .

  12. #include <iostream.h> #include <math.h> #include <stdlib.h> #include <conio.h> double f(double x) { return x*x*x-2*x*x+3*x-1; } void main() { double a,b,c,eps; int t=0; cout<<"\n a= "; cin>>a; cout<<"\n b= "; cin>>b; if (f(a)*f(b)>0) cout<<"\n Intervalul nu contine radacini"; else

  13. if (f(a)*f(b)==0) if (f(a)==0) cout<<"\n Solutia: x= "<<a; else cout<<"\n Solutia: x= "<<b; else { cout<<"\n eps= "; cin>>eps; do { c=(a+b)/2; if (f(c)==0) { cout<<"\n Sol este "<< c; t=1; } else if(f(a)*f(c)<0) b=c; else a=c; } while ((t==0)&&(fabs(b-a)>eps)); if (t==0) cout <<" \n Sol aprox este "<< (a+b)/2;} getch(); }

More Related