You are on page 1of 46

Ing. HENRRY R.

OCHOA LEON
ESPECIALISTA EN PROGRAMACIÓN DE SOFTWARE DE INGENIERÍA
Henry_ol_iq@hotmail.com

2018
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Capítulo I

¿QUÉ ES MATLAB?

MATLAB = 'MATrix LABoratory' (LABORATORIO DE MATRICES).

MATLAB es un medio computacional técnico, con un gran desempeño para el cálculo numérico
computacional y de visualización. MATLAB integra análisis numérico, matrices, procesamiento
de señales y gráficas, todo esto en un ambiente donde los problemas y soluciones son
expresados tal como se escriben matemáticamente.
MATLAB fue escrito originalmente en fortran, actualmente está escrito en lenguaje C. MATLAB
es un lenguaje de programación amigable al usuario con características más avanzadas y mucho
más fáciles de usar que los lenguajes de programación como Basic, pascal o C. Al arrancar
MATLAB se abre una ventana del tipo de la indicada en la Figura 1 Ésta es la vista que se obtiene
eligiendo la opción Desktop Layout/Default, en el menú View.
Como esta configuración puede ser cambiada fácilmente por el usuario, es posible que en
muchos casos concretos lo que aparezca sea muy diferente. En cualquier caso, una vista similar
se puede conseguir con el citado comando View/Desktop Layout/Default.

Figura 1
La parte más importante de la ventana inicial es la Command Window, que aparece en la parte
derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB, a continuación
del prompt (aviso) característico (>>), que indica que el programa está preparado para recibir
instrucciones. En la pantalla mostrada en la Figura 1 se ha ejecutado el comando A=magic(4),
mostrándose a continuación el resultado proporcionado por MATLAB.

En la parte superior izquierda de la pantalla aparecen dos ventanas también muy útiles: en la
parte superior aparece la ventana Current Directory, que se puede alternar con Workspace
clicando en la pestaña correspondiente. Current Directory muestra los ficheros del directorio
activo o actual. El Workspace contiene información sobre todas las variables que se hayan
definido en esta sesión.

En la parte inferior derecha aparecen otra ventana, Command History. La ventana Command
History muestra los últimos comandos ejecutados en la Command Window. Estos comandos se

2
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
pueden volver a ejecutar haciendo doble clic sobre ellos. Clicando sobre un comando con el
botón derecho del ratón se muestra un menú contextual con las posibilidades disponibles en
ese momento. Para editar uno de estos comandos hay que copiarlo antes a la Command
Window.

A diferencia de versiones anteriores de MATLAB en que el directorio activo se debía cambiar


desde la Command Window, a partir de la versión 6.0 se puede cambiar desde la propia ventana
(o desde la barra de herramientas, debajo de la barra de menús) con los métodos de navegación
de directorios propios de Windows. Clicando dos veces sobre uno de los ficheros *.m del
directorio activo se abre el editor de ficheros de MATLAB, herramienta fundamental para la
programación.

GENERALIDADES
Manejo de variables:
En MATLAB como en cualquier otro lenguaje de programación, y/o asistente matemático se
utilizan variables. Las variables deben tener un nombre según ciertas reglas. Estas reglas son:
 NO pueden comenzar con un número, aunque si pueden tener números (variable1 es
un nombre válido).
 Las mayúsculas y minúsculas se diferencian en los nombres de variables. (A y a son dos
variables diferentes)
 Los nombres de variables no pueden contener operadores ni puntos. (No es válido usar
/, *, -, +, ...)
 Si se trabaja con complejos sólo puede utilizarse un de los nombres i y/o j para variables.
 No es necesario definir el tipo de variable o tamaño (si se usa un vector y después se
expande, no hay problema)
 Para el uso de una variable no es necesario declarar sus nombres, en la siguiente tabla
se presenta las variables predefinidas que posee Matlab.

Nombre de la variable Significado


Pi π
Inf ∞
Eps 1.0000e-006
NaN No es número
Realmin Menor número2-1022
Realmax Mayor número (2-e)21023
Manejo de expresiones:
Una expresión en MATLAB, puede ser:
 Una variable o un número. (ej: variable1, x, 3, 22.3)
 Un comando aplicado. (ej: norm(A), sin(2*pi) )
 Una expresión matemática. (ej: 2+3*variab1^ 4.5)

Si cualquiera de las anteriores se escribe en la línea de comandos (>> ) del MATLAB, él devolverá
el nombre de la variable y su valor (en caso de que la expresión tenga nombre, de no tenerlo,
MATLAB devolverá ans = resultado). Un punto importante que se debe resaltar es que esto
ocurre siempre y cuando la expresión no termine con punto y coma. Al añadir un punto y coma
al final de la expresión MATLAB no imprime su valor en la pantalla, aunque si realiza el cálculo.
(a=3+2; deja en a el valor de 5, pero no lo muestra).

Manejo de comandos:

3
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Cada comando en MATLAB es un archivo con extensión .m, por lo tanto es necesario tener las
librerías en que se encuentran los comandos que se desean utilizar. Aunque la gran mayoría de
los comandos utilizados siempre vienen incluidos en las librerías.
MATLAB NO distingue entre mayúsculas y minúsculas en los comandos (a menos que se trabaje
en Unix). El resto de esta presentación trata cada comando en detalle (los más usados).

COMANDOS DE MATLAB
Comandos globales
o Para salir de MATLAB, use quit o exit.
o El comando clc despeja la ventana de comandos.
o El comando clf borra la figura actual despejando la ventana de gráficos.
o El comando clear tiene varias formas posibles:
clear sin argumentos, clear elimina todas las variables creadas previamente (excepto las
variables globales).
clear A, b borra las variables indicadas.
clear global borra las variables globales.
clear functions borra las funciones.
clear all borra todas las variables, incluyendo las globales, y las funciones.
o El “;” al final de la instrucción omite el “eco” o salida a la pantalla.
o Guardar variable save.
o Recuperar variable guardada load.

Formatos Numéricos

Comando MATLAB Exhibición Ejemplo


format short Por omisión 2.3333
format short e 4 decimales 2.3333e+000
format long 14 decimales 2.33333333333333
format long e 15 decimales 2.333333333333334e+000
format bank 2 decimales 2.33
format rat fracción 2/5

Comandos de Operaciones Aritméticas

ESCALAR MATRIZ VECTOR DESCRIPCIÓN


+ + + Adición
- - - Sustracción
* * .* Multiplicación
/ / ./ División hacia la derecha
\ \ \. División hacia la izquierda
^ ‘ .’ Transposición

Comandos de Operadores Relacionales

OPERADOR DESCRIPCIÓN
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== Igual

4
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
~= no igual

