Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte 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





DOCUMENTE SIMILARE

Trimite pe Messenger
Operatii cu liste
crearea unei liste liniare prin citirea informatiilor din noduri
Instructiuni iterative
STRUCTURI DE DATE
Pointeri pe caractere si functii
Pointeri si tablouri
GRAFICA - Unit-ul Graph
Operatii cu liste liniare simplu inlantuite
METODE DE ELABORARE A ALGORITMILOR.PROGRAMARE DINAMICA.
Tipul de date STRING (sir de caractere)

TERMENI importanti pentru acest document

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 564
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 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site