You are on page 1of 126

WINDOWS

XP
COLOSSUS
EDITION 2
CURSO DE MATLAB
RELOADED

UNSCH FIMGC - EFPIC |


CARDENAS ALARCON, Max Junior
RESUMEN
La 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
INDICE
1. INTRODUCCIN A MATLAB 1

1.1.EL PROGRAMA MATLAB 1


1.2.USO DEL HELP 2

2. ENTORNO DE MATLAB 5

2.1. VARIABLES 5
2.2. FORMATOS NUMERICOS 5
2.3. FUNCIONES MATEMATICAS EN MATLAB 6
2.4. MATRICES Y ARREGLOS 8
2.4.1. DEFINICION DE AMTRICES DESDE EL TECLADO 8
2.4.2. OPERACIONES CON MATRICES 10
2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES
LINEALES 11
2.4.4. OPERADORES ELEMENTO A ELEMENTO 13
2.4.5. TIPOS DE MATRICES PREDEFINIDAS 14
2.4.6. FORMACION DE UNA MATRIZ A PARTIR DE OTRAS 15
2.4.7. EL OPERADOR DOS PUNTOS 16
2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ 19

3. COMANDOS DE PROGRAMACION EN MATLAB 20

3.1. COMANDO IF 20
3.2. COMANDO SWITCH 21
3.3. COMANDO FOR 21
3.4. COMANDO WHILE 22
3.5. COMANDO BREAK 22
3.6. EJEMPLOS DE LOS COMANDOS 23
3.6.1. COMANDO IF 23
3.6.2. COMANDO SWITCH 24
3.6.3. COMANDO FOR 24
3.6.4. COMANDO WHILE 24
3.7. EJEMPLO DE APLICACIN 25

4. PROGRAMACION EN SCRIPT 29

4.1. SCRIPT 29
4.2. EJEMPLOS DE APLICACIN 31
4.2.1. EJEMPLO N01 31
4.2.2. EJEMPLO N02 32
4.2.3. EJEMPLO N03 32
4.2.4. EJEMPLO N04 33
4.2.5. EJEMPLO N05 33

ii
5. PROGRAMACION EN M-FILE 34

5.1. EJEMPLO DE APLICACION 35

6. PROGRAMACION EN GUIDE 36

6.1. PROPIEDAD DE LOS CONTROLES 36


6.1.1. STRING 36
6.1.2. TAG 36
6.2. CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUIDE) 36
6.2.1. PUSH BUTTON 36
6.2.2. TOGGLE BUTTON 38
6.2.3. RADIO BUTTON 38
6.2.4. CHECKBOXES 39
6.2.5. EDIT TEXT 39
6.2.6. STATIC TEXT 39
6.2.7. SLIDERS 40
6.2.8. PANELS 40
6.2.9. LIST BOXES 41
6.2.10. POPUP MENUS 42
6.2.11. AXES 42
6.3. INSPECTOR DE PROPIEDADES 43
6.4. PROPIEDADES GENERALES DE LOS UICONTROL 44
6.5. ELABORACION DE UNA INTERFAZ GRAFICA 47
6.6. ELABORACION DE UN PROGRAMA-ANALISIS DE ARMADURAS 50
6.7. EJEMPLO DE UN PROGRAMA EN GUI 70

7. PRACTICAS DIRIGIDAS 84

7.1. PRACTICA N 01: ANALISIS NUMERICO 84


7.2. PRACTICA N 02: MATRICES Y ARREGLOS 85
7.3. PRACTICA N 03: PROGRAMACION EN SCRIPT 86
7.4. PRACTICA N 04: PROGRAMACION EN M-FILE 87
7.5. PRACTICA N 05: PROGRAMACION EN GUIDE 89

8. ANEXOS 92

8.1. ANEXO A: RESUMEN DE FUNCIONES 92


8.2. ANEXO B: GUIA DE INSTALACION 96

9. REFERENCIAS 115

iii
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATL

1. CAPITULO I : INTRODUCCIN A MATLAB

1.1. EL PROGRAMA MATLAB

MATLAB 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

CARDENAS ALARCON, Max Junior Pa gina 1


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATL B


HISTORI
AL DE
Figura 1.1. Ventana inicial de COMAN
MATLAB 7.7.0. (R2008b) DOS

CARDENAS ALARCON, Max Junior Pa gina 2


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATL B

1.2. USO DEL HELP

MATLAB 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 Pa gina 3


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATL B

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 Pa gina 4


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATL B

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 Pa gina 5


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATL B

2. CAPITULO II : ENTORNO DE MATLAB

2.1. VARIABLES
El 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 MATLAB

Cuadro 2.1. Variables predefinidas por MATLAB


NOMBRE DE LA VARIABLE SIGNIFICADO
pi
iyj
inf
eps 1.0000e-006
NaM No es nmero
realmin Menor nmero
realmax Mayor nmero

2.2. FORMATOS NUMERICOS


A 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 x = [4/3 1.2345e-6]
format short x = [1.3333 0.0000]
format short e x = [1.3333e+000 1.2345e-006]
format short g x = [1.3333 1.2345e-006]
format long x = [1.33333333333333 0.00000123450000]
format long e x = [1.33333333333333e+000 1.234500000000000e-006]
format long g x = [1.333333333333 1.2345e-006]
format bank x = [1.33 0.00]
format rat x = [4/3 1/810045]

CARDENAS ALARCON, Max Junior Pa gina 6


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATL B

2.3. FUNCIONES MATEMATICAS EN MATLAB


MATLAB 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 DESCRIPCION
sin(x) Seno de x en radianes
sind(x) Seno de x en grados sexagesimales
asin(x) Arcoseno de x en radianes
asind(x) Arcoseno de x en grados sexagesimales
sinh(x) Seno hiperblico de x
asinh(x) Arcoseno hiperblico de x
cos(x) Coseno de x en radianes
cosd(x) Coseno de x en grados sexagesimales
acos(x) Arcocoseno de x en radianes
acosd(x) Arcocoseno de x en grados sexagesimales
cosh(x) Coseno hiperblico de x
acosh(x) Arcocoseno hiperblico de x
tan(x) Tangente de x en radianes
tand(x) Tangente de x en grados sexagesimales
atan(x) Arcotangente de x en radianes
atand(x) Arcotangente de x en grados sexagesimales
tanh(x) Tangente hiperblico de x
atanh(x) Arcotangente hiperblico de x
cot(x) Cotangente de x
sec(x) Secante de x
csc(x) Cosecante de x