Comandos de Operadores Lógicos

OPERADOR DESCRIPCIÓN
& Y (and)
| O (or)
~ NO (not)

Caracteres Especiales:

Caracteres Descripción
[] Se utilizan para formar vectores y matrices
() Define precedencia en expresiones aritméticas. Encierra argumentos de
funciones en forma usual
, Separador de elementos de una matriz, argumentos de funciones y
declaraciones en líneas con declaraciones múltiples
; Separador de declaraciones, termina renglones de una matriz

Funciones Matemáticas Elementales que Operan de Modo Escalar


Matlab ofrece un sinnúmero de funciones las que acepta como argumentos variables reales y/o
complejos sin discriminación, así como con argumentos matriciales.

Funciones Trigonométricas

Función Descripción
sin(x) Senos de x.
asin(x) Arco seno de x.
sinh(x) Seno hiperbólico de x.
asính(x) Arco seno hiperbólico x.

cos(x) Coseno de x.
acos (x) Arco coseno de x.
cosh(x) Coseno hiperbólico de x.
acosh(x) Arco coseno hiperbólico de x.
tan(x) Tangente de x.
atan(x) Arco tangente de x.
tanh(x) Tangente hiperbólico de x.
atanh(x) Arco tangente hiperbólico de x.
cot(x) Cotangente de x.
sec(x) Secante de x.
csc(x) Cosecante de x.
Funciones Que Realizan Tareas

5
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Función Descripción
abs(x) Valor absoluto de x.
sqrt(x) Raíz cuadrada de x.
real(x) Parte real del número complejo x.
imag(x) Parte imaginaria del número complejo x.
sign(x) Función signo de x.
exp(x)
log(x) Logaritmo natural.
log10(x) Logaritmo decimal.
num2str(x) Convierte en cadena el número x.
str2double(x) Convierte en número real la cadena x.
rem(x,y) Resto de la división (2 argumentos que no tienen que ser enteros)
mod(x,y) Similar a rem
round(x) Redondeo hacia el entero más próximo
fix(x) Redondea hacia el entero más próximo a 0
floor(x) Valor entero más próximo hacia - 
ceil(x) Valor entero más próximo hacia + 
gcd(x) Máximo común divisor
lcm(x) Mínimo común múltiplo

Funciones Reales

Función Descripción
eval(f,x) Evalúa una función en los valores de x.
fplot(f,[a,b]) Grafica la función en el intervalo [a,b].
fzero(f,a) Calcula la raíz de la función f, partiendo del valor a.
trapz(x,f) Calcula el área de la región 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
múltiples ordenados en orden creciente.

6
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Capítulo II

MATRICES Y ARREGLOS

Arreglo: Es un conjunto de números, ordenados en filas y columnas.


Arreglos unidimensionales: Es un conjunto de números, ordenados en una sola fila o
columna.
Arreglos bidimensionales: Es un conjunto de números, ordenados en filas y columnas,
teniendo para ello más de una.

Matriz: Es un arreglo rectangular de números (reales o complejos) ordenados en filas y


columnas.
a11 a12 …………………………… a1n
a21 a21……………………………….. a2n
A= …………..…………………………
am1 am2 ……………… amn

En su forma simplificada lo escribiremos como: A= (aij) y los números aij constituyen los
elementos de la matriz A.
Si una matriz tiene solo una columna, se denomina matriz columna, y si posee solo una fila se
denomina matriz fila.

TIPOS DE MATRICES PREDEFINIDOS

eye(4) Forma la matriz unidad de tamaño (4x4)


zeros(3,5) Forma una matriz de ceros de tamaño (3x5)
ones(3) Forma una matriz de unos de tamaño (3x3)
linspace(x1,x2,n) Genera un vector con n valores igualmente espaciados entre x1 y x2
rand(3) Forma una matriz de números aleatorios entre 0 y 1, con distribución
uniforme, de tamaño (3x3)
rand(2,5) Idem de tamaño (2x5)
randn(4) Forma una matriz de números aleatorios de tamaño (4x4), con distribución
normal, de valor medio 0 y varianza 1.
magic(4) Crea una matriz (4x4) con los números 1, 2,... 4*4, con la propiedad de que
todas las filas y columnas suman lo mismo.

FUNCIONES MATRICIALES ELEMENTALES

B = A' Calcula la traspuesta (conjugada) de la matriz A


t = trace(A) Devuelve la traza t (suma de los elementos de la diagonal) de una matriz
cuadrada A
[m,n] = size(A) Devuelve el número de filas m y de columnas n de una matriz rectangular A
n = size(A) Devuelve el número de filas de A
nf = size(A,1) Idem de tamaño (2x5)
nc = size(A,2) Devuelve el número de columnas de A
det(A) Sirve para calcular el determinante de la matriz A.
inv(A) Sirve para invertir la matriz A.

7
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

APLICACIÓN DE MATRICES

DEFINICIÓN DE UNA MATRIZ


MATLAB trabaja esencialmente con matrices numéricas rectangulares. La manera más fácil de
ingresar matrices es enumerando los elementos de ésta de tal manera que:
 Para obtener una columna, los elementos deben estar separados por espacios en blanco
ó comas.
 Para obtener una fila, se coloca punto y coma “;” al final de ingresar los elementos.
 Los elementos están cerrados entre corchetes, [ ].

TRANSPOSICIÓN DE UNA MATRIZ


El carácter “ ' ” (apóstrofe) denota la matriz transpuesta. Si tenemos la matriz A y llamamos b =
A', b es la matriz transpuesta de A.

8
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
SUBMATRICES
Generación de una submatriz a partir de una matriz dada.

3:4 nos indica la tercera y cuarta fila completa de la submatriz A.


1:3 nos indica, desde la primera hasta la tercera columna completa de la submatriz A.

Submatriz formada por los elementos que están en todas las filas que hay entre la segunda y la
tercera fila en las columnas primera y tercera.

ASIGNACIÓN DE UNA MATRIZ


A los elementos de una matriz se accede sin más que escribir el nombre de la matriz y, entre
paréntesis, los respectivos índices:

También se puede acceder a una fila o columna completas

Podemos acceder a la matriz como si fuera una columna,

MATRICES ESPECIALES
En MATLAB podemos generar matrices especiales con las siguientes instrucciones:

FUNCIONES DE MATRICES

Diag
Nos permite hallar la diagonal de una matriz

9
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Tril
Matriz formada por la parte triangular inferior de A

Triu
Matriz formada por la parte triangular superior de A

Sum(matriz)
Realiza la suma de todas las filas con su respectiva columna

prod(matriz)
Realiza el producto de todas las filas con su respectiva columna

10
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

min
Muestra los valores mínimos de los elementos que se encuentran en la matriz.

