Saltar al contenido
Control Automático Educación

Polinomios en Matlab

En esta entrada aprenderemos como funcionan los polinomios en matlab, cuales son las diversas funciones que nos ofrece este softwares de ingeniería y veremos diversos ejemplos de como programar los polinomios usando el Matlab acompañado de su respectivo video en el canal de YouTube.

Antes de comenzar, te hago la invitación de que veas nuestro curso gratuito de matlab desde cero.

Y que te suscríbas al canal si deseas continuar aprendiendo sobre programación como matlab, python, lenguaje C y principalmente sobre teoría de ingeniería de control.

Polinomios en Matlab

Los polinomios son ecuaciones de una sola variable con exponentes enteros que no son negativos. MATLAB® representa polinomios con vectores numéricos que contienen los coeficientes polinómicos ordenados por potencia descendente.

A manera de ejemplo, podemos representar matemáticamente el siguiente polinomio, donde nuestra variable será la x:

𝑥^3+12𝑥^2−6𝑥+1

Para poder programar este polinomio en Matlab, debemos hacerlo de la misma forma como definimos o creamos vectores con matlab únicamente colocando los coeficientes que acompañan la variable, pero en este caso siempre respetando el orden, de colocar los coeficientes que acompañan la variable de mayor a menor exponente. Por ejemplo:

P = [1, 12, 6, 1]

Si tuvieramos el siguiente polinomio:

4y^5-5y^2-3y

Podemos escribir ese polinomio en matlab de quinto orden usando la siguiente sintaxis adicionando un cero donde no exista un coeficiente relativo a un exponente faltante.

P = [4, 0, 0, -5, -3, 0]

Funciones de Matlab para Polinomios

En la siguiente tabla, podremos ver el resumen de las diversas funcionalidades que podemos encontrar en el software de ingeniería de matlab para la resolución de Polinomios. Si lo deseas puedes remitirte a la documentación oficial de Mathworks.

FunciónDescripción
polyPolinomio con raíces especificadas o polinomio característico
polyeigProblema de valor propio polinomial
polyfitAjuste de una curva polinomial
residueExpansión de fracción parcial (descomposición de fracción parcial)
rootsRaíces polinomiales
polyvalEvaluar un polinomio en matlab
polyvalmEvaluación de polinomios matriciales
convConvolución y multiplicación de polinomios
deconvDeconvolución y división polinomial
polyintIntegración polinomial
polyderDiferenciación polinomial

Vamos a ver un ejemplo de cada una de las funciones programadas directamente en un Live Script de Matlab, y si deseas descargar el archivo, puedes hacerlo dando click en el siguiente botón.

Con cada uno de estos ejemplos tendrás las bases de como resolver polinomios matlab dependiendo del tipo de problema o aplicación que tengas.

polyval

La función polyval sirve para evaluar un polinomio en matlab, suponga que programamos el siguiente polinomio con matlab

P = [1, 12, 6, 1]

Y deseamos evaluarlo en 3 puntos diferentes, los cuales almacenamos en x.

x = [5 7 9];
y_val = polyval(P,x)
 y_val = 1×3
 396         890        1648

poly

Polinomio con raíces especificadas o polinomio característico en matlab

Polinomio con raíces

Si tenemos las siguientes raíces:

p_1=1;\ p_2=2;\ p_3=4;\ p_4=5

Veremos que el polinomio de dichas raíces corresponde a:

x^4-12x^3+49x^2-78x+40

En matlab podemos programar dicho polinomio de la siguiente forma:

p1 = poly([1 2 4 5])

p1 = 1×5

     1   -12    49   -78    40

Polinomio característico de una Matriz en Matlab

Si tenemos la siguiente matriz:

A = [1 2 3; 4 5 6; 7 8 9]

A = 3×3

     1     2     3
     4     5     6
     7     8     9

Para obtener el polinomio característico se usa la siguiente ecuación:

det(\lambda I-A)

p2 = poly(A)

