Cálculo de raíces de un polinomio

Jorge Castillo Mateo

/* Programa que, mediante el método de Newton-Raphson, calcula una de las raíces de un polinomio de grado g dependiendo del valor de la aproximación inicial X0, tener en cuenta que la raíz resultado dependerá del punto X0 elegido y entre qué máximos y mínimos se encuentre. (ADVERTENCIA: En caso de que entre máximo y el mínimo de la aproximación inicial la función no pase por el valor 0, el programa no convergerá a ningún resultado) */

#include <iostream>
#include <math.h>
using namespace std;

double Poli(int g, double *a,double x) {
double Y=0;
for (int i=0;i<=g;i++){
Y = Y + a[i]*pow(x,i);}
return Y;
}

double d1Poli(int g,double *a,double x) {
double dY=0;
for (int i=1;i<=g;i++){
dY = dY + i * a[i]*pow(x,i-1);}
return dY;
}

int main()
{
int g;
double x;

cout << “\n Introduzca el grado del polinomio: “;
cin >> g;

// suponer g<100
double a[100];

for (int i=0;i<=g;i++)
{
cout << "\n Introduzca el elemento a*x^" << i << " : ";
cin >> a[i];
}

double Xold, Xnew;
double correccion, ec = 1, precision;
double x0;

cout << "\n Introduzca el valor de la aproximacion inicial: ";
cin >> x0;

cout << "\n Introduzca la precision del valor de x (recomendable precision < 0.000001): ";
cin >> precision;

if (precision==0){precision=0.000001;}

Xold = x0;
while (ec > precision){
double Y = Poli(g, a, Xold);
double dY= d1Poli(g, a, Xold);
correccion = – Y / dY;
Xnew = Xold + correccion;
ec = pow(correccion,2);
Xold = Xnew;
}

cout << "\n Una de las raices del polinomio es " << Xnew ;

return 0;
}

Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s