Ejemplo:

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

Nos devuelve como resultado

asin(x)

CARDENAS ALARCON, Max Junior Pa gina 7


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATL B

FUNCIONES QUE REALIZAN TAREAS

Cuadro 2.4. Funciones que realiza tareas en MATLAB


FUNCION DESCRIPCION
abs(x) Valor absoluto de x
sqrt(x) Raz cuadrada de x
real(x) Parte real del nmero complejo x
imag(x) Parte imaginaria del nmero complejo x
sign(x) Funcin signo de x
exp(x)
log(x) Logaritmo natural de x
log10(x) Logaritmo decimal de x
log2(x) Logaritmo en base 2 de x
min(x) Devuelve el valor mnimo de un arreglo x
max(x) Devuelve el valor mximo de un arreglo x
sort(x) Ordenas los elemento de un arreglo en forma ascendente
sum(x) Calcula la suma de todos los elementos de un arreglo x
num2str(x) Convierte en cadena el nmero x
str2double(x) Convierte en nmero real la cadena x

Ejemplo:

x = [-3 4 -11 0];


abs(x)
3 4 11 0

FUNCIONES REALES

Cuadro 2.5. Funciones reales en MATLAB


FUNCION DESCRIPCION
eval(x) Evala una funcin en los valores de x
fplot(f,[a,b]) Grafica la funcin en el intervalo [a,b]
fzero(f,a) Calcula la raz de la funcin f, partiendo del valor a
trapz(x,f) 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 Pa gina 8


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATL

2.4. MATRICES Y ARREGLOS


Ya 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):

CARDENAS ALARCON, Max Junior Pa gina 9


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATL B


>> 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 Pa gina 10


B

>> 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):
B

>> 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
B

/ Divisin-derecha
.* Producto elemento a elemento
./ y .\ 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


LINEALES

MATLAB 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 [2.2]
x = A\b [2.3]
B

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
B

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) [2.5]
y = c/B [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 ELEMENTO

En 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
B

2.4.5. TIPOS DE MATRICES PREDEFINIDAS

Existen 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 DESCRIPCION
eye(4) forma la matriz unidad de tamao (44)
zeros(3,5) forma una matriz de ceros de tamao (35)
zeros(4) dem de tamao (44)
ones(3) forma una matriz de unos de tamao (33)
ones(2,4) idem de tamao (24)
linspace(x1,x2,n) 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
rand(3) forma una matriz de nmeros aleatorios entre 0 y 1,
con distribucin uniforme, de tamao (33)
rand(2,5) idem de tamao (25)
randn(4) forma una matriz de nmeros aleatorios de tamao
(44), con distribucin normal, de valor medio 0 y
varianza 1.
magic(4) crea una matriz (44) con los nmeros 1, 2, ... 4*4,
con la propiedad de
que todas las filas y columnas suman lo mismo
hilb(5) crea una matriz de Hilbert de tamao (55). La
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
invhilb(5) crea directamente la inversa de la matriz de Hilbert
kron(x,y) produce una matriz con todos los productos de los
elementos del vector x por los elementos del vector
y. Equivalente a x'*y, donde x e y son
vectores fila
compan(pol) construye una matriz cuyo polinomio caracterstico
tiene como coeficientes los elementos del vector
pol (ordenados de mayor grado a menor)
vander(v) construye la matriz de Vandermonde a partir del
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.
B

2.4.6. FORMACION DE UNA MATRIZ APARTIR DE OTRAS

MATLAB 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) Devuelve el nmero de filas y de columnas de la matriz A.
Si la matriz es cuadrada basta recoger el primer valor de
retorno
n=length(x) Calcula el nmero de elementos de un vector x
zeros(size(A)) Forma una matriz de ceros del mismo tamao que una
matriz A previamente creada
ones(size(A)) dem con unos
A=diag(x) Forma una matriz diagonal A cuyos elementos diagonales
son los elementos de un vector ya existente x
x=diag(A) Forma un vector x a partir de los elementos de la diagonal
de una matriz ya existente A
diag(diag(A)) Crea una matriz diagonal a partir de la diagonal de la
matriz A
blkdiag(A,B) Crea una matriz diagonal de submatrices a partir de las
matrices que se le pasan como argumentos
triu(A) 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.
tril(A) dem con una matriz triangular inferior
rot90(A,k) 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
flipud(A) Halla la matriz simtrica de A respecto de un eje horizontal
fliplr(A) Halla la matriz simtrica de A respecto de un eje vertical
reshape(A,m,n) 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.
B

2.4.7. EL OPERADOR DOS PUNTOS


Este 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 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
B

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.
B

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 0 0
35 1 6 26 19 24
0 0 1 0 0 0
3 32 7 21 23 25
31 9 2 22 27 20
0 0 0 0 0 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.
B

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"


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN B


MATLA
3. CAPITULO III: COMANDOS DE PROGRAMACION EN MATLAB

Como 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 IF

En 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 condicin
Sentencias
end
Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones
como se desee, y que tiene la forma:

if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opcin por defecto para cuando no se cumplan las condiciones 1,2,3
bloque4
end
Donde 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.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN


MATLA
3.2. COMANDO SWITCH

La 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
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN B


... MATLA
otherwise, % opcin por defecto
bloque3
end
Al 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 FOR

La 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:n
Sentencias
end
O bien

for i=vectorValores
Sentencias
end
Donde vectorValores es un vector con los distintos valores que tomar la variable i.
B

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:1
Sentencias
end
En 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:n
Sentencias
end
end
Una ltima forma de inters del bucle for es la siguiente (A es una matriz):

for i=A
Sentencias
end
En 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 WHILE

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

while condicion
sentencias
end
Donde 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 BREAK

Al 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.
B

3.6. EJEMPLOS DE LOS COMANDOS

3.6.1. COMANDO IF

Ejemplo de aplicacin

Cuadro 3.1. Ejemplo01.m


Ejemplo01.m
clear all
a=21;
if a<10
B=a+10
elseif a==21
B=a^2
else
B=a+20
end

