Raport
La Lucrarea de laborator nr.1
Chișinău 2019
Codul pentru Înjumătățirea intervalelor
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{ int a,b,k;
double c,d,x,fx;
system("cls");
cout<<"\nIntrodu intervalul[a,b]:";cin>>a>>b;
if(ec(a)*ec(b)<0){
c=a;
if(ec(c)<0) c=b;
d=a+b-c;
k=0;
do
k++;
fx=ec(x);
if (fx==0) break;
while(fabs(c-d)>0.01);
getch();
}}
2
Metoda lui Newton
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
float f1(float x)
{
return pow(x,3)-37*x-52;
}
float F1(float x)
{return 3*pow(x,2)-37;}
float Fd1(float x)
{return 6*x;}
float newton(float x0, float eps, int Nmax, int *k, int *ier,int i)
{
float d0=1e30,d1,y,x=x0,x1;
*k=0;
Et:
x1=x-f1(x)/F1(x);
d1=fabs(x1-x);
if (d1<eps)
{*ier=0; return x1;}
else
{
if (d1<d0)
{
if (*k>Nmax)
{*ier=2; return x1;}
else
*k=*k+1;
x=x1;d0=d1;
goto Et;
}
else
{
*ier=1; return x1;
}
}
}
int main()
{
float a,b,eps=0.000001,x=0;
int n=0,Tf,nm1, nm2,i=0,Nmax=100;
cout<<"\nIntroduceti intervalul [a,b]";
cout<<"\na= "; cin>>a;
cout<<"\nb= "; cin>>b;
if(f1(a)*Fd1(a)>0)
3
x=newton(a,eps,Nmax,&n,&Tf,i);
else
x=newton(b,eps,Nmax,&n,&Tf,i);
if(!Tf)
{
cout<<"Solutia cu precizia "<<eps<<" ="<<x<<endl;
cout<<"Numarul de iteratii = ";
cout<<n;
getch();
}
else
if(Tf==1)
{
cout<<"Nu are loc convergenta catre solutie\n"; getch();}
else
if(Tf==2)
{
cout<<"Precizia data nu poate fi atinsa dupa "<<Nmax<<"
pasi\n";
getch();
return 0;
}}
Concluzie: