float f(float x);
int m;
float a,b,xi;
float Ep;
int i,j,k,lin;
float xi1,Ec;
void cap();
void sec();
void salida();
void main(void)
{
marco(;
cap();
sec();
gotoxy(50,23);
printf("Teclee <Enter> p/cont");
getch();
}
void cap()
{
gotoxy(30,6);
printf("METODO DE LA SECANTE");
gotoxy(10,7);
printf("DATOS:");
gotoxy(25,8);
printf("Teclee margen de Error: ");
scanf("%f",&Ep);
gotoxy(25,9);
printf("Teclee el numero de iteraciones: ");
scanf("%d",&m);
gotoxy(25,10);
printf("Valor izquierdo del intervalo a= ");
scanf("%f",&a);
gotoxy(25,11);
printf("Valor derecho del intervalo b= ");
scanf("%f",&b);
gotoxy(5,12);
printf("Iteracion");
gotoxy(15,12);
printf("intervalo");
gotoxy(35,12);
printf("f(a)");
gotoxy(45,12);
printf("f(b)");
gotoxy(55,12);
printf("Xi");
gotoxy(65,12);
printf("Error");
gotoxy(5,13);
printf("--------------------");
printf("--------------------");
printf("--------------------");
lin=14;
return;
}
void sec()
{
xi=a;
for (i=1;i<=m;i++)
{
xi1=b-(f(b)*((a-b)/(f(a)-f(b))));
Ec=fabs(xi1-xi);
if (Ec<Ep)
{
salida();
i=m;
continue;
}
if ((f(xi1)*f(b))>0)
{
salida();
b=xi1;
}
if ((f(xi1)*f(b))<0)
{
salida();
a=xi1;
}
}
gotoxy(10,lin);
printf("La raíz es=%0.4f Error=%0.4f",xi1,Ec);
return;
}
float f(float x)
{
return ((3*pow(x,2)-18*x+15)/5);
}
void salida()
{
gotoxy(8,lin);
printf("%d",i);
gotoxy(13,lin);
printf("(%0.4f, %0.4f)",a,b);
gotoxy(34,lin);
printf("%0.4f",f(a));
gotoxy(44,lin);
printf("%0.4f",f(b));
gotoxy(55,lin);
printf("%0.4f",xi1);
gotoxy(65,lin);
printf("%0.4f",Ec);
xi=xi1;
if(lin>21)
{
gotoxy(20,23);
printf("Pulse <ENTER> para ver mas resultados");
getch();
for(j=15; j<24; j++)
{
for(k=5; k<79; k++)
{
gotoxy(k,j);
printf(" ");
}
}
lin=13;
}
lin=lin+1;
return;
}