matlab para ing. civil

Upload: yuri-abraham-paniagua-segovia

Post on 18-Jul-2015

5.691 views

Category:

Documents


16 download

TRANSCRIPT

WINDOWS XP COLOSSUS EDITION 2 RELOADED

CURSO DE MATLAB

UNSCH FIMGC - EFPIC |CARDENAS ALARCON, Max Junior

RESUMENLa siguiente gua que se presenta, est desarrollada para el mbito de trabajo que nos ofrece el programa de MATLAB, en esta gua se definirn los comandos de programacin, la programacin y el uso adecuados de los scripts, as como tambin el uso de archivos M-File y por ultimo mencionaremos la programacin utilizando la interfaz grafica del usuario GUIDE. El presente trabajo fue elaborado y editado para todos los estudiantes de ingeniera que ingresan en el mundo de la programacin en MATLAB, siendo este software una herramienta indispensable para el ingeniero de la actualidad. La necesidad de elaborar programas que analicen casos especficos que se presentan en la vida profesional y estudiar los resultados en una manera optima, hacen que la programacin en MATLAB nos resulte de gran ayuda. Esta gua se separo en 6 captulos los cuales son: - En el 2 captulo mencionaremos el entrono del programa MATLAB, definiremos los comandos y herramientas que presenta y sus aplicaciones. - En el 3 capitulo mencionaremos los comandos de programacin de MATLAB (IF, FOR, WHILE, SWICHT), definiremos cada comando y su respectiva forma de utilizacin. - En el 4 capitulo mencionaremos la programacin en Script, definiremos la forma de uso y la respectiva codificacin para el desarrollo de los programas, en este captulo se desarrollaran ejemplos. - En el 5 capitulo mencionaremos la programacin en MATLAB usando los archivos M-File con la ejecucin de ejemplos. - En el 6 capitulo mencionaremos la programacin en MATLAB haciendo uso de la interfaz grafica de usuario GUIDE, en la cual se desarrollara y explicara los diferentes comandos y funciones que presenta este tipo de programacin. El autor.i

INDICE1. INTRODUCCIN A MATLAB 1.1.EL PROGRAMA MATLAB 1.2.USO DEL HELP 2. ENTORNO DE MATLAB 2.1. VARIABLES 2.2. FORMATOS NUMERICOS 2.3. FUNCIONES MATEMATICAS EN MATLAB 2.4. MATRICES Y ARREGLOS 2.4.1. DEFINICION DE AMTRICES DESDE EL TECLADO 2.4.2. OPERACIONES CON MATRICES 2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES 2.4.4. OPERADORES ELEMENTO A ELEMENTO 2.4.5. TIPOS DE MATRICES PREDEFINIDAS 2.4.6. FORMACION DE UNA MATRIZ A PARTIR DE OTRAS 2.4.7. EL OPERADOR DOS PUNTOS 2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ 3. COMANDOS DE PROGRAMACION EN MATLAB 3.1. COMANDO IF 3.2. COMANDO SWITCH 3.3. COMANDO FOR 3.4. COMANDO WHILE 3.5. COMANDO BREAK 3.6. EJEMPLOS DE LOS COMANDOS 3.6.1. COMANDO IF 3.6.2. COMANDO SWITCH 3.6.3. COMANDO FOR 3.6.4. COMANDO WHILE 3.7. EJEMPLO DE APLICACIN 4. PROGRAMACION EN SCRIPT 4.1. SCRIPT 4.2. EJEMPLOS DE APLICACIN 4.2.1. EJEMPLO N01 4.2.2. EJEMPLO N02 4.2.3. EJEMPLO N03 4.2.4. EJEMPLO N04 4.2.5. EJEMPLO N05 1 1 2 5 5 5 6 8 8 10 11 13 14 15 16 19 20 20 21 21 22 22 23 23 24 24 24 25 29 29 31 31 32 32 33 33ii

5. PROGRAMACION EN M-FILE5.1. EJEMPLO DE APLICACION

34 35 36 36 36 36 36 36 38 38 39 39 39 40 40 41 42 42 43 44 47 50 70 84 84 85 86 87 89 92 92 96 115

6. PROGRAMACION EN GUIDE6.1. PROPIEDAD DE LOS CONTROLES

6.1.1. STRING 6.1.2. TAG 6.2. CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUIDE) 6.2.1. PUSH BUTTON 6.2.2. TOGGLE BUTTON 6.2.3. RADIO BUTTON 6.2.4. CHECKBOXES 6.2.5. EDIT TEXT 6.2.6. STATIC TEXT 6.2.7. SLIDERS 6.2.8. PANELS 6.2.9. LIST BOXES 6.2.10. POPUP MENUS 6.2.11. AXES 6.3. INSPECTOR DE PROPIEDADES 6.4. PROPIEDADES GENERALES DE LOS UICONTROL 6.5. ELABORACION DE UNA INTERFAZ GRAFICA 6.6. ELABORACION DE UN PROGRAMA-ANALISIS DE ARMADURAS 6.7. EJEMPLO DE UN PROGRAMA EN GUI 7. PRACTICAS DIRIGIDAS 7.1. PRACTICA N 01: ANALISIS NUMERICO 7.2. PRACTICA N 02: MATRICES Y ARREGLOS 7.3. PRACTICA N 03: PROGRAMACION EN SCRIPT 7.4. PRACTICA N 04: PROGRAMACION EN M-FILE 7.5. PRACTICA N 05: PROGRAMACION EN GUIDE 8. ANEXOS 8.1. ANEXO A: RESUMEN DE FUNCIONES 8.2. ANEXO B: GUIA DE INSTALACION 9. REFERENCIAS

iii

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO I INTRODUCCION A MATLAB

1. CAPITULO I : INTRODUCCIN A MATLAB 1.1. EL PROGRAMA MATLABMATLAB es el nombre abreviado de MATrix LABoratory. MATLAB es un programa para realizar clculos numricos con vectores y matrices. Como caso particular puede tambin trabajar con nmeros escalares tanto reales como complejos, con cadenas de caracteres y con otras estructuras de informacin ms complejas. Una de las capacidades ms atractivas es la de realizar una amplia variedad de grficos en dos y tres dimensiones. MATLAB es un gran programa de clculo tcnico y cientfico. Para ciertas operaciones es muy rpido, cuando puede ejecutar sus funciones en cdigo nativo con los tamaos ms adecuados para aprovechar sus capacidades de vectorizacin. En otras aplicaciones resulta bastante ms lento que el cdigo equivalente desarrollado en C/C++ o Fortran. En la versin 6.5, MATLAB incorpor un acelerador JIT (Just In Time), que mejoraba significativamente la velocidad de ejecucin de los ficheros *.m en ciertas circunstancias, por ejemplo cuando no se hacen llamadas a otros ficheros *.m, no se utilizan estructuras y clases, etc. Aunque limitado en ese momento, cuando era aplicable mejoraba sensiblemente la velocidad, haciendo innecesarias ciertas tcnicas utilizadas en versiones anteriores como la vectorizacin de los algoritmos. En cualquier caso, el lenguaje de programacin de MATLAB siempre es una magnfica herramienta de alto nivel para desarrollar aplicaciones tcnicas, fcil de utilizar y que, como ya se ha dicho, aumenta significativamente la productividad de los programadores respecto a otros entornos de desarrollo. MATLAB dispone de un cdigo bsico y de varias libreras especializadas (toolboxes). En estos apuntes se har referencia exclusiva al cdigo bsico. MATLAB se puede arrancar como cualquier otra aplicacin de Windows, clicando dos veces en el icono correspondiente en el escritorio o por medio del men Inicio). Al arrancar MATLAB se abre una ventana similar a la mostrada en la Figura 1. sta es la vista que se obtiene eligiendo la opcin Desktop/Desktop Layout/Default. Esta ventana inicial requiere unas primeras explicaciones.VENTANA DE COMANDOS

DIRECTORIO

ESPACIO DE TRABAJO

HISTORIAL DE COMANDOS Figura 1.1. Ventana inicial de MATLAB 7.7.0. (R2008b)