p2 = 1×4

    1.0000  -15.0000  -18.0000   -0.0000

polyeig

El problema de valores propios de polinomios en Matlab es una variante del problema de valores propios estándar, A x = λ x , pero en cambio involucra polinomios en lugar de términos lineales.

Considere la siguiente ecuación masa-resorte:

M\frac{d^2y}{dt^2}+C\frac{dy}{dt}+Ky=f(t)

La solución fundamental de la ecuación diferencial viene dado por:

y(t)=xe^{\lambda t}

\lambda y x deben ser resueltos utilizando un problema de autovalores cuadrático:

(M\lambda^2+C\lambda+K)x=0

Crear matrices de coeficientes M, C y K para representar un sistema masa-resorte con cuatro grados de libertad. Las matrices de coeficientes son todas simétricas y semidefinidas positivas, y M es una matriz diagonal.

M = diag([3 1 3 1])
C = [0.4 0 -0.3 0; 0 0 0 0; -0.3 0 0.5 -0.2; 0 0 -0.2 0.2]
K = [-7 2 4  0; 2 -4 2 0; 4 2 -9 3; 0 0 3 -3]

Resuelva el QEP para los valores propios, los vectores propios y los números condicionados usando polyeig.

[X,e,s] = polyeig(K,C,M)

Para verificar la solución, podemos ver si efectivamente hemos llegado a las raíces del polinomio, para eso la ultima ecuación nos debe dar cero.

lambda = e(1);
x = X(:,1);
(M*lambda^2 + C*lambda + K)*x

polyfit

Ajuste de la curva polinomial en Matlab, para eso emplearemos la función polyfit.

p = polyfit(x,y,n) devuelve los coeficientes de un polinomio p(x) de grado n que se ajusta mejor (en un sentido de mínimos cuadrados) a los datos de y.

Para este ejemplo veremos inicialmente como graficar polinomios en matlab, pues apartir de la gráfica podremos entender el ajuste de la curva polinomial.

Inicialmente, tenga en consideración la siguiente función matemática:

y(x)=\frac{1}{1+x}

Podemos programarlo con el siguiente código, donde usaremos el polifit:

% vector de 5 puntos igualmente espaciados en el intervalo [0,1]
x = linspace(0,1,5);
y = 1./(1+x);
p = polyfit(x, y, 4); % Ajusta un polinomio de grado 4 a los 5 puntos

Procedemos a evaluar la función polinomial original y el ajuste del polinomio en una cuadrícula más fina de puntos entre 0 y 2. La evaluación del polinomio es necesario para poder realizar la gráfica de polinomios en matlab.

De esa forma podemos emplear el siguiente Script para graficar polinomios en matlab:

x1 = linspace(0,2);
y1 = 1./(1+x1);
f1 = polyval(p, x1);

figure
plot(x,y,'o')
hold on
plot(x1,y1)
plot(x1,f1,'r--')
legend('y','y1','f1')
Ecuaciones Lineales Matlab

Ecuaciones Lineales en Matlab

conv

Convolución y multiplicación de polinomios usando matlab.

w = conv(u,v) devuelve la convolución de los vectores u y v. Si u y v son vectores de coeficientes polinomiales, convolucionarlos equivale a multiplicar polinomios en matlab, en este caso especifico multiplicar dos polinomios usando Matlab.

D(s) = s(s+5)(s+1)(s+3)

Podemos crear un producto de dos polinomios en diferentes variables:

D1 = conv([1 0], [1 5]);
D2 = conv(D1,[1 1]);
D = conv(D2,[1 3])

Sin embargo, esta programación del producto de polinomios empleando matlab también puede ser realizada en una única linea usando funciones anidadas:

D = conv([1 0],conv([1 5],conv([1 1], [1 3])))

D = 1×5

     1     9    23    15     0

deconv

Deconvolución y división polinomial. Empleando la función deconv conseguimos dividir polinomios en matlab.