max
Muestra los valores máximos de los elementos que se encuentran en la matriz.

inv
Sirve para invertir una matriz (matriz cuadrada), la sintaxis de la orden es:
matriz1 = inv(matriz2);
matriz2: Es la matriz que se desea invertir
matriz1: Se almacena la matriz inversa de la matriz 2.

Det
Sirve para calcular el determinante de una matriz. La sintaxis de la orden es: Valor=det(Matriz)
Matriz: Es la matriz (cuadrada) a la que se le desea calcular el determinante.
Valor: Es donde se almacena el valor del determinante.

11
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
FUNCIONES QUE ACTÚAN SOBRE VECTORES

Las siguientes funciones actúan sobre vectores (no sobre matrices ni sobre escalares)
[xm,im]=max(x) Máximo elemento de un vector. Devuelve el valor máximo xm y la
posición que ocupa im
min(x) Mínimo elemento de un vector. Devuelve el valor mínimo y la posición
que ocupa
sum(x) Suma de los elementos de un vector
cumsum(x) Devuelve el vector suma acumulativa de los elementos de un
vector(cada elemento del resultado es una suma de elementos del
original)
mean(x) Valor medio de los elementos de un vector
std(x) Desviación típica
prod(x) Producto de los elementos de un vector
cumprod(x) Devuelve el vector producto acumulativo de los elementos de un vector
[y,i]=sort(x) Ordenación de menor a mayor de los elementos de un vector x.
Devuelve el vector ordenado y, y un vector i con las posiciones iniciales
en x de los elementos en el vector ordenado y.
l = length (x) Determina el número de componentes de un vector.

ASIGNACIÓN DE UN VECTOR DE COORDENADAS

Si queremos declarar un vector de coordenadas equiespaciadas entre dos valores dados.

No necesariamente se tiene que incrementar por números enteros, pueden ser decimales,
números negativos ó constantes

Equivalentemente, si lo que conocemos del vector es que la primera coordenada vale 0, la última
10 y que tiene 6 elementos en total, escribiremos:

Otra forma de asignar valores a un vector es por medio de los subíndices. El menor subíndice
utilizado por MATLAB es 1, y va añadiendo valores a medida que se requieran. Los subíndices se
escriben entre paréntesis.

12
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Si se desea cambiar todo el valor de una fila o una columna, se utiliza el operador “:”:

SUBVECTORES
Se pueden extraer subvectores:

POLINOMIOS
Los polinomios en MATLAB se representan como vectores fila, conteniendo todos los
coeficientes en orden decreciente, incluyendo ceros. Por ejemplo, el polinomio

en Matlab debemos ingresar a p de la siguiente manera


>> p = [8 - 5 1 3 4 ]
p=8-5134

Observe que Matlab al responder no reescribe los corchetes. De ahora en adelante utilizaremos
los términos vector y polinomio indistintamente para referirnos al mismo concepto.

FUNCIONES PARA CÁLCULOS CON POLINOMIOS

roots(pol) Raíces del polinomio pol.


polyval(pol,x) Evaluación del polinomio pol para el valor de x. Si x es un vector, pol se
evalúa para cada elemento de x.
conv(p1,p2) Producto de convolución de dos polinomios p1 y p2.
[c,r]=deconv(p,q) División del polinomio p por el polinomio q. En c se devuelve el cociente y
en r el resto de la división.
residue(p1,p2) Descompone el cociente entre p1 y p2 en suma de fracciones simples.
polyder(pol) Calcula la derivada de producto de polinomios.
polyder(p1,p2) Producto de los elementos de un vector

13
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Capítulo III

GRÁFICAS CON MATLAB

FUNCIONES GRÁFICAS 2D ELEMENTALES


Matlab ofrece una gama amplia de opciones a la hora de realizar representaciones graficas.
Permite realizar graficas de curvas planas y superficies, posibilitando la agrupación y
superposición de ellos.

GRAFICAS EN EL PLANO
Con Matlab es sencillo crear objetos gráficos e incluso artísticos mediante expresiones
matemáticas a través de los siguientes comandos.

Comandos descripción
plot(x,y) Dibuja el conjunto de puntos (x,y) en un sistema cartesiano.
bar(x,y) Grafico de barras vertical, donde y representa las frecuencias y x
define los espacios en el eje x.
barh(x,y) Grafico de barras vertical, donde x representa las frecuencias y y
define los espacios en el eje y.
stem(x,y) Grafico de bastones vertical, donde y representa las frecuencias y x
define los espacios en el eje x.
stairs(x,y) Grafica una curva escalonada.
polar(x,y) Dibuja una curva en coordenadas polares, y=y(x).
pie(x,y) Realiza el grafico de sectores relativo al vector x.
rose(x,y) Dibuja la histograma angular relativo al vector y.

ETIQUETAS EN LAS GRAFICAS DE MATLAB.


Matlab presenta funciones para colocar textos, etiquetas en los ejes coordenados, colocar titulo
y efectuar un subrayado a los ejes, a continuación se presentan estas funciones:

title('título') Añade un título al dibujo


xlabel('tal') Añade una etiqueta al eje de abscisas. Con xlabel off desaparece
ylabel('cual') Añade una etiqueta al eje de ordenadas. Con ylabel off desaparece
text(x,y,'texto') Introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x
e y son vectores, el texto se repite por cada par de elementos. Si texto
es también un vector de cadenas de texto de la misma dimensión, cada
elemento se escribe en las coordenadas correspondientes.
gtext('texto') Introduce texto con ayuda del ratón: el cursor cambia de forma y se
espera un clic para introducir el texto en esa posición.
legend(‘rotulo’) Define rótulos para las distintas líneas o ejes utilizados en la figura.
grid Activa la inclusión de una cuadrícula en el dibujo. Con grid off
desaparece la cuadrícula.
El comando plot puede utilizarse también con matrices como
argumentos.

GRAFICO DE MÚLTIPLES CURVAS


Matlab provee con la opción plot para realizar simultáneamente la grafica de más de una curva,
estableciendo por efecto 2 colores distintos.
plot(x,y,x,z);

14
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

ESTILOS DE LÍNEA Y MARCADORES EN LA FUNCIÓN PLOT


Matlab permite realizar graficas de funciones utilizando diferentes caracteres, en la siguiente
tabla se presenta las siguientes opciones.

Ejemplos
1

0.8
line;
0.6
x=-1:0.1:5;
0.4 y=sin(x.^2);
0.2 plot(x,y);
0

-0.2

-0.4

-0.6

-0.8

-1
-1 0 1 2 3 4 5

0.9

0.8

0.7

0.6
bar
x=-3:0.2:3;
0.5
y=exp(-x.^2);
0.4
bar(x,y);
0.3