CARDENAS ALARCON, Max Junior

Pgina 1

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO I INTRODUCCION A MATLAB

1.2. USO DEL HELPMATLAB 7.0 dispone de un excelente Help con el que se puede encontrar la informacin que se desee. La Figura 5 muestra las distintas opciones que aparecen en el men Help de la ventana principal de la aplicacin: Full Product Family Help, Se abre la ventana de la Figura 8, en la que se puede buscar informacin general sobre MATLAB o sobre otros productos de la familia a los que se tenga acceso. La forma de la ventana de ayuda es tpica y comn con otros niveles de ayuda. La mayor parte de las pginas de ayuda estn en formato HTML.

Figura 1.2. Algunas pginas web sobre MATLAB.

MATLAB Help. Se abre la ventana de la Figura 9, en la que se puede buscar ayuda general sobre MATLAB o sobre la funcin o el concepto que se desee. La portada de esta ayuda tiene tres captulos principales: Functions, que contiene informacin de referencia sobre las funciones por orden alfabtico o por categoras. Handle Graphics, que permite acceder a informacin concreta sobre las distintas propiedades de los objetos grficos. Documentation Set, que da acceso a versiones completas de los manuales del programa en formato de pantalla fcilmente navegable (con apartados de Getting Started, User Guides, Programming Tips y Examples in Documentation). Product Demos (con una coleccin de jemplos programados que se pueden ejecutar y cuyo cdigo se puede examinar para ver cmo estn programados). What's New (con las novedades de esta versin respecto a la anterior). Printing the Documentation Set (que permite abrir documentos PDF (Portable Document Format), que se corrresponden con las versiones en papel de los manuales del programa, y que precisan del programa Adobe Acrobat Reader 5.0 o superior.) y un apartado final sobre The MathWorks Web Site Resources (que permite acceder a una amplsima coleccin de informaciones adicionales disponibles en la web de la empresa que ha desarrollado MATLAB).CARDENAS ALARCON, Max Junior Pgina 2

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO I INTRODUCCION A MATLAB

En la parte izquierda de la ventana, cuando est seleccionada la pestaa Contents, aparece un ndice temtico estructurado en forma de rbol que puede ser desplegado y recorrido con gran facilidad. Las restantes pestaas de esta ventana dan acceso a un ndice por palabras (Index), a un formulario de bsqueda (Search) y a la coleccin de ejemplos ya programados antes citadas (Demos).

Figura 1.3. Demos disponibles en MATLAB.

Using the Desktop. Se abre una ventana de ayuda con un formato similar a las de las Figuras anteriores con informacin detallada sobre cmo utilizar y configurar el entorno de desarrollo o Desktop. Las distintas herramientas disponibles se describen sucesivamente. Cada pgina dispone de flechas y enlaces que permiten ir a la pgina siguiente o volver a la anterior. Es posible tambin imprimir aquellas pginas que se deseee consultar o archivar sobre papel. Una caracterstica muy importante es la posibilidad de organizar las ventanas con gran flexibilidad, agrupndolas o independizndoles segn los propios gustos o deseos. Using the Command Window. Esta opcin del men Help da acceso a la informacin necesaria para aprovechar las capacidades de la Command Window, que es el corazn de MATLAB. Web Resources. La Error! No se encuentra el origen de la referencia. muestra algunas direcciones de Internet con informacin interesante sobre MATLAB. Todas ellas corresponden a distintas secciones de la web de The Mathworks (la empresa que desarrolla y comercializa MATLAB), cuya pgina de inicio se muestra en primer lugar. Check for Updates. MATLAB se conecta con The Mathworks y comprueba si has versiones ms recientes de los productos instalados. Si se es un usuario registrado, es posible descargar las versiones ms actuales. Demos. Se abre una ventana como la mostrada en la Figura 7 que da acceso a un buen nmero de ejemplos resueltos con MATLAB, cuyos

CARDENAS ALARCON, Max Junior

Pgina 3

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO I INTRODUCCION A MATLAB

resultados se presentan grficamente de diversas formas. Es muy interesante recorrer estos ejemplos para hacerse idea de las posibilidades del programa, tanto en clculo como en grficos. Es asimismo muy instructivo analizar los ficheros *.m de los ejemplos de caractersticas similares a las de la aplicacin de se desea desarrollar. Adems, de una forma muy inmediata, es posible tambin recurrir al Help desde la lnea de comandos de la Command Window. Se aconseja practicar un poco al respecto. Por ejemplo, obsrvese la respuesta a los siguientes usos del comando help:>> help >> help lang

El comando helpwin seguido de un nombre de comando o de funcin muestra la informacin correspondiente a ese comando en la ventana Help (ver Figura 8). En la parte superior de la ventana que se abre se muestra un enlace View code for , que permite acceder al cdigo fuente si est disponible; con la opcin Go to online doc for ... se accede a una informacin ms completa que puede incluir ejemplos y comandos similares sobre los que tambin se ofrece ayuda. En la parte inferior de la pgina aparece una lista de enlaces See Also a funciones relacionadas. El comando doc tecleado en la lnea de comandos equivale a Help/Full Product Family Help; si va seguido de un nombre de comando o funcin se muestra la informacin detallada correspondiente a ese comando de modo similar a Go to online doc for ... en el prrafo anterior. En resumen, MATLAB dispone de una ayuda muy completa y accesible, estructurada en varios niveles (lnea de comandos en la Command Window, ventana Help, y manuales en formato PDF), con la que es muy importante estar familiarizado, porque hasta los ms expertos programadores tienen que acudir a ella con una cierta frecuencia.

Figura 1.4. Ventana inicial de Help Full Product Family.

CARDENAS ALARCON, Max Junior

Pgina 4

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2. CAPITULO II : ENTORNO DE MATLAB 2.1. VARIABLESEl nombre que se declare a las variables en MATLAB a si como en otros lenguajes de programacin debe tener ciertas reglas, las cuales son: - No pueden comenzar con un nmero, aunque si pueden tener nmeros en su estructura variable1=12 - Las maysculas y las minsculas se diferencian en los nombres de las variables, las variables A y a son distintas. A=10 a=12 - Los nombres de las variables no pueden contener operadores y puntos. No es vlido usar / * + . ; : ^ Para el uso de una variable no es necesario declarar sus nombres, en al siguiente tabla se presenta las variables predefinidas que posee MATLABCuadro 2.1. Variables predefinidas por MATLAB NOMBRE DE LA VARIABLE SIGNIFICADO pi iyj inf 1.0000e-006 eps No es nmero NaM realmin Menor nmero realmax Mayor nmero

2.2. FORMATOS NUMERICOSA continuacin se presentan los diferentes tipos de formatos que usa MATLA en la visualizacin de sus variables. Format.- Modifica el formato numrico de las variables desplegables por MATLAB, donde la funcin afecta slo como son los nmeros exhibidos, no cmo los computarizados.Cuadro 2.2. Formatos numricos en MATLAB

NUMERO format short format short e format short g format long format long e format long g format bank format rat

x = [4/3 x = [1.3333 x = [1.3333e+000 x = [1.3333 x = [1.33333333333333 x = [1.33333333333333e+000 x = [1.333333333333 x = [1.33 x = [4/3

1.2345e-6] 0.0000] 1.2345e-006] 1.2345e-006] 0.00000123450000] 1.234500000000000e-006] 1.2345e-006] 0.00] 1/810045]

CARDENAS ALARCON, Max Junior

Pgina 5

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.3. FUNCIONES MATEMATICAS EN MATLABMATLAB ofrece un sin nmero de funciones las que aceptan como argumento variables reales y/o complejas sin discriminacin, a si como con argumentos matriciales. FUNCIONES TRIGONOMETRICAS Se debe tener en cuenta que las funciones trigonomtricas que nos proporciona MATLAB se encuentran en las unidades de los radianes si queremos obtener la razn trigonomtricas de un ngulo en grados sexagesimales demos utilizar el comando sind(x).Cuadro 2.3. Funciones trigonomtricas en MATLAB

FUNCION sin(x) sind(x) asin(x) asind(x) sinh(x) asinh(x) cos(x) cosd(x) acos(x) acosd(x) cosh(x) acosh(x) tan(x) tand(x) atan(x) atand(x) tanh(x) atanh(x) cot(x) sec(x) csc(x) Ejemplo:

DESCRIPCION Seno de x en radianes Seno de x en grados sexagesimales Arcoseno de x en radianes Arcoseno de x en grados sexagesimales Seno hiperblico de x Arcoseno hiperblico de x Coseno de x en radianes Coseno de x en grados sexagesimales Arcocoseno de x en radianes Arcocoseno de x en grados sexagesimales Coseno hiperblico de x Arcocoseno hiperblico de x Tangente de x en radianes Tangente de x en grados sexagesimales Arcotangente de x en radianes Arcotangente de x en grados sexagesimales Tangente hiperblico de x Arcotangente hiperblico de x Cotangente de x Secante de x Cosecante de x

x = [1, 2, 3; 9, 8, 7; 4, 5, 6]; sin(x) Nos devuelve como resultado

asin(x)

CARDENAS ALARCON, Max Junior

Pgina 6

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

FUNCIONES QUE REALIZAN TAREASCuadro 2.4. Funciones que realiza tareas en MATLAB

FUNCION abs(x) sqrt(x) real(x) imag(x) sign(x) exp(x) log(x) log10(x) log2(x) min(x) max(x) sort(x) sum(x) num2str(x) str2double(x) Ejemplo:

DESCRIPCION Valor absoluto de x Raz cuadrada de x Parte real del nmero complejo x Parte imaginaria del nmero complejo x Funcin signo de x Logaritmo natural de x Logaritmo decimal de x Logaritmo en base 2 de x Devuelve el valor mnimo de un arreglo x Devuelve el valor mximo de un arreglo x Ordenas los elemento de un arreglo en forma ascendente Calcula la suma de todos los elementos de un arreglo x Convierte en cadena el nmero x Convierte en nmero real la cadena x

x = [-3 4 -11 0]; abs(x) 3 4 11 0 FUNCIONES REALESCuadro 2.5. Funciones reales en MATLAB

FUNCION eval(x) fplot(f,[a,b]) fzero(f,a) trapz(x,f)

DESCRIPCION Evala una funcin en los valores de x Grafica la funcin en el intervalo [a,b] Calcula la raz de la funcin f, partiendo del valor a Calcula el rea de la regin plana limitada por f en el intervalo [a,b], donde a es el primer valor de x y b el ltimo valor de x, x debe ser una variable con mltiples valores ordenados en orden creciente

Ejemplo: nombre_f = 3*x.^2-5; x = [1 2 4] eval(nombre_f) -2 7 43 z = fzero(nombre_f,2); 1.2910

CARDENAS ALARCON, Max Junior

Pgina 7

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.4. MATRICES Y ARREGLOSYa se ha comentado que MATLAB es fundamentalmente un programa para clculo matricial. Inicialmente se utilizar MATLAB como programa interactivo, en el que se irn definiendo las matrices, los vectores y las expresiones que los combinan y obteniendo los resultados sobre la marcha. Si estos resultados son asignados a otras variables podrn ser utilizados posteriormente en otras expresiones. En este sentido MATLAB sera como una potente calculadora matricial (en realidad es esto y mucho ms...). Antes de tratar de hacer clculos complicados, la primera tarea ser aprender a introducir matrices y vectores desde el teclado. Ms adelante se vern otras formas ms potentes de definir matrices y vectores. 2.4.1. DEFINICION DE MATRICES DESDE EL TECLADO Como en casi todos los lenguajes de programacin, en MATLAB las matrices y vectores son variables que tienen nombres. Ya se ver luego con ms detalle las reglas que deben cumplir estos nombres. Por el momento se sugiere que se utilicen letras maysculas para matrices y letras minsculas para vectores y escalares (MATLAB no exige esto, pero puede resultar til). Para definir una matriz no hace falta declararlas o establecer de antemano su tamao (de hecho, se puede definir un tamao y cambiarlo posteriormente). MATLAB determina el nmero de filas y de columnas en funcin del nmero de elementos que se proporcionan (o se utilizan). Las matrices se definen o introducen por filas6; los elementos de una misma fila estn separados por blancos o comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de dimensin (33): >> A=[1 2 3; 4 5 6; 7 8 9] La respuesta del programa es la siguiente: A= 123 456 789 A partir de este momento la matriz A est disponible para hacer cualquier tipo de operacin con ella (adems de valores numricos, en la definicin de una matriz o vector se pueden utilizar expresiones y funciones matemticas). Por ejemplo, una sencilla operacin con A es hallar su matriz traspuesta. En MATLAB el apstrofo (') es el smbolo de transposicin matricial. Para calcular A' (traspuesta de A) basta teclear lo siguiente (se aade a continuacin la respuesta del programa): >> A' ans = 147 258 369 Como el resultado de la operacin no ha sido asignado a ninguna otra matriz, MATLAB utiliza un nombre de variable por defecto (ans, de answer), que contiene el resultado de la ltima operacin. La variable ans puede ser utilizada como operando en la siguiente expresin que se introduzca.

CARDENAS ALARCON, Max Junior

Pgina 8

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

>> B=A' B= 147 258 369 Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica): >> B*A ans = 66 78 90 78 93 108 90 108 126 En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un slo subndice. Por ejemplo, si A es una matriz (33) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4). Invertir una matriz es casi tan fcil como trasponerla. A continuacin se va a definir una nueva matriz A -no singular- en la forma: >> A=[1 4 -3; 2 1 5; -2 5 3] A= 1 4 -3 2 1 5 -2 5 3 Ahora se va a calcular la inversa de A y el resultado se asignar a B. Para ello basta hacer uso de la funcin inv( ) (la precisin o nmero de cifras con que se muestra el resultado se puede cambiar con el men File/Preferences/General): >> B=inv(A) B= 0.1803 0.2213 -0.1885 0.1311 0.0246 0.0902 -0.0984 0.1066 0.0574 Para comprobar que este resultado es correcto basta pre-multiplicar A por B; >> B*A ans = 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente (si los tres nmeros estn separados por blancos o comas, el resultado ser un vector fila):CARDENAS ALARCON, Max Junior Pgina 9

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

>> x=[10 20 30] % vector fila x= 10 20 30 Por el contrario, si los nmeros estn separados por intros o puntos y coma (;) se obtendr un vector columna: >> y=[11; 12; 13] % vector columna y= 11 12 13 MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error: >> x+y ??? Error using ==> + Matrix dimensions must agree. Estas dificultades desaparecen si se suma x con el vector transpuesto de y: >> x+y' ans = 21 32 43 MATLAB considera vectores fila por defecto, como se ve en el ejemplo siguiente: >> x(1)=1, x(2)=2 x= 1 x= 12

2.4.2. OPERACIONES CON MATRICES OPERADORES ARITMTICOS MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), as como la funcin invertir inv( ). Los operadores matriciales de MATLAB son:Cuadro 2.6. Operadores aritmticos matriciales en MATLAB

OPERADOR + * ^ \

DESCRIPCION Adicin o suma Sustraccin o resta Multiplicacin Traspuesta Potenciacin Divisin-izquierda

CARDENAS ALARCON, Max Junior

Pgina 10

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

/ .* ./ y .\ .^

Divisin-derecha Producto elemento a elemento Divisin elemento a elemento Elevar a una potencia elemento a elemento

Estos operadores se aplican tambin a las variables o valores escalares, aunque con algunas diferencias. Todos estos operadores son coherentes con las correspondientes operaciones matriciales: no se puede por ejemplo sumar matrices que no sean del mismo tamao. Si los operadores no se usan de modo correcto se obtiene un mensaje de error. Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un operando escalar y otro matricial. En este caso la operacin con el escalar se aplica a cada uno de los elementos de la matriz. Considrese el siguiente ejemplo: >> A=[1 2; 3 4] A= 12 34 >> A*2 ans = 24 68 >> A-4 ans = -3 -2 -1 0 MATLAB utiliza el operador de divisin / para dividir por un escalar todos los elementos de una matriz o un vector. Esto no constituye ninguna sorpresa. Sin embargo, el uso que se describe a continuacin s requiere ms atencin.

