jueves, 3 de julio de 2014

Newton-Raphson en C

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<math.h>
#include<process.h>

#define f(x) 3*x -cos(x) -1
#define df(x) 3 -sin(x)

void nwrap();

void main(){
 printf("\n Solucion por el Método de Newton Raphson \n");
 printf("\n F(x): ");
 printf("\n\t\t\t 3*x -cos(x) -1 = 0 \n\t");
 nwrap();
 getch();
}

void nwrap(){
 float x1,x0;
 float f1,f0;
 float df0;
 int i=0, itr=0;
 float TOL;
 float error;
   for(x1=0;;x1 +=0.01){
    f1=f(x1);
    if (f1>0){
     break;
    }
   }
x0 = x1-0.01;
f0 = f(x0);
printf("Numero de Iteraciones: ");
scanf("%d",&itr);
printf("Tolerancia Maxima: ");
scanf("%f",&TOL);
     if(fabs(f0)>f1){
      printf("\n\t\t La raiz es: %0.4f\n",x1);
     }
     if(f1 > fabs(f(x0))){
      printf("\n\t\t La raiz es: %0.4f\n",x1);
 }
x0 = (x0+x1)/2;
for(;i<=itr;i++){
 f0=f(x0);
 df0=df(x0);
 x1 = x0 - (f0/df0);
 printf("\n\t\t iteracion %d  aproximacion: %f",i,x1);
 error = fabs(x1-x0);
   if(error < TOL){
    break;
   }
 x0 = x1;
}
   if(error > TOL){
    printf("\n\n\t Iteraciones No suficientes" );    
   }
printf("\n\n\n\t\t\t--------------------------");
printf("\n\n\t\t Raiz: %0.4f ",x1);
printf("\n\n\n\t\t\t--------------------------");
}

No hay comentarios:

Publicar un comentario