0.2

0.1

0
-4 -3 -2 -1 0 1 2 3 4

15
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
4

barh
2
x=-3:0.2:3;
1 y=cos(x.^3)-2.*x+1;
0 barh(x,y);
-1

-2

-3

-4
-6 -4 -2 0 2 4 6 8

0.8

0.6
Stairs
0.4
x=0:0.2:10;
0.2 y=sin(x);
0 stairs(x,y);
-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10

90
0.5
120 60
0.4

0.3
polar
150 30 t=0:0.1:2*pi;
0.2
y=abs(sin(2*t).*cos(2*t));
0.1
polar(t,y);
180 0

210 330

240 300
270
4%

12%

Pie
36% x=1:2:9;
pie(x)

20%

28%

16
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
90 2
120 60
1.5
Rose
1
150 30
x=[1 3 6 2 7 1 5 12];
0.5 rose(x);
180 0

210 330

240 300
270
1

0.8
x=0:0.05:5;
0.6
y=sin(x);
0.4
z=cos(x);
0.2
plot(x,y,x,z);
0

-0.2

-0.4

-0.6

-0.8

-1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Observacion: Después de haber graficado una o mas curvas, se puede incrementar una curva en
los mismos ejes precediendo el comando.
hold on, al uso del ultimo plot.
1
x=0:0.05:5;
0.5
y=sin(x);
z=cos(x);
0 plot(x,y,x,z);
hold on
-0.5
w=abs(x-2)-2;
plot(x,w,'g');
-1
grid
-1.5

-2
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Grafica con Matlab 7


5
x=-2:0.05:5;
0
y=-x.^2+sin(x);
-5
y=-x. 2+sin(x) plot(x,y);
text(2.7,-4,'y=-x.^2+sin(x)');
-10
title('Grafica con Matlab 7');
y

-15 xlabel('x');
ylabel('y');
-20
grid
-25

-30
-2 -1 0 1 2 3 4 5
x

17
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
GRAFICAS CON MÚLTIPLES EJES
Matlab permite construir múltiples ejes en una sola pantalla en la cual se elaboran múltiples
gráficas.

COMANDO SUBPLOT
Una ventana gráfica se puede dividir en m particiones horizontales y n verticales, con
objeto de representar múltiples gráficos en ella. Cada una de estas sub. Ventanas tiene
sus propios ejes, aunque otras propiedades son comunes a toda la figura. La forma
general de este comando es:
subplot(m,n,i) donde m y n son el número de subdivisiones en filas y columnas, e i es la
subdivisión que se convierte en activa. Las subdivisiones se numeran consecutivamente
empezando por las de la primera fila, siguiendo por las de la segunda, etc. Por ejemplo,
la siguiente secuencia de comandos genera cuatro gráficos en la misma ventana:
subplot(F,C,N)
FILAS, COLUNMAS Y UBICACIÓN
x=pi/2:pi/16:8*pi;
y=sin(x); z=cos(x); w=exp(-x*.1).*y; v=y.*z;
subplot(2,2,1), plot(x,y)
subplot(2,2,2), plot(x,z)
subplot(2,2,3), plot(x,w)
subplot(2,2,4), plot(x,v)

1 1

0.5 0.5

0 0

-0.5 -0.5

-1 -1
0 10 20 30 0 10 20 30

1 0.5

0.5
0
0
-0.5
-0.5

-1 -1
0 10 20 30 0 10 20 30

GRÁFICAS ESPECIALES EN EL PLANO


Matlab dispone de un grupo de comandos para presentar formas geométricas especiales en dos
dimensiones, estos se describen en la siguiente tabla.

Comandos Descripción
compass(x,y) Dibuja un conjunto de flechas con origen en (0,0) y cuya
magnitud y dirección vienen determinadas por el modulo de z,
(z=x+iy).
feather(x,y) Dibuja un conjunto de flechas con origen en el eje X, y cuya
magnitud y dirección vienen determinadas por el modulo de Y.
fpolt('f',[a,b]) Grafica la función f en el intervalo [a,b].
ezplot('f',[a,b]) Grafica la función f en el intervalo [a,b], adicionándole el titulo
por defecto.
loglog(x,y) Realiza una grafica cartesiana con escala logarítmica en los ejes
coordenados.
semilogx(x,y) Realiza una grafica cartesiana con escala logarítmica en el eje
X y escala normal en el eje Y.

18
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
semilogy(x,y) Realiza una grafica cartesiana con escala logarítmica en el eje
Y y escala normal en el eje X.
fill(x,y,c) Dibuja una región poligonal cuyos vértices son los elementos
de los vectores columna x, y; el parámetro c contiene el color a
graficar.

90
5
120 60
4 Compass:
150
3
30
x=-pi:0.8:pi;
2
y=3-sin(x);
1
compass(x,y);
180 0

210 330

240 300
270

3.5
Feather:
3
x=-pi:0.8:pi;
2.5 y=3-sin(x);
2 feather(x,y);
1.5

0.5

0
-4 -2 0 2 4 6 8 10 12

y=cos(x)
1

0.8 fplot;
0.6 fplot('cos(x)',[-3,3]);
0.4

0.2

0
y

-0.2

-0.4

-0.6

-0.8

-1
-3 -2 -1 0 1 2 3
x

4-abs(x)

4 ezplot;
3.5 ezplot('4-abs(x)',[-3,3]);
3

2.5
y

1.5

-3 -2 -1 0 1 2 3
x

19
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

1.054
Loglog:
10
x=1:0.2:10;
1.052
10
y=11+exp(-x.^2);
10
1.05
loglog(x,y);
y

1.048
10

1.046
10

1.044
10

1.042
10
0 1
10 10
x

0.8
Fill:
0.6
x=1:0.2:10;
0.4
y=cos(x);
0.2
fill (x,y, 'm');
0
y

-0.2

-0.4

-0.6

-0.8

-1
1 2 3 4 5 6 7 8 9 10
x

GRÁFICOS TRIDIMENSIONALES
Quizás sea ésta una de las características de MATLAB que más admiración despierta entre los
usuarios no técnicos (cualquier alumno de ingeniería sabe que hay ciertas operaciones
algebraicas – como la descomposición de valor singular, sin ir más lejos que tienen dificultades
muy superiores, aunque "luzcan" menos).
GRAFICA DE SUPERFICIES
Matlab permite realizar graficos en tres dimensiones tanto de líneas como de superficies,
siendo sencillo crear objetos graficos a través de los siguientes comandos.