2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES LINEALESMATLAB utiliza los operadores de divisin para la resolucin de sistemas de ecuaciones lineales. Por su gran importancia, estos operadores requieren una explicacin detenida. Considrese el siguiente sistema de ecuaciones lineales. Ax = b [2.1]

Donde x y b son ectores columna, y A una matriz cuadrada invertible. La resolucin de este sistema de ecuaciones se puede escribir en las 2 formas siguientes (Atencin a la 2 forma, basada en la barra invertida (\), que puede resultar un poco extraa!): x = inv(A)*b x = A\b [2.2] [2.3]

CARDENAS ALARCON, Max Junior

Pgina 11

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

As pues, el operador divisin-izquierda por una matriz (barra invertida \) equivale a pre-multiplicar por la inversa de esa matriz. En realidad este operador es ms general y ms inteligente de lo que aparece en el ejemplo anterior: el operador divisin-izquierda es aplicable aunque la matriz no tenga inversa e incluso no sea cuadrada, en cuyo caso la solucin que se obtiene (por lo general) es la que proporciona el mtodo de los mnimos cuadrados. Cuando la matriz es triangular o simtrica aprovecha esta circunstancia para reducir el nmero de operaciones aritmticas. En algunos casos se obtiene una solucin con no ms de r elementos distintos de cero, siendo r el rango de la matriz. Esto puede estar basado en que la matriz se reduce a forma de escaln y se resuelve el sistema dando valor cero a las variables libres o independientes. Por ejemplo, considrese el siguiente ejemplo de matriz (12) que conduce a un sistema de infinitas soluciones: >> A=[1 2], b=[2] A= 12 b= 2 >> x=A\b x= 0 1 Que es la solucin obtenida dando valor cero a la variable independiente x(1). Por otra parte, en el caso de un sistema de ecuaciones redundante (o sobre-determinado) el resultado de MATLAB es el punto ms cercano -en el sentido de mnima norma del error- a las ecuaciones dadas (aunque no cumpla exactamente ninguna de ellas). Vase el siguiente ejemplo de tres ecuaciones formadas por una recta que no pasa por el origen y los dos ejes de coordenadas: >> A=[1 2; 1 0; 0 1], b=[2 0 0]' A= 12 10 01 b= 2 0 0 >> x=A\b, resto=A*x-b x= 0.3333 0.6667 resto = -0.3333 0.3333 0.6667 Si la matriz es singular o est muy mal escalada, el operador \ da un aviso (warning), pero proporciona una solucin. La inteligencia del operador barra invertida \ tiene un

CARDENAS ALARCON, Max Junior

Pgina 12

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

coste: MATLAB debe de emplear cierto tiempo en determinar las caractersticas de la matriz: triangular, simtrica, etc. Si el usuario conoce perfectamente y con seguridad las caractersticas de la matriz del sistema, lo mejor es utilizar la funcin linsolve, que no realiza ninguna comprobacin y puede obtener la mxima eficiencia. Aunque no es una forma demasiado habitual, tambin se puede escribir un sistema de ecuaciones lineales en la forma correspondiente a la traspuesta de la ecuacin [2.1]: yB = c [2.4]

Donde y y c son vectores fila (c conocido). Si la matriz B es cuadrada e invertible, la solucin de este sistema se puede escribir en las formas siguientes: y = c*inv(B) y = c/B [2.5] [2.6]

En este caso, el operador divisin-derecha por una matriz (/) equivale a pos multiplicar por la inversa de la matriz. Si se traspone la ecuacin [2.4] y se halla la solucin aplicando el operador divisin izquierda se obtiene: y' = (B')\c' [2.7]

