Está en la página 1de 2

//#include<conio.

h>
#include <iostream>
//#include <stdlib.h>
#include <math.h>
//#include <iomanip>
//#include "titulos.h"
//#include "validaEntrada.h"
//#include "Polinomios.h"
//#include <E:\analisis\titulos.h>
//#include <E:\analisis\validaEntrada.h>
using namespace std;
//Polinomio P;
void newton_Raphson(Polinomio *P,unsigned int cs, long double Es)
{
//Comienzo de Iteraciones por mtodo de Newton-Raphson
long double xi, xr=0.0, Fxi, Fxr, Era,dFxi;
Polinomio dP = P->derivaPolinomio();
system("cls");
centrar("M\220TODO DE NEWTON-RAPHSON");
//Peticin de intervalo
cout<<endl<<"An\240lisis de intervalos..."<<endl<<endl;
cout<<"Ingrese el valor de xi (l\241mite inferior): ";
xi=validaNumero<long double>(true);
Fxi=P->evaluaPolinomio(xi);
cout<<setprecision(cs);
cout<<"\237(xi) = "<<Fxi<<endl<<endl;
if(Fxi==0.0){
cout<<"La ra\241z de la ecuaci\242n es xi: "<<xi<<endl<<endl;
system("PAUSE");
}
else {
system("cls");
cout<<"Se proceder\240 con el c\240lculo de dicha ra\241z..."<<endl;
system("PAUSE");
system("cls");
int i=1;
//Comienzo de Iteraciones por mtodo de Newton-Raphson
//Newton-Raphson(P1,cs,Es);
centrar("M\220TODO DE NEWTON-RAPHSON");
do{
long double vprev=xr;
centrar("-|---------- Iteraci\242n " + convIntACad(i) + " ---------|-");
cout<<endl<<endl;
cout<<setprecision(cs);
cout<<"\237(x) = ";
P->muestraPolinomio();
cout<<"\237'(x) = ";
dP.muestraPolinomio();
cout<<"xi= "<<xi<<endl<<endl;
Fxi=P->evaluaPolinomio(xi);
dFxi=dP.evaluaPolinomio(xi);
cout<<"\237(xi) = "<<Fxi<<endl<<"\237'(xi) = "<<dFxi<<endl;
xr=xi-Fxi/dFxi;
cout<<"xr = xi - (\237(xi))/\237'(xi) = "<<xr<<endl<<endl;
Fxr=P->evaluaPolinomio(xr);
cout<<"\237(xr)= "<<Fxr;

cout<<endl<<endl<<"\t xi=xr";
xi=xr;
cout<<endl<<endl;
//Era
cout<<"Error Relativo Aproximado: "<<endl<<endl;
cout<<"Era = |((Vact-Vprev)/Vact)|X100%"<<endl;
cout<<"Era = "<<"|(("<<xr<<"-"<<vprev<<")/"<<xr<<")|X100% = ";
Era=fabs((xr-vprev)/xr)*100;
cout<<Era<<"%";
if(Era<Es) cout<<" < Es = "<<setprecision((cs-1)*2)<<Es<<"%";
else cout<<" > Es = "<<setprecision((cs-1)*2)<<Es<<"%";
cout<<endl<<endl;
i++;
}while(Era>Es);
cout<<"\t\tLA RA\326Z ES x = "<<setprecision(cs)<<xr;
cout<<endl<<endl;
}
//
else{
//
cout<<endl;
//
centrar("\237(xi)*\237(xf) > 0 .\372.La ecuaci\242n no tiene raices en
ese intervalo... ");
//
cout<<endl;
//
}
system("PAUSE");
//return xr;
}

También podría gustarte