Comandos Descripción
plot3(x,y,z)Dibuja el conjunto de puntos (x,y,z) en un sistema de tres dimensiones.
Dibuja una región poligonal cuyos vértices son los elementos de los vectores
fill3(x,y,z,c)
columna x, y, z. el parámetro c contiene el color a graficar.
Crea arreglos bidimensionales a partir de los arreglos x e y, para elaborar la grafica
meshgrid(x,y)
de una superficie explicita z = f(x,y).
mesh(x,y,z) Grafica una superficie explicita z - f(x,y) con los arreglos x, ye z.
Grafica superficie explicita z - f(x,y) con los arreglos x, y e z; proyectando las curvas
meshc(x,y,z)
de nivel enel plano xy.
Grafica una superficie explicita z - f(x,y) con los arreglos x, ye z; cerrando la grafica
meshz(x,y,z)
con las fronteras del dominio.
Grafica una superficie explicita z - f(x,y) con los arreglos x, ye z; pintando cada una
surf(x,y,z)
de las celdas.
Grafica superficie explicita z - f(x,y) con los arreglos x, y e z; proyectando las curvas
surfc(x,y,z)
de nivel en el plano xy.
Grafica una superficie explicita z = f(x,y) con los arreglos x,ye z; considerando una
surfl(x,y,z)
iluminación en formato básico.
waterfall(x,y,z) Grafica una superficie explicita z = f(x,y) en forma de cascada.
contour(x,y,z) Grafica las curvas de nivel de la superficie explicita z = f(x,y).

20
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
A continuación se presentan gráficos con tres dimensiones haciendo uso de los comandos
descritos anteriormente.

Plot3:
1
t=-6:0.2:8;
0.5 x=t;
y=3-t;
0
z=cos(t);
-0.5 plot3(x,y,z);
gris
-1
10
10
5
5
0 0
-5
-5 -10

fill3:
1 t=-6:0.2:8;
x=t;
0.5 y=3-t;
z=cos(t);
0
c=[1 0.8 0.1];
-0.5 fill3(x,y,z,c);
grid
-1
10
10
5
5
0 0
-5
-5 -10

Observación.-En los siguientes gráficos simplificaremos el código de la programación:


[x,y]=meshgrid(-2:0.2:2) en reemplazo de:
xa=-2:0.2:2; ya= -2:0.2:2; [x,y]=meshgrid(xa,ya);

z=x.*exp(-x. 2-y. 2)

mesh:
[x,y]=meshgrid(-2:0.2:2);
0.5
z=x.*exp(-x.^2-y.^2);
mesh(x,y,z)
title('z=x.*exp(-x.^2-y.^2)');
0 xlabel('x');ylabel('y');zlabel('z');
z

-0.5
2
1 2
0 1
0
-1 -1
y -2 -2
x

21
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
z=x. 2+y. 2 meshc:
[x,y]=meshgrid(-2:0.2:2);
z=x.^2+y.^2;
8 meshc(x,y,z)
title('z=x.^2+y.^2');
6 xlabel('x');ylabel('y');zlabel('z ');
4
z

0
2
1 2
0 1
0
-1 -1
y -2 -2
x

z=x. 2-y. 2-9

meshz:
[x,y]=meshgrid(-3:0.2:3);
0 z=x.^2-y.^2-9;
meshz(x,y,z)
-5
title('z=x.^2-y.^2-9');
xlabel('x');ylabel('y');zlabel('z');
-10
z

-15

-20
4
2 4
0 2
0
-2 -2
y -4 -4
x

z=sin(x. 2+y. 2)

surf:
[x,y]=meshgrid(-1.5:0.2:1.5);
1 z=sin(x.^2+y.^2);
surf(x,y,z)
0.5
title('z=sin(x.^2+y.^2)');
0
xlabel('x');ylabel('y');zlabel('z');
z

-0.5

-1
2
1 2
0 1
0
-1 -1
y -2 -2
x

22
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
z=-x+y. 2

surfc:
[x,y]=meshgrid(-5:0.2:5);
30 z=-x+y.^2;
surfc(x,y,z)
20
title('z=-x+y.^2');
10
xlabel('x');ylabel('y');zlabel('z');
z

-10
5
5
0
0

y -5 -5
x

z=sin(sqrt(x. 2+y. 2))./(sqrt(x. 2+y. 2)) surfl:


[x,y]=meshgrid(-7.5:0.5:7.5);
z=sin(sqrt(x.^2+y.^2))./(sqrt(x.^
1 2+y.^2));}
surfl(x,y,z)
0.5 title('z=sin(sqrt(x.^2+y.^2))./(sq
rt(x.^2+y.^2))');
z

0
xlabel('x');ylabel('y');zlabel('z');

-0.5
10
5 10
0 5
0
-5 -5
y -10 -10
x

Observacion:En la orden surfl(x,y,z), es el parámetro s es un vector direccional de iluminación


cuyo angulo en perspectiva es medida en grados.

z=sin(x)+cos(y) waterfall:
[x,y]=meshgrid(-3:0.2:3);
z=sin(x)+cos(y);
2 waterfall(x,y,z)
title('z=sin(x)+cos(y)');
1 xlabel('x');ylabel('y');zlabel('z');
0
z

-1

-2
4
2 4
0 2
0
-2 -2
y -4 -4
x

23
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
z=x.*exp(-x. 2-y. 2) contour:
2
[x,y]=meshgrid(-2:0.2:2);
1.5 z=x.*exp(-x.^2-y.^2);
contour(x,y,z)
1
title('z=x.*exp(-x.^2-y.^2)');
0.5 xlabel('x');ylabel('y');zlabel('z');

0
y

-0.5

-1

-1.5

-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x

z=-x. 2-y. 2+8 contour3:


[x,y]=meshgrid(-4:0.2:4);
z=-x.^2-y.^2+8;
10
contour3(x,y,z,20)
0 title('z=-x.^2-y.^2+8');
xlabel('x');ylabel('y');zlabel('z');
-10
z

-20

-30
4
2 4
0 2
0
-2 -2
y -4 -4
x

Observaciones:
El parámetro m de contour (x,y,z,m) o de contour3(x,y,z,m),indica el numero de niveles de
contorno a graficar.
El comando contour puede ser usado para graficar una función implícita.
Por ejemplo y3 +exp(y)=tanh(x)
Luego graficamos el contorno de uj solo nivel que corresponde a f=0.

y.3+exp(y)-tanh(x)
3

2
[x,y]=meshgrid(-3:0.2:3);
f=y.^3+exp(y)-tanh(x);
1
contour(x,y,f,[0,0])
xlabel('x');ylabel('y');
0
y

-1

-2

-3
-3 -2 -1 0 1 2 3
x

GRAFICA ESPECIALES