Comparando las expresiones [2.6] y [2.7] se obtiene la relacin entre los operadores divisin-izquierda y divisin-derecha (MATLAB slo tiene implementado el operador divisin-izquierda): c/B = ((B')\c')' [2.8]

2.4.4. OPERADORES ELEMENTO A ELEMENTOEn MATLAB existe tambin la posibilidad de aplicar elemento a elemento los operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por ejemplo: >> [1 2 3 4]^2 ??? Error using ==> ^ Matrix must be square. >> [1 2 3 4].^2 ans = 1 4 9 16 >> [1 2 3 4]*[1 -1 1 -1] ??? Error using ==> * Inner matrix dimensions must agree. >> [1 2 3 4].*[1 -1 1 -1] ans = 1 -2 3 -4

CARDENAS ALARCON, Max Junior

Pgina 13

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.4.5. TIPOS DE MATRICES PREDEFINIDASExisten en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos particulares. Algunas de estas funciones son las siguientes:Cuadro 2.7. Tipos de matrices en MATLAB

FUNCION eye(4) zeros(3,5) zeros(4) ones(3) ones(2,4) linspace(x1,x2,n)

DESCRIPCION forma la matriz unidad de tamao (44) forma una matriz de ceros de tamao (35) dem de tamao (44) forma una matriz de unos de tamao (33) idem de tamao (24) genera un vector con n valores igualmente espaciados entre x1 y x2 logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente entre 10^d1 y 10^d2. Si d2 es pi9, los puntos se generan entre 10^d1 y pi forma una matriz de nmeros aleatorios entre 0 y 1, rand(3) con distribucin uniforme, de tamao (33) idem de tamao (25) rand(2,5) forma una matriz de nmeros aleatorios de tamao randn(4) (44), con distribucin normal, de valor medio 0 y varianza 1. crea una matriz (44) con los nmeros 1, 2, ... 4*4, magic(4) con la propiedad de que todas las filas y columnas suman lo mismo crea una matriz de Hilbert de tamao (55). La hilb(5) matriz de Hilbert es una matriz cuyos elementos (i,j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes errores numricos a los que conduce crea directamente la inversa de la matriz de Hilbert invhilb(5) produce una matriz con todos los productos de los kron(x,y) elementos del vector x por los elementos del vector y. Equivalente a x'*y, donde x e y son vectores fila construye una matriz cuyo polinomio caracterstico compan(pol) tiene como coeficientes los elementos del vector pol (ordenados de mayor grado a menor) construye la matriz de Vandermonde a partir del vander(v) vector v (las columnas son las potencias de los elementos de dicho vector) Existen otras funciones para crear matrices de tipos particulares. Con Help/Matlab Help se puede obtener informacin sobre todas las funciones disponibles en MATLAB, que aparecen agrupadas por categoras o por orden alfabtico. En la categora Mathematics aparecen la mayor parte de las funciones estudiadas en este apartado.

CARDENAS ALARCON, Max Junior

Pgina 14

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.4.6. FORMACION DE UNA MATRIZ APARTIR DE OTRASMATLAB ofrece tambin la posibilidad de crear una matriz a partir de matrices previas ya definidas, por varios posibles caminos: recibiendo alguna de sus propiedades (como por ejemplo el tamao), por composicin de varias submatrices ms pequeas, modificndola de alguna forma. A continuacin se describen algunas de las funciones que crean una nueva matriz a partir de otra o de otras, comenzando por dos funciones auxiliares:Cuadro 2.8. Comandos de formacin de matrices en MATLAB

FUNCION

DESCRIPCION

[m,n]=size(A)

n=length(x) zeros(size(A)) ones(size(A)) A=diag(x) x=diag(A) diag(diag(A)) blkdiag(A,B) triu(A)

tril(A) rot90(A,k)

flipud(A) fliplr(A) reshape(A,m,n)

Devuelve el nmero de filas y de columnas de la matriz A. Si la matriz es cuadrada basta recoger el primer valor de retorno Calcula el nmero de elementos de un vector x Forma una matriz de ceros del mismo tamao que una matriz A previamente creada dem con unos Forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x Forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A Crea una matriz diagonal a partir de la diagonal de la matriz A Crea una matriz diagonal de submatrices a partir de las matrices que se le pasan como argumentos Forma una matriz triangular superior a partir de una matriz A (no tiene por qu ser cuadrada). Con un segundo argumento puede controlarse que se mantengan o eliminen ms diagonales por encima o debajo de la diagonal principal. dem con una matriz triangular inferior Gira k*90 grados la matriz rectangular A en sentido antihorario. K es un entero que puede ser negativo. Si se omite, se supone k=1 Halla la matriz simtrica de A respecto de un eje horizontal Halla la matriz simtrica de A respecto de un eje vertical Cambia el tamao de la matriz A devolviendo una matriz de tamao mn cuyas columnas se obtienen a partir de un vector formado por las columnasde A puestas una a ontinuacin de otra. Si la matriz A tiene menos de mn elementos se produce un error.

CARDENAS ALARCON, Max Junior

Pgina 15

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.4.7. EL OPERADOR DOS PUNTOSEste operador es muy importante en MATLAB y puede usarse de varias formas. Se sugiere al lector que practique mucho sobre los ejemplos contenidos en este apartado, introduciendo todas las modificaciones que se le ocurran y haciendo pruebas abundantes (Probar es la mejor forma de aprender!). Para empezar, defnase un vector x con el siguiente comando: >> x=1:10 x= 1 2 3 4 5 6 7 8 9 10 En cierta forma se podra decir que el operador (:) representa un rango: en este caso, los nmeros enteros entre el 1 y el 10. Por defecto el incremento es 1, pero este operador puede tambin utilizarse con otros valores enteros y reales, positivos o negativos. En este caso el incremento va entre el valor inferior y el superior, en las formas que se muestran a continuacin: >> x=1:2:10 x= 13579 >> x=1:1.5:10 x= 1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000 >> x=10:-1:1 x= 10 9 8 7 6 5 4 3 2 1 Puede verse que, por defecto, este operador produce vectores fila. Si se desea obtener un vector columna basta trasponer el resultado. El siguiente ejemplo genera una tabla de funciones seno y coseno. Ejectese y obsrvese el resultado (recurdese que con (;) despus de un comando el resultado no aparece en pantalla). >> x=[0.0:pi/50:2*pi]'; >> y=sin(x); z=cos(x); >> [x y z] El operador dos puntos (:) es an ms til y potente y tambin ms complicado con matrices. A continuacin se va a definir una matriz A de tamao 66 y despus se realizarn diversas operaciones sobre ella con el operador (:). >> A=magic(6) A= 35 1 6 3 32 7 31 9 2 8 28 33 30 5 34 4 36 29

26 21 22 17 12 13

19 23 27 10 14 18

24 25 20 15 16 11

CARDENAS ALARCON, Max Junior

Pgina 16

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

Recurdese que MATLAB accede a los elementos de una matriz por medio de los ndices de fila y de columna encerrados entre parntesis y separados por una coma. Por ejemplo: >> A(2,3) ans = 7 El siguiente comando extrae los 4 primeros elementos de la 6 fila: >> A(6, 1:4) ans = 4 36 29 13 Los dos puntos aislados representan "todos los elementos". Por ejemplo, el siguiente comando extrae todos los elementos de la 3 fila: >> A(3, :) ans = 31 9 2 22 27 20 Para acceder a la ltima fila o columna puede utilizarse la palabra end, en lugar del nmero correspondiente. Por ejemplo, para extraer la sexta fila (la ltima) de la matriz: >> A(end, :) ans = 4 36 29 13 18 11 El siguiente comando extrae todos los elementos de las filas 3, 4 y 5: >> A(3:5,:) ans = 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 Se pueden extraer conjuntos disjuntos de filas utilizando corchetes [ ]. Por ejemplo, el siguientecomando extrae las filas 1, 2 y 5: >> A([1 2 5],:) ans = 35 1 6 26 19 24 3 32 7 21 23 25 30 5 34 12 14 16 En los ejemplos anteriores se han extrado filas y no columnas por motivos del espacio ocupado por el resultado en la hoja de papel. Es evidente que todo lo que se dice para filas vale para columnas y viceversa: basta cambiar el orden de los ndices.

CARDENAS ALARCON, Max Junior

Pgina 17

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

El operador dos puntos (:) puede utilizarse en ambos lados del operador (=). Por ejemplo, a continuacin se va a definir una matriz identidad B de tamao 66 y se van a reemplazar filas de B por filas de A. Obsrvese que la siguiente secuencia de comandos sustituye las filas 2, 4 y 5 de B por las filas 1, 2 y 3 de A, >> B=eye(size(A)); >> B([2 4 5],:)=A(1:3,:) B= 1 0 0 0 35 1 6 26 0 0 1 0 3 32 7 21 31 9 2 22 0 0 0 0

0 19 0 23 27 0

0 24 0 25 20 1

Se pueden realizar operaciones an ms complicadas, tales como la siguiente10: >> B=eye(size(A)); >> B(1:2,:)=[0 1; 1 0]*B(1:2,:) Como nuevo ejemplo, se va a ver la forma de invertir el orden de los elementos de un vector: >> x=rand(1,5) x= 0.9103 0.7622 0.2625 0.0475 0.7361 >> x=x(5:-1:1) x= 0.7361 0.0475 0.2625 0.7622 0.9103 Obsrvese que por haber utilizado parntesis en vez de corchetes los valores generados por el operador (:) afectan a los ndices del vector y no al valor de sus elementos. Para invertir el orden de las columnas de una matriz se puede hacer lo siguiente: >> A=magic(3) A= 816 357 492 >> A(:,3:-1:1) ans = 618 753 294 Aunque hubiera sido ms fcil utilizar la funcin fliplr(A), que es especfica para ello. Finalmente, hay que decir que A(:) representa un vector columna con las columnas de A una detrs de otra.

CARDENAS ALARCON, Max Junior

Pgina 18

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO II ENTORNO DE MATLAB

2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ Matlab utiliza los parntisis para acceder a elementos de la matriz Los subndices empiezan en 1, por lo tanto el primer elemento es a(1,1) Ejemplo: a(3,5)=56.8;

Se pueden utilizar vectores para definir ndices Ejemplo: a(2:3,1:4)=zeros(2,4); O bien: a(2:3,1:4)=0;

Se pueden utilizar vectores para definir ndices Ejemplo: a([2,3],[2,4])=ones(2,2); O bien: a([2,3],[2,4])=0; El operador ':' se utiliza para indicar "todos los elementos"

CARDENAS ALARCON, Max Junior

Pgina 19

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

3. CAPITULO III: COMANDOS DE PROGRAMACION EN MATLABComo ya se ha dicho varias veces incluso con algn ejemplo MATLAB es una aplicacin que se puede programar muy fcilmente. De todas formas, como lenguaje de programacin pronto ver que no tiene tantas posibilidades como otros lenguajes (ni tan complicadas...). Se comenzar viendo las bifurcaciones y bucles, y la lectura y escritura interactiva de variables, que son los elementos bsicos de cualquier programa de una cierta complejidad.

3.1. COMANDO IFEn su forma ms simple, la sentencia if se escribe en la forma siguiente (obsrvese que a diferencia de C/C++/Java la condicin no va entre parntesis, aunque se pueden poner si se desea):

if condicinSentencias

endExiste tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma:

if condicion1bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else % opcin por defecto para cuando no se cumplan las condiciones 1,2,3 bloque4

endDonde la opcin por defecto else puede ser omitida: si no est presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado. Una observacin muy importante: la condicin del if puede ser una condicin matricial, del tipo A==B, donde A y B son matrices del mismo tamao. Para que se considere que la condicin se cumple, es necesario que sean iguales dos a dos todos los elementos de las matrices A y B (aij=bij, 1im, 1jn). Basta que haya dos elementos aij y bij diferentes para que las matrices ya no sean iguales, y por tanto las sentencias del if no se ejecuten. Anlogamente, una condicin en la forma A~=B exige que todos los elementos sean diferentes dos a dos (aijbij, 1im, 1jn). Bastara que hubiera dos elementos aij y bij iguales para que la condicin no se cumpliese. En resumen: if A==B exige que todos los elementos sean iguales dos a dos if A~=B exige que todos los elementos sean diferentes dos a dos Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo de condiciones matriciales. Por ejemplo, la funcin isequal(A, B) devuelve un uno si las dos matrices son idnticas y un cero en caso de que difieran en algo.CARDENAS ALARCON, Max Junior Pgina 20

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

3.2. COMANDO SWITCHLa sentencia switch realiza una funcin anloga a un conjunto de if...elseif concatenados. Su forma general es la siguiente:

switch switch_expresion case case_expr1,bloque1 case {case_expr2, case_expr3, case_expr4,...} bloque2 ... otherwise, % opcin por defecto bloque3

endAl principio se evala la switch_expresion, cuyo resultado debe ser un nmero escalar o una cadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a switch_expresion se ejecutan las sentencias correspondientes a otherwise. Segn puede verse en el ejemplo anterior, es posible agrupar varias condiciones dentro de unas llaves (constituyendo lo que se llama un cell array o vector de celdas); basta la igualdad con cualquier elemento del cell array para que se ejecute ese bloque de sentencias. La igualdad debe entenderse en el sentido del operador de igualdad (==) para escalares y la funcin strcmp() para cadenas de caracteres). A diferencia de C/C++/Java, en MATLAB slo se ejecuta uno de los bloques relacionado con un case.

3.3. COMANDO FORLa sentencia for repite un conjunto de sentencias un nmero predeterminado de veces. La sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de C/C++/Java. La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de uno en uno.

for i=1:nSentencias

endO bien

for i=vectorValoresSentencias

endDonde vectorValores es un vector con los distintos valores que tomar la variable i.

CARDENAS ALARCON, Max Junior

Pgina 21

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

En el siguiente ejemplo se presenta el caso ms general para la variable del bucle (valor_inicial: incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se termina:

for i=n:-0.2:1Sentencias

endEn el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La variable j es la que vara ms rpidamente (por cada valor de i, j toma todos sus posibles valores):

for i=1:m for j=1:nSentencias

end endUna ltima forma de inters del bucle for es la siguiente (A es una matriz):

for i=ASentencias

endEn la que la variable i es un vector que va tomando en cada iteracin el valor de una de las columnas de A. Cuando se introducen interactivamente en la lnea de comandos, los bucles for se ejecutan slo despus de introducir la sentencia end que los completa.

3.4. COMANDO WHILELa estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente:

while condicionsentencias

endDonde condicion puede ser una expresin vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algn o algunos elementos true. El bucle se termina cuando todos los elementos de condicion son false (es decir, cero).

3.5. COMANDO BREAKAl igual que en C/C++/Java, la sentencia break hace que se termine la ejecucin del bucle for y/o while ms interno de los que comprenden a dicha sentencia.

CARDENAS ALARCON, Max Junior

Pgina 22

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

3.6. EJEMPLOS DE LOS COMANDOS 3.6.1. COMANDO IF Ejemplo de aplicacinCuadro 3.1. Ejemplo01.m

Ejemplo01.mclear all a=21; if a10 fprintf('APROBADO'); elseif x==10 fprintf('POR VERSE'); elseif x==0 fprintf('anda al bao'); else fprintf('DESAPROBADO'); end

CARDENAS ALARCON, Max Junior

Pgina 23

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

3.6.2. COMANDO SWITCH Ejemplo de aplicacinCuadro 3.4. Ejemplo01.m

Ejemplo01.mclear all x=1; switch x case 1 Y=12+x case 2 Y=1+x end

3.6.3. COMANDO FOR Ejemplo de aplicacinCuadro 3.5. Ejemplo01.m

Ejemplo01.mclear all for x=1:2:9 Y=x.^2-1; disp([x,Y]); end

3.6.4. COMANDO WHILE Ejemplo de aplicacin, suma de los primeros 10 nmeros naturalesCuadro 3.6. Ejemplo01.m

Ejemplo01.mclear all x=0; suma=0; while x(pi)/2)+(n>(pi)/2)+(o>(pi)/2) fprintf('obtusangulo\n') else fprintf('acutangulo\n') end

CARDENAS ALARCON, Max Junior

Pgina 26

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

fprintf('\n') fprintf('Longitud de la altura (Ha), mediana (Ma) y la bisectriz (Ba)\n') fprintf('recpecto al lado "a" es:\n') fprintf('\n') Ha=b*sin(o); Ma=b^2+(a/2)^2-a*b*cos(o); Ba=b*sin(o)/sin(pi-o-m/2); disp('Ha= '),disp(Ha) disp('Ma= '),disp(Ma) disp('Ba= '),disp(Ba) fprintf('\n') fprintf('Longitud de la altura (Hb), mediana (Mb) y la bisectriz (Bb)\n') fprintf('recpecto al lado "b" es:\n') fprintf('\n') Hb=a*sin(o); Mb=a^2+(b/2)^2-a*b*cos(o); Bb=a*sin(o)/sin(pi-o-n/2); disp('Hb= '),disp(Hb) disp('Mb= '),disp(Mb) disp('Bb= '),disp(Bb) fprintf('\n') fprintf('Longitud de la altura (Hc), mediana (Mc) y la bisectriz (Bc)\n') fprintf('recpecto al lado "c" es:\n') fprintf('\n') Hc=a*sin(n); Mc=a^2+(c/2)^2-a*c*cos(n); Bc=a*sin(n)/sin(pi-n-o/2); disp('Hc= '),disp(Hc) disp('Mc= '),disp(Mc) disp('Bc= '),disp(Bc)

Figura 3.2. Presentacin de resultados de triangulo.m

CARDENAS ALARCON, Max Junior

Pgina 27

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

Figura 3.3. Presentacin de resultados de triangulo.m

Visualization del cdigo en MATLAB

Figura 3.4. triangulo.m

Figura 3.5. triangulo.m

CARDENAS ALARCON, Max Junior

Pgina 28

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO IV PROGRAMACION EN SCRIPT

4. CAPITULO IV: PROGRAMACION EN SCRIPTLos ficheros con extensin (.m) son ficheros de texto sin formato (ficheros ASCII) que constituyen el centro de la programacin en MATLAB. Ya se han utilizado en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB ejecutado en un PC bajo Windows, lo mejor es utilizar su propio editor de textos, que es tambin Debugger. Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en ingls) y las funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos de MATLAB o se incluye dicho nombre en otro fichero *.m. Un fichero de comandos puede llamar a otros ficheros de comandos. Si un fichero de comandos se llama desde de la lnea de comandos de MATLAB, las variables que crea pertenecen al espacio de trabajo base de MATLAB (recordar apartado 2.5.6), y permanecen en l cuando se termina la ejecucin de dicho fichero. Las funciones permiten definir funciones enteramente anlogas a las de MATLAB, con su nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que definen funciones permiten extender las posibilidades de MATLAB; de hecho existen bibliotecas de ficheros *.m que se venden (toolkits) o se distribuyen gratuitamente (a travs de Internet). Las funciones definidas en ficheros *.m se caracterizan porque la primera lnea (que no sea un comentario) comienza por la palabra function, seguida por los valores de retorno (entre corchetes [ ] y separados por comas, si hay ms de uno), el signo igual (=) y el nombre de la funcin, seguido de los argumentos (entre parntesis y separados por comas). Recurdese que un fichero *.m puede llamar a otros ficheros *.m, e incluso puede llamarse a s mismo de forma recursiva. Los ficheros de comandos se pueden llamar tambin desde funciones, en cuyo caso las variables que se crean pertenecen al espacio de trabajo de la funcin. El espacio de trabajo de una funcin es independiente del espacio de trabajo base y del espacio de trabajo de las dems funciones. Esto implica por ejemplo que no puede haber colisiones entre nombres de varia bles: aunque varias funciones tengan una variable llamada A, en realidad se trata de variables completamente distintas (a no ser que A haya sido declarada como variable global). A continuacin se ver con un poco ms de detalle ambos tipos de ficheros *.m.

