You are on page 1of 2

float f(float x)

{return (4*x*x*x-8*x*x+12*x-8);
}

void bisuc(float x1,float x2,float epsif,float epsix, int nmax, float &xr, int
&kod)
{
int iter=0,contor,linie,nlin;
float fx1,fx2,fx3, x3;
ofstream fwrite(�fisierbisectie.txt�,ios::out); // deschide fisierul file pt
scriere;
kod=0;
fx1=f(x1);
fx2=f(x2); // {testarea criteriului de convergenta }
fwrite<<"Procedura bisectie succesiva\n\n";
if (fx1*fx2 > 0)
{
fwrite<<"Intervalul dat nu contine solutia\n";
kod=2;
}
else
{
fwrite<<"iter x1 / fx1 x2 / fx2 x3 / fx3\n";
iter++;
x3=(x1+x2)/2;
fx3=f(x3);
while ((fabs(fx3) > epsif)&& (fabs(x1-x2) > epsix))
{
fwrite<<iter<<"\t\t"<<x1<<"\t\t"<<x3<<"\t\t"<<x2<<"\n";
fwrite<<"\t\t"<<fx1<<"\t\t"<<fx2<<"\t\t"<<fx3<<"\n\n";
if (fx1*fx3 < 0)
{
x2=x3;
fx2=fx3;
}
else
{
x1=x3;
fx1=fx3;
}
x3=(x1+x2)/2;
fx3=f(x3);
iter=iter+1;
if (iter== nmax)
{
kod=1;
xr=x3;
goto a1;
}
if (fabs((x1-x2)/x3) <1e-11)
{
kod=0;
xr=x3;
goto a1;
}
}
a1: xr=x3;
if (iter<10)
fwrite<<iter<<"\t\t"<<x1<<"\t\t"<<x3<<"\t\t"<<x2<<"\n";
else fwrite<<iter<<"\t\t"<<x1<<"\t\t"<<x2<<"\t\t"<<x3<<"\n";
fwrite<<"\t\t"<<fx1<<"\t\t"<<fx2<<"\t\t"<<fx3<<"\n";;
fwrite<<"solutia ecuatiei: "<<xr;
fwrite.close ();
}
}

You might also like