24
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Línea diagrama de un chirrido (Línea plot of a chirp)
Line plot a chirp
1
x =0:0.05:5;
0.8
y=sin(x.^2);
0.6
plot(x,y);
0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Los diagramas de la barra de una campana formaron la curva (Bar plot pf a bell shaped curve)
1
x=-2.9:0.2:2.9;
0.9
bar(x,exp(-x.*x));
0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-3 -2 -1 0 1 2 3

Diagrama del Escalón de una onda del seno (Stairstep plot of a sirve wave)
1

0.8
x=0:0.25:10;
0.6
stairs(x,sin(x));
0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10

Diagrama de Errorbar (Errorbar plot)


1.5 x=-2:0.1:2;
y=erf(x);
1
e=rand(size(x))/10;
0.5
errorbar(x,y,e);

-0.5

-1

-1.5
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5

25
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
90
0.5
120 60
0.4

0.3 t=0:0.01:2*pi;
150 30
0.2 r=sin(2*t).*cos(2*t);
0.1 polar(t,r)
180 0

210 330

240 300
270

Diagrama del vástago (Stem plot)


0.35

0.3
x=0:0.1:4;
0.25
y=sin (x.^2).*exp(-x);
0.2

0.15
stem(x,y)
0.1

0.05

-0.05

-0.1

-0.15
0 0.5 1 1.5 2 2.5 3 3.5 4

Diagramas de XYZ en MATLAB. Aquí están algunos ejemplos de los diagramas superficiales
en MATLAB.
Diagrama del acoplamiento del pico (Mesh Plot of Peak)

10
z=peaks (25);
5 mesh (z);
0
colormap (hsv)

-5

-10
30
25
20
20
15
10 10
5
0 0

Diagrama superficial de picos (Surface Plot of Peaks)

z=peaks(25);
surf(z);
10
colormap(jet);
5

-5

-10
30
25
20
20
15
10 10
5
0 0

Diagrama superficial (con sombra) de picos (Surface Plot (with Shading) of Peaks)

26
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
z=peaks(25);
10
surfl(z);
shading interp;
5
colormap(pink);
0

-5

-10
30
25
20
20
15
10 10
5
0 0

Diagrama del contorno de picos (Contour Plot of Peaks)


25
z=peaks (25);
contour (z,16);
20
colormap (hsv)

15

10

5 10 15 20 25

Temblor (Quiver)
1.5
x=-2:.2:2;
1
y=-1:.2:1;
[xx,yy]=meshgrid(x,y);
0.5 zz=xx.*exp(-xx.^2-yy.^2);
[px,py]=gradient(zz,.2,.2)
0 ;
quiver(x,y,px,py,2);
-0.5

-1

-1.5
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Rebanada (Slice)

[x,y,z]=meshgrid (-2:.2:2,-
20 2:.2:2,-2:.2:2);
v=x.*exp (-x.^2-y.^2-
15
z.^2);
10 slice (v,[5 15 21],21,[1
10])
5
axis ([0 21 0 21 0 21]);
0 colormap(jet)
20
15 20
10 15
10
5 5
0 0

Capítulo IV

27
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
LIMITES, DERIVACIÓN E INTEGRACIÓN
Límites utilizando Matlab

El límite de una función real de variable real en un punto sólo requiere la declaración de la
variable en uso como simbólica con syms y la orden limit a continuación.

syms x

limit (f, x, x0) Se calcula lim f(x)


x→xo
limit (f, x, x0, ‘right’) Se calcula el límite lateral lim +f(x) por la derecha.
x→xo
limit (f, x, x0, ‘left’) Se calcula el límite lateral lim −f(x) por la izquierda
x→xo

Derivadas utilizando Matlab


Dada una función simbólica, MATLAB nos permite encontrar la función derivada de cualquier
orden, y evaluarla si fuera necesario.
Esta operación, se hace de forma simbólica utilizando el comando diff(…….), pero hay que
resaltar que no actúa sobre funciones definidas inline, sólo lo hace sobre expresiones simbólicas
en sí mismas.

diff (' f ', 'x', n) calcula la derivada de f respecto de x de orden n, sin declaración previa
de variables
syms x calcula la derivada de f respecto de x de orden n, con declaración
diff (f , x , n) previa variable simbólica

Integral de una función real utilizando Matlab


Dada una función simbólica, MATLAB nos permite encontrar la familia de primitivas o la integral
definida, entre otras muchas utilidades que nos ofrece.
Esta operación, se hace de forma simbólica utilizando el comando int(…….), pero hay que
resaltar que no actúa sobre funciones definidas inline, sólo lo hace sobre expresiones simbólicas
en sí mismas.

int (' f ', 'x', n) calcula la ∫ 𝑓(𝑥)𝑑𝑥, SIN declaración previa de variables
int (‘f’, ‘x’, a, b) 𝑏
calcula la ∫𝑎 𝑓(𝑥)𝑑𝑥 , SIN declaración previa de variables
syms x , int ( f , x) calcula la ∫ 𝑓(𝑥)𝑑𝑥, CON declaración precia de la variable simbólica
syms x , int (f, x, a, b) 𝑏
calcula la ∫𝑎 𝑓(𝑥)𝑑𝑥 , CON declaración precia de la variable simbólica

Comandos Aplicados a Derivadas e Integrales


simplify(f) Se simplifica la deriva a la mínima expresión
pretty(f) Imprime la función de una forma fácil de observar

Aplicaciones

28
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
1) Aplicación de Limites

Solución
syms x
y=(x^2-3)/(3*x^5+5*x)
l=limit(y,x,3)
l=1/124

Solución
syms x
y=(exp(x)-1)/log10(1+x)
l=limit(y,x,0)
l=log(2)+log(5)

2) Aplicación de Derivadas

Calcular la primera deriva de y(x)


y(x)=4.x.sen(x)

Solución
syms x
y=4*x*sin(x)
k=diff(y)
k=4*sin(x)+4*x*cos(x)

Calcular la tercera derivada de f(x)


f(x)= 4.x.sen(x)+ln(x).x5

Solución
syms x
F=4*x*sin(x)+log(x)*x^5
M=diff(F,3)
S=simplify(M)
pretty(M)
M =-12*sin(x)-4*x*cos(x)+47*x^2+60*log(x)*x^2
S =-12*sin(x)-4*x*cos(x)+47*x^2+60*log(x)*x^2

Solución de otra manera


f(x)= 4.x.sen(x)+x5+ x2

Solución
F='4*x*sin(x)+x^5+x^2'
M=diff(F,3)
S=simplify(M)
29
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
pretty(M)
M =-12*sin(x)-4*x*cos(x)+60*x^2
S =-12*sin(x)-4*x*cos(x)+60*x^2

Calcular la tercera derivada parcial de f(x)

f(x)=4.y2.sin(x)+x5+y3*x3