4.1.SCRIPTComo ya se ha dicho, los ficheros de comandos o scripts son ficheros con un nombre tal como file1. m que contienen una sucesin de comandos anloga a la que se tecleara en el uso interactivo del programa. Dichos comandos se ejecutan sucesivamente cuando se teclea el nombre del fichero que los contiene (sin la extensin), es decir cuando se teclea file1 con el ejemplo considerado. Cuando se ejecuta desde la lnea de comandos, las variables creadas por file1 pertenecen al espacio de trabajo base de MATLAB. Por el contrario, si se ejecuta desde una funcin, las variables que crea pertenecen al espacio de trabajo de la funcin. En los ficheros de comandos conviene poner los puntos y coma (;) al final de cada sentencia, para evitar una salida de resultados demasiado cuantiosa. Un fichero *.m puede llamar a otros ficheros *.m, e incluso se puede llamar a s mismo de modo recursivo. Sin embargo, no se puede hacer profile de un fichero de comandos: slo se puede hacer de las funciones.CARDENAS ALARCON, Max Junior Pgina 29

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO IV PROGRAMACION EN SCRIPT

Las variables definidas por los ficheros de comandos son variables del espacio de trabajo desde el que se ejecuta el fichero, esto es variables con el mismo carcter que las que se crean interactivamente en MATLAB si el fichero se ha ejecutado desde la lnea de comandos. Al terminar la ejecucin del script, dichas variables permanecen en memoria. El comando echo hace que se impriman los comandos que estn en un script a medida que van siendo ejecutados. Este comando tiene varias formas:Cuadro 4.1. Comandos echo en MATLAB

