Sunteți pe pagina 1din 7

Universitatea Tehnica din Moldova

Facultatea Calculatoare, Informatic i Microelectronic


Catedra Automatica i Tehnologii Informaionale

Raport
la lucrarea de laborator nr.1
Metode numerice.
Tema:Rezolvarea ecuatiilor neliniare si transcendente.

A efectuat

st.gr.AI -131
Leontiev Victor

A verificat:

Tutunaru Eleonora

Chiinu 2014

Scopul lucrarii:
Insusirea metodelor de separare a radacinilor patrate ale ecuatiei f(x)=0 si
determinarea lor cu exacitatea E.

Sarcina 1:
2
Sa se separe toate radacinile ecuatiei: x sin ( x)=0,25

Spararea radaciniilor prin metoda grafic:


2

x 0,25=sin ( x )

( x0,5 ) ( x+ 0,5 )=sin ( x)

Graficul:

Separam radacinile
reale ale ecuatiei prin
metoda analitica:
1. Aflm intervalul [-k;k] pe care exist cel puin o radacin.
a
k=1+ a 0 , unde a=max{ Ia1I, Ia2I,Ia3I }.

K=

1+

24
=25
1

Intervalul pe care exista solutie este (-25;25)


f ' ( x )=3 x2 6 x24=0
Alcatuim tabelul de semn al functiei:

-24

-2

24

Sgn f(x)

Din tabel observam ca pe intervalele (-24;-2),(-2;4),(4;24) functia ii schimb semnul .

Schema logic a programului:


Start

bisect

aprox

bisect

aprox
fb(a)* fb(b)

Introduce-m X

Stop
fb(A)* fb(b)

Segm dat nu
contine rad.
brak
Z=0

a=A;b=B;

Punctul e in afara
segmentului

Fabs(b-a)>E
j=0

JJ
X=(a+b)/2;
F1=fb(a)

X1=Fs(x)

F2=fb(x)
j++
I++
Afisarea i,f2,x

Stop

Afisarea

j,x1,fb(x1))
;

Stop

Listingul programului
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#include<math.h>
double A,B,E=0.0001;
double fb(double x){
double z;
z=(x*x*x) - (3*x*x) - (24*x)-3 ;
return z;
}
double fs(double x){
double z;
z=(x*x*x-3*x*x-3)/24;
//(x*x-8)*1/(2*sqrt((x*x*x/3)-8*x-1));//((x*x*x)/24)((x*x)/8)-(1/8);
return z;
}
float bisect()
{

double x,A,B;

double a,b,x1,f1,f2;

int j=0,i=0,z=1;
printf("Metoda bisectiei\n");
printf("Introduceti segmentul\n");
while(z){

scanf("%lf",&A); scanf("%lf",&B);
if(fb(A)*fb(B)>0)
printf("Segmentul dat nu contine radacini, introduceti
din nou\n");
else z=0;
}
a=A;b=B;
while(fabs(b-a)>E){
x=(a+b)/2;
f1=fb(a); f2=fb(x);
(f1*f2)<=0?b=x:a=x;
i++;
}
printf("Programul a efectuat %d pasi\tf=%lf\tx=
%lf\n\n\n",i,f2,x);
}
float aprox()
{double x;

double x1,f1,f2;

printf("Metoda aproximatiilor succesive\n");


printf("Introduceti segmentul\n");
scanf("%lf",&A); scanf("%lf",&B);
int j=0,i=0,z=1;
printf("Introduceti punctul de start: x0=");
while(1){
scanf("%lf",&x);
if(A<=x&&x<=B) break;
else printf("Punctul e inafara segmentului, introduceti din
nou");
}

j=0;
for(;;){
x1=fs(x); j++;
if(fabs(x1-x)>E) x=x1;
else break;
}
printf("Programul a efectuat %d pasi\tx1=%5lf\tf(x1=)
%5lf",j,x1,fb(x1));
return 0;
}
int main()
{
bisect();
aprox();
}

Rezultatul final:

Concluzie:
Dup efectuarea acestei lucrri de laborator am studiat metodele de
rezolvare numerica a ecuaiilor neliniare si transcendente. Am reuit s
determin rdcinile reale cu o diferen foarte mic si sa separ radacinile
acestora.Am observat numrul de iteraii al fiecarei metode, medota
aproximatiilor avind un numar mai mic de iteratii.