44
Universidad Andina Néstor Cáceres Velásquez CAP INGENIERIA CIVIL Ingº JESUS MAMANI VELASQUEZ INFORMÁTICA PARA INGENIERÍA CIVIL TERCER SEMESTRE 2015 - I

Clase 15 Matlab

Embed Size (px)

DESCRIPTION

matlab

Citation preview

Page 1: Clase 15 Matlab

Universidad Andina Néstor Cáceres Velásquez

CAP INGENIERIA CIVIL Ingº JESUS MAMANI VELASQUEZ

INFORMÁTICA PARA

INGENIERÍA CIVIL

TERCER SEMESTRE

2015 - I

Page 2: Clase 15 Matlab

Universidad Andina Néstor Cáceres Velásquez

CAP INGENIERIA CIVIL Ingº JESUS MAMANI VELASQUEZ

UNIDAD DIDACTICA IV

INFORMÁTICA PARA INGENIERÍA CIVIL

MATLAB

Page 3: Clase 15 Matlab

4.1 INTRODUCCIÓN

MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB

es un programa para realizar cálculos numéricos con vectores y

matrices. Como caso particular puede también trabajar con números

escalares (tanto reales como complejos), con cadenas de caracteres y

con otras estructuras de información más complejas. Una de las

capacidades más atractivas es la de realizar una amplia variedad de

gráficos en dos y tres dimensiones. MATLAB tiene también un

lenguaje de programación propio.

Page 4: Clase 15 Matlab

Principales Características:

1. Lenguaje de programación de alto nivel para cálculo técnico y

científico.

2. Entorno de desarrollo para la gestión de código, archivos y datos.

3. Herramientas interactivas para exploración, diseño y resolución de

problemas iterativos.

4. Funciones matemáticas para álgebra lineal, estadística, análisis de

Fourier, filtraje, optimización e integración numérica.

5. Funciones gráficas para visualización de datos en 2D y 3D.

6. Herramientas para crear interfaces gráficas de usuario

personalizadas.

7. Funciones para integrar algoritmos basados en MATLAB con

aplicaciones y lenguajes externos (C/C++, FORTRAN, Java, COM y

Microsoft Excel).

8. Provee Toolboxes, herramientas orientadas a problemas específicos.

Page 5: Clase 15 Matlab

Los creadores del MATLAB

CLEVE MOLER

Director científico y co-fundador de The

MathWorks. Es autor de la primera versión de

MATLAB y co-autor de las bibliotecas de

subrutinas LINPACK y EISPACK (ampliamente

utilizadas en todo el mundo). Bachiller en

Matemáticas por Caltech (1961), Magister

(1963) y Ph.D. (1965) en Matemáticas por la

Universidad de Stanford. Ha sido profesor de

Matemáticas y Ciencias Computacionales por

más de 20 años en universidades las

Universidades de Michigan, Stanford y Nuevo

México. Trabajó para Intel Hypercube y Ardent

Computer Corporation. Es coautor de varios

textos sobre métodos numéricos y miembro de

la ACM.

Page 6: Clase 15 Matlab

JACK LITTLE

Presidente y co-fundador de The MathWorks.

Coautor y principal arquitecto de las versiones

inciales de MATLAB, Signal Processing

Toolbox y Control Systems Toolbox. Bachiller

en Ingeniería Eléctrica por el MIT (1978) y

Magister por la Universidad de Stanford

(1980). Es miembro de la IEEE. Se encarga de

la escritura y divulgación de los cálculos

técnicos, diseños basado en modelos, y temas

de la industria del software.

Page 7: Clase 15 Matlab

El Sistema MATLAB

1. Herramientas de escritorio y entornos de desarrollo

Ayudan a utilizar con mayor productividad los archivos y funciones

MATLAB (el escritorio MATLAB, el editor/depurador, el analizador de

código, los navegadores para la visualización de ayuda, el

workspace, etc).

2. Biblioteca de funciones matemáticas

Colección de algoritmos computacionales que abarca desde

funciones matemáticas básicas hasta las más sofisticadas.