COMANDO echo on echo off echo file on echo file off echo file echo on all echo off all

DESCRIPCION Activa el echo en todos los ficheros script Desactiva el echo Donde 'file' es el nombre de un fichero de funcin, activa el echo en esa funcin Desactiva el echo en la funcin Pasa de on a off y viceversa Activa el echo en todas las funciones Desactiva el echo de todas las funciones

Mencin especial merece el fichero de comandos startup.m. Este fichero se ejecuta cada vez que se entra en MATLAB. En l puede introducir todos aquellos comandos que le interesa se ejecuten siempre al iniciar la sesin, por ejemplo format compact y los comandos necesarios para modificar el path.

Figura 4.1. Programacin en Script

CARDENAS ALARCON, Max Junior

Pgina 30

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO IV PROGRAMACION EN SCRIPT

4.2.EJEMPLOS DE APLICACIN 4.2.1. EJEMPLO N 01Determinar si un nmero es mltiplo de 2, de 3, de 5 o de ninguno de ellos. Considere que existen nmeros que pueden ser mltiplos de ms de un nmero. Por ejemplo: si se Ingresa 15 debe mostrarse "El numero es mltiplo de 3", "El numero es mltiplo de 5". SolucinCuadro 4.2. Ejemplo01.m

Ejemplo01.mclear all clc x=input('Introduzca el nmero:'); if rem(x,30)==0 disp('"El nmero es mltiplo de 2, 3 y 5"') elseif rem(x,6)==0 disp('"El nmero es mltiplo de 2 y 3"') elseif rem(x,10)==0 disp('"El nmero es mltiplo de 2 y 5"') elseif rem(x,15)==0 disp('"El nmero es mltiplo de 3 y 5"') elseif rem(x,2)==0 disp('"El nmero es mltiplo de 2"') elseif rem(x,3)==0 disp('"El nmero es mltiplo de 3"') elseif rem(x,5)==0 disp('"El nmero es mltiplo de 5"') else disp('"El nmero no es mltiplo de 2, ni de 3, ni de 5"') end disp('Gracias por utilizar el sistema, buen da.')

Visualizacin de los resultados

Figura 4.2. Visualizacin de resultados

CARDENAS ALARCON, Max Junior

Pgina 31

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO IV PROGRAMACION EN SCRIPT

4.2.2. EJEMPLO N 02 Determinar la suma de los n primeros trminos de la siguiente serie:

SolucinCuadro 4.3. Ejemplo02.m

Ejemplo02.mclear all clc disp('Suma(n)=') disp('x+(x^2)/(factorial(2))+(x^3)/(factorial(3)),...,(x^n)/(factorial(n))') x=input('Ingrese el valor de la variable "x":'); n=input('Ingrese la cantidad de trminos ("n"):'); S=0; format shortg; for i=1:n S=(x^i)/(factorial(i))+S; end fprintf('Suma(%2.0f)=\n',n) disp(S) format rat; disp('Aproximadamente=') disp(S)

4.2.3. EJEMPLO N 03Escribir un programa que determine si un ao es bisiesto. Un ao es bisiesto si es mltiplo de 4 (por ejemplo 1984). Los anos mltiplos de 100 no son bisiestos, salvo si ellos son tambin mltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es). SolucinCuadro 4.4. Ejemplo03.m

Ejemplo03.mclear all clc disp('PROGRAMA PARA CONSULTAR SI UN AO ES BISIESTO O NO:') a=input('Escriba el ao que desea consultar='); if rem(a,400)==0 fprintf('"El ao %2.0f SI es bisiesto"\n',a) elseif rem(a,100)==0 fprintf('"El ao %2.0f NO es bisiesto"\n',a) elseif rem(a,4)==0 fprintf('"El ao %2.0f SI es bisiesto"\n',a) else fprintf('"El ao %2.0f NO es bisiesto"\n',a) end disp('Gracias por utilizar el programa, que tenga buen da.')

CARDENAS ALARCON, Max Junior

Pgina 32

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO IV PROGRAMACION EN SCRIPT

4.2.4. EJEMPLO N 04Una compaa de alquiler de autos emite la factura de sus clientes teniendo en cuenta la distancia recorrida, si la distancia no rebasa los 300 km., se cobra una tarifa fija de S/.250, si la distancia recorrida es mayor a 300 km. y hasta 1000 km. Se cobra la tarifa fija mas el exceso de kilmetros a razn de S/.30 por km. y si la distancia recorrida es mayor a 1000 km., la compaa cobra la tarifa fija mas los km. recorridos entre 300 y 1000 a razn de 30, y S/.20 para las distancias mayores de 1000 km. Calcular el monto que pagara un cliente.Cuadro 4.5. Ejemplo04.m

Ejemplo04.mx=input('Introduzca el total de kilmetros recorridos: '); disp('El total a pagar en soles es de:') if x0 I=I+1; h=60+2.13*t^2-0.0013*t^4+0.000034*t^4.751; if h100 break end MATRIZ(I,1)=t; MATRIZ(I,2)=h; t=t+2; end MATRIZ plot(MATRIZ(:,1),MATRIZ(:,2),'color','g') title('TRAYECTORIA DEL COHETE','color','w') xlabel('Tiempo','color','b') ylabel('Altura','color','r')

CARDENAS ALARCON, Max Junior

Pgina 33

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO V PROGRAMACION EN M-FILE

5. CAPITULO V: PROGRAMACION EN M-FILELa programacin en este tipo de archivos es la misma que la expuesta en los archivos script, la nica diferencia que se presenta en este tipo de archivos, es el ingreso de datos y la visualizacin d los resultados, entonces explicaremos la forma de crear una archivo M-File. Ingresamos al men File New Function M-file

Figura 5.1. Visualizacin de ingreso

Nos muestra la siguiente pantalla

Figura 5.2. Archivo M-File

CARDENAS ALARCON, Max Junior

Pgina 34

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO V PROGRAMACION EN M-FILE

5.1.EJEMPLO DE APLICACINElaborar un programa para evaluar el caudal de un rio, teniendo un archivo en el cual se reporta el caudal medido en cada ao del rio, este archivo se encuentra en una hoja de clculo de Excel, con estos datos determinar el caudal mnimo, el caudal mximo y el caudal promedio del rio. Solucin Primero elaboraremos un programa para transforma el archivo de datos de la hoja de clculo a un archivo de MATLAB.Cuadro 5.1. Ejemplo01.m

Ejemplo04.mclear all clc datos=xlsread('DATOS.xlsx'); save -ascii DATOS.dat datos C=load('DATOS.dat'); Q=C(:,2);