Ejemplo para determinar si un nmero es par o impar

Cuadro 3.2. Ejemplo02.m


Ejemplo02.m
clear all
x=3;
if rem(x,2)==0
fprintf('el numero es par');
else
fprintf('el numero es impar');
end

Ejemplo para determinar la condicin de un alumno

Cuadro 3.3. Ejemplo03.m


Ejemplo03.m
clear all
x=0;
if x>10
fprintf('APROBADO');
elseif x==10
fprintf('POR VERSE');
elseif x==0
fprintf('anda al bao');
else
fprintf('DESAPROBADO');
end
B

3.6.2. COMANDO SWITCH

Ejemplo de aplicacin

Cuadro 3.4. Ejemplo01.m


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

3.6.3. COMANDO FOR

Ejemplo de aplicacin

Cuadro 3.5. Ejemplo01.m


Ejemplo01.m
clear 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 naturales

Cuadro 3.6. Ejemplo01.m


Ejemplo01.m
clear all
x=0;
suma=0;
while x<=10
suma=suma+x;
x=x+1;
end
disp('la suma es:');
disp(suma);
B

3.7. EJEMPLO DE APLICACIN

Desarrollar un programa de geometra de tringulos, que calcule el permetro, rea, as


mismo que realice la clasificacin del triangulo de acuerdo a su ngulo y lado, finalmente el
programa debe calcular la altura, mediana y bisectriz con respecto a cada lado del triangulo.
Como datos de ingreso se tendr nicamente los valores numricos de cada lado.

Parte matemtica

Figura 3.1. Triangulo.

[3.1]

[3.2]

[3.3]

[3.4]

[3.5]

[3.6]

[3.7]

[3.8]

[3.9]
B

Codificacin del problema en el programa triangulos.m

Cuadro 3.7. triangulo.m


PROGRAMA triangulo.m : CODIFICACION DEL PROBLEMA

%PROGRAMA QUE CALCULA EL AREA, PERIMETRO Y TAMBIEN CLASIFICA AL TRIANGULO


%SEGUN SU ANGULO Y LADO FINALMENTE HALLA LA ALTURA, LA MEDIANA Y
%BISECTRIZ DE CADA LADO DEL TRIANGULO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%ELABORADO POR: Max Junior CARDENAS ALARCON
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

format bank
fprintf('ingrese los lados del triangulo\n')
fprintf('\n')
a=input('a=');
b=input('b=');
c=input('c=');
fprintf('\n')
fprintf('el rea y el perimetro del triangulo es:\n')
fprintf('\n')
s=(a+b+c)/2;
A=sqrt(s*(s-a)*(s-b)*(s-c));
P=2*s;
disp('A= '),disp(A)
disp('P= '),disp(P)
fprintf('Por su clasificacin es un triangulo del tipo:\n')
m=acos((b^2+c^2-a^2)/(2*b*c));
n=acos((a^2+c^2-b^2)/(2*a*c));
o=acos((a^2+b^2-c^2)/(2*a*b));
a=c*sin(m)/sin(o);
b=a*sin(n)/sin(m);
c=b*sin(o)/sin(n);
fprintf('\n')
fprintf('por sus lados:\n')

if a==(b+c)/2;
fprintf('equilatero\n')
elseif (a==b)+(b==c)+(a==c);
fprintf('isoceles\n')
else
fprintf('escaleno\n')
end

fprintf('\n')
fprintf('por sus angulos:\n')

if (m==(pi)/2)+(n==(pi)/2)+(o==(pi)/2)
fprintf('recto\n')
elseif (m>(pi)/2)+(n>(pi)/2)+(o>(pi)/2)
fprintf('obtusangulo\n')
else
fprintf('acutangulo\n')
end
B

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


B

Figura 3.3. Presentacin de resultados de triangulo.m

Visualization del cdigo en MATLAB

Figura 3.4. triangulo.m Figura 3.5. triangulo.m


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

4. CAPITULO IV: PROGRAMACION EN SCRIPT

Los 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.SCRIPT

Como 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.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO 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 DESCRIPCION
echo on Activa el echo en todos los ficheros script
echo off Desactiva el echo
echo file on Donde 'file' es el nombre de un fichero de funcin, activa el echo en esa funcin
echo file off Desactiva el echo en la funcin
echo file Pasa de on a off y viceversa
echo on all Activa el echo en todas las funciones
echo off all 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIP

4.2.EJEMPLOS DE APLICACIN

4.2.1. EJEMPLO N 01
Determinar 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".

Solucin
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT


Cuadro 4.2. Ejemplo01.m
Ejemplo01.m
clear 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIP

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

Solucin
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT


Cuadro 4.3. Ejemplo02.m
4.2.2. EJEMPLO N
Ejemplo02.m
02
clear 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 03
Escribir 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).

Solucin

Cuadro 4.4. Ejemplo03.m


Ejemplo03.m
clear 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.')
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIP

4.2.4. EJEMPLO N
04 Una 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.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT


Cuadro 4.5. Ejemplo04.m
4.2.4.Ejemplo04.m
EJEMPLO N
04 x=input('Introduzca el total de kilmetros recorridos: ');
disp('El total a pagar en soles es de:')
if x<=300
disp(250)
elseif x<=1000
disp(250+30*(x-300))
elseif x>1000
disp(250+30*700+20*(x-1000))
end
disp('Gracias; buen da.')

4.2.5. EJEMPLO N 05
Se disea un cohete para obtener datos experimentales, para lo cual obtienen la ecuacin
que mide la altura de la punta del cohete en funcin del tiempo.

Elabore un programa mediante el cual imprima valores cada 2 segundos, desde el tiempo
cero hasta que el chete choca contra el suelo, si el cohete no ha llegado al suelo en 100
segundos, hacer que el programa muestre valores solo hasta ese intervalo de tiempo
Cuadro 4.5. Ejemplo04.m
Ejemplo04.m
clear all
h=60;
t=0;
I=0;
while h>0
I=I+1;
h=60+2.13*t^2-0.0013*t^4+0.000034*t^4.751;
if h<0
break
end
if t>100
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')
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO V PROGRAMACION EN M-FILE

5. CAPITULO V: PROGRAMACION EN M-FILE

La 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO V PROGRAMACION EN M-FIL

5.1.EJEMPLO DE APLICACIN
Elaborar 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.m
clear 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 caudal


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO V PROGRAMACION EN M-FILE


Cuadro 5.2. Ejemplo02.m
Ejemplo04.m
function [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
Qmin=Qmin;
else
Qmin=q;
end
if Qmax>=q
Qmax=Qmax;
else
Qmax=q;
end
end
Qmin;
Qmax;
Qprom;
end
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6. CAPITULO VI: PROGRAMACION EN GUIDE

El 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. STRING
Esta propiedad posee la cadena de caracteres que se mostrara sobre el botn.

6.1.2. TAG
Guide 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 BUTTON


El 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

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 BUTTONS


Los 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 BUTTONS


Este 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.2.4. CHECKBOXES
Los 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 TEXT


Los 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 TEXT


El 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.2.7. SLIDERS
Los 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. PANELS
Un 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


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.2.9. LIST BOXES


Los 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 <= 1, entonces las cajas de la lista no permiten la seleccin del tem
mltiple.

Activando La Ejecucin Del Callback


MATLAB evala el callback del List Box despus de que el botn del mouse se suelta o
un evento del keypress se ha efectuado, eso cambia la propiedad de value (es decir,
cuando quiera el usuario pulsa el botn en un tem, pero no al pulsar el Scrollbar en el
list Box).
Esto significa el callback se ejecuta despus del primer clic de un doble clic en un solo
artculo o cuando el usuario est haciendo las selecciones mltiples.
En estas situaciones usted necesita agregar otro componente, como Done Button (push
button) y programa su rutina del callback para preguntar el valor de la propiedad list box
(y posiblemente la figura la propiedad de Seleccin Type) en lugar de creando un
callback para la caja de la lista. Si usted est usando la opcin de archivo m de
aplicacin automticamente generada, u otro que usted necesita.

Ejemplos de List Box


List Box Directory Reader (la lista de caja directorio del lector), muestra cmo se crea
un GUI que despliega los volmenes de directorios en un List Box y les permite a los
usuarios que abran una variedad de tipos del archivo pulsando dos veces el botn en el
filename.

Figura 6.11. List Box


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.2.10. POPUP MENUS


Los Popup Menus permiten visualizar un alista de opciones cuando los usuarios
presionan la flecha.
La propiedad String contiene la lista de cadenas visualizadas en el Popup Menu.
La propiedad value contiene el ndice del tem seleccionado de la lista de cadenas, el
primer tem en la lista tiene el ndice 1.
Cuando no abre, un Popup Menu visualiza la opcin actual que es determinado por el
ndice contenido en la propiedad value.
Los Popup Menu son tiles cuando usted quiere proporcionarles varias opciones
mutuamente exclusivas a los usuarios, y no usar una mayor cantidad de espacio que
una serie de radio Button requiere.

Figura 6.12. Popup Menu

6.2.11. AXES
Los ejes le permiten a su GUI visualizar los grficos, como todos los objetos de los
grficos, los ejes tienen las propiedades que usted puede poner para controlar muchos
aspectos de su conducta y apariencia. En los objetos de los ejes.

Los Callback De Los Ejes


Los ejes no son objetos uicontrol, pero puede programarse para ejecutar un Callback
cuando los usuarios pulsen el botn del mouse en los ejes. Use la propiedad Button
Down Fcn de los ejes para definir el callback.

Trazando Los Ejes En GUIs


Los GUIs que contienen ejes deben asegurar la opcin de accesibilidad de Orden-lnea
en el dialogo de opciones de aplicacin que es fijo en Callback (el valor por defecto).
Esto le permite que emita la trama del Callback sin especificar explcitamente los ejes
designados.

Figura 6.13. Axes


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.3.INSPECTOR DE PROPIEDADES

Son las ventanas que contienen el GUI con el editor del esquema. A continuacin se
presentan cada una de sus propiedades.

Figura 6.14.a. Inspector de Propiedades


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Figura 6.14.b. Inspector de Propiedades

6.4.PROPIEDADES GENERALES DE LOS UICONTROLS

Esta tabla contiene la lista de todas las propiedades tiles para objetos uicontrol
agrupndolos por funcin. Cada nombre de propiedad acta como un enlace a una
descripcin de la propiedad.

Cuadro 6.1. Propiedad de los Uicontrol


Nombre De La Propiedad Descripcin De La Propiedad Valor De La Propiedad

Control De Estilos y Apariencia

BackgroundColor Color de los objetos de fondo Value: ColorSpec


Default: Systen
Dependent
CData Imagen true color mostrada en el Value: Matrix
control
ForegroundColor Color de texto Value: Color Spec
Default: [0 0 0]
SelectionHighlignt Objetos resaltados cuando son Value: On, Off
seleccionados Default: On
String Etiqueta de Uicontrol, list box y popup Value: String
menu
Visible Visibilidad de Uicontrol Value: On, Off
Default: On
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Informacin General Acerca De Los Objetos

Children Objetos uicontrol no tiene hijos


Enable Activar o desactivar el uicontrol Value: On, inactive, Off
Default: On
Parent Padre de objetos uicontrol Value: Scalar figure
handle
Selected Si los objetos son seleccionados Value: On, Off
Default: On
SliderStep Slider escala de tamao Value: Two-element
vector
Default: [0.01 0.1]
Style Tipo de objeto uicontrol Value: Pushbutton,
togglebutton,
radiobutton, checkbox,
edit, text, slider, frame,
listbox, popupmenu
Default: pushbutton
Tag Identificador de objeto especificado por Value: String
el usuario
TooltipString Contenido de los objetos tooltip Value: String

Type Clases de objetos grficos Value: String(read-only)


Default: Uicontrol
UserData Datos especificados de usuario Value: Matrix

Controlando La Posicin Del Objeto

Position Tamao y localizacin de objetos Value: position


uicontrol rectangle
Default: [20 20 60 20]
Units Unidades para interpretar vectores de Value: pixels,
posicin normalized, inches,
centimeters, points,
characters
Default: pixels

Controlando Letras y Etiquetas

FontAngle Declinacin de caracteres Value: normal, italic,


oblique
Default: normal
FontName Familia fuente Value: String
Default: System
dependent
FontSize Tamao fuente Value: size in FontUnits
Default: system depende
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

FontUnits Unidades de tamao fuente Value: points,


normalized, inches,
centimeters, pixels
Default: points
FontWeight Peso de los caracteres de textos Value: light, normal,
demi, bold
Default: normal
HorizontalAlighment Alineamiento de la cadena de etiquetas Value: left, center, right
Default: depends on
uicontrol object
String Etiqueta de objetos uicontrol, tambin Value: String
list box e tems de men pop-up

Controlando La Ejecucin De Las Rutinas Callback

BusyAction Interrupcin de rutinas Callback Value: cancel, queue


Default: queue
ButtonDownFcn Presin de botn de rutina Callback Value: String
Callback Accin de control Value: String
CreateFcn Rutina Callback ejecutada durante la Value: String
creacin de objetos
DeleteFcn Rutina Callback ejecutada durante la Value: String
supresin de objetos
Interruptible Modo de interrupcin de la rutina Value: on, off
Callback Default: on
uicontextMenu Objetos Uicontextmenu asociados con Value: handle
el Uicontrol

Informacin Acerca Del Estado Actual

listboxTop ndice de las cadenas ms visualizadas Value: scalar


en la list box Default: [1]
Max Valor mximo (depende del objeto Value: scalar
uicontrol) Default: object depende
Mi n Valor mnimo (depende del objeto Value: scalar
uicontrol) Default: object depende
Value Valor actual del objeto uicontrol Value: scalar or vector
Default: object depende

Controlando El Acceso A Objetos

HandleVisibility Si el manejador es inaccesible desde la Value: on, callback, off


lnea de comandos y GUIs Default: on
HitTest Si es seleccionado por el clic del mouse Value: on, off
Default: on
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.5.ELABORACION DE UNA INTERFAZ GRAFICA

Abra el editor de formularios, digitando la orden guide en la ventana de comandos, el cual


despliega el formulario en modo de reja, en el cual se agregaran los controles que se
seleccionen de la paleta. Tambin se puede acceder a esta funcin de los siguientes modos.
Mediante el men File New GUI

Figura 6.15. Creacin de GUI

O de manera directa haciendo clic en el icono de la Figura 6.16.

Figura 6.16. Creacin de GUI

Nos aparecer la siguiente ventana de dialogo

Figura 6.17. GUI


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Esta ventana nos ofrece 4 opciones para la creacin de la interfaz la primera es una hoja en
blanco en la cual el usuario puede definir de manera personalizada la forma del GUI.
En la segunda hasta la cuarta opcin MATLAB nos ofrece formatos de diferentes tipos de
GUI como son graficadores de dialogo entre otros, como se muestran en la siguiente figura.

Figura 6.18.a. GUI

Figura 6.18.b. GUI

Figura 6.18.c. GUI

Estas opciones estn presentes en la pestaa Create New GUI, mientras en la segunda
pestaa Open Existing GUI, esta ventana nos ofrece la posibilidad de acceder a los GUI ya
creados para modificarlos en cuanto a la interfaz grafica, se debe tener siempre en cuenta del
nombre del archivo con el que se guardo el GUI para no generar confusin.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Figura 6.19. GUI

Entonces elegimos la opcin que nos ofrece en la Figura 6.17. es decir la opcin en blanco
para generar nuestra interfaz de usuario, hacemos clic en ok y nos aparece la siguiente
ventana para la edicin del GUI

Figura 6.20. GUI


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.6.ELABORACION DE UN PROGRAMA - ANALISIS DE ARMADURAS

Al tener la hoja en blanco para la edicin del GUIDE, comenzamos aadiendo el titulo a la
presentacin del programa. Para ello jalamos el icono de Static Text y lo posicionamos en el
lugar deseado.

Figura 6.21. Armaduras

Luego editamos el tamao del Static Text, con el mouse picamos en una de las esquinas y
jalamos el Static Text.

Figura 6.22. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Para editar el texto hacemos doble clic en el Static Text, en el men que nos aparece
buscamos el campo String y hacemos clic en el cuadro pequeo al lado izquierdo de Static
Text.

Figura 6.23. Armaduras

Nos aparecer el siguiente cuadro en el cual editamos el texto de su interior, luego hacemos
clic en OK.

Figura 6.24. Armaduras

Figura 6.25. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

El tamao y el color del texto as como tambin el color del fondo se editan en el men
inspector. El tamao se edita en Font Size.

Figura 6.26. Armaduras

Luego colocaremos la imagen de la armadura que se va a analizar en el GUIDE para ello la


imagen debe de estar en DIRECTORIO en el cual se encuentra el programa.

Figura 6.27. Armaduras

Una vez confirmada la ubicacin de la foto procedemos a elaborar los comandos para la
visualizacin de la imagen, primero jalamos un Axes y lo posicionamos debajo de nuestro
Static Text, y lo ampliamos a nuestro gusto.

Figura 6.27. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Ahora nos dirigiremos al archivo M-FILE que se genera en paralelo con la edicin del
GUIDE, para ello hacemos clic en el botn M-File Editor.

Figura 6.28. Armaduras

Lo cual nos conduce al archivo M-File, en el cual las funciones que se generan lo hace de
forma automtica segn se va editando el GUIDE.

Figura 6.29. Armaduras

Como se sabe las letras de color verde que aparecen son las indicaciones que le programa
nos recomienda para el uso correcto de las funciones. Estas letras si el usuario desea pueden
ser eliminadas sin ocasionar ningn problema al programa que se est elaborando.
Para la elaboracin de este programa de ARMADURAS las letras de color verde sern
eliminadas en su totalidad del archivo M-File esto para la mejor visualizacin de los
comandos en este archivo y para no generar confusiones con los textos que se va a agregar
en este archivo para la explicacin de los comandos utilizados.
Una vez eliminado todos las letras de color verde procedemos a ubicar las funciones
inciales que nos presenta MATLAB de forma automtica.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Figura 6.30. Armaduras

La funcin que est encerrada dentro de la elipse de la Figura 6.30. Es la que ejecuta al
inicio del programa sea son las funciones inciales. Dentro de esta funcin escribimos los
siguientes comandos.

Cuadro 6.2. Armaduras


Comandos para la visualizacin de imgenes

scrsz=get(0,'screensize');
pa=get(gcf,'position');
xr=scrsz(3)-pa(3);
xp=round(xr/2);
yr=scrsz(4)-pa(4);
yp=round(yr/2);
set(gcf,'position',[xp yp pa(3) pa(4)]);

Estos comandos nos sirven para la correcta ubicacin de las imgenes que se va a insertar en
los Axes. Para la visualizacin de las imgenes usaremos los siguientes comandos.

Cuadro 6.3. Armaduras


Comandos para la visualizacin de imgenes
LOGO1=imread('FOTO1.jpg');
axes(handles.axes1);
imshow(LOGO1);
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Entonces colocaremos los dos comandos en el archivo M-File.

Figura 6.31. Armaduras

Ejecutamos el programa y podemos ver la imagen de la armadura en la interfaz grafica.

Figura 6.32. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Para la mejor visualizacin de la interfaz grafica editaremos el color del fondo para que se
confunda con el del Static Text.

Figura 6.33. Armaduras

Luego colocaremos los Edit Text en la figura. Esto para que el usuario pueda ingresar los
valores de las fuerzas y de las dimensiones de la armadura.

Figura 6.34. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Se debe colocar los Edit Text en forma que coincidan con la imagen de la armadura que se
va a resolver. Tambin se debe borrar el contenido de los Edit Text.

Figura 6.35. Armaduras

Ejecutamos el programa y podemos ver la correcta ubicacin de los Edit Text.

Figura 6.36. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Colocamos dos paneles y los ubicamos en la posicin deseada.

Figura 6.37. Armaduras

Dentro de estos paneles colocamos cuadros y un Static Text.

Figura 6.38. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Luego colocamos los Push Button y los editamos y ubicamos de acuerdo a nuestra
conveniencia.

Figura 6.39. Armaduras

Con esto hemos acabado la presentacin de nuestro programa. Ejecutamos y podemos ver la
interfaz grafica.

Figura 6.40. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Ahorra procederemos a enlazar los controles de la interfaz grafica. Para ello hacemos clic en
el botn SALIR View Callbacks Callback.

Figura 6.41. Armaduras

Lo cual nos conduce al archivo M-File, en el programaremos la funcin de este comando


que es de cerrar el programa para ello escribiremos un su funcin el comando CLOSE.

Figura 6.42. Armaduras

Ejecutamos el programa hacemos clic en salir y vemos que cierra la interfaz grafica.
Hacemos lo mismo para el botn EJECUTAR y colocamos en su funcin los siguientes
comandos. Los cuales son para leer el valor que se introduzca en los Edit Text y convertirlo
en un formato de doble cadena que MTALAB recin puede operar.

Cuadro 6.4. Armaduras


Comandos para la visualizacin de imgenes
FX1=str2double(get(handles.edit1,'string'));
FY1=str2double(get(handles.edit2,'string'));
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Entonces colocamos estos comandos en el archive M-File de la funcin del botn


EJECUTAR.

Figura 6.43. Armaduras

Dentro de esta funcin se generara nuestra matriz de del sistema de ecuaciones.

Figura 6.44. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Ahorra colocaremos en nuestra matriz los valores que se ingresan en los Edit Text, de esta
forma formaremos la siguiente matriz.

Figura 6.45. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Luego generaremos la siguiente matriz columna.

Figura 6.46. Armaduras

Una vez generada las dos matrices estas sern colocadas en las tablas para su visualizacin
en la interfaz grafica. Para ello colocaremos los siguientes comandos en el archivo M-File
para que podamos manejar las tablas.

Cuadro 6.5. Armaduras


Comandos para la visualizacin de matrices
[m n]=size(mtz);
celda=cell(n,n);
celda(:,:)={''};
set(handles.uitable1,'Data',celda);
set(handles.uitable1,'ColumnEditable',true(1,n));

La explicacin de los comandos es la siguiente: primero sacamos el tamao de la matriz mtz,


luego almacenamos el valor de sus dimensiones en la variables m y n, luego damos la
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

dimensin de la celda con el valor de la variable n, como no queremos que se muestre


ningn valor en los casilleros se coloca los apostrofes, luego manejamos la tabla insertando
en esta la matriz mtz. Para ello colocamos los siguientes comandos.

Cuadro 6.6. Armaduras


Comandos para la visualizacin de matrices
set(handles.uitable1,'Data',mtz);
set(handles.uitable1,'visible','on');

Escribimos estos comandos en el archive M-File dentro de la funcin del botn EJECUTAR.

Figura 6.47. Armaduras

Con esto ejecutamos el programa y colocamos en los Edit Text los valores de las fuerzas que
se van aplicar sobre la armadura de nuestra figura, se debe tener en cuenta que para indicar
el sentido de las fuerzas es el mismo el cual se indica en la figura para ello si se quiere
indicar un sentido opuesta a la de la figura bastara con ingresar el valor de la fuerza en forma
negativa, luego hacemos clic en el botn EJECUTAR para ver los resultados que se generan
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

en los cuadros, para visualizar las matrices debemos hacer clic en los Slider de las tablas,
como se muestra en la figura.

Figura 6.48. Armaduras

Ahorra solucionaremos el sistema de ecuaciones utilizando el comando de divisin derecha


de MATLAB \, luego mostraremos el resultado en la tabla siguiente, esto se realizara
mediante los siguientes comandos.

Cuadro 6.7. Armaduras


Comandos para la visualizacin de matrices
%solucion del sistema de ecuaciones
respuesta=mtz\rstl;

%matriz final
[m n]=size(mtz);
celda=cell(n,n);
celda(:,:)={''};
set(handles.uitable3,'Data',celda);
set(handles.uitable3,'ColumnEditable',true(1,n));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
set(handles.uitable3,'Data',respuesta);
set(handles.uitable3,'visible','on');
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Ejecutamos el programa con los mismos datos que el ejemplo anterior y ya podemos ver los
resultados de las fuerzan que se generan en cada barra de la armadura, ahorra si el resultado
es positivo este elemento se encuentra en traccin y si el resultado es negativo el elemento se
encuentra en compresin.

Figura 6.49. Armaduras

De esta forma de determina las fuerzas en las barras, para etiquetar la tabla de los resultados
como se v en la figura se procede de la siguiente forma.
Primero hacemos doble clic en la tabla de edicin del GUIDE.

Figura 6.50. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Como vemos nos aparece el inspector de propiedades en el ubicamos la opcin DATA


hacemos clic en el cuadro de su costado.

Figura 6.51. Armaduras

Nos aparece el siguiente cuadro, y hacemos clic en ROWS.

Figura 6.52. Armaduras

Luego hacemos clic en show names entered below as the row headers.

Figura 6.53. Armaduras

Hacemos clic en INSERT para aumentar el nmero de filas de la tabla, hasta llegar en
nuestro caso al nuero 16, luego al costado de cada nmero de fila editamos para qu se
pueda ver en la tabla de la interfaz grafica, los nombres que se ha modificado, luego de
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

realizar esta operacin procedemos a hacer clic en OK, luego ejecutamos el programa y
podremos ver el resultado de la tabla.

Figura 6.54. Armaduras

Lo mismo realizamos para la columna.

Figura 6.55. Armaduras


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Entonces al hacer clic e OK podemos ver el resultado de nuestra modificacin.

Figura 6.56. Armaduras

Ejecutamos el programa y veremos en la interfaz grafica el cambio.

Figura 6.57. Armaduras

De esta forma hemos concluido con nuestro programa para resolver armaduras.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

6.7.EJEMPLO DE UN PROGRAMA EN GUI CALCULADORA DE MATRICES

Para comenzar a ejecutar el programa, digitamos en la pantalla de comandos el nombre de


nuestro programa matrixcalc.

A continuacin nos presenta el men principal del programa

Este programa nos permite realizar diversas operaciones con matrices y con sistemas
lineales de ecuaciones las cuales se representan mediante matrices.

En el men de operaciones podemos realizar la aritmtica matricial, eligiendo una


operacin deseada, ingresando el tamao de una matriz cuadrada.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

En el men de DATOS, se ingresan el nmero de incgnitas, los coeficientes de las


matrices a si como sus respectivos vectores respuesta y si hubiera el caso un vector de
aproximacin inicial.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Desarrollaremos un ejemplo para el siguiente sistema de ecuaciones.

Tomaremos un vector de aproximacin V= [0 0 0].

Ejecutamos el programa haciendo click en CALCULAR, luego salimos de la interfaz. Si


queremos nuevos datos hacemos click en NUEVO.
Para visualizar los resultados el programa nos ofrece 2 mens, uno con los mtodos
directos y el otro con los mtodos iterativos, en cada caso nos presentan 4 mtodos de
cada caso.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Para ver los resultados con los mtodos directos hacemos click en Resultados D, nos
presentara la siguiente interfaz.

En esta interfaz nos presenta un cuadro en el cual nos indica para elegir un mtodo
deseado, hacemos anticlick en el cuadro y tenemos las siguientes opciones: Gauss Simple,
Doolittle, Krout, Cholesky.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Hacemos click en la opcin deseada para ver los resultados.

METODO DE GAUSS SIMPLE

METODO DE DOOLITTLE
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

METODO DE KROUT

METODO DE CHOLESKY
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Hacemos lo mismo para ver los resultados mediantes los mtodos iterativos hacemos click
en Resultados I.

En los mtodos iterativos tenemos los siguientes mtodos: GAUSS SEIDEL, JACOBI,
GRADIENTE, GRADIENTE CONJUGADO.

Como con los mtodos directo elegimos un mtodo deseado para visualizar los resultados,
en este caso nos presenta la matriz de iteraciones y en la ltima de las columnas nos indica
la norma de los vectores respuesta.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

METODO DE GAUSS SEIDEL

METODO DE JACOBI
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

METODO DE GRADIENTE

METODO DE GRADIENTE CONJUGADO


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Tambin podemos visualizar los resultados de todos los mtodos y comparados con los
resultados del MATLAB, para ello hacemos click en SOLUCION GENERAL y en
Resultados.

El programa tambin nos da la opcin de poder hallar los valores y vectores propios de un
matriz, mediante dos mtodos, para ello hacemos click en el men EIGEN
PROBLEMAS y en la opcin Datos Para EGP.

Nos aparece la opcin para definir el tamao de la matriz cuadrada, a si como el nmero
de tolerancia que se va a cometer para hallar los respectivos valores y vectores propios.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Luego de haber ingresados todos los datos procedemos a realizar el clculo haciendo click
en CALCULAR, si se desea podemos ingresar una matriz nueva haciendo click en
NUEVO.

Para visualizar los resultados hacemos click en el men METODOS DE EP y en la


opcin Resultados EGP, mostrndonos la siguiente interfaz.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Como en los resultados de SEL nos muestra un cuadro en el cual nos presenta los mtodos
para la visualizar los resultados

Hacemos click en una de las opciones para visualizar los resultados con un mtodo
deseado
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

METODO JACOBI

METODO JACOBI MODIFICADO

De esta manera hemos concluido con la explicacin del programa espero que les interese
el programa y que lo utilicen para salir hacemos click en SALIR
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUI E

Finalmente hacemos click en YES

Este es un ejemplo de programacin en GUI como se puede observar la programacin es grfica


y de interaccin con el usuario.

Este tipo de programacin es la ms comn en MATLAB, siendo de gran ayuda para la


elaboracin de los programas.

Se debe tener en cuenta que en MATLAB ya contamos con diversos comandos matemticos que
ofrecen y garantizan una mayor rapidez en la elaboracin de los programas y una sencillez para
la interpretacin de los cdigos en la elaboracin de los diferentes tipos de programas, con lo
que no cuentan otros lenguajes de programacin como son el C, entre otros.

Tambin se debe conocer que MATLAB por poseer estos comandos matemticos en su leguaje
de programacin el tiempo de ejecucin de los programas es ms lento que los otros lenguajes de
programacin en donde no existe estos comandos y se debe crear sus cdigos de ejecucin para
cada programa, pero esta diferencia no es muy notoria por lo que hace a MATLAB como un
herramienta de gran utilidad para la elaboracin de programas.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

7. CAPITULO VII: PRACTICAS DIRIGIDAS

7.1. PRACTICA N 01: ANALISIS NUMERICO


Hallar el valor de las siguientes operaciones, los ngulos de las razones
trigonomtricas estn dados en radianes:


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

7.2. PRACTICA N 02: MATRICES Y ARREGLOS

Sean las matrices A y B:

Resolver las siguientes operaciones matriciales:

Sea la matriz F:


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

7.3. PRACTICA N 03: PROGRAMACION EN SCRIPT

Desarrolle un programa para los siguientes ejemplos:

Desarrolle un programa que le permita leer dos valores en las variables A


y B, y le permita escribir el resultado de la suma, resta, multiplicacin,
divisin y potenciacin de los nmeros.

Desarrolle un programa que le permita leer un valor entero, calcular sus


races cuadrada, cubica, de dicho numero y expresar el resultado.

Desarrollar un programa que le permita leer un valor numrico y


determinar si este es par o impar, positivo o negativo y mostrar el
resultado.

Desarrollar un programa para determinar si un numero X es mltiplo de


un numero Y.

Desarrollar un programa que pueda leer tres valores, almacenarlos en las


variables A,B y C, luego determinar cul de los 3 nmeros es el mayor y
menor, mostrando los resultados. Los tres valores A, B y C son distintos.

Desarrolle un programa que le permita determinar la suma de los


primeros n nmeros impares.

Desarrollar un programa que permita visualizar los 100 primeros nmeros


naturales.

Desarrollar un programa que permita calcular el promedio de los


primeros n nmeros naturales.

Desarrollar un programa que permita calcular el factorial de un nmero


natural.
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

7.4. PRACTICA N 04: PROGRAMACION EN M-FILE

Elabore un programa en M-File Function, el cual nos permita desarrollar los


diferentes tipos de sumatorias y productos que a continuacin se mencionaran, este
programa solo debe pedir como dato de entrada un solo valor, y la visualizacin de
las respuestas deben estar etiquetadas, sealando el tipo de suma o producto que se
desarrolla y su respectiva respuesta para cada caso.

Las sumatorias que se van a desarrollar en el programa sern:

La suma de los primeros N nmeros naturales y su respectivo promedio.

[1.1]

La suma de los primeros N nmeros naturales pares y su respectivo promedio.

[1.2]

La suma de los primeros N nmeros naturales impares y su respectivo promedio.

[1.3]

La suma de la siguiente serie(1):

[1.4]

La suma de la siguiente serie(2):

[1.5]

La suma de la siguiente serie(3):

[1.6]
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

Los productos que se van a desarrollar en el programa sern:

El producto de los primeros N nmeros naturales (factorial).

[1.7]

El producto de los primeros N nmeros naturales pares.

[1.8]

El producto de los primeros N nmeros naturales impares.

[1.9]

El producto de la siguiente serie(4):

[1.10]

El producto de la siguiente serie(5):

[1.11]

El producto de la siguiente serie(6):

[1.12]
MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

7.5. PRACTICA N 05: PROGRAMACION EN GUIDE


Desarrollar una interfaz grafica para desarrollar el siguiente tipo de armaduras
isostticas, en el siguiente grfico se muestra la estructura de la armadura, a si como
el nmero de elementos con la que cuenta y los apoyos correspondientes. El
programa debe calcular cada fuerza que se ejerce en cada barra de la armadura,
tambin debe determinar si la barra se encuentra sometida a traccin o compresin.
Adicionalmente se puede agregar al programa las reas de las secciones
transversales de cada barra para determinar los esfuerzos normales que se ejercen en
cada barra, lo cual se debe tener en cuenta para el diseo.

Figura 7.1. Armadura simtrica isosttica.

Se debe tener en consideracin la aplicacin de fuerzas externas en las dos


direcciones en los nudos de la armadura, como se ve en la figura siguiente. Los
tringulos que se forman en la armadura deben de ser tringulos rectngulos.

Figura 7.2. Armadura simtrica isosttica.


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

Manteniendo las mismas dimensiones de la Figura 1.2. realizamos el diagrama de


cuerpo libre de la armadura, se ve en la Figura 1.3. que el sentido de las fuerzas que
se ejercen en las barras es de traccin, entonces si las fuerzas obtenidas al final de
resolver la armadura nos resultan negativas diremos que esas barras se encuentran
sometidas a compresin, lo mismo aplicaremos para el sentido de las reacciones.

Figura 7.3. Diagrama de cuerpo libre de la armadura.

Analizando en cada nudo obtenemos:

[7.1]

[7.2]

[7.3]

[7.4]

[7.5]

[7.6]

[7.7]

[7.8]

[7.9]

CARDENAS ALARCON, Max Junior Pa gina 90


MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRCTICAS DIRIGIDAS

[7.10]

[7.11]

[7.12]

[7.13]

[7.14]

[7.15]

[7.16]

El siguiente sistema de ecuaciones lineales se puede resolver por diversos mtodos


numricos, a continuacin mostraremos el sistema de ecuaciones lineales en forma
matricial.

CARDENAS ALARCON, Max Junior Pa gina 91


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

8. ANEXOS

8.1.ANEXO A

A continuacin se presentan los diferentes tipos de funciones que MATLAB ofrece dentro de su
lenguaje de programacin, se puede encontrar funciones matemticas, que realizan tareas entre
otros.
En la siguiente tabla se presenta la funcin con su respectiva descripcin.

CARDENAS ALARCON, Max Junior Pa gina 92


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Pa gina 93


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Pa gina 94


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Pa gina 95


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

8.2.ANEXO B

CARDENAS ALARCON, Max Junior Pa gina 96


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 97


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 98


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 99


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 100


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 101


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 102


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 103


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 104


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 105


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 106


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 107


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 108


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 109


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 110


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 111


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 112


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 113


MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Pa gina 114


MATLAB APLICADO A LA INGENIERIA CIVIL

REFERENCIAS

9. REFERENCIAS

[1] JAVIER GARCA DE JALN, JOS IGNACIO RODRGUEZ, JESS


VIDAL. Aprenda Matlab como en primero. Universidad Politcnica De Madrid.

[2] DELORES M. ETTER. Solucin de problemas de ingeniera con Matlab. A


Simon y Schuster company. Segunda Edicin.

[3] RAFAEL PALACIOS. Curso Rpido de Matlab. Universidad Pontificia Comillas.


Diciembre 2004.

[4] HERON MORALES MARCHENA. Matlab 7 Mtodos Numricos y visualizacin


Grfica. Grupo Editorial MegaByte. Primera Edicion Marzo 2005.

CARDENAS ALARCON, Max Junior Pa gina 115

You might also like