3. Lenguaje

MATLAB es un lenguaje de alto nivel basado en matrices/arreglos

que posee sentencias de control de flujo, funciones, estructuras de

datos, entrada/salida, y características de programación orientada a

objetos.

Page 8: Clase 15 Matlab

4. Gráficos

MATLAB posee funciones de alto y bajo nivel para la visualización de

datos en dos y tres dimensiones, así como para el desarrollo de

interfaces gráficas.

5. Interfaces Externas

Las bibliotecas de interfaces externas permiten escribir programas en

C y Fortran que interactúen con MATLAB.

Page 9: Clase 15 Matlab

El escritorio MATLAB

Cuando se inicia MATLAB, el escritorio (desktop) aparece con sus

paneles en la disposición (layout), por defecto (default):

VENTANA DE COMANDOS

(COMMAND WINDOW)

VENTANA DE VARIABLES

(WORKSPACE)

VENTANA DE HISTORIAL

DE COMANDOS

(COMAND HISTORY)

VENTANA CARPETA ACTUAL

(CURRENT FOLDER)

El Current Folder permite acceder a los archivos. El Command

Window es la ventana por medio de la cual se ingresan líneas de

comandos, en el punto de inserción denominado prompt (>>). A

traves del Workspace se pueden explorar los datos que se vayan

creando o importando a partir de archivos. En el Command

History se visualizan o reejecutan los comandos que han sido

ingresados previamente digitados en la línea de comandos.

INTERFAZ

RIBBON

Page 10: Clase 15 Matlab

1. La Ventana de Comandos (Command Window)

La Ventana de Comandos permite el ingreso de datos, la ejecución

de código MATLAB y la visualización de resultados. El prompt (>>)

de la Ventana de Comandos indica el punto en el que se puede dar

una entrada a MATLAB. Como el prompt es el punto de inserción de

sentencias, éste es también conocido como la línea de comando.

La apariencia del prompt puede tomar diferentes aspectos:

>> indica que la Ventana de Comando está en modo normal

EDU>> indica que la Ventana de Comando está en modo normal,

en la Versión de Estudiante de MATLAB

K>> indica que MATLAB está en modo de depuración (debug

mode)

Page 11: Clase 15 Matlab

2. Ventana Historial de Comandos (Command History)

La Ventana Historial de Comandos visualiza un registro (log) de

sentencias que se hayan ejecutado en las sesiones MATLAB actual y

previas. La hora y la fecha de cada sesión aparece al inicio de las

sentencias listadas para aquella sesión. Todas las entradas son

registradas en el archivo history.m.

El archivo history.m:

Reside en la carpeta que retorna el comando prefdir.

Se carga cuando MATLAB inicia.

Almacena un máximo de 200 000 bytes.

Elimina las entradas mas antiguas necesarias tal que se mantenga

el número máximo de bytes.

Page 12: Clase 15 Matlab

3. El Workspace

El Workspace de MATLAB (MATLAB Workspace) es el conjunto de

variables creadas y almacenadas en memoria durante una sesión

MATLAB. Cuando se utilizan funciones, ejecuta código MATLAB y se

carga workspaces almacenados, se añaden variables al workspace.

El Workspace es una herramienta que permite ver, modificar, y grabar

valores del Worskpace de MATLAB. Por defecto, el Workspace

muestra el Worskpace base. Si MATLAB se halla en modo de

depuración (debug mode), el campo Stack permitirá ver los

worskpaces de las funciones.

Page 13: Clase 15 Matlab

4. Ventana Carpeta Actual (Current Folder)

La Carpeta de Inicio (Startup folder) es la Carpeta Actual (Current

folder) en la aplicación MATLAB cuando ésta inicia.

La Carpeta Actual debe ser la carpeta que se usa con mayor

frecuencia.

La Ventana Carpeta Actual (Current Folder):

Muestra siempre la ruta completa de la carpeta actual en la barra

de dirección, y el contenido de la actual carpeta en un así como

sus respectivas subcarpetas en el panel debajo de la barra.

Permite el acceso a las características de gestión de archivos del

sistema operativo desde dentro de MATLAB.

Es similar a los administradores de archivos provistos por los

sistemas operativos, añadiendo características únicas para

MATLAB.

Page 14: Clase 15 Matlab

5. Atajos de Teclado (Keyboard shortcuts)

MATLAB provee atajos de teclados para navegar en un historial de

comandos y listar ayudas contextuales.

Tecla Flecha Arriba

Al presionar la tecla hacia arriba, la última línea o sentencia será

mostrada. Luego, usando la tecla hacia izquierda, se mueve el

cursor, para realizar correcciones y se presiona ENTER para

ejecutar el comando corregido (nuevo comando).

Tecla Tab

Al presionar la tecla tab, MATLAB presentará un menú contextual

conteniendo todas las sentencias, del cual se puede seleccionar

uno.

El operador punto y coma (Semicolon)

El operador punto y coma de una línea suprime la salida (eco) en

pantalla de MATLAB, o sea la ejecuta en silencio. Esto es útil

cuando se desea mantener limpia la Ventana de Comandos.

Page 15: Clase 15 Matlab

El Sistema de Ayuda de MATLAB

MATLAB tiene tres formas de ayuda en línea:

Help

Digitando help en la Ventana de Comandos se visualizará una

listado de los tópicos de ayuda mas importantes.

Doc

Funciona de manera similar a help, sólo que el resultado de las

consultas será visualizado en formato HTML en el Help Browser.

Demos

Es una herramienta de ayuda que nos permite aprender mas sobre

MATLAB a través de demostraciones. Esto se hace tipeando demo

en la línea de comandos, obteniendo un listado de enlaces a demos

en el Help Browser

Page 16: Clase 15 Matlab

Funciones y comandos útiles

Para una detallada explicación y obtención de ejemplos para cada uno

de los siguientes comando/función consultar la ayuda de MATLAB

Page 17: Clase 15 Matlab

Ejercicios

Después de iniciar MATLAB, la ventana de comandos se abre y

aparece el signo:

>> (Prompt)

El modo calculadora de MATLAB opera en forma secuencial cuando se

entran los comandos línea por línea. Para cada comando se obtiene un

resultado

>> 55 - 16

Notar que MATLAB ha asignado automáticamente la respuesta a la

variable, ans. Por lo que se puede usar ans en cálculos subsiguientes:

>> ans + 11

Page 18: Clase 15 Matlab

Asignación La asignación se refiere a asignar valores al nombre de la variable. Esto

resulta en un almacenamiento de valores en la memoria

correspondiente al nombre de la variable.

1.1 Escalares

La asignación de valores a variables escalares es similar a otros

lenguajes:

>> a = 4

La repetición es una característica de MATLAB. Puede ser suprimida

mediante el uso del carácter punto y coma (;) al final de la línea de

comando:

>> A = 6;

Page 19: Clase 15 Matlab

Se puede digitar varios comandos en la misma línea separándolos

mediante comas o punto y coma. Si se separan con comas, los

comandos serán mostrados, y si se usa punto y coma no serán

mostrados:

>> a = 4, A = 6; x = 1;

MATLAB trata los nombres de una forma sensible entre mayúsculas y

minúsculas, es por ello que a no es lo mismo que A:

>> a

>> A

Los valores son distintos y tienen distintos nombres.

Page 20: Clase 15 Matlab

Se puede asignar valores complejos a las variables ya que MATLAB

maneja la aritmética compleja automáticamente. La unidad del número

imaginario √− 1 es preasignada a la variable i. Consecuentemente, un

valor complejo puede ser asignado simplemente como:

>> x = 2+i*4

Debe ser notado que MATLAB permite que el símbolo j sea usado como

entrada para representar la unidad imaginaria. Sin embargo, siempre

usa una i para mostrar el número:

>> x = 2+j*4

La raíz cuadrada, trabaja con complejos. La unidad imaginaria se

representa en MATLAB como i o j, variables con dicho valor como

predeterminado:

>> sqrt(144)

>> sqrt(-144)

Page 21: Clase 15 Matlab

Existen diferentes valores predefinidos, por ejemplo, pi:

>> pi

Se pueden utilizar las funciones matemáticas habituales. Así, por

ejemplo, la función coseno:

>> cos(pi) % pi es una variable con valor predeterminado 3.14159...

o la función exponencial:

>> exp(1) % Función exponencial evaluada en 1, es decir, el número e

Page 22: Clase 15 Matlab

MATLAB muestra cuatro decimales. Sí se desea más precisión, se

digita lo siguiente:

>> format long % devuelve el formato en 15 cifras decimales

Para retornar a la versión de cuatro decimales se digita:

>> format short % devuelve el formato estándar, en 4 cifras decimales

Page 23: Clase 15 Matlab

Los comandos MATLAB

Un comando es una orden o instrucción que el usuario proporciona a

un sistema informático, desde la línea de comandos (shell) o desde una

llamada de programación.

Los comandos MATLAB permiten calcular el resultado de una

expresión ubicada a la derecha del signo igual, asignando el valor

resultante a la variable ubicada a la izquierda (variable de salida).

>> y = 4.32*log10(1+0.135)-5

Los comandos MATLAB no mostrarán el valor del resultado asignado a

la variable de salida cuando culminen con punto y coma.

>> y = 4.32*log10(1+0.135)-5;

Page 24: Clase 15 Matlab

Si no se asigna explícitamente la salida de un comando a una variable.

MATLAB asigna el resultado a la palabra reservada ans.

>> 4.32*log10(1+0.135)-5

El valor de ans varía con cada comando que reporte un valor de salida

que no se asigne a variable alguna.

>> 3.13^2-sqrt(1/0.4217)

Se puede ingresar más de un comando en una línea finalizándola con

coma (,) o punto y coma (;). Los comandos terminados con coma

muestran sus resultados cuando son ejecutados; mientras que los

terminados con punto y coma, no.

>> d=4/3.14; 1.3^4, exp(-0.31), w=d+ans

Page 25: Clase 15 Matlab

Cuando un comando genera mas de una salida, se debe especificar el

conjunto de variables de salida separadas por espacio en blanco o

con comas y encerrado, en conjunto, entre corchetes.

>> [A,B,C] = deal( [-12.3 4.89 -3.01] , pi*1.46, diag(12:4:24) )

El comando deal distribuye los valores de cada uno de sus entradas en

variables de salida separadas

Page 26: Clase 15 Matlab

Las funciones MATLAB

Ejecutan un conjunto de instrucciones que toman como datos un

conjunto de argumentos de entrada y devuelven como resultado un

conjunto de argumentos de salida

La sintaxis de una función MATLAB es

[v1,v2,...,vm] = nombreFcn(u1,u2,...,un)

Donde:

u1,u2,...,un : son los argumentos de entrada de la función

v1, v2,...,vn : son los argumentos de salida de la función

nombreFcn : es el nombre de la función

Page 27: Clase 15 Matlab

EJEMPLO:

Generación de una matriz cuadrada de tamaño 3x3 de elementos

aleatorios comprendidos entre 0 y 1.

>> A = rand(3)

Obtención de los vectores propios y valores propios de la matriz del

ejemplo anterior.

>> [V,D] = eig(A)

Page 28: Clase 15 Matlab

Los arreglos

Son elementos dispuestos en dimensiones (en el caso de

dimensión 2, en filas y columnas). Estos elementos no

necesariamente obedecen a algún conjunto de reglas algebraicas

(por ejemplo, las del álgebra lineal), son sólo elementos que

contienen valores.

Sea el caso mas usual, de dimensión 2, en el que los elementos

están dispuestos en forma rectangular con m filas y n columnas:

Page 29: Clase 15 Matlab

Para ingresarla en MATLAB se digita:

Observaciones:

Los elementos de una misma fila deben separarse con espacio en

blanco o coma (,)

Todas las filas deben contener n elementos.

Todos los elementos deben ser de la misma clase

Page 30: Clase 15 Matlab

Para crear un vector fila en MATLAB, se escribe el conjunto de

elementos entre corchetes y se separan por espacios o una coma (,)

para delimitar los números:

>> va=[-1 0 1]

>> va=[-1,0,1]

Para crear un vector columna, se escribe el conjunto de números

entre corchetes y se separan por punto y coma (;):

>> vc=[1;2;4;16]

Un vector fila se puede convertir a un vector columna calculando su

transpuesto. Se usa el comando transpose (V) o la comilla(').

>> ve=va’

>> ve=transpose(va)

>> vf=vc’

>> vf=transpose(vc)

Page 31: Clase 15 Matlab

Calcular un vector fila, usando el vector columna ve:

>> ve=[1;2;4;16]

>> vf=ve’

Para definir un vector igualmente espaciado se da el comando:

x=[ vi : i: vf]

Donde :

vi: valor inicial

vf: valor final

i: incremento

>> a=[0:1:9] %genera una matriz con un incremento de 1.

>> x = [0:0.25:2] %genera una matriz con un incremento de 0.25

>> x = [0:0.25:2]’ % es la transpuesta de x

Page 32: Clase 15 Matlab

Otra forma es usar el comando linspace (X1 , X2 , N). Este

comando genera N puntos entre los valores X1 y X2

>> B=linspace (0 ,2, 9) ‘

Para definir una matriz se escriben las filas separadas por ";".

Para definir la matriz [B] de 2 filas y 3 columnas, se escribe:

>> B= [1 2 3;4 5 6]

Para indicar el elemento b12 se escribe:

>> b12=B(1,2)

De igual forma para indicar el elemento b23 escribe:

>> b23=B(2,3)

Page 33: Clase 15 Matlab

EJEMPLO:

Ingresar los siguientes arreglos o matrices:

>> M = [-3 2 1; 0 4 9; 1 7 8; 9 11 -3] %ES UNA MATRIZ 4x3

>> V = [-5; 4; 0; 7] %ES UN VECTOR COLUMNA

Otra forma de haber ingresado el arreglo es como un vector fila al

cual se le aplica la transpuesta:

>> V = [-5 4 0 7]’ %ES UN VECTOR FILA

Page 34: Clase 15 Matlab

EJEMPLO:

Ingresar los siguientes arreglos:

Donde: i = √−1

>> B = [4+i 2+i; -3*i 3-i] %ES UNA MATRIZ 2x2

En MATLAB las variables i y j están predefinidas con el valor de

√−1, por lo tanto otra forma de haber ingresado la matriz B es:

>> B = [4+j 2+j; -3*j 3-j]

Page 35: Clase 15 Matlab

Por otro lado, cuando se usa la unidad imaginaria, la pre-

multiplicación de cualquier número por la variable i o j no requiere

de la presencia explícita del operador de multiplicación * (éste es el

único caso, en los demás, siempre que se especifique una

multiplicación deberá de hacerse de forma explícita)

>> B = [4+i 2+i; -3i 3-i]

Observación:

Basta que uno de los elementos del arreglo sea complejo y

MATLAB representará a todos los demás también como complejo.

Si son reales, tendrán un 0 en la parte imaginaria.

Page 36: Clase 15 Matlab

Funciones para cálculos con polinomios:

Para MATLAB un polinomio se puede definir mediante un vector de

coeficientes. Por ejemplo, el polinomio:

MATLAB puede realizar diversas operaciones sobre él, como por

ejemplo evaluarlo para un determinado valor de x (función

polyval()) y calcular las raíces (función roots()):

>> pol=[1 0 -8 6 -10]

>> roots(pol) %calcula las raices del polinomio

Page 37: Clase 15 Matlab

Un polinomio se representa por un vector fila con sus coeficientes en

orden descendiente, no olvidando colocar los términos con coeficiente

nulo.

Para encontrar las raíces de un polinomio p se usa la función roots (p).

Si se conocen las raíces de un polinomio es posible construir el

polinomio asociado mediante la función poly (r).

Matlab trabaja con los polinomios como vectores fila y con las raíces

como vectores columnas.

EJEMPLO:

>> p = [1 -9 13 9 -14]; % representa al polinomio x4-9x3+13x2-9x-14

>> roots (p) % calcula sus raíces

>> poly (ans) % devuelve el polinomio generado por esas cuatro raíces

Page 39: Clase 15 Matlab

Gráficos:

La orden plot genera una gráfica. Los argumentos deben ser

vectores de la misma longitud.

EJEMPLO:

>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];

>> plot (x,y)

Si se desea cambiar la apariencia de la gráfica basta pinchar en el

último botón de la barra de herramientas y se abrirán unos cuadros

en los laterales que permitirán ir haciendo los cambios deseados

como darle nombre a los ejes, etc.

La función plot permite también superponer gráficas sobre los

mismos ejes:

>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; z = [6 5 3 7 5 2];

>> plot (x,y,x,z)

Page 40: Clase 15 Matlab

También se puede usar distintos tipos de líneas para el dibujo de la

gráfica:

>> plot (x,y,'*')

Se puede colocar etiquetas o manipular la gráfica:

Etiqueta sobre el eje X de la gráfica actual: >> xlabel('texto')

Etiqueta sobre el eje Y de la gráfica actual: >> ylabel('texto')

Título en la cabecera de la gráfica actual: >> title('texto')

Texto en el lugar especificado por las coordenadas: >> text(x,y, 'texto')

Texto, el lugar lo indicamos después con el ratón: >> gtext('texto')

Dibujar una rejilla: >> grid

Fija valores máximo y mínimo de los ejes: >> axis( [xmin xmax ymin

ymax] )

Fija que la escala en los ejes sea igual: >> axis equal

Fija que la gráfica sea un cuadrado: >> axis square

Desactiva axis equal y axis square: >> axis normal

Abre una ventana de gráfico: >> hold on

Borra lo que hay en la ventana de gráfico: >> hold off

Page 41: Clase 15 Matlab

Para volver al modo por defecto basta escribir: subplot (1,1,1).

EJEMPLO:

Para dibujar polígonos se puede usar la función plot pero teniendo

en cuenta que el último punto de ambos vectores deben coincidir

para que la gráfica quede cerrada. Pero si lo que se quiere es que

quede coloreado todo el interior del polígono se usa mejor la función

fill, tiene tres argumentos, los dos vectores que forman los puntos y

un tercer argumento para indicar el color.

>> x = [-2 0 2 0 -2]; y = [4 8 4 0 4];

>> plot (x,y)

>> fill (x,y,'r') % dibuja el polígono, 'r' indica el color rojo

Page 42: Clase 15 Matlab

EJEMPLO:

>> x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Función seno(x)')

Se observa que se abre una nueva ventana en la que aparece

representada la función y=sin(x). Esta figura tiene un título

"Función seno(x)" y una cuadrícula o "grid".

La línea anterior contiene varias instrucciones separadas por

comas o puntos y comas. En la primera se crea un vector x con

801 valores reales entre -4 y 4, incrementadas por una centésima

(0.01). A continuación se crea un vector y, cada uno de cuyos

elementos es el seno del correspondiente elemento del vector x.

Después se dibujan los valores de y en ordenadas frente a los de

x en abscisas. Las dos últimas instrucciones establecen la

cuadrícula y el título.

Page 43: Clase 15 Matlab

Para crear gráficas en 3 dimensiones, se extiende la orden de plot (2-D)

a plot3 (3-D) donde el formato será igual pero los datos estarán en

tripletes

EJEMPLO:

>> x = -720:720; y = sind (x); z = cosd (x);

>> plot3 (x,y,z)

Page 44: Clase 15 Matlab

EJEMPLO:

Dibujar la esfera unidad con ejes iguales.

>> sphere

axis equal

EJEMPLO:

Representar la superficie de la siguiente ecuación:

[X,Y]=meshgrid(-7.5:.5:7.5);

Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);

surf(X,Y,Z)