Finalmente elaboraremos el programa para evaluar el caudalCuadro 5.2. Ejemplo02.m

Ejemplo04.mfunction [Qmin,Qmax,Qprom]=caudales1(Q) N=length(Q); Qmin=Q(1); Qmax=Q(1); S=Q(1); for I=2:N; q=Q(I); S=S+Q(I); Qprom=S/N; if Qmin=q Qmax=Qmax; else Qmax=q; end end Qmin; Qmax; Qprom; end

CARDENAS ALARCON, Max Junior

Pgina 35

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

6. CAPITULO VI: PROGRAMACION EN GUIDEEl presente captulo describe los elementos de una programacin orientada a objetos, denominada en MATLAB, Interfaz Grfica del Usuario (GUI), el cual va a permitir al usuario, interactuar con el ordenador de una manera rpida en la solucin de problemas.

6.1.PROPIEDAD DE LOS CONTROLES 6.1.1. STRINGEsta propiedad posee la cadena de caracteres que se mostrara sobre el botn.

6.1.2. TAGGuide usa la propiedad Tag para nombrar la subfuncin del Callback en el archivo m de la aplicacin. Coloque en Tag un nombre descriptivo (por ejemplo, close_button) antes de activar el Guide.

6.2.CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUI)Los controles son objetos que se ubican dentro de GUI y permiten mostrar, aceptar o validar datos. La paleta del formulario editor contiene los controles de interface de usuario, que usted puede usar en su GUI, Push button, Sliders, Toggle buttons, Frames, Radio buttons, Listboxes, Checkboxes, Popup menus, Edit text, Ejes, Static text y Figure. Estos componentes son los uicontrol de MATLAB y es por lo tanto programable en sus diferentes propiedades, a continuacin se presenta informacin sobre estos comandos.

6.2.1. PUSH BUTTONEl control push button genera una accin cuando el usuario hace clic sobre l (por ejemplo, un botn de OK puede cerrar una caja de dialogo).

Figura 6.1. Push button Figura 6.2. Push button Callback

CARDENAS ALARCON, Max Junior

Pgina 36

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

Cuando el usuario pulsa el botn Push Button, su callbak se ejecuta y no devuelve un valor ni mantienen un estado.

Figura 6.3. Inspector Uicontrol

Al hacer doble clic en el botn Push Button se activa el cuadro de de Figura 6.3. En el cual ubicamos las posiciones de los campos String y Tag, como vemos el nombre que aparece en el campo String ser el que aparecer en el botn. Por otro lado el nombre que aparece en el campo Tag ser el que aparecer en el archivo m, para acceder al archivo m hacemos anti clic en el botn como se indica en la Figura 6.2. y nos aparecer el siguiente archivo, previamente debemos guardar el archivo GUI.

Figura 6.4. Archivo m

CARDENAS ALARCON, Max Junior

Pgina 37

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

Como vemos en la Figura 6.4. aparece subrayado la funcin del botn en este caso del Push Button, es en esta funcin del archivo m que se programa las tareas que va a realizar el respectivo botn.

6.2.2. TOGGLE BUTTONSLos Toggle Buttons generan una accin e indican un estado binario (por ejemplo, on u off). Cuando se pulsa el botn Toggle Button aparece oprimido y permanece as cuando se suelta el botn del mouse, al tiempo que el Callback ejecuta las ordenes programadas dentro de l. Los subsecuentes clics del mouse retorna Toggle Buttons al estado de nondepressed y es posible de nuevo ejecutar su Callback.

Figura 6.5. Toggle Buttons

6.2.3. RADIO BUTTONSEste control se utiliza para seleccionar una opcin de un grupo de opciones (es decir, slo un botn est en un estado seleccionado), para activar un Radio Button, pulse el botn del mouse en el objeto. Los Radios Buttons tienen dos estados: seleccionados y no seleccionados al cual se accede a travs de su propiedad value. Value= Max, el botn se selecciona. Value= Min, el botn no se selecciona. Los Rados Buttons son mutuamente exclusivos dentro de un grupo de opciones, los Callback para cada Rado Button se deber poner en la propiedad value igual a O en todos los otros Rado Buttons del grupo. MATLAB pone la propiedad de value a 1 en el Rado Button pulsado por el usuario.

Figura 6.6. Rado Buttons

CARDENAS ALARCON, Max Junior

Pgina 38

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

6.2.4. CHECKBOXESLos Checkboxs se utilizan para proporcionar al usuario varias opciones de las que se puede elegir una o ms de una cuando se ha pulsado el botn sobre l, e indica su estado como verificado o no verificado. La propiedad value indica el estado del Checkbox asumiendo el valor del Max o propiedad del Min (1 y 0 respectivamente por defecto): Value= Max, la caja se verifica. Value= Min, la caja no se verifica.

Figura 6.6. Checkbox

6.2.5. EDIT TEXTLos controles Edit Text son campos que les permiten a los usuarios ingresar o modificar cadenas de texto. Use Edit Text cuando usted quiere ingresar un texto, la propiedad String contiene el texto ingresado por el usuario. Para obtener la cadena tecleada por el usuario, consiga la propiedad String en el Callback.

Figura 6.7. Edit Text

6.2.6. STATIC TEXTEl control Static Text se utiliza para mostrar texto que el usuario no puede modificar. El texto esttico se usa cn frecuentemente para etiquetar otros mandos y proporciona las direcciones del usuario, o indica valores asociados con un deslizador (Slider). Los usuarios no pueden cambiar interactivamente el texto de all que el texto esttico no es ninguna manera a invocar la rutina de un Callback asociado con l.

Figura 6.8. Static Text

CARDENAS ALARCON, Max Junior

Pgina 39

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

6.2.7. SLIDERSLos deslizadores o barras de desplazamiento permiten explorar fcilmente un alarga lista de elementos o una gran cantidad de informacin, y acepta la entrada numrico dentro de un rango especfico, permitindole al usuario mover una barra movediza. El desplazamiento de la barra se efecta presionando el botn del mouse y arrastrando la diapositiva, o pulsando el botn que posee una flecha, la ubicacin de la barra indica un valor numrico. Existen cuatro propiedades que controlan el rango y tamao del paso del deslizador. Value, contiene el valor actual del deslizador. Max, define el valor mximo del deslizador, el valor por defecto es 1. Min, define le valor mnimo del deslizador, el valor por defecto es 0. Slider Step, especifica el tamao de un paso del deslizador con respecto al rango, el valor por defecto es [0.01 0.10], proporciona un 1% de cambio para los clics en las flechas y un 10% de cambio para los clic en el corredero. Estos valores pueden ser modificados efectuando los cambios en las propiedades del deslizador.

Figura 6.9. Sliders

6.2.8. PANELSUn control Frame proporciona un agrupamiento identificable para controles, los frames no tienen ninguna rutina de Callback asociados con ellos y slo uicontrol pueden aparecer dentro de los marcos excepto de los ejes. Los marcos son opacos. Si usted agrega un marco despus de agregar componentes que usted quiere posicionar dentro del marco, usted necesita traer esos componentes adelante. Use las operaciones Bring to front (traer al frente) y Send to Back (enviar atras) en el men del formulario para este propsito.

Figura 6.10. Panels

CARDENAS ALARCON, Max Junior

Pgina 40

MATLAB APLICADO A LA INGENIERIA CIVILCAPITULO VI PROGRAMACION EN GUIDE

6.2.9. LIST BOXESLos List Boxes muestran un alista de tems entre los cuales el usuario puede seleccionar uno o ms tems. La propiedad String contiene la lista de cadenas desplegada en el List Box. El primer tem en la lista tiene el ndice 1. La propiedad value contiene el ndice en la lista de cadenas que corresponde al tem seleccionado. Si el usuario selecciona mltiples tem, entonces el value es un vector de ndices. Simple o Mltiple Seleccin Los valores de las propiedades Mi y Max determinan si los usuarios pueden hacer simples o mltiples selecciones. Si Max Min > 1, entonces las cajas de la lista permiten la seleccin del tem mltiple. Si Max Min