7ª Práctica. Matlab página 1 PROGRAMACIÓN EN MATLAB PRÁCTICA 07 ORDENACIÓN VECTORES Y MATRICES EJERCICIOS REPASO PARA EL EXAMEN EJERCICIO 1. ORDENAR UN VECTOR CON EL MÉTODO DE LA BURBUJA ........................................... 1 EJERCICIO 2. CALCULAR EL MÁXIMO Y MINIMO DE UNA MATRIZ ..................................................... 1 EJERCICIO 3. MATRIZ CALCULAR EL NÚMERO DE ELEMENTOS POSITIVOS Y NEGATIVOS DE UNA 4 EJERCICIO 4. CALCULAR EL PRODUCTO DE UNA MATRIZ POR UN VECTOR.................................... 5 EJERCICIO 5. DIBUJADO DE FUNCIONES EN 3D ............................................................................................ 6 En primer lugar crea un directorio llamado Practica07en tu directorio G:\Informatica1. En este directorio deberás guardar todos los ficheros y todo el trabajo resultante de esta práctica. Después arranca el programa MATLAB y coloca como directorio de trabajo o directorio activo el directorio creado previamente. EJERCICIO 1. ORDENAR UN VECTOR CON EL MÉTODO DE LA BURBUJA Construya un nuevo subdirectorio que se llame Ejercicio0101 y sitúe, como siempre, el directorio de trabajo de Matlab dentro. Probar con un ejemplo el programa que ordena un vector de forma ascendente mediante el método de la burbuja. EJERCICIO 2. CALCULAR EL MÁXIMO Y MINIMO DE UNA MATRIZ Construya un nuevo subdirectorio que se llame Ejercicio0102 y sitúe, como siempre, el directorio de trabajo de Matlab dentro. En este ejercicio se calcularán el máximo y el mínimo elemento de una matriz. Para ello tendremos una función principal, una función para calcular el máximo elemento, y otra función para obtener el mínimo elemento. Este ejercicio tendrá una función principal llamada MaximoYMinimo, cuyo encabezado será: function MaximoYMinimo(M) El argumento de entrada de esta función principal será: M: matriz de la que calcularemos el máximo elemento y el mínimo Esta función se encargará de: Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra Informática 1 y Fundamentos de Computadores página 2 1. Preguntar al usuario lo siguiente: “¿Qué desea hacer? Teclee 1 para obtener el máximo elemento de la matriz M, 2 para obtener el mínimo elemento de la matriz M y 3 para Terminar:” La opción elegida por el usuario se guardará en una variable que se llame opciones. 2. Si el usuario desea obtener el máximo elemento de la matriz M, es decir, si opciones vale 1, se llamará a una función llamada Maximo, donde el argumento de entrada será la matriz M. 3. Si el usuario desea obtener el mínimo elemento de la matriz M, es decir, si opciones vale 2, se llamará a una función llamada Minimo, donde el argumento de entrada será la matriz M. 4. Si el usuario decide terminar, es decir, si opciones vale 3, se le indicará al usuario el siguiente mensaje: “Se termina la aplicación” La función Maximo tendrá el siguiente encabezado: function [NumeroMax,Fila,Columna]=Maximo(M) El argumento de entrada de esta función será: M: matriz de dimensión variable Los argumentos de salida de esta función serán: NumeroMax: máximo elemento de la matriz M, inicialmente será el primer elemento de la matriz M Fila: fila que ocupa el máximo elemento de la matriz M, inicialmente será la fila 1 Columna: columna que ocupa el máximo elemento de la matriz M, inicialmente será la columna 1 Esta función devolverá el máximo valor de los elementos de la matriz M, así como la posición que ocupa dicho elemento dentro de la matriz. De forma que si a la función se le pasara la siguiente matriz: Los argumentos de salida serían: NumeroMax = 59 Fila = 1 Columna = 4 TECNUN 7ª Práctica. Matlab página 3 El resultado se le indicará al usuario con el siguiente texto: El elemento máximo de esta matriz es 59 y la posición que ocupa en la matriz es fila 1 y columna 4. Nota: Para obtener el elemento máximo de una matriz habrá que comparar el primer elemento con todos los que están detrás de él en la matriz hasta encontrar un elemento que sea mayor que el primero. A continuación, este nuevo elemento se comparará con los siguientes hasta encontrar un nuevo elemento que sea mayor, y así sucesivamente hasta el final. La matriz se recorrerá por filas, tal y como se indica en la siguiente figura: El algoritmo para obtener el elemento máximo de una vector y la posición que ocupa consiste en comparar el primer elemento del vector con los siguientes hasta que se encuentre un elemento que sea mayor que el primero. La variable NumeroMax irá almacenando en cada caso el mayor elemento obtenido hasta el momento, mientras que las variables Fila y Columna irán almacenando la posición de ese elemento máximo. En ningún caso podrá utilizarse la función de librería de Matlab max que nos devuelve el elemento máximo. La función Minimo tendrá el siguiente encabezado: function [NumeroMin,Fila,Columna]=Minimo(M) El argumento de entrada de esta función será: M: matriz de dimensión variable Los argumentos de salida de esta función serán: NumeroMin: mínimo elemento de la matriz M, inicialmente será el primer elemento de la matriz M Fila: fila que ocupa el mínimo elemento de la matriz M, inicialmente será la fila 1 Columna: columna que ocupa el mínimo elemento de la matriz M, inicialmente será la columna 1 Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra Informática 1 y Fundamentos de Computadores página 4 Esta función devolverá el mínimo valor de los elementos de la matriz M, así como la posición que ocupa dicho elemento dentro de la matriz. De forma que si a la función se le pasara la siguiente matriz: Los argumentos de salida serían: NumeroMin = 1 Fila = 3 Columna = 2 El resultado se le indicará al usuario con el siguiente texto: El elemento mínimo de esta matriz es 1 y la posición que ocupa en la matriz es fila 3 y columna 2. Nota: Para obtener el elemento mínimo de una matriz habrá que comparar el primer elemento con todos los que están detrás de él en la matriz hasta encontrar un elemento que sea menor que el primero. A continuación, este nuevo elemento se comparará con los siguientes hasta encontrar un nuevo elemento que sea menor, y así sucesivamente hasta el final. El algoritmo para obtener el elemento mínimo de una vector y la posición que ocupa consiste en comparar el primer elemento del vector con los siguientes hasta que se encuentre un elemento que sea menor que el primero. La variable NumeroMin irá almacenando en cada caso el menor elemento obtenido hasta el momento, mientras que las variables Fila y Columna irán almacenando la posición de ese elemento mínimo. En ningún caso podrá utilizarse la función de librería de Matlab min que nos devuelve el elemento mínimo. EJERCICIO 3. CALCULAR EL NEGATIVOS DE UNA MATRIZ NÚMERO DE ELEMENTOS POSITIVOS Y Construya un nuevo subdirectorio que se llame Ejercicio0103 y sitúe, como siempre, el directorio de trabajo de Matlab dentro. En este ejercicio se creará una función que, utilizando bucles y bifurcaciones, contará cuántos elementos positivos y cuántos elementos negativos tiene una matriz. La función que debe programarse se llamará NegativosYPositivos, y su encabezado será: TECNUN 7ª Práctica. Matlab página 5 function [neg,pos]=NegativosYPositivos(A) El argumento de entrada de esta función será: A: matriz de elementos positivos y negativos Los argumentos de salida de esta función serán: neg: número de elementos negativos que tiene la matriz A pos: número de elementos positivos que tiene la matriz A Esta función se encargará de contar cuántos elementos negativos y positivos tiene la matriz A. De modo que si la matriz A es: El resultado se le indicará al usuario con el siguiente texto: La matriz A contiene 5 elementos negativos y 20 elementos positivos. EJERCICIO 4. CALCULAR EL PRODUCTO DE UNA MATRIZ POR UN VECTOR Construya un nuevo subdirectorio que se llame Ejercicio0104 y sitúe, como siempre, el directorio de trabajo de Matlab dentro. En este ejercicio se programará una función que multiplique una matriz por un vector.Este ejercicio tendrá una función principal llamada MatrizPorVector, cuyo encabezado será: function MatrizPorVector(A,v) Los argumentos de entrada de esta función principal serán: A: matriz a multiplicar por el vector v v: vector a multiplicar por la matriz A Esta función se encargará de: 5. Si la matriz A se puede multiplicar por el vector v, se llamará a la función Multiplicar, donde los argumentos de entrada serán la matriz A y el vector v. 6. Si no se pueden multiplicar se le indicará al usuario el siguiente mensaje: “La matriz A no se puede multiplicar por el vector v. Las dimensiones no son correctas.” La función Multiplicar tendrá el siguiente encabezado: function b=Multiplicar(A,v) Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra Informática 1 y Fundamentos de Computadores página 6 Los argumentos de entrada de esta función principal serán: A: matriz a multiplicar por el vector v v: vector a multiplicar por la matriz A El argumento de salida de esta función será: b: matriz A por vector v De modo que si yo multiplico la siguiente matriz A, por el vector v: X = EJERCICIO 5. DIBUJADO DE FUNCIONES EN 3D Construya un nuevo subdirectorio que se llame Ejercicio0105 y sitúe, como siempre, el directorio de trabajo de Matlab dentro. El programa que debe desarrollar a continuación debe guardarlo dentro de un fichero de instrucciones llamado surf1.m. Utilizando el comando Surf, debe dibujar las funciones tridimensionales Z1 y Z2: Z1 = 5 ⋅ x 2 + 3 ⋅ y 2 y Z 2 = x2 − y2 Para ello deberá seguir los siguientes pasos: 1. Crear un vector x1, cuyo valor inicial y final sean -1 y 1 respectivamente, y con un paso de 0.1. 2. rear un vector y1, cuyo valor inicial y final sean -1 y 1 respectivamente, y con un paso de 0.1. 3. Crear la matriz Z1, cuyos valores se correspondan con los valores de la función matemática concretados para los valores definidos en los vectores x1 e y1. 4. Crear un vector x2, cuyo valor inicial y final sean -2 y 2 respectivamente, y con un paso de 0.03. 5. Crear un vector y2, cuyo valor inicial y final sean -2 y 2 respectivamente, y con un paso de 0.03. 6. Crear la matriz Z2, cuyos valores se correspondan con los valores de la función matemática concretados para los valores definidos en los vectores x2 e y2. 7. Utilizando la función surf dibujar las matrices Z1 y Z2 en una misma gráfica. TECNUN 7ª Práctica. Matlab página 7 La figura que debe obtenerse es la siguiente, incluyendo en azul título y lábeles para los ejes x,y,z: Figura 2: Z1 y Z2 utilizando la función surf Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra