Está en la página 1de 3

Cdigo de programacin del mtodo de Newton-Raphson

#include <stdio.h>
#include <math.h>
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
#define f1(x)(4.0*pow(x,3)-30.0*pow(x,2)+70.0*x-50.0)
#define fp1(x)(12.0*pow(x,2)-60.0*x+70.0)
main()
{
//char c,op;
int i,n,np,nit,nlin;
int con;
float x1,x2,x3,x4,xa,xb,eps,x[100],y[100];
float y1,y2,y3,yp;
float res,ea;
nlin=11;
system("cls");
printf("Programa para encontrar las raices de un polinomio usando el\n");
printf("metodo de Newton-Raphson\n");
printf("\n");
printf("xa = ");scanf("%f",&xa);
printf("xb = ");scanf("%f",&xb);
printf("eps = ");scanf("%f",&eps);
printf("nit = ");scanf("%f",&nit);
if(f1(xa)*f1(xb)>0.0)
{
cout<<"Error en el intervalo (xa,xb);f(xa)*f(xb)>0.0"<<endl;
return(0);
}
printf("\n");
con=0;
x1=xa;
x2=xb;
x1=(x1+x2)/2.0;

y1=f1(x1);
yp=fp1(x1);
if(yp==0.0)
{
system("cls");
printf("La derivada es cero");
return(0);
}
x2=x1-y1/yp;
y2=f1(x2);
//y2=0.0;
if(y2==0.0)
{
res=x3;
system("cls");
printf("\n Se encontro la raiz en la primera iteracion: x3=%8.4f;f(x3)=%8.4f",x3,y3);
printf("\n");
//con=1;
return(0);
}
cout<<"it"<<" "<<" x1"<<" "<<" x2"<<" "<<" |xi+1-xi|"<<" "<<" ea%"<<" "<<"
y1"<<" "<<" y2"<<" "<<" yp"<<endl;
printf("\n");
printf("%2d %8.4f %8.4f %8.4f %8.4f %8.4f\n",1,x1,x2,y1,y2,yp);
x3=x2;
x1=x2;
for(i=2;i<=nit;i++)
{
y1=f1(x1);
yp=fp1(x1);
if(yp==0.0)
{
system("cls");
printf("La derivada es cero");
return(0);
}
x2=x1-y1/yp;
y2=f1(x2);
ea=fabs((x2-x3)/x2)*100.0;
if(i%nlin==0)
{
printf("\n");
system("pause");
system("cls");

printf("Programa para encontrar las raices de un polinomio usando el\n");


printf("metodo de Newton-Raphson\n");
printf("\n");
printf("xa=%.2f\n",xa);
printf("xb=%.2f\n",xb);
printf("eps=%.4f\n",eps);
printf("nit=%d\n",nit);
printf("\n");
cout<<"it"<<" "<<"x1"<<" "<<"x2"<<" "<<"|xi+1-xi|"<<" "<<"ea%"<<" "<<"y1"<<"
"<<"y2"<<" "<<"yp"<<endl;
printf("\n");
}
printf("%2d %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f\n",i,x1,x2,fabs(x3x2),ea,y1,y2,yp);
if(fabs(x3-x2)<=eps)
{
res=x2;
con=1;
break;
}
x1=x2;
x3=x2;
}
if(con==1)
{
printf("\n El proceso converge:res=%f\n",res);
}
else
{
printf("\n El proceso no converge:%f;%f",x2,f1(x2));
}
printf("\n");
system("pause");
}

También podría gustarte