Funciones Esenciales de MATLAB: Matemáticas, Matrices y Polinomios
Funciones Matemáticas Elementales
MATLAB ofrece una amplia gama de funciones matemáticas elementales para realizar cálculos con escalares y vectores. A continuación, se detallan algunas de las más utilizadas:
- sin(x): Seno de x.
- cos(x): Coseno de x.
- tan(x): Tangente de x.
- asin(x): Arco seno de x.
- acos(x): Arco coseno de x.
- atan(x): Arco tangente de x (devuelve un ángulo entre -π/2 y +π/2).
- atan2(y,x): Arco tangente (devuelve un ángulo entre -π y +π); se le pasan dos argumentos, proporcionales al seno y al coseno.
- sinh(x): Seno hiperbólico de x.
- cosh(x): Coseno hiperbólico de x.
- tanh(x): Tangente hiperbólica de x.
- asinh(x): Arco seno hiperbólico de x.
- acosh(x): Arco coseno hiperbólico de x.
- atanh(x): Arco tangente hiperbólica de x.
- log(x): Logaritmo natural de x.
- log10(x): Logaritmo decimal de x.
- exp(x): Función exponencial de x.
- sqrt(x): Raíz cuadrada de x.
- sign(x): Devuelve -1 si x < 0, 0 si x = 0 y 1 si x > 0. Aplicada a un número complejo, devuelve un vector unitario en la misma dirección.
- rem(x,y): Resto de la división de x entre y (dos argumentos que no tienen que ser enteros).
- mod(x,y): Similar a rem (ver diferencias con el comando Help).
- round(x): Redondeo hacia el entero más próximo.
- fix(x): Redondea hacia el entero más próximo a 0.
- floor(x): Valor entero más próximo hacia -∞.
- ceil(x): Valor entero más próximo hacia +∞.
- gcd(x,y): Máximo común divisor de x e y.
- lcm(x,y): Mínimo común múltiplo de x e y.
- real(x): Parte real de x.
- imag(x): Parte imaginaria de x.
- abs(x): Valor absoluto de x.
- angle(x): Ángulo de fase de x.
Funciones que Actúan sobre Vectores
Estas funciones operan sobre vectores, realizando cálculos estadísticos y de manipulación de datos:
- [xm,im]=max(x): Máximo elemento de un vector. Devuelve el valor máximo xm y la posición que ocupa im.
- min(x): Mínimo elemento de un vector. Devuelve el valor mínimo y la posición que ocupa.
- sum(x): Suma de los elementos de un vector.
- cumsum(x): Devuelve el vector suma acumulativa de los elementos de un vector (cada elemento del resultado es una suma de elementos del original).
- mean(x): Valor medio de los elementos de un vector.
- std(x): Desviación típica de los elementos de un vector.
- prod(x): Producto de los elementos de un vector.
- cumprod(x): Devuelve el vector producto acumulativo de los elementos de un vector.
- [y,i]=sort(x): Ordenación de menor a mayor de los elementos de un vector x. Devuelve el vector ordenado y, y un vector i con las posiciones iniciales en x de los elementos en el vector ordenado y.
Funciones Matriciales Elementales
Estas funciones se utilizan para realizar operaciones básicas con matrices:
- B = A’: Calcula la traspuesta (conjugada) de la matriz A.
- B = A.’: Calcula la traspuesta (sin conjugar) de la matriz A.
- v = poly(A): Devuelve un vector v con los coeficientes del polinomio característico de la matriz cuadrada A.
- t = trace(A): Devuelve la traza t (suma de los elementos de la diagonal) de una matriz cuadrada A.
- [m,n] = size(A): Devuelve el número de filas m y de columnas n de una matriz rectangular A.
- n = size(A): Devuelve el tamaño de una matriz cuadrada A.
- nf = size(A,1): Devuelve el número de filas de A.
- nc = size(A,2): Devuelve el número de columnas de A.
Funciones Matriciales Especiales
Estas funciones realizan operaciones más avanzadas sobre matrices:
- expm(A): Si A=XDX’, entonces expm(A) = X*diag(exp(diag(D)))*X’. Calcula la exponencial de la matriz A.
- sqrtm(A): Devuelve una matriz que multiplicada por sí misma da la matriz A.
- logm(A): Es la función recíproca de expm(A). Calcula el logaritmo de la matriz A.
Funciones de Factorización y/o Descomposición Matricial
Estas funciones se utilizan para descomponer matrices en formas más simples o para resolver sistemas de ecuaciones:
- [L,U] = lu(A): Descomposición de Crout (A = LU) de una matriz. La matriz L es una permutación de una matriz triangular inferior (dicha permutación es consecuencia del pivotamiento por columnas utilizado en la factorización).
- B = inv(A): Calcula la inversa de A. Equivale a B=inv(U)*inv(L).
- d = det(A): Devuelve el determinante d de la matriz cuadrada A. Equivale a d=det(L)*det(U).
- E = rref(A): Reducción a forma de escalón (mediante la eliminación de Gauss con pivotamiento por columnas, haciendo ceros también encima de los pivots) de una matriz rectangular A.
- [E,xc] = rref(A): Reducción a forma de escalón con un vector xc que da información sobre una posible base del espacio de columnas de A.
- U = chol(A): Descomposición de Cholesky de una matriz simétrica y positivo-definida. Sólo se utiliza la diagonal y la parte triangular superior de A. El resultado es una matriz triangular superior tal que A = U’*U.
- c = rcond(A): Devuelve una estimación del recíproco de la condición numérica de la matriz A basada en la norma-1. Si el resultado es próximo a 1 la matriz A está bien condicionada; si es próximo a 0 no lo está.
Funciones Basadas en el Cálculo de Valores y Vectores Propios
- [X,D] = eig(A): Valores propios (diagonal de D) y vectores propios (columnas de X) de una matriz cuadrada A. Con frecuencia el resultado es complejo (si A no es simétrica).
- [X,D] = eig(A,B): Valores propios (diagonal de D) y vectores propios (columnas de X) de dos matrices cuadradas A y B (Ax = λBx). Los vectores propios están normalizados de modo que X’*B*X=I. Cuando A es simétrica y B es simétrica y definida-positiva se puede utilizar [X,D] = eig(A,B,’chol’).
Funciones Basadas en la Descomposición QR
- [Q,R] = qr(A): Descomposición QR de una matriz rectangular. Se utiliza para sistemas con más ecuaciones que incógnitas. Q es una matriz ortogonal, es decir, es cuadrada aunque A no lo sea (m>n). No se garantiza que los elementos diagonales de R sean positivos, lo cual crea dificultades en algunos problemas (esa factorización no coincide con la de Gram-Schmidt).
- [Q,R] = qr(A,0): Similar a la anterior, pero con Q del mismo tamaño que A, es decir, sin completar una base ortonormal cuando m>n.
- [Q,R,E]=qr(A): Factorización QR con pivotamiento por columnas. La matriz E es una matriz de permutación tal que A*E=Q*R. La matriz E se determina de modo que los elementos de abs(diag(R)) son decrecientes.
- B = null(A): Devuelve una base ortonormal del subespacio nulo (kernel, o conjunto de vectores x tales que Ax = 0) de la matriz rectangular A, calculada mediante la descomposición de valores singulares. Las columnas de B son ortonormales: B’*B=I.
- B = null(A,’r’): Devuelve una base del subespacio nulo de A calculada a partir de la forma de escalón reducida. Las columnas de B no son ortonormales y se obtienen alternativamente dando valor cero a todas las variables libres excepto a una a la que se da valor unidad.
- Q = orth(A): Las columnas de Q son una base ortonormal del espacio de columnas de A. El número de columnas de Q es el rango de A.
Funciones Basadas en la Descomposición de Valores Singulares
- [U,D,V] = svd(A): Descomposición de valor singular de una matriz rectangular (A=U*D*V’). U y V son matrices ortonormales. D es diagonal m×n (mismo tamaño que A) y contiene los valores singulares.
- B = pinv(A): Calcula la pseudo-inversa de una matriz rectangular A.
- r = rank(A): Calcula el rango r de una matriz rectangular A.
- nor = norm(A): Calcula la norma-2 de una matriz (el mayor valor singular).
- nor = norm(A,2): Lo mismo que la anterior.
- nor = normest(A): Calcula de forma aproximada la norma-2 con menos operaciones aritméticas que la función norm.
- c = cond(A): Condición numérica sub-2 de la matriz A. Es el cociente entre el máximo y el mínimo valor singular. La condición numérica da una idea de los errores que se obtienen al resolver un sistema de ecuaciones lineales con dicha matriz: su logaritmo indica el número de cifras significativas que se pierden. Si A es grande el cálculo es laborioso.
- c = condest(A): Estimación por defecto de la condición numérica de A con la norma-1. Esta función es mucho más económica que cond.
Funciones para Cálculos con Polinomios
Estas funciones permiten realizar operaciones con polinomios, como evaluación, derivación, multiplicación y división:
- poly(A): Polinomio característico de la matriz A.
- roots(pol): Raíces del polinomio pol.
- polyval(pol,x): Evaluación del polinomio pol para el valor de x. Si x es un vector, pol se evalúa para cada elemento de x.
- polyvalm(pol,A): Evaluación del polinomio pol de la matriz A.
- conv(p1,p2): Producto de convolución de dos polinomios p1 y p2.
- [c,r]=deconv(p,q): División del polinomio p por el polinomio q. En c se devuelve el cociente y en r el resto de la división.
- residue(p1,p2): Descompone el cociente entre p1 y p2 en suma de fracciones simples (ver >>help residue).
- polyder(pol): Calcula la derivada de un polinomio.
- polyder(p1,p2): Calcula la derivada de producto de polinomios.
- polyfit(x,y,n): Calcula los coeficientes de un polinomio p(x) de grado n que se ajusta a los datos p(x(i)) ~= y(i), en el sentido de mínimo error cuadrático medio.
- interp1(xp,yp,x): Calcula el valor interpolado para la abscisa x a partir de un conjunto de puntos dado por los vectores xp e yp.
- interp1(xp,yp,x,’m’): Como la anterior, pero permitiendo especificar también el método de interpolación. La cadena de caracteres m admite los valores ‘nearest’, ‘linear’, ‘spline’, ‘pchip’, ‘cubic’ y ‘v5cubic’.