Metode Numerice Laborator 1 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Universitatea Tehnică a Moldovei Catedra Informatică Aplicată

RAPORT la Metode Numerice Lucrarea de laborator Nr.1 Tema : Rezolvarea numerică a ecuațiilor algebrice și transcendente Varianta 11,14

A efectuat : A verificat :

st.gr.TI-142 A. Cuțitaru lect.sup G. Marusic

Chișinău 2015

 Scopul lucrării:  Să se separe toate rădăcinile reale ale ecuaţiei f(x)=0 unde y=f(x)este o funcţie reală de variabilă reală.  Să se determine o rădăcină reală a ecuaţiei date cu ajutorul metodei înjumătăţirii intervalului cu o eroare mai mică decît =10-2.  Să se aprecieze rădăcina obţinută cu exactitatea =10-6, utilizînd :  Metoda aproximării succesive ;  Metoda tangentelor(Newton);  Metoda secantelor;  Să se compare rezultatele luînd în consideraţie numărul de iteraţii , evaluările pentru funcţii şi derivată. Sarcina problemei: Să se găsească rădăcinile ecuaţiei : 2x-e^(-x)=0 si x3-25x-37=0. 1) Separarea rădăcinilor Pentru prima ecuație este convenabilă folosirea metodei grafice de separare a rădăcinilor. −x Scriem ecuația 2 x −e =0 sub forma φ ( x )=g( x ) și obținem: 2 x =e−x . a) Pentru determinarea punctelor de intersecție a funcțiilor construim graficele :

Astfel ecuația are o rădăcină reală ξ ∈ (0,1).

y=φ ( x ) și

y=g ( x )

b) Pentru a doua ecuație folosim metoda șirului lui Rolle . 2 Derivata f ' ( x )=3 x −25 se anulează pentru x= ±



26 3

. Prin urmare șirul lui

Rolle este următorul : x

-3

y

85

-



25 3 =-2.88

85.11



-11.11

Avem o alternanță de semn și respectiv o singură rădăcină reală ξ ∈ ( −

-11



25 3 ,

Pentru a determina celelalte rădăcini folosim metoda grafică.

Astfel mai avem 2 rădăcini ξ ∈(−4,−3)(5,6)

2) Calculul rădăcinii reale prin metoda înjumătățirii intervalului a) #include #include using namespace std; double f(double x){ return 2*x-exp(-x); } int main(){ int k=0; double a = -3, b = 3, c = 0, eps = 0.0001; while( (b-a)>eps ){

3

25 3 =2.88



25 3 ).

k++; c = a+(b-a)/2; if (f(c)==0) break; if (f(a)*f(c)