Extras din laborator
Scopul lucrării:
1)Să se separe toate rădăcinişe reale ale ecuaţiei f(x)=0 unde y=f(x) este o funcţie reală de variabilă reală.
2) 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 .
3) Să se precizeze rădăcina obţinută cu exactitatea , utilizând:
* metoda aproximaţiilor succesive
* metoda tangentelor(Newton)
* metoda secantelor
4) Să se compare rezultatele luând în consideraţie numărul de iteraţii, evaluările pentru funcţii şi derivată.
Mersul lucrării:
Pentru a putea aplica metodele sus numite este necesară determinarea intervalului pe care se găseşte soluţia ecuaţiei date. Pentru ecuaţia algebrică am determinat intervalul cu ajutorul şirului lui Rolle.
F’(x)=
Construim şirul lui Rolle:
x -1 -2i 2i 0
F(x) -8 5 5 5
De aici rezultă că ecuaţia dată are o singură rădăcină în intervalul [-1;0]
Am elaborat programul în C++ care realizează sarcina dată, listingul este următorul:
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
double fx(double x);
double f1x(double x);
double f2x(double x);
void INPUT(void);
void BISECTIA(double a,double b, double e);
void APROX_SUCCESIV(double a,double b, double e);
void NEWTON(double a,double b, double e);
void Combinat(double a,double b, double e);
double a,b,e,Nmax;
void main(void)
{int n;
textbackground(WHITE);
textcolor(BLACK);
clrscr();
while(1)
{
cout<<"Se da ecuatia: x^3-29x-25=0n"
<<"Alegeti metoda de gasire a solutiei:n"
<<"1. Metoda Bisectiei;n"
<<"2. Metoda Aproximatiilor succesive;n"
<<"3. Metoda Newton;n"
<<"4. Metoda Combinata a coardelor si tangentelor;n"
<<"5. Toate metodele;n"
<<"0. Iesire din program;n";
cin>>n;
switch(n)
{
case 1:INPUT();BISECTIA(a,b,e);break;
case 2:INPUT();APROX_SUCCESIV(a,b,e);break;
case 3:INPUT();NEWTON(a,b,e);break;
case 4:INPUT();Combinat(a,b,e);break;
case 5:INPUT();BISECTIA(a,b,0.01);APROX_SUCCESIV(a,b,e);
NEWTON(a,b,e);Combinat(a,b,e);break;
case 0:exit(0);
}
clrscr();
}
}
double fx(double x)
{
return x*x*x-29*x-25;
}
double f1x(double x)
{
return 3*x*x-29;
}
double f2x(double x)
{ return 6*x;
}
Preview document
Conținut arhivă zip
- Separarea Radacinilor.doc