Solución
F='4*y^2*sin(x)+x^5+y^3*x^3'
M=diff(F,'x',3)
S=simplify(M)
pretty(M)
M =-4*y^2*cos(x)+60*x^2+6*y^3

3) aplicación de integración

Solución
syms x
y=x/(x^2+1)
I=int(y)
pretty(I)
I=1/2*log(x^2+1)

Solución
syms x
y=x/(x^2+1)
I=int(y,0,1)
I=1/2*log(2)

Capítulo V

30
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
DIAGRAMA DE FLUJOS
Definición
Un Diagrama de Flujo es una representación pictórica de los pasos en un proceso, útil para
determinar cómo funciona realmente el proceso para producir un resultado. El resultado puede
ser un producto, un servicio, información o una combinación de los tres. Al examinar cómo los
diferentes pasos en un proceso se relacionan entre sí, se puede descubrir con frecuencia las
fuentes de problemas potenciales. Los Diagramas de Flujo se pueden aplicar a cualquier aspecto
del proceso desde el flujo de materiales hasta los pasos para hacer la venta u ofrecer un
producto. Los Diagramas de Flujo detallados describen la mayoría de los pasos en un proceso.
Con frecuencia este nivel de detalle no es necesario, pero cuando se necesita, el equipo
completo normalmente desarrollará una versión de arriba hacia abajo.

Reglas Básicas
Todos los símbolos han de estar conectados.
A un símbolo de proceso pueden llegarle varias líneas.
A un símbolo de decisión pueden llegarle varias líneas, pero sólo saldrán dos.
A un símbolo de inicio nunca le llegan líneas.
De un símbolo de fin no parte ninguna línea.
Símbolo
Imagen o figura con la que se representa un concepto. Aunque hay literalmente docenas de
símbolos especializados utilizados para hacer Diagramas de Flujos, se utiliza con más
frecuencia los siguientes:

Símbolo Descripción
Inicio o fin de un diagrama

Identificación de variables, un paso o tarea del proceso, una


descripción breve del proceso.

Punto de verificación o de decisión. Este diamante indica un punto de


la rama en el proceso. La descripción está escrita dentro del símbolo,
generalmente en la forma de una pregunta. La respuesta a la pregunta
determina el camino que debe tomarse desde el símbolo de decisión.
Cada camino está identificado para que corresponda a una respuesta.
Bucles de programación for, while

Salida de datos por impresora

Líneas de conexión y dirección del flujo

Conexión o relación entre partes de un diagrama

Organigrama Genérico

INICIO
31
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

ENTRADA DE
DATOS

CONDICIÓN

PROCESO

SALIDA DE
DATOS

FIN

Aplicación de bifurcaciones y bucles


Determinar la velocidad a partir de la energía cinética

Determinar las variables de la ecuación de calor

32
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Determinar de la fuerza electroestática

Capítulo VI

33
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
PROGRAMACION EN MATLAB

Manejo de archivos con extensión .m:


Todos los comandos a que se refiere esta presentación pueden utilizarse directamente desde la
línea de comandos del MATLAB (>>). Sin embargo la idea es hacer un archivo (con extensión .m)
que contenga el programa (para poder modificarlo, revisarlo, correrlo otra vez) ya que es más
ventajoso así. Los programas no requieren in denotación como en los ejemplos que he puesto
aquí, sin embargo es recomendable hacerlo por claridad al intentar modificar el programa o
revisarlo.
Para trabajar estos archivos, es necesario saber:
 Que es: Es un archivo de texto como cualquier otro donde se encuentra el listado del
programa. (sólo que su extensión no es txt sino m)
 Como crear uno: Las formas más fáciles son:
 Como correrlo para obtener los resultados: Desde la línea de comandos de MATLAB
se escribe el nombre del archivo (sin el .m)

Ficheros *.M
Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que constituyen
el centro de la programación 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 también Debugger.
Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en inglés) y las
funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la línea 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 línea de comandos de MATLAB

Programación De Matlab Propiamente Dicho


Como ya se ha dicho varias veces incluso con algún ejemplo MATLAB es una aplicación que se
puede programar muy fácilmente. De todas formas, como lenguaje de programación 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 básicos de cualquier programa de una cierta complejidad.

Instrucciones de Entrada y Salida en la Programación

x=input(’mensaje’) Permite la introducción de datos numéricos por pantalla.


x=input(’mensaje’,[’s’]) Permite la introducción de datos por pantalla. La opción ’s’ se
emplea para leer una variable de tipo carácter (’string’), evitando los
apostrofes.

Ejemplos:
a=input(’Numero de filas: ’).
m=input(’Nombre del fichero: ’,’s’).

disp(’mensaje’) ´o Muestra un texto o una matriz de texto por pantalla


disp(’texto’)

34
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
disp(A) Muestra el valor de numérico de A
disp([A B C]) Muestra el valor de numérico de A, B y C respectivamente

Dentro de los comandos más útiles de Matlab, similares a disp se encuentran sprintf y fprintf,
que permiten la impresión de datos con formatos más complejos.

La forma de utilizarlos es la siguiente:

sprintf(‘texto %g texto2 \n’, variables )


fprintf(id, ‘texto %g texto2 \n’, variables )

Cajas box
Boxtittle =('nombre de caja');
entries={'nombre de variable1', 'nombre de variable2',…};
f=inputdlg(entries,boxtittle);
variable1=str2num(f{1});
variable2=str2num(f{2});

Bifurcaciones y bucles
MATLAB posee un lenguaje de programación que como cualquier otro lenguaje dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra
operación según se cumpla o no una determinada condición. La Figura muestra tres posibles
formas de bifurcación.

35
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos.
Mientras que en C/C++/Java el "cuerpo" de estas sentencias se determinaba mediante
llaves {...}, en MATLAB se utiliza la palabra end con análoga finalidad. Existen también
algunas otras diferencias de sintaxis.

36
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
BIFURCACIONES
SENTENCIA IF
En su forma más simple, la sentencia if se escribe en la forma siguiente (obsérvese que a
diferencia de C/C++/Java la condición no va entre paréntesis, aunque se pueden poner si se
desea):
if condición
Sentencias
end

Existe también la bifurcación múltiple, 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 % opción por defecto para cuando no se cumplan las condiciones
1,2,3
bloque4
end

Ejemplos 1: altura máxima


Diagrama de flujo

37
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
function alturamaxima
clc,clear
boxtitle='altura maxima';
entries={'velocidad inicial','a','gravedad'};
w=inputdlg(entries,boxtitle);
v=str2num(w{1});
a=str2num(w{2});
g=str2num(w{3})
if g~=0
g=12;
xmax=(v^2)*sin(a)/g
else
xmax=(v^2)*sin(a)/g
boxtitle='altura maxima';
entries={'velocidad inicial','a','gravedad'};
w=inputdlg(entries,boxtitle);
v=str2num(w{1});
a=str2num(w{2});
g=str2num(w{3});
end
disp(xmax)

