Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Metoda bipartitiei

c



+ Font mai mare | - Font mai mic



Metoda bipartitiei

Fie ecuatia



f (x) = 0 (1.1)

unde f : [ a , b ] → R este continua iar f (a) f (b) < 0.

Impartim segmentul [ a , b ] in doua parti. Distingem urmatoarele cazuri:

1. si atunci este radacina cautata si oprim procedeul;

2. si in acest caz selectam din cele doua intervale si pe acela pentru care valorile functiei in capete au semne contrare.

Acest interval il notam [ a1 , b1 ] si apoi continuam procedeul.

Se obtine, fie radacina exacta, fie un sir de intervale inchise cuprinse unele in altele

astfel incat

pentru n = 1, 2,. (1.2)

Prin urmare avem

Capetele din stanga ale acestor intervale a1, a2, ., an, . formeaza un sir crescator si marginit superior de b, iar capetele din dreapta b1, b2, ., bn, . formeaza un sir descrescator si marginita inferior de a. Din teorema "clestelui" urmeaza

( fiind limita lor comuna). (1.3)

aratam ca numarul este radacina ecuatiei (1.1). Trecand la limita in (1.2) si tinand cont de continuitatea functiei f si de faptul ca sirurile si sunt convergente avem:

sau

si tinand cont de (1.3) rezulta

adica

Observatie 1.1.1 Metoda presupune ca radacinile lui (1.1) au fost separate pe [a, b].

Observatie 1.1.2 Daca este o valoare aproximativa a lui la pasul n atunci avem

.

Observatie 1.1.3 Metoda este comoda pentru obtinerea unei estimari initiale a radacinii separate, pentru utilizarea ei in alte metode si este usor programabila pe calculator.

Observatie 1.1.4 Procedeul converge lent.

Observatie 1.1.5 In cazul in care radacinile nu au fost separate luam dupa caz o valoare foarte mica pentru a1 (de exemplu -10 n cu n N si b1 = 0 sau a1 = 0 si b1 = 10 n astfel incat sa avem f (a1) f (b1) < 0.

Observatie 1.1.6 In momentul opririi procedeului mai putem imbunatati precizia calculelor facand media aritmetica a ultimelor doua valori an si bn ( n N * ), adica

Exemplu 1.1.1 Sa determinam radacina functiei

cuprinsa in intervalul [0, 1].

Solutie:

Avem: f (0) = - 1, f (1) = 1

f (0,5) ≈ 0,125 - 2 ∙ 0,25 + 3 ∙ 0,5 - 1 = 0,1250.

Deci intervalul ales [ a1 , b1 ] este [0, (0,5)]. Continuam procedeul.

f (0,25) ≈ 0,0156 - 2 ∙ 0,0625 + 3 ∙ 0,25 - 1 = - 0,3594.

Deci intervalul ales [ a2 , b2 ] va fi [(0,25), (0,5)].

f (0,375) ≈ 0,0527 - 2 ∙ 0,1406 + 3 ∙ 0,375 - 1 = - 0,1035.

Intervalul ales [ a3 , b3 ] va fi [(0,375), (0,5)].

f

Intervalul ales [ a4 , b4 ] va fi [(0,375), (0,4375)].

f

Deci segmentul ales [ a5 , b5 ] va fi [(0,4063), (0,4375)].

f

Intervalul ales [ a6 , b6 ] va fi [(0,4219), (0,4375)].

f

Intervalul ales [ a7 , b7 ] va fi [(0,4297), (0,4375)].

f

Intervalul ales [ a8 , b8 ] va fi [(0,4297), (0,4336)].

f

Intervalul ales [ a9 , b9 ] va fi [(0,4297), (0,4317)].

f

Luam in final

Programul pentru metoda bipartitiei

Programul prezentat mai jos determina solutia unei ecuatii de forma (1.1) in urmatoarele ipoteze:

solutia este separata intr-un interval [a, b];

functia este continua pe intervalul [a, b].

Datele de intrare sunt: capetele intervalului in care se cauta solutia (a, b) si precizia dorita (epsilon). Functia este definita in cadrul programului.

#include<iostream.h>

#include<math.h>

#include<conio.h>

double f ( double x)

void main (void)

else

if (f(a) * f(c) < 0)

b=c;

else

a=c;

while ( ( t = = 0) && (fabs (b-a) > eps) );

if ( t = = 0)

cout<<"Solutia aproximativa este x ="<< (a+b)/2<<endl;}

getch ( );}



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 899
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved