Sunteți pe pagina 1din 8

Avem ecuația ce este transcendenta.

Graficul căreia arata astfel:

Programul care va separa soluțiile este:


#include <iostream>
#include <cmath>
using namespace std;
float f(float x){
return 0.5-exp(-1*pow (x,2));}
float fd(float x){
return 2*x*exp(-1*pow(x,2));}

int main()
{
float a=-5, b=5, b1, a1, dh=0.1;
int n,i;
n=round(fabs(b-a)/dh);
for(i=-5;i<=5;i+=2){
if(fd(i)>0){cout<<"f'("<<i<<")="<<fd(i)<<" este pozitiv"<<endl;}
else{cout<<"f'("<<i<<")="<<fd(i)<<" este negativ"<<endl;}
}
return 0;
}
else{cout<<"f'("<<i<<")="<<fd(i)<<" este negativ"<<endl;}
}
return 0;
}

Deoarece semnul derivatei se schimba in X=0, voi cerceta intervalele de la (-1;-


0.1) si (0,1;1)

Remarcam ca au fost gasite 2 intervale pe care se alfa solutiile.

Metoda 1 (coardelor)
#include <iostream>
#include <cmath>
using namespace std;
float f(float x){
return 0.5-exp(-1*pow (x,2));}
int main()
{
float a=-1, b=-0.1, c, e, x;
int i,n=15;
c=a-f(a)/(f(b)-f(a))*(b-a);
if (f(a)*f(c)<0){e=x; x=b;}
else {e=b; x=a;}
for (i=1; i<=n; i++){x=x-f(x)/(f(e)-f(x))*(e-x);}
cout<<"f("<<x<<")="<<f(x);

return 0;
}
O soluție este X=-0.832555, iar cealaltă X=0.832555.

Metoda 2 (Newton)
#include <iostream>
#include <cmath>
using namespace std;
float f(float x){
return 0.5-exp(-1*pow (x,2));}
float fd(float x){
return 2*x*exp(-1*pow(x,2));}
int main()
{
float a=-1, b=-0.1, c, x;
int i,n=15;
c=a-f(a)/(f(b)-f(a))*(b-a);
if (f(a)*f(c)<0) x=a; else x=b;
for (i=1; i<=n; i++){x=x-f(x)/fd(x);}
cout<<"f("<<x<<")="<<f(x);
return 0;
}
In urma acestei metode constatam ca obținem aceleași valori pentru X. O soluție
este X=-0.832555, iar cealaltă X=0.832555.

Metoda 3 ( bisecția)
#include <iostream>
#include <cmath>
using namespace std;
float f(float x){
return 0.5-exp(-1*pow (x,2));}
int main()
{ float a=-1, b=-0.1, a1, b1, dh=0.01;
int n,i;
n=round(fabs((b-a)/dh));
a1=a;
b1=a1+dh;
for (i=1; i<=n;i++){
if(f(a1)*f(b1)<0) cout<<"["<<a1<<"; "<<b1<<"] "<<endl;
a1=b1; b1+=dh;
}
return 0;

} Introducând programul in GDB online obținem:


In concluzie, prin toate cele 3 metode am obținut aproximativ aceleași valori
pentru zerouri, soluțiile fiind X=-0.832555 si X=0.832555, cu toate ca precizia
determinări lor a fost diferita.Cea mai exacta a fost metoda lui Newton ce a aflat
cel mai apropiat răspuns de cel adevărat, fapt dovedit de verificarea soluțiilor in
PhotoMath.

S-ar putea să vă placă și