Ejemplos 1: Determinación de radio


Diagrama de flujo

Programación
function superficie
clc,clear
disp('El radio de una esfera')

38
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
A=input('area de la esfera A=');
Pi=3.1416;
if A<0
disp('Un area no pude ser negativa')
disp('consideraremos A=10')
A=10;
R=sqrt(A/(4*Pi));
else
R=sqrt(A/(4*Pi));
end
disp('El radio es:')
disp(R)

SENTENCIA SWITCH
La sentencia switch realiza una función análoga 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
% opción por defecto
bloque3
end

Ejemplos 1: Determinar las variables de la ecuación de calor


Diagrama de flujo

39
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Programación
clc,clear
disp('¿Qué deseas calcular?')
disp('*)Variacion de temperatura k=1')
disp('*)El valor de la masa k=2')
disp('*)Calor especifico k=3')
disp('*)Cantidad de calor k=4')
k=input('Elige cual quieres k= ');
switch k
case 1
Q=input('Cantidad de calor Q=');
m=input('Cantidad de masa m=');
Ce=input('Calor específico Ce=');
VT=Q/(Ce*m);
disp('La variacion de temperatura es:')
disp(VT)
case 2
Q=input('Cantidad de calor Q=');
Ce=input('Calor específico Ce=');
VT=input('Variacion de temperatura VT=');
m=Q/(Ce*VT);
disp('La cantidad de masa es:')
disp(m)
case 3
Q=input('Cantidad de calor Q=');
m=input('Cantidad de masa m=');
VT=input('Variacion de temperatura VT=');
Ce=Q/(m*VT);
disp('El calor especifico es:')
disp(Ce)
case 4
m=input('Cantidad de masa m=');
Ce=input('Calor específico Ce=');
VT=input('Variacion de temperatura VT=');
Q=m*Ce*VT;
disp('La cantidad de calor es:')
disp(Q)
end

Ejemplos 2: Determinar las variables de la ecuación de movimiento rectilíneo uniformemente


variado
Diagrama de flujo

40
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Ejemplos 2: Determinar las variables de la ecuación de la ley de columb


Diagrama de flujo

41
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Programación
clc,clear
disp('Ley de columb')
disp('Calcular la fuerza w=1')
disp('Calcular la distancia w=2')
disp('Calcula la carga uno w=3')
disp('Calcular la carga dos w=4')
w=input('¿Qué deseas calcular? w=');
k=9*10^9;
switch w
case 1
Q1=input('Carga uno Q1= ');
Q2=input('Carga dos Q2= ');
D=input('Distancia de separacion d= ');
F=(k*Q1*Q2)/D^2;
disp('La fuerza es: ')
disp(F)
case 2
F=input('fuerza entre cargas F= ');
Q1=input('Carga uno Q1= ');
Q2=input('Carga dos Q2= ');
D=sqrt((k*Q1*Q2)/(F));
disp('La distancia de separación entre cargas es:')
disp(D)
case 3
F=input('fuerza entre cargas F= ');
Q2=input('Carga dos Q2= ');
D=input('Distancia de separacion d= ');
Q1=(F*(D^2))/(k*Q2);
disp('La carga uno es:')
disp(Q1)
case 4
F=input('fuerza entre cargas F= ');
Q1=input('Carga uno Q1= ');
D=input('Distancia de separacion d= ');
Q2=(F*(D^2))/(k*Q1);
disp('La carga dos es:')
disp(Q2)
end

BUCLES
SENTENCIA FOR
La sentencia for repite un conjunto de sentencias un número 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 construcción 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=vector Valores


Sentencias
end

42
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Ejemplos 1: Determinar de la fuerza electroestática
Diagrama de flujo

Programación
function buclefor1
clc,clear,clf
box_tittle=('fuerza electroestatica');
entries={'ingrese q1','ingrese q2'};
f=inputdlg(entries,box_tittle);
q1=str2num(f{1});
q2=str2num(f{2});
K=9000000000;
for d=10:100;
F=(K.*q1.*q2)./(d.^2);
fprintf('"F"electrostatica=%g distancia=%g carga1=%g carga2=%g\n',F,d,q1,q2)
disp([F' d' q1' q2])
hold on
grid on
plot(F,d,'r>'),title('fuerza VS distancia');
end

Ejemplos 2: Tabla de multiplicar


Diagrama de flujo

43
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Programación
function buclefor
clc,clear
boxtitle='multiplicacion';
entries={'que tabla quieres'};
M=inputdlg(entries,boxtitle);
n=str2num(M{1});
for i=0:15
m=i*n;
fprintf(1,'%g * %g = %g\n',i,n,m)
hold on
plot(i,m,'*'),xlabel('valor de los numero'),ylabel('valor del producto'),title('multiplicacion')
end

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

while condición
Sentencias
end

Donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras haya
algún o algunos elementos true. El bucle se termina cuando todos los elementos de condición
son false (es decir, cero).

Ejemplos 1: Sumatoria de números naturales


Diagrama de flujo

44
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería

Programación
function bublewhile
clc,clear,clf
boxtitle='suma de impares';
entries={'cantidad de numeros a sumar'};
M=inputdlg(entries,boxtitle);
n=str2num(M{1});
sum=0;
c=0;
impar=1;
while c<n
sum=sum+impar;
impar=impar+2;
c=c+1;
fprintf(1,'%g=====%g=====%g\n',c,sum,impar)
hold on
plot(c,sum,'*'),xlabel('cantidad de numeros'),ylabel('valor de la suma'),title('suma de
numeros')
end
disp([sum])

45
Ing. Henrry Ochoa León
Ingeniería Civil Especialista en Programas de Ingeniería
Ejemplos 2: Determinar las variables de la ecuación de los gases
Diagrama de flujo

Programación
function buclewhile1
clc,clear
disp('ecuacion de los gases')
disp('**********************')
boxtittle=('ecuacion de los gases');
entries={'ingrese el valor de la temperatura','ingrese la presion ','ingrese el numero de moles'};
f=inputdlg(entries,boxtittle);
to=str2num(f{1});
p=str2num(f{2});
n=str2num(f{3});
R=0.082;
t=to+273;
while p<=0
box_title=('Ingrese otro valor')
entries=('ing valor de p')
y=inputdlg(entries,box_title)
p=str2num(y{1})
end
V=(n*R*t)/(p);
fprintf('V=en litros=%g\n',V)
disp('*********************')

46