Expresamos un polinomio en su forma general como:
y = c1xn + c2xn-1 + ... + cnx + cn+1
donde n es el orden del polinomio y los ci son coeficientes. El polinomio puede expresarse también en la forma factorizada
y = c1(x - r1)(x - r2) ... (x - rn)
Donde las ri son las raíces del polinomio.
Un polinomio de orden n tiene n raíces, algunas de las cuales pueden ser valores múltiples o complejos. Si todos los coeficientes son reales, todas las raíces complejas se encontrarán en pares conjugados complejos.
Coeficientes de potencias: En MatLab, un polinomio se representa mediante un vector de fila que contiene los coeficientes de las potencias en orden descendente. Por ejemplo el polinomio
y = 2x3 + x2 + 4x + 5
se representa con
p = [2 1 4 5]
Raíces: las raíces de un polinomio se obtienen mediante el comando roots. Por ejemplo, para el polinomio anterior escribimos en el promp de Matlab
r = roots(p)
Produce
r =
-1.0000
Aquí, las raíces en forma de vector de columna.
Si se conocen todas las raíces, los coeficientes pueden recalcularse con el comando poly. Por ejemplo,
poly(r)
Produce
ans =
1.0000 0.5000 2.0000 2.5000
Observa que todos los coeficientes son la mitad de los coeficientes originales del polinomio. Esto se debe a que un polinomio determinado a partir exclusivamente de las raíces sigue siendo arbitrario en cuanto a un multiplicador constante. Para poder determinar un polinomio de orden n, se requieren n+1 puntos de datos, pero el número de raíces de un polinomio es sólo n; por ello, MatLab normaliza los coeficientes de modo que el primero sea la unidad.
Aunque las conversiones de coeficientes a raíces y viceversa son fáciles con MatLab, debemos tener cuidado en lo que se refiere a la exactitud de los cálculos. La conversión tiende a ser menos exacta si hay múltiples raíces. Como ejemplo de inexactitud, consideremos:
y = (x - 1)6
y = x6 - 6x5 + 15x4 - 20x3 + 15x2 - 6x + 1
Que tiene una raíz séxtuple de x = 1. Si tratamos de calcular las raíces con roots, las respuestas son
r = roots([1 -6 15 -20 15 -6 1])
r =
1.0035 + 0.0020i
1.0035 - 0.0020i
1.0000 + 0.0040i
1.0000 - 0.0040i
0.9965 + 0.0020i
0.9965 - 0.0020i
que son distintas de la unidad. La discrepancia de todas las raíces respecto de la unidad se debe a errores de redondeo durante el cálculo y depende de la computadora utilizada. En una computadora diferente, las discrepancias podrían ser distintas.(nota: La obtención de raíces con muchos múltiplos es uno de los problemas más difíciles de métodos numéricos).
Evaluación de polinomios: Los polinomios pueden evaluarse con el comando polyval. Por ejemplo, para el polinomio
y = 3x4 - 7x3 + 2x2 + x + 1
los siguientes comandos calculan el valor de y(2.5):
c = [3, -7, 2, 1, 1];
xi = 2.5;
yi = polyval (c, xi)
Si xi es un vector que contiene múltiples valores de la abscisa, yi se convierte en un vector de las respuestas con la misma longitud que xi.
Para más información puedes consultar los siguientes temas en MatLab.
EDU» help matlab\polyfun
Polynomial and interpolation functions.
Polynomials.
roots - Find polynomial roots.
poly - Construct polynomial with specified roots.
polyval - Evaluate polynomial.
polyvalm - Evaluate polynomial with matrix argument.
residue - Partial-fraction expansion (residues).
polyfit - Fit polynomial to data.
polyder - Differentiate polynomial.
conv - Multiply polynomials.
deconv - Divide polynomials.
Data interpolation.
interp1 - 1-D interpolation (1-D table lookup).
interp2 - 2-D interpolation (2-D table lookup).
interpft - 1-D interpolation using FFT method.
griddata - Data gridding.
Spline interpolation.
spline - Cubic spline data interpolation.
ppval - Evaluate piecewise polynomial.