Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y1= f(x1)
y2= f(x2)
Si No
y1*y2 > 0.0
“Error en el
intervalo”
Return (0)
i x1 x2 x3 xi+1-xi y1 y2 y3 ea
1
1
Si No
y1==y2
“No se puede
dividir por cero”
Return (0)
x3= x2-[y2*(x1-x2)/(y1-y2)]
y3=f(x3)
Si No
y3==0
res=x3
Return (0)
“El proceso
converge res”=
res
2
2
i=1
1 x1 x2 x3 xi+1-xi y1 y2 y3 ea
Si No
y1*y3> 0
x1=x3 x2=x3
x4=x3
y1= f(x1)
y2= f(x2)
Si No
y1==y2
“No se puede
Return (0)
dividir por cero”
5
5
x3= x2-[y2*(x1-x2)/(y1-y2)]
y3=f(x3)
Si No
y3==0
res=x3
Return (0)
“El proceso
converge res”=
res
ea= |(x3-x4)/(x3)|*100
2 x1 x2 x3 xi+1-xi y1 y2 y3 ea
Si No
|x3-x4|<=Eps
res=x3
break
“El proceso
converge res”=
res
6
6
Si No
y1*y3> 0
x1=x3 x2=x3
x4=x3
Si No
|x3-x4|>Eps
“El sistema no
converge”
fin
#define f(x)(4.0*pow(x,3)-30.0*pow(x,2)+70.0*x-50.0)
main()
{
int i,nit;
float x1,x2,x3,x4,y1,y2,y3,eps,ea,res;
y1=f(x1);
y2=f(x2);
if (y1*y2>0)
{
cout<<"\nError en el intervalo"<<endl;
return(0);
}
if (y1==y2)
{
cout<<"\nNo se puede dividir por cero\n"<<endl;
return(0);
}
x3=x2-y2*(x1-x2)/(y1-y2);
y3=f(x3);
if (y3==0)
{
res=x3;
cout<<"\nSe encontro la raiz en el primer intervalo\n"<<endl;
return(0);
}
i=1;
cout<<"it"<<" "<<" x1"<<" "<<" x2"<<" "<<" x3"<<" "<<" |xi+1-xi|"<<" "<<" ea
%"<<" "<<" y1"<<" "<<" y2"<<" "<<" y3"<<endl;
printf("\n");
printf("%2d %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f\n",i,x1,x2,x3,y1,y2,y3);
if (y1*y3>0)
x1=x3;
else
x2=x3;
x4=x3;
for (i=2;i<=nit;i++)
{
y1=f(x1);
y2=f(x2);
if (y1==y2)
{
cout<<"\nNo se puede dividir por cero\n"<<endl;
return(0);
}
x3=x2-y2*(x1-x2)/(y1-y2);
y3=f(x3);
if (y3==0)
{
res=x3;
cout<<"\nEl proceso converge res= "<<res<<"\n"<<endl;
return(0);
}
ea=fabs((x3-x4)/x3)*100;
printf("%2d %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f\n",i,x1,x2,x3,fabs(x4-
x3),ea,y1,y2,y3);
if (fabs(x3-x4)<=eps)
{
res=x3;
cout<<"\nEl proceso converge res= "<<res<<"\n"<<endl;
break;
}
if (y1*y3>0.0)
x1=x3;
else
x2=x3;
x4=x3;
}
if (fabs(x3-x4)>eps)
cout<<"\nEl sistema no converge\n"<<endl;
printf("\n");
system("pause");
}