Unidad I Fundamentos de Algebra Matricial Parte II Dra. Ruth M. Aguilar Ponce Facultad de Ciencias Departamento de Electrónica Propedeutico 2008 Facultad de Ciencias 1 Nociones de Calculo Matricial • Vector Tangente a una curva ⎛ ∂x1 ⎞ ⎜ ⎟ ⎜ ∂t ⎟ v ∂x (t ) ⎜ ∂x2 ⎟ = ⎜ ∂t ⎟ ∂t ⎜ M ⎟ ⎜ ∂xn ⎟ ⎜ ⎟ ⎝ ∂t ⎠ r x (t ) = ( x1 (t ) L xn (t )); • Gradiente de una función escalar ∂f ⎛ ∂f ∇f ( x ) = v = ⎜⎜ ∂x ⎝ ∂x1 Propedeutico 2008 ∂f ∂x2 Facultad de Ciencias ∂f ⎞ ⎟⎟ L ∂xn ⎠ 2 Nociones de Calculo Matricial v r f (x ) • Jacobiano de una función vectorial r v donde x es de dimensión m y f es de dimensión n r ∂f r ∂x Propedeutico 2008 ⎛ ∂f1 ⎜ ⎜ ∂x1 ⎜ ∂f 2 = ⎜ ∂x1 ⎜ ⎜ M ⎜ ∂f n ⎜ ∂x ⎝ 1 ∂f1 ∂x2 ∂f 2 ∂x2 M ∂f n ∂x2 Facultad de Ciencias L L O K ∂f1 ⎞ ⎟ ∂xm ⎟ ∂f 2 ⎟ ∂xm ⎟ ⎟ M ⎟ ∂f n ⎟ ∂xm ⎟⎠ 3 Hessiano • El Hessiano es el gradiente de segundo orden de una función escalar r r ∇ f ( x ) = ∇(∇f ( x )) 2 Propedeutico 2008 ∂f ⎞ ⎟⎟ K ∂xn ⎠ ∂ ⎛ ∂f = r ⎜⎜ ∂x ⎝ ∂x1 ∂f ∂x2 ⎛ ∂f ⎜ 2 x ∂ 1 ⎜ ⎜ ∂f = ⎜ ∂x2 ∂x1 ⎜ ⎜ M ⎜ ∂f ⎜ ∂x ∂x ⎝ n 1 ∂f ∂x1∂x2 ∂f ∂x22 M ∂f ∂xn ∂x2 Facultad de Ciencias L L O L ∂f ⎞ ⎟ ∂x1∂xn ⎟ ∂f ⎟ ∂x2 ∂xn ⎟ ⎟ M ⎟ ∂f ⎟ ∂xn2 ⎟⎠ 4 Nociones de Calculo Matricial • Derivada de una matriz ⎛ ∂f11 ⎜ ⎜ ∂t ∂F (t ) ⎜ ∂f 21 = ⎜ ∂t ∂t ⎜ M ⎜ ∂f m1 ⎜ ⎝ ∂t ∂f12 ∂t ∂f 22 ∂t M ∂f m 2 ∂t ∂f1n ⎞ ⎟ ∂t ⎟ ∂f 2 n ⎟ L ∂t ⎟ O M ⎟ ∂f mn ⎟ L ⎟ ∂t ⎠ L • Gradiente de una función escalar donde X es una matriz de m × n. ∂f ∂f ⎞ ⎛ ∂f ⎜ ⎜ ∂X 11 ⎜ ∂f ∂f ( X ) ⎜ = ∂X 12 ⎜ ∂X ⎜ M ⎜ ∂f ⎜ ∂X ⎝ 1n Propedeutico 2008 ∂X 21 ∂f ∂X 22 M ∂f ∂X 2 n Facultad de Ciencias ⎟ ∂X m1 ⎟ ∂f ⎟ L ∂X m 2 ⎟ ⎟ O M ⎟ ∂f ⎟ L ∂X nm ⎟⎠ L 5 MATLAB • Matlab (Matrix laboratory) es un sistema interactivo de software para computo numérico y graficación. • Como su nombre lo sugiere, Matlab es especialmente diseñado para computo matricial. • Además, Matlab cuenta con una gran variedad de capacidades graficas y puede ser extendido a través de programas escritos en su propio lenguaje de programación. • Matlab cuenta con una librería de funciones para resolver problemas tales como factorización de matrices, computo de eigenvalores y eigenvectores, etc. • Matlab esta diseñado para resolver problemas numéricos, es decir aritmética de precisión finita. Propedeutico 2008 Facultad de Ciencias 6 Matlab • En Matlab se pueden definir matrices escribiendo sus elementos entre corchetes. • La coma separa los elementos en columnas, y el punto y coma los separa en renglones. • Ejemplo: >> A = [1,2,3;4,5,6]; asigna estos valores a la matriz A. ⎛ 1 2 3⎞ ⎟⎟ A = ⎜⎜ ⎝ 4 5 6⎠ Propedeutico 2008 Facultad de Ciencias 7 Referencia a los elementos de una matriz • A(i,j) hace referencia al elemento ij de la matriz A >> A(2,2) ⎛ 1 2 3⎞ ⎟⎟ A = ⎜⎜ ans = 5 ⎝ 4 5 6⎠ • A(i,:) hace referencia a la renglón i de A >> A(1,:) ans = 1 2 3 • A(:,j) hace referencia a la columna j de A >> A(:,2) ans = 2 5 • A(r:s,k:l) hace referencia a la submatriz >> A(1:2,1:2) ans = Propedeutico 2008 1 4 Facultad de Ciencias 2 5 8 Definición de Matrices • Una matriz identidad de n × n se genera con >> I = eye(n); • Una matriz nula de m × n se genera con >> A = zeros(m,n); >>A = zeros(m) • Una matriz de m × n cuyos elementos son igual a uno se genera con >> A = ones(m,n); • Una matriz diagonal de n × n >> A = diag([x1,x2,..,xn]); Propedeutico 2008 Facultad de Ciencias 9 Definición de Matrices • Una matriz triangular superior en base a una matriz A >> B = triu(A); • Una matriz triangular inferior en base a una matriz A >> B = tril(A); • Una matriz de m × n cuyos elementos son números aleatorios entre cero y uno se genera con >> A = rand(m,n); • Una matriz de m × n cuyos elementos son números aleatorios normalmente distribuidos se genera con >> A = randn(m,n); Propedeutico 2008 Facultad de Ciencias 10 Operaciones Matriciales • Suma y resta de Matrices >> C = A+B; >> C = A-B; • Multiplicación por un escalar >> B = c*A; • Multiplicación de matrices >> C = A*B; • Multiplicación elemento por elemento >> C = A.*B; • Transpuesta de una matriz >> A = A’; Propedeutico 2008 Facultad de Ciencias 11 Funciones • Inversa >> inv(A) • Determinante >> det(A) • Traza >> trace(A) Propedeutico 2008 • Rango >> rank(A) • Tamaño >> size(A) • Suma >> sum(A,dim) Facultad de Ciencias 12 Creando archivos .m • Archivos file.m son archivos de texto que Matlab usa para definir funciones o scripts. • Un script es una secuencia de comandos que se usan frecuentemente y pueden ser guardados en un archivo para no ser reescritos. • Las funciones realizan operaciones sobre los valores de entrada y regresan estos valores ya procesados Propedeutico 2008 Facultad de Ciencias 13 Funciones • En Matlab una función se define en un archivo .m que lleva el nombre de la función. • Al inicio del archivo se debe incluir la definición de la función: – function [out1, out2] = myfunction(in1,in2) • La función debe ser guardada en un archivo con el mismo nombre de la función myfunction.m Propedeutico 2008 Facultad de Ciencias 14 Funciones Nombre de la función Palabra reservada Parámetros de salida Parámetros de entrada function [out1, out2] = Name(in1,in2) % Descripción de la función % parámetros de entrada Documentación % parámetros de salida Standard % Nombre del autor % Fecha de elaboración if nargin < 2 display(‘Error: faltan parametros’) else out1 = in1 * in2; out2 = my_subfunction(in2+in1); % -----------------------function out = my_subfunction(in) Cuerpo de la función Subfunción Propedeutico 2008 Facultad de Ciencias 15 Ejemplos de funciones function C = mult(A) r = rank(A); C = A * A’; • La función mult regresa la multiplicación de A por su transpuesta function [V,D,r]=properties(A) % Esta función encuentra los % eigenvalores, eigenvectores % y rango de A, dode A es una % matriz cuadrada [m,n]=size(A); if m!=n display(‘Error: La matriz debe ser cuadrada’); else r = rank(A); [V,D] = eig(A); end • • La variable r no es visible fuera de la función Propedeutico 2008 • % es usado para introducir comentarios. Para obtener todos los parámetros de salida se debe escribir [V,D,r]=properties(A) Facultad de Ciencias 16 Diario • El comando >>diary(‘file.txt’) registra todo lo echo en la ventana de comando de Matlab, y guardo los comandos y resultados en un archivo de texto con el nombre file.txt • Para terminar debes escribir >> diary off • >> diary on comienza a registrar los comandos nuevamente. Sin embargo no se guardaran al archivo hasta escribir el comando >>diary(‘file.txt’) Propedeutico 2008 Facultad de Ciencias 17 Guardando tus variables • El comando >>whos despliega todas las variables activas en en la ventana de comando de Matlab • Para guardar todas las variable reportadas por whos, usa el comando >>save ‘file’ • Si requieres recobrar los valores de esas variables posteriormente usa el comando >>load ‘file’ Propedeutico 2008 Facultad de Ciencias 18 Estructuras de Control if condition statement1 else statement2 end Propedeutico 2008 SWITCH switch_expr CASE case_expr, statement,...,statement CASE {exp1, expr2, ...} statement,...,statement ... OTHERWISE, statement,...,statement END Facultad de Ciencias 19 Ciclos while condition statement_1; ... statement_n; end Propedeutico 2008 for i=lim1:step:lim2 statement_1; ... statement_n; end Facultad de Ciencias 20