Documente Academic
Documente Profesional
Documente Cultură
Referat: Ministerul Educaţiei Al Republicii Moldova Universitatea Tehnică A Moldovei
Referat: Ministerul Educaţiei Al Republicii Moldova Universitatea Tehnică A Moldovei
Referat: Ministerul Educaţiei Al Republicii Moldova Universitatea Tehnică A Moldovei
Referat
Varianta 4
Chiinu 2012
Sarcina lucrrii:
Rezolvarea lucrrii:
4. x3-25x+19=0
x3=23x-19
x=0 => y=-19,
x=1 => y=4,
Aproximaiile succesive:
F(x)=0, x=(x)
3 2 3
x 19 x 19 x 19
x=
25
; ( x ) = 25
=
25 25
;
2 2
3 x
( x )=
25
; | (x)|=325x <1
x 2<
25
3
;
25
3
< x<
25
3
x 019 19
x 0=0 ; x 1= =
25 25
3
19
3
x 19 25
x 2= = + =
( )
19 74088(25) 19 17040843111696
+ = =12.209
25 25 25 25 12167 25 279841
Codul programului:
#include <iostream>
#include <dos.h>
#include <cmath>
#include <conio.h>
#include <stdlib.h>
#define eps1 0.01
#define eps2 0.000001
using namespace std;
f=a*x*x*x+b*x*x+c*x+d;
return f;
}
f=3*x*x+c;
return f;
}
S=A;
if(f(a,b,c,d,A)<0) S=B;
D=A+B-S;
k=0;
do {
x=S+(D-S)/2;
k++;
fx=f(a,b,c,d,x);
if(fx==0) exit(1);
if(fx>0) S=x;
else D=x;
} while((fabs(S-D))>eps);
cout <<"\n\tMetoda injumatatirii intervalului ";
cout <<"\nSolutia = " <<x;
cout <<"\nNumarul de iteratii = " <<k <<"\n";
}
float radical(float x)
{
float r=(float)1/3;
float p=3*x*x-25;
return exp(r*log(p));
}
void metaprsuc(float x0, float eps, int Nmax, float a, float b, float c, float
d)
{
float x1, y, x, h, u;
int k=0;
u=1/3;
y=x0;
do {
x=y;
h=3*x*x+c;
y=pow(h, u);
k++;
} while(fabs(y-x)>eps && k<Nmax);
x1=x;
cout <<"\n\tMetoda aproximatiilor succesive";
cout <<"\nSolutia = " <<x1;;
cout <<"\nNumarul de iteratii = " <<k <<"\n";
}
void metnew(float x0, float eps, int Nmax, float a, float b, float c, float
d)
{
float x1, x, y, d0=1e30, d1;
int k, Ier;
x=x0;
k=0;
Et: ;
x1=x-f(a,b,c,d,x)/F1(a,b,c,d,x);
d1=fabs(x1-x);
if(d1<eps) {
Ier=0;
}
else {
if(d1<d0) {
if(k>Nmax) {
Ier=2;
}
else k++;
x=x1;
d0=d1;
goto Et;
}
else {
Ier=1;
}
}
cout <<"\n\tMetoda Newton: ";
cout <<"\nSolutia = " <<x;
cout <<"\nNumarul de iteratii = " <<k <<"\n";
}
void metsec(float A, float B, float eps, int Nmax, float a, float b, float c,
float d)
{
float FA, FB, FX, x, xt;
int Num=0;
FA=f(a,b,c,d,A);
FB=f(a,b,c,d,B);
x=A-(B-A)*FA/(FB-FA); //calculul solutiei initiale
FX=f(a,b,c,d,x);
if(FA*FX<=0) {
xt=A;
do {
x=x-(x-A)*FX/(FX-FA); // calculul dupa form coardelor
FX=f(a,b,c,d,x);
xt=xt-f(a,b,c,d,xt)/F1(a,b,c,d,xt); // calculul dupa formula
tangentelor
Num++;
} while(fabs(x-xt)>eps && Num<Nmax);
}
else {
xt=B;
do {
xt=xt-f(a,b,c,d,xt)/F1(a,b,c,d,xt); //calculul dupa formula
tangentelor
Num++;
} while(fabs(x-xt)<eps && Num<Nmax);
}
int main()
{
float A, B, eps, x, a, b, c, d;
int Nmax, temp;
cout <<"Introduceti coeficientii ecuatiei: \n";
cout <<"a = ";
cin >>a;
cout <<"b = ";
cin >>b;
cout <<"c = ";
cin >>c;
cout <<"d = ";
cin >>d;
return 0;
}
Rezultatele obinute:
Concluzia:
n aceast lucrare de laborator ne-am familiarizat cu metodele de aflare a
rdcinilor a ecuaiilor i am analizat numrul operaiilor la care a fost supus
programul pentru aflarea soluiei n fiecare metod.