Polinomios en MATLAB.
En MATLAB un polinomio se representa mediante un vector fila que contiene los coeficientes de las potencias en orden decreciente: empezando por el coeficiente principal y terminando por el término independiente.
Por ejemplo, el polinomio p(x)=3x2-2x-1 se representa con: p = [3 -2 -1];
MATLAB contempla las siguientes operaciones básicas con polinomios:
Cálculo de las raíces.- a partir de la lista coeficientes, por medio del comando roots( ), por ejemplo
r=roots(p)
nos devuelve
r = 1.0000
-0.3333
El resultado es un vector columna de ceros.
Cálculo de los coeficientes.- a partir del vector columna de ceros, por medio del comando poly( ), por ejemplo
poly(r)
nos devuelve
ans = 1.0000 -0.6667 -0.3333
Observe que el polinomio devuelto siempre es mónico.
Multiplicación de dos polinomios.- dados por la lista de sus coeficientes, por medio del comando conv( , ). Por ejemplo, para comprobar que (x-5) (x+1)=x2-4x-5 basta ejecutar
conv([1 -5], [1 1])
obteniendo
ans = 1 -4 -5
La división se realiza por medio del comando deconv( , ): si p(x)=s(x) q(x) + r(x), se puede usar el formato
[s, r] = deconv(p, q])
Evaluación de un polinomio.- dado por la lista de sus coeficientes p en un valor x, por medio del comando polyval(p, x). Por ejemplo, para comprobar que p(1)0= basta realizar
polyval(p, 1)
obteniendo
ans = 0
polyval( ) realiza la evaluación siguiendo el algoritmo de Horner o de multiplicación anidada.
POLINOMIOS
Con MATLAB se puede trabajar con polinomios de forma sencilla. Es suficiente tener en cuenta que un polinomio no es nada más que un vector, en que el orden de los coeficientes va de mayor a menor grado.
Ejemplos.
EDU>> p=[3 5 2 8 6] % 3*x^4+5*x^3+2*x^2+8*x+6
p =
3 5 2 8 6
EDU>> q=[6 2 1 7 8] % 6*x^4+2*x^3+x^2+7*x+8
q =
6 2 1 7 8
También es posible multiplicar dos polinomios.
Ejemplo.
EDU>> conv(p,q) % producto de p por q
ans =
1 36 25 78 113 74 78 106 48
O obtener el cociente que se obtiene al dividirlos.
EDU>> deconv(p,q) % cociente resultado de dividir p entre q
ans =
0.5000
EDU>> roots(p) % Raices del polinomio p
ans =
-1.7793
0.4292 + 1.1502i
0.4292 - 1.1502i
-0.7458
Ejemplo.
EDU>> conv(p,q) % producto de p por q
ans =
1 36 25 78 113 74 78 106 48
O obtener el cociente que se obtiene al dividirlos.
EDU>> deconv(p,q) % cociente resultado de dividir p entre q
ans =
0.5000
EDU>> roots(p) % Raices del polinomio p
ans =
-1.7793
0.4292 + 1.1502i
0.4292 - 1.1502i
-0.7458
Reglas de representación en Matlab.
Los coeficientes ordenados en forma decreciente por su grado.
Completitud: deben estar TODOS los coeficientes, aún si su valor = 0 (estructura posicional)
» a = [ 1 1 1] % representa: x 2 + x + 1
» a = [ 2 0 1 3] % 2 x 3 + 0 x 2 + x + 3
· Operaciones: Suma y resta
» [ 1 1 1 1 ] + [ 3 2 1 0 ]
ans =
4 3 2 1 % = 4x3 + 3x2 + 2x + 1
Ambas representaciones deben ser de igual largo (cantidad de elementos).
% (x + 1) + (3x3 + 2x2 + x)
» [ 0 0 1 1 ] + [ 3 2 1 0 ]
ans =
3 2 2 1 % la resta es análoga
· Operaciones: Producto
Polinomio x escalar
» [ 3 2 1 0 ] * 3 % (3x3 + 2x2 + x) 3
ans =
9 6 3 0 % 9x3 + 6x2 + 3x
Polinomio xpolinomio Ej: (x + 1)(3x3 + 2x2 + x)
» [ 0 0 1 1 ] * [ 3 2 1 0 ]‘
ans =
1 % ¡Este resultado no es correcto!
· Operaciones: Cociente
» [ c, r] = deconv( [3 5 3 1 0], [ 3 2 1 0 ] )
c =
1.0000 1.0000
r =
1.0e-015 *
0 0 0 0.1110 0
» [ c, r] = deconv( [3 5 3 1 0], [ 1 1 ] )
c =
3 2 1 0
r =
0 0 0 0 0
El resultado se devuelve en 2 vectores (cociente y resto) vectores completos.
· Observar el coeficiente del resultado
· Si no se recibe el resultado en un vector sólo obtenemos el cociente.
· Operaciones: Raíces
» roots( [ 4 2 1 ] )
ans =
-0.2500 + 0.4330i
-0.2500 - 0.4330i
» roots( [ 8 4 2 1 ] )
ans =
-0.5000
0.0000 + 0.5000i
0.0000 - 0.5000i
Matlab provee una función que halla las raíces de polinomios con una precisión determinada; puede no ser la que le sirve al usuario.
Éste deberá verificar si precisión y tiempo de cálculo se adecuan a su problema
No hay comentarios:
Publicar un comentario