Está en la página 1de 2

/*para encontrar la aproximacion a la solucion f(x)=0 dada dos aproximaciones in

iciales p0 p1
Entrada: p0,p1,tol,N
Salida:p,mensaje de fracaso
*/
#include<stdio.h>
#include<math.h>
graficar(){
FILE *fp2;
fp2=fopen("script.plt","w");
fprintf(fp2,"g(x)=x**3+4*(x**2)-10.0 \n");
fprintf(fp2,"set grid \n");
fprintf(fp2,"set title 'punto fijo' \n");
fprintf(fp2,"set xrange [1.2:1.5] \n");
fprintf(fp2,"plot g(x) w l lt 1 \n");
fprintf(fp2,"pause mouse \n");
fprintf(fp2," replot 'datosc.dat' w lp lt 1 lc 3 lw 1 pt 2 \n");
fprintf(fp2,"pause mouse \n");
// fprintf(fp2,"set terminal postscript eps enhanced color \n");
//fprintf(fp2,"set output 'puntofijo.ps' \n");
//fprintf(fp2,"set encoding iso_8859_1 \n");
//fprintf(fp2,"replot \n");
fprintf(fp2,"exit \n");
fclose(fp2);
system("gnuplot script.plt");
return(0);
}
double f(double x){
return(pow(x,3)+4.0*pow(x,2)-10.0);
}
main(){
double p0,p1,p,tol;
int i,N;
FILE *fp;
fp=fopen("datosc.dat","w");
printf("ingrese p0 y p1: ");
scanf("%lf" "%lf",&p0,&p1);
printf("Ingrese tol=");
scanf("%lf",&tol);
printf("Ingrese N=");
scanf("%d",&N);
//P1
i=2;
//P2
while(i<=N){
//P3
p=p1-f(p1)*(p0-p1)/(f(p0)-f(p1));
fprintf(fp,"%lf \t %lf \n",p0,f(p0));
fprintf(fp,"%lf \t %lf \n",p1,f(p1));

fprintf(fp,"%lf \t %lf \n",p,f(p));


//P4
if(fabs(p-p1)<tol){
printf("exito p=%lf i=%d \n",p,i-2);
fclose(fp);
graficar();
return(0);
}
//P5
i=i+1;
//P6
p0=p1;
p1=p;
}
//P7
printf("Fracaso el metodo despues de %d iteraciones \n",N);
return(0);
}

También podría gustarte