Documente Academic
Documente Profesional
Documente Cultură
RAPORT
la Metode Numerice
Lucrarea de laborator Nr.1
Tema : Rezolvarea numeric a ecuaiilor algebrice i transcendente
Varianta 11,14
A efectuat :
A verificat :
st.gr.TI-142 A. Cuitaru
lect.sup G. Marusic
Chiinu 2015
Scopul lucrrii:
S se separe toate rdcinile reale ale ecuaiei f(x)=0 unde y=f(x)este o funcie real
de variabil real.
S se determine o rdcin real a ecuaiei date cu ajutorul metodei njumtirii
intervalului cu o eroare mai mic dect =10-2.
S se aprecieze rdcina obinut cu exactitatea =10-6, utiliznd :
Metoda aproximrii succesive ;
Metoda tangentelor(Newton);
Metoda secantelor;
S se compare rezultatele lund n consideraie numrul de iteraii , evalurile pentru
funcii i derivat.
Sarcina problemei:
S se gseasc rdcinile ecuaiei : 2x-e^(-x)=0 si x3-25x-37=0.
1) Separarea rdcinilor
Pentru prima ecuaie este convenabil folosirea metodei grafice de separare a
rdcinilor.
x
Scriem ecuaia 2 x e =0 sub forma ( x )=g( x ) i obinem:
2 x =ex .
a) Pentru determinarea punctelor de intersecie a funciilor
construim graficele :
y= ( x ) i
y=g ( x )
26
3
-3
85
25
3 =-2.88
85.11
-11.11
-11
25
3 ,
25
3 =2.88
25
3 ).
k++;
c = a+(b-a)/2;
if (f(c)==0)
break;
if (f(a)*f(c)<0)
b = c;
else
a = c;
}
cout << " Radacina x=" << c<<endl;
cout<<"Numarul de iteratii: "<<k;
return 0;
}
b)
#include <iostream>
#include<math.h>
using namespace std;
double f(double x){
return pow(x,3)-25*x-37;
}
int main(){
int k=0;
double
a = -3,
b = 3,
c = 0,
eps = 0.0001;
while( (b-a)>eps ){
k++;
c = a+(b-a)/2;
if (f(c)==0)
break;
if (f(a)*f(c)<0)
b = c;
else
a = c;
}
cout << " Radacina x=" << c<<endl;
cout<<"Numarul de iteratii: "<<k;
return 0;
}
( x) =
x= ( x ) obinem :
x=
ex
2
1 x
e
2
'(x )<1
Prin urmare irul converge.
Codul surs
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
double fi(double x){
return exp(-x)/2;
}
main(){
int k=0;
double x0,x1,eps;
cout<<"Introduceti valoare initiala x0= ";
cin>>x0;
cout<<"introduceti eroarea : ";
cin>>eps;
while(1){
x1=fi(x0);
k++;
if(abs(x1-x0)<eps){cout<<"Rez: "<<x0<<endl<<"nr de iteratii
"<<k<<endl;break;}
x0=x1;
}
}
2 5 x=37x
' ( x ) =
=>
x=
x 3 37
25
=>
x=
1 3 37
x
25
25
=>
( x )=
1 3 37
x
25
25
3 2
x
25
3 2
x <1
25
=>
25
25
<x<
3
3
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
double fi(double x){
return (pow(x,3)-37)/25;
}
main(){
int k=0;
double x0,x1,eps;
cout<<"Introduceti valoare initiala x0= ";
cin>>x0;
cout<<"introduceti eroarea : ";
cin>>eps;
while(1){
x1=fi(x0);
k++;
if(abs(x1-x0)<eps){cout<<"Rez: "<<x0<<endl<<"nr de iteratii
"<<k<<endl;break;}
x0=x1;
=>
}
}
b)
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
double f(double x){
return pow(x,3)-25*x-37;
}
double fderiv(double x){
return 3*pow(x,2)-25;
}
main(){
int k=0;
double x0,x1,eps;
cout<<"Introduceti valoare initiala x0= ";
cin>>x0;
cout<<"introduceti eroarea : ";
cin>>eps;
while(1){
x1=x0-f(x0)/fderiv(x0);
k++;
if(abs(x1-x0)<eps){cout<<"Rez: "<<x0<<endl<<"nr de iteratii "<<k<<endl;break;}
x0=x1;
}
}
b)
#include <iostream>
#include <math.h>
using namespace std;
double f(double x)
{
return pow(x,3)-25*x-37;
}
main()
{
double x2,x1,x3,y,eps=0.000001;
int n=0;
cout<<"Introduceti x1: ";
cin>>x1;
cout<<"Introduceti x2: ";
cin>>x2;
do{
n++;
y=x3;
x3=x2-(f(x2)*(x2-x1)/(f(x2)-f(x1)));
x1=x2;
x2=x3;
}while (fabs(y-x3)>=eps);
cout<<"Radacina x= "<<x3<<endl;
cout<<"Nr de iteratii : "<<n<<endl;
}
Nr. de iteraii
f 1( x )
f (x)
f 1(x )
f ( x)
Biseciei
0.3516
54
16
16
0.0001
Apr.
succesive
0.3517
33
14
13
0.000001
Tangentelor
0.3517
34
0.000001
Secantelor
0.3517
34
1.6645
2
1.6644
4
1.6644
5
1.6644
5
0.000001
Metoda
Eroarea
Concluzie :
n urma efecturii lucrrii de laborator am realizat n practic rezolvarea numeric a ecua iilor
algebrice i transcendente. Putem concluziona c cea mai eficient metoda este metoda
tangentelor,calculatorul efectund un numar minim de itera ii , ns numarul acestor itera ii este
dependent de aproximaia iniial aleas. Acest numr este cu att mai mic cu ct aproxima ia ini ial
este mai aproape de rdcina cutat. La fel se observ din tabel c metoda Newton converge ctre
soluie cu vitez ptratic ,aceasta fiind un caz particular a metodei aproxima iilor succesive. O alt
vulnerabilitate a acestei metode este necesitatea calculului derivatei, ceea ce n unele cazuri poate fi
dificil sau practic imposibil. Pentru astfel de func ii o alegere mai bun este metoda secantelor. La fel
putem afirma rezultatul obinut pe baza acestei metode are o precizie destul de mare.