[q,r] = deconv(u,v) deconvoluciona un vector a v partir de un vector u usando una división larga y devuelve el cociente q y el resto r de manera que u = conv(v,q) + r

u = [2 7 4 9];
v = [1 0 1];
[q, r] = deconv (u, v)

Podemos corroborar la definición para ver si llegamos al polinomio inicial u:

conv(v,q) + r

ans = 1×4

     2     7     4     9

residue

La función residue permite resolver fracciones parciales en Matlab (descomposición de fracción parcial). Con la función residue conseguimos expandir polinomios en matlab.

[r,p,k] = residue(b,a) encuentra los residuos, los polos y el término directo de una expansión de fracción parcial de la razón de dos polinomios, donde la expansión es de la forma:

y(s)=\frac{(s+2)(s+0.5)}{s(s+5)(s+1)(s+3)}=\frac{A_1}{s}+\frac{A_2}{s+5}+\frac{A_3}{s+1}+\frac{A_4}{s+3}

En este caso, note que el denominador es el mismo polinomio que hemos creado cuando explicamos la función conv, por lo tanto vamos a crear el numerador y emplear la función residue para realizar la expanción en fracciones parciales con matlab.

N = conv([1 2], [1 0.5]);
[r,p,k] = residue(N,D)

La solución es la siguiente, es importante mencionar aquí, que en el sitio web ya resolvimos manualmente este problema de fracciones parciales en los sistemas de control.

r = 4×1

   -0.3375
    0.2083
    0.0625
    0.0667

p = 4×1

   -5.0000
   -3.0000
   -1.0000
         0

k =

     []

roots

La función ROOTS de Matlab permite encontrar las Raíces polinomiales.

Esta función permite encontrar cuales son las raices de un polinomio matlab.

polos = roots(D)

polos = 4×1

         0
   -5.0000
   -3.0000
   -1.0000

polyint

Con la función de polyint podemos realizar Integración polinomial con Matlab.

q = polyint(p,k) devuelve la integral del polinomio representado por los coeficientes p usando una constante de integración k.

I=\int_{-1}^{3}\left( 3x^4-4x^2+10x-2\right)dx

La integral definida polinomial anterior, podemos solucionarla numéricamente con matlab empleando el siguiente código:

p = [3 0 -4 10 -2];
I = polyint(p)

I = 1×6

    0.6000         0   -1.3333    5.0000   -2.0000         0

polyder

Con la función polyder podemos realizar Diferenciación o derivadas polinomiales con Matlab.

q=\frac{d}{dx}\left( 3x^4-4x^2+10x-2\right)

Para resolver una derivada polinomial numéricamente con matlab empleamos el siguiente código:

q = polyder(p)

q = 1×4

    12     0    -8    10

Sumar y Restar Polinomios en Matlab

Para realizar una adición o subtracción de polinomios con matlab, será necesario hacer que todos los polinomios tengan la misma cantidad de coeficientes, para eso, primero identificamos el polinomio con mayor grado y ajustamos los demás polinomios con coeficientes ceros para hacer que cada uno de estos tengan la misma cantidad de elementos.

Por ejemplo, sumar los siguientes 3 polinomios:

p(x)= x^4+2x^3+3x-2\\
q(x) = -6x^2+3x+1\\
r(x) = x+8

Note que el polinomio con mayor grado es el polinomio p(x) que es de grado 4, por lo tanto tendrá 5 coeficientes, debemos ingresar entonces los 3 polinomios con 5 coeficientes en matlab completando con cero:

p = [1 2 0 3 -2];
q = [0 0 -6 3 1];
r = [0 0 0 1 8];

Y posteriormente realizamos la suma o resta de los 3 polinomios que tienen igual número de elementos (es similar a sumar o restar vectores)

P = p + q + r

P =

 1     2    -6     7     7

Vemos que el resultado nos entrega los coeficientes del polinomio, que sería:

x^4+2x^3-6x^2+7x+7

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.