Professional Documents
Culture Documents
Construccin de arreglos
Las operaciones con arreglos se pueden realizar en la forma elemental con los operadores aritmticos *, /, +, - y ^, siguiendo las reglas de lgebra lineal o haciendo los clculos elemento por elemento mediante los operadores especiales con que cuenta Matlab. La Tabla 3.1 muestra algunos comandos para operar con matrices.
Tabla 3.1 Comandos para operar matrices
Funcin A inv(A) det(A) rank(A) tril(A) triu(A) eye(A) cross(x,y) dot(x,y) sum(A) prod(A) eig(A)
Descripcin Calcula la matriz transpuesta de A Calcula la matriz inversa de A Calcula el determinante de la matriz (A) Calcula el rango de la matriz A Devuelve la parte triangular inferior de la matriz A Devuelve la parte triangular superior de la matriz A Crea la matriz identidad. Calcula el producto cruz (producto vectorial) de dos vectores Calcula el producto escalar (producto punto) de dos vectores Suma los elementos en el vector A suma los elementos en cada columna de la matriz A. Multiplica los elementos del vector A multiplica los elementos en cada columna de la matriz A. Calcula los valores caractersticos de la matriz cuadrada A.
53
Programacin
Construccin de arreglos
Ejercicio de prctica 3.1 Realiza las siguientes operaciones con vectores y matrices en la Ventana de Comandos (Las instrucciones estn en color azul). >> % Se crea el vector A >> A = [5 9 12]; >> % Se crea el vector B >> B = [4,7,3]; >> % Se realiza la suma de vectores A y B >> C = A + B C = 9 16 15
54
Programacin
Construccin de arreglos
55
Programacin
Construccin de arreglos
Ejercicio de prctica 3.2 Realizar las siguientes operaciones de multiplicacin con vectores y matrices en la Ventana de Comandos.
>> % Se comete error porque la multiplicacin no es >> % conmutativa >> D = B*A ??? Error using ==> mtimes Inner matrix dimensions must agree. Ing. Luis Lorenzo Jimnez Garca 56
Programacin
Construccin de arreglos
57
Programacin 1 4 >> % Se multiplican los vectores >> VectorA*VectorB ans = 15 >> % Se multiplican los vectores al revs >> VectorB*VectorA ans = 6 2 8 15 5 20 3 1 4
Construccin de arreglos
58
Programacin
Construccin de arreglos
3.3
La operacin de divisin est tambin asociada con las reglas de lgebra lineal. Esta operacin es ms compleja y puede ser explicada con ayuda de la matriz identidad y la matriz inversa. Matriz identidad: Es una matriz cuadrada en la cual los elementos de la diagonal principal son unos y el resto de los elementos son ceros. MatLab tiene el comando eye para generar esta matriz. Tambin se cumple que AI = IA = A. Matriz inversa: La matriz B es la inversa de la matriz A si y solo si el producto de ambas da la matriz identidad. Ambas matrices deben ser cuadradas, y el orden de la multiplicacin puede ser A*B B*A. Esto es, B* A = A*B = I. Obviamente B es la inversa de A, y A es la inversa de B. La matriz inversa A se escribe como [A-1]. En MatLab la matriz inversa puede ser obtenida operando A-1 o con la funcin inv(A).
Ejercicio de prctica 3.3 Efectuar las siguientes operaciones con matrices para comprobar los fundamentos anteriores en la Ventana de Comandos.
>> % Se calcula la matriz inversa de A y se asigna a B >> B = inv(A) B = 5.5000 2.0000 -3.5000 -1.0000 2.0000 0 59
Programacin -3.0000 >> B = A^(-1) B = 5.5000 2.0000 -3.0000 -3.5000 -1.0000 2.0000 2.0000 0 -1.0000 2.0000 -1.0000
Construccin de arreglos
Determinantes: Un determinante es una funcin que asocia un nmero, llamado el determinante de la matriz a cada matriz cuadrada A. MatLab calcula el determinante de una matriz cuadrada A con el comando det(A). Ing. Luis Lorenzo Jimnez Garca 60
Programacin
Construccin de arreglos
Divisin de Arreglos: MatLab tiene dos tipos de divisin con arreglos, que son divisin derecha y divisin izquierda. La divisin izquierda es usada para resolver la ecuacin matricial AX = B. En esta ecuacin X y B son vectores columna. La solucin analtica es X = [A-1] B y MatLab la calcula por divisin izquierda X = A\B. La divisin izquierda emplea el mtodo de eliminacin de Gauss y se recomienda para resolver sistemas de ecuaciones lineales. La divisin derecha es usada para resolver la ecuacin matricial XC = D. En esta ecuacin X y D son vectores fila. La solucin analtica es X = D [C-1] y MatLab la calcula por divisin derecha X = D/C.
Smbolo .* .^
Smbolo ./ .\
Ejercicio de prctica 3.4 Evale las siguientes operaciones con vectores, donde A = (2, 5, 6) y B= (2, 3, 5), en la Ventana de Comandos.
61
Programacin
Construccin de arreglos
>> A = [2, 5, 6]; B = [2, 3, 5]; 1. ( ) ( ) ( ) >> A.*B ans = 4 >> A.^2 2. ans = 4 >> 1./A 3. 25 36 15 30
ans = 0.5000 >> A./B ans = 1.0000 >> A/2 1.6667 1.200 0.2000 0.1667
4.
5.
Ejercicio de prctica 3.5 Realice las siguientes operaciones con matrices, en la Ventana de Comandos:
62
Programacin B = 1 3 4 2 10 7
Construccin de arreglos
>> % Cada elemento de B se eleva al cubo >> B.^3 ans = 1 27 >> A.*B ans = 2 15 24 16 30 28 64 8 1000 343
>> % Divisin elemento por elemento >> C = A./B C = 2.0000 1.6667 >> A*B ??? Error using ==> mtimes Inner matrix dimensions must agree. 1.5000 4.0000 0.3000 0.5714
Las operaciones elemento a elemento son muy tiles para calcular el valor de una funcin pasndole distintos valores de sus argumentos. Para hacer esto slo es necesario definir un vector que contenga las variables independientes, y despus usar el vector en operaciones elemento a elemento para crear un vector en el cual cada elemento se corresponda con el valor de la funcin en cuestin.
63
Programacin
Construccin de arreglos
>> % Se crea un vector X de 8 elementos >> X = X = 1 2 3 4 5 6 7 8 >> % Se evala la primera funcin >> Y1 = X.^2 4*X Y1 = -3 -4 -3 0 5 12 21 32 >> % Se crea un vector Z de 8 elementos >> Z = [ 1:2:15 ] Z = 1 3 5 7 9 11 13 15 >> % Se evala la segunda funcin >> Y2 = (Z.^3 + 5*Z)./(4*Z.^2 10) Y2 = -1.0000 2.9241 >> W = 2:2:16 W = 2 4 6 8 10 12 14 16 >> % Se evala la tercera funcin >> y3 = sqrt(W.^3 + sin(W)) Y3 = 1.7057 3.3858 1.8009 3.8718 2.3918 3.9638 2.9982 3.0751 1.6154 3.3964 1.6667 3.8764 2.0323 2.4650 1:1:8
64
Programacin
Construccin de arreglos
3.5
Comando
Descripcin Encuentra el valor ms grande en un vector . Crea un vector rengln que contiene el elemento mximo de cada columna de una matriz . Encuentra tanto el valor ms grande de un vector , representado por a y su ubicacin en el vector x representado por b. Crea un vector rengln que contiene el elemento mximo de cada columna de una matriz , representado por a y presenta un vector rengln con la ubicacin del mximo en cada columna de la matriz , representado por b. Crea una matriz del mismo tamao que (Tanto como deben tener el mismo nmero de renglones y columnas). Cada elemento en la matriz resultante contiene el valor mximo de las posiciones correspondientes de . Encuentra el valor ms pequeo en un vector . Crea un vector rengln que contiene el elemento mnimo de cada columna de una matriz . Encuentra tanto el valor ms pequeo en un vector representado por a y su ubicacin en el vector representado por b. Crea un vector rengln que contiene el elemento mnimo de cada columna de una matriz , representado por a y presenta un vector rengln con la ubicacin del mnimo en cada columna de la matriz , representado por b. Crea una matriz del mismo tamao que . (Tanto como deben tener el mismo nmero de renglones y columnas). Cada elemento en la matriz resultante contiene el valor mnimo de las posiciones correspondientes de .
max(x)
[a,b] = max(x)
max(x,y)
min(x)
[a,b] = min(x)
min(x,y)
65
Programacin
Construccin de arreglos
Ejercicio de prctica 3.7 Considere la siguiente matriz y realice las operaciones indicadas:
4 2 x 3 1
90 55 78 84
85 65 82 92
75 75 79 93
>> x =
Se crea la matriz x
>> x = [4,90,85,75;2,55,65,75;3,78,82,79;1,84,92,93] 4 2 3 1 90 55 78 84 85 65 82 92 75 75 79 93
>> % Calcula el valor mximo en cada columna >> max(x) ans = 4 90 92 93 >> % Calcula en qu rengln se encuentran los mximos >> [maximo, renglon] = max(x) maximo = 4 renglon = 1 1 4 4 90 92 93
>> % Calcula el valor mximo en cada rengln Ing. Luis Lorenzo Jimnez Garca 66
Construccin de arreglos
>> % Calcula en cul columna ocurre el mximo >> [maximo, columna] = max(x') maximo = 90 columna = 2 4 3 4 75 82 93
Comando
Descripcin Suma los elementos en el vector . Calcula un vector rengln que contiene la suma de los elementos en cada columna de una matriz . Calcula el producto de los elementos de un vector . Calcula un vector rengln que contiene el producto de los elementos en cada columna de una matriz . Calcula un vector del mismo tamao que un vector y contiene sumas acumuladas de los elementos del mismo. Calcula una matriz que contiene suma acumulada de los elementos en cada columna de una matriz .
sum(x)
prod(x)
cumsum(x)
67
Programacin
Construccin de arreglos
cumprod(x)
Calcula un vector del mismo tamao que un vector y contiene productos acumulados de los elementos del mismo. Calcula una matriz que contiene el producto acumulado de los elementos en cada columna de una matriz . Ordena los elementos de un vector en orden ascendente. Ordena los elementos en cada columna de una matriz en orden ascendente. Ordena los elementos de un vector en orden descendente. Ordena los elementos en cada columna de una matriz en orden descendente.
sort(x)
sort(x,descend)
Ejercicio de prctica 3.8 Considere la siguiente matriz y calcule la suma y producto de cada columna, la suma y producto acumulado de cada columna, ordene en forma ascendente y descendente las columnas.
4 2 x 3 1 90 55 78 84 85 65 82 92 75 75 79 93
68
Programacin >> % Calcula la suma de cada columna >> sum(x) ans = 10 307 324 322
Construccin de arreglos
>> % Calcula el producto de cada columna >> prod(x) ans = 24 32432400 41680600 41326875
>> % Calcula la suma acumulada de cada columna >> cumsum(x) ans = 4 6 9 10 90 145 223 307 85 150 232 324 75 150 229 322
>> % Calcula el producto acumulado de cada columna >> cumprod(x) ans = 4 8 24 24 90 4950 386100 32432400 85 5525 453050 41680600 75 5625 444375 41326875
69
Programacin 4 90 92 93
Construccin de arreglos
3.5.3 Producto punto El producto punto (llamado producto escalar) es la suma de los resultados que se obtiene cuando multiplica dos vectores, elemento por elemento.
Ejercicio de prctica 3.9 Realice las siguientes operaciones y analice los resultados.
>> % Se crean los vectores A y B en forma arbitraria >> A = [1 2 3]; >> B = [4 5 6]; >> % Multiplicacin elemento por elemento >> y = A.*B y = 4 >> sum(y) ans = 32 >> % Obtencin del producto punto directamente con sum Ing. Luis Lorenzo Jimnez Garca 70 10 18 >> % Si suma los elementos obtiene el producto punto
Construccin de arreglos
>> % Obtencin del producto punto mediante dot >> dot(A,B) ans = 32
3.5.4 Producto cruz Los productos cruz, son llamados productos vectoriales porque, a diferencia de los productos punto, que regresan un escalar, el resultado de un producto cruz es un vector. El vector resultante siempre est en ngulos rectos (normal) al plano definido por los dos vectores entrada, una propiedad que se llama ortogonalidad.
Ejercicio de prctica 3.10 Realice las siguientes operaciones para el producto vectorial.
>> A = [1 >> B = [4
2 5
3]; 6];
% representa % representa
71
Programacin
Construccin de arreglos
3.6 Aplicaciones
Problema 1. Sistema equivalente de fuerzas (Suma de vectores). Tres fuerzas son aplicadas al soporte mostrado en la Fig. 3.1. Determine la fuerza total (equivalente) aplicada al soporte.
Solucin: Una fuerza es un vector o cantidad fsica que tiene una magnitud (mdulo) y direccin. En el sistema de coordenadas cartesianas un vector de dos dimensiones puede ser escrito como: ( )
donde: es la magnitud de la fuerza; es el ngulo relativo al eje y son los componentes de en la direccin de los ejes respectivamente. y son los vectores unitarios en esas direcciones. Si y son conocidas, entonces y se determina por:
72
Programacin
Construccin de arreglos
La fuerza total (equivalente) aplicada sobre el soporte se obtiene por la suma de todas fuerzas que estn actuando sobre el soporte. La solucin MatLab requiere los siguientes pasos: a) Escriba cada fuerza como un vector con dos elementos, donde el primer elemento es el componente X del vector y el segundo elemento es el componente Y. b) Determine la forma del vector de las fuerzas equivalentes por suma de vectores independientes. c) Determine la magnitud y direccin de la fuerza equivalente. Utilizando la Ventana de Comandos de MatLab tenemos: >> % Define variables con la magnitud de cada vector >> f1m = 400; f2m = 500; f3m = 700; >> % Se transforman los ngulo en radianes >> a1 = -20*pi/180; a2 = 30*pi/180; a3 = 143*pi/180; >> % Define los tres >> F1 = f1m*[cos(a1) F1 = 375.8770 -136.8081 >> F2 = f2m*[cos(a2) F2 = 433.0127 250.0000 >> F3 = f3m*[cos(a3) F3 = -559.0449 421.2705 vectores fuerza sin(a1)] sin(a2)] sin(a3)]
>> % Calcula la fuerza total del vector >> Ftot = F1 + F2 + F3 Ftot = 249.8449 534.4625
>> % Calcula la magnitud de la fuerza total del vector >> Ftotm = sqrt(Ftot(1)^2 + Ftot(2)^2) Ftotm =
73
Programacin 589.9768
Construccin de arreglos
>> % Calcula el ngulo (en grados) de la fuerza total >> ang_grados = (180/pi)*atan(Ftot(2)/Ftot(1)) ang_grados = 64.9453
La fuerza equivalente tiene una magnitud de 589.9768 N y una direccin de 64.9453 relativo al eje X. En notacin vectorial la fuerza es: F = 249.8449 i + 534.4625 j N.
Problema 2. Experimento con la friccin. El coeficiente de friccin, , puede ser determinado en un experimento por medicin de la fuerza requerida para mover una masa m, como se muestra en la Fig. 3.2
Cuando F es una medida y m es conocida, el coeficiente de friccin se calcula por: = F / (mg) ( g = 9.81 m/s2)
1 2 12.5
2 4 23.5
3 5 30
4 10 61
5 20 117
6 50 294
Determine el coeficiente de friccin de cada prueba y el porcentaje de todas las Ing. Luis Lorenzo Jimnez Garca 74
Construccin de arreglos
>> % Se genera un vector m con los datos de las masas >> m = [2 4 5 10 20 50]; >> % Se crea un vector f con los datos de las fuerzas >> f = [12.5 23.5 30 61 117 294]; >> % Un valor para es calculado para cada prueba usando >> %operaciones elemento a elemento sobre m y f >> mu = f./(m*9.81) mu = 0.6371 0.5989 0.6116 0.6218 0.5963 0.5994
>> % Clculo del porcentaje por medio de la funcin mean >> mu_porc = mean(mu) mu_porc = 0.6109
Problema 3. Clculo del centro de gravedad (Producto punto). La masa de un vehculo espacial es una cantidad extremadamente importante. Grupos enteros de personas en el proceso de diseo siguen la pista de la ubicacin y masa de cada tuerca y tornillo. No slo es importante la masa total del vehculo, tambin la informacin acerca de la masa se usa para determinar el centro de gravedad del vehculo. Una razn por la que el centro de gravedad es importante es que los cohetes caen si el centro de presin est adelante del centro de gravedad (ver Fig. 3.3). Puede demostrar este principio con un avin de papel, ponga un clip en la punta del avin de papel y observe cmo cambia el patrn de vuelo.
75
Programacin
Construccin de arreglos
Aunque encontrar el centro de gravedad es un clculo bastante directo, se vuelve ms complicado cuando se da cuenta de que tanto la masa del vehculo como la distribucin de masa cambian conforme se quema el combustible.
La ubicacin del centro de gravedad se puede calcular al dividir el vehculo en pequeos componentes. En un sistema coordenado rectangular: donde: son las coordenadas del centro de gravedad; W es la masa total del sistema; son las coordenadas x de los componentes del sistema 1, 2, 3, son las coordenadas y de los componentes del sistema 1, 2, 3, son las coordenadas z de los componentes del sistema 1, 2, 3, son los pesos de los componentes del sistema 1, 2, 3, Hallar el centro de gravedad de una pequea coleccin de los componentes que se usan en un complicado vehculo espacial que tiene las ubicaciones y masas de componente siguientes: Objeto Tornillo Perno Tuerca Abrazadera x, metros 0.1 1.0 1.5 2.0 y, metros 2.0 1.0 0.2 2.0 z, metros 3.0 1.0 0.5 4.0 Masa, gramos 3.50 1.50 0.79 1.75
76
Construccin de arreglos
Escribiendo los datos en ventana de comandos tenemos: >> % Se crea el vector componente masa de los datos >> masa = [3.5, 1.5, 0.79, 1.75 ]; >> % Se crean los vectores de ubicacin x,y,z de los datos: >> x = [0.1, 1.0, 1.5, 2.0]; >> y = [2.0, 1.0, 0.2, 2.0]; >> z = [3.0, 1.0, 0.5, 4.0]; >> % Se generan las coordenadas x,y,z con el producto punto >> coord_x = dot(x,masa)/sum(masa) coord_x = 0.8667 >> coord_y = dot(y,masa)/sum(masa) coord_y = 1.6125 >> coord_z = dot(z,masa)/sum(masa) coord_z = 2.5723 >> % Se genera la grfica de los vectores y las coordenadas >> % Ms adelante se tratarn los temas de grficas >> plot3(x,y,z,'o',coord_x,coord_y,coord_z,'s'),grid on >> xlabel('Eje X') >> ylabel('Eje Y') >> zlabel('Eje Z') >> title('Centro de gravedad') >> axis([0,2,0,2,0,4])
77
Programacin
Construccin de arreglos
En la Fig. 3.4 se observa en color rojo, donde se encuentra la ubicacin del centro de gravedad. Esta grfica fue editada en la ventana de grficos Figure en la barra de herramientas Tools Edit Plot. En el captulo 5 y 6 se ver con detalle la elaboracin de las grficas en dos y tres dimensiones.
>> % Se crea la matriz que representa las coordenadas >> % xyz del centro de gravedad por la masa total >> coord_xyz = [0.1 1 1.5 2 2 1 0.2 2 3 1 0.5 4];
>>masa = [3.5, 1.5, 0.79, 1.75 ]; >> % Se generan las coordenadas x,y,z >> localizacion = coord_xyz*masa/sum(masa) localizacion =
78
Construccin de arreglos
Problema 2.4 Momento de una fuerza en torno a un punto (Producto cruz). El momento de una fuerza en relacin con un punto se encuentra al calcular el producto cruz de un vector que define la posicin de la fuerza con respecto al punto, con el vector fuerza:
Considere la fuerza aplicada en el extremo de una palanca, como se muestra en la Fig. 3.5 (c).
Si se aplica una fuerza a la palanca cerca del punto pivote, el efecto es diferente que si se aplica una fuerza ms alejada sobre la palanca. Dicho efecto se llama momento. Calcule el momento en torno al punto pivote de una palanca para una fuerza descrita como el vector (Ver Fig. 3.5 a):
79
Programacin
Construccin de arreglos
Suponga que la palanca tiene 12 pulgadas de largo, a un ngulo de 45 grados desde la horizontal. Esto significa que el vector posicin (Ver Fig. 3.5 b) se puede representar como:
Encontrar el momento de un vector fuerza en torno al punto pivote de una palanca. Solucin: En la ventana de comandos de MatLab: >> % Momento en torno a un punto pivote >> % Defina el vector posicin >> r = [12/sqrt(2), 12/sqrt(2), 0]; >> % Defina el vector fuerza >> F = [-100, 20, 0]; >> % Calcule el momento >> momento = cross(r, F) momento = 1.0e+003 * 0 0 1.0182
Note que el momento est en ngulos rectos al plano definido por los vectores posicin y fuerza.
80