RAIZ DE POLINOMIOS
Es esta sección se analizará los métodos para encontrar las raíces de ecuaciones polinomiales de la forma general
fn(x) = a0 + a1x+ a2x2 + ... + anxn.
Evaluación de polinomios
Consideremos como ejemplo el siguiente polinomio.
f3(x) = a0 + a1x+ a2x2 + a3x3.
En este caso los coeficientes del polinomio los podemos poner en un vector de datos dado como a =[a0, a1, a2, a3], y realizar la evaluación polinomial utilizando ciclos. Adicionalmente necesitamos de una función que nos permita calcular la potencias de x.
Manipulando el polinomio, podemos dar una forma eficiente de realizar la evaluación. Así el mismo polinomio, lo podemos representar como:
f3(x) = a0 + x(a1+ x(a2 + xa3))
Note que ahora ya no tenemos potencia de x y suimplementación resulta mas eficiente.
Ejemplo.
Consideremos el siguiente polinomio f3(x) = 1+2x+3x2, el cual deseamos evaluar en x = 20. Para implementarlo hacemos
n
p = p*x + a[i];
2
p = 0*20+3
p = 3
1
p = 3*20+2
p = 62
0
p = 62*20+1
p = 1241
Cálculo de derivadas.
Cuando se buscan los ceros de una función, como es el caso del método de Newton, es necesario no solo hacerla evaluación del polinomio sino calcular también su derivada. En este caso la derivada de cualquier polinomio la podemos calcular como:
fn(x) = anxn + an-1xn-1 + an-2xn-2 + … + a2x2+ a1x + a0
f’n(x) = nanxn-1 + (n-1)an-1xn-2 + (n-2)an-2xn-3 + … + 2a2x+ a1
Note que el polinomio f’n(x) es un polinomio de menor grado. Así por ejemplo considerando el polinomio f3(x) = 1+2x+3x2, tenemosque su derivada es:
n
df = df*x + a[i+1]*(i+1)
df
1
df = 0*20+3*2
6
0
pf = 6*20+2*1
122
Deflación polinomial.
Suponga que conoce, una de las raíces de un polinomio, podemos realizar la división de este polinomio para obtener un polinomio de grado menor. Así por ejemplo si tenemos
fn(x) = a0 + a1x+ a2x2 + ... + anxn.
Y una de sus raíces es s, entonces podemos escribir
fn(x) =(x-s)*(a’0 + a’1x+ a’2x2 + ... + a’n-1xn-1).
En este caso el residuo de la división es cero y podemos calcular un polinomio de grado n-1. Para un polinomio de orden 3 tenemos que
a3x2
(a2-a3s) x
a1-(a2-a3s)s
x+s
a3x3
+a2x2
+ a1x
+a0
-a3x2
- a3 s x2
0
(a2-a3s) x2
+ a1x
+a0
-(a2-a3s) x2
-(a2-a3s)sx
0
(a1-(a2-a3s)s)x
+a0
-(a1-(a2-a3s)s)x
-(a1-(a2-a3s)s)s
a0-(a1-(a2-a3s)s)s
La división sintética, es una manera de hacer lo mismo, pero de forma compacta. Así tenemos:
x+s
a3
a2
a1
a0
- a3 s
-(a2- a3 s)s
-(a1-(a2-s a3)s)s
a3
a2- a3 s
a1-(a2- a3 s)s
a0-(a1-(a2- a3 s)s)s
Ejemplo.
Dado el polinomio f5(x) = x5 - 7x4 – 3x3 + 79x2 – 46x –120 encontrar la división sintéticacon el monomio (x-4).
x-4
1
-7
-3
79
-46
-120
4
-12
-60
76
120
1
-3
-15
19
30
0
El polinomio resultante, en este caso, es f4(x) = x4 - 3x3 – 15x2 + 19x +30. Note que el residuo es cero.
Implementación en Java.
/**
* Title: Evaluacion polinomial
* Description: Realiza la evaluacion de polinomios asi como el calculo de
* derivadas y division sintetica* Copyright: Copyright (c) 2004
* Company: UMSNH
* @author Dr. Felix Calderon Solorio
* @version 1.0
*/
public class ej057 {
public static void main(String[] args) {
double a[] = {-120, -46, 79, -3, -7, 1};
double b[] = new double [a.length];
System.out.println(EvaluaPolinomio(a, 1));
System.out.println(EvaluaDerivada(a, 1));
DivisionSintetica(a, b,-4);
}
public static double EvaluaPolinomio(double a[], double x)
{
int n = a.length, i;
double p = 0;
for(i=n-1; i>=0; i--)
p = p*x + a[i];
return p;
}
public static double EvaluaDerivada(double a[], double x)
{
int n = a.length, i;
double df = 0;
for(i=n-2; i>=0; i--)
df = df*x + a[i+1]*(i+1);
return df;
}...
Regístrate para leer el documento completo.