Algoritmo en c steffensen , buscar zeros (corregir)

srgank
19 de Marzo del 2010
Hola, tengo el siguiente algoritmo para hacer steffensen, lo hemos estado mirando mi profesor y yo y no sabemos que le pasa, converje muy muy lento, no con orden 3... lo hemos provado para varias funciones, haber si alguien sabe que le pasa...


int stiffensen(double x, double *sol, double *ord, double *constant, int m){
double xk1,xk2,xk3;
double xk;
int i;


double func;

double func2;
double temp;

xk1=0;
xk2=0;
xk3=0;
xk=x;
i=0;


while((fabs(xk-xk3)>tol && i<maxIter)||i<4){
xk1=xk2;
xk2=xk3;
xk3=xk;


func=funcion(xk3,m);
temp=xk3+func;
func2=funcion(temp,m);
xk=xk3-((func*func)/(func2-func));

if(isnan(xk)||isinf(xk)){

return 1;
}
/* printf("iteracion: %d xk: %16.16f\n",i,xk);*/
i++;

}

if(i>=maxIter){
return 1;
}

calcular(xk1,xk2,xk3,xk,&ord,&constant);


*sol=xk;
return 0;
}


os dejo el .c completo tambien por si quereis compilarlo:

http://www.mediafire.com/?gmao1l1fdyq