Академический Документы
Профессиональный Документы
Культура Документы
OCHOA LEON
ESPECIALISTA EN PROGRAMACIÓN DE SOFTWARE DE INGENIERÍA
Henry_ol_iq@hotmail.com
2016
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Capítulo I
¿QUÉ ES MATLAB?
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.
2
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
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
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.
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.
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).
3
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Manejo de comandos:
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
OPERADOR DESCRIPCIÓN
< menor que
<= menor o igual que
4
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
> mayor que
>= mayor o igual que
== Igual
~= no igual
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 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.
5
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
sec(x) Secante de x.
csc(x) Cosecante de x.
Funciones Que Realizan Tareas
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
Especialista en Programas de Ingeniería
Capítulo II
MATRICES Y ARREGLOS
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.
7
Ing. Henrry Ochoa León
Especialista en Programas de Ingenierí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.
APLICACIÓN DE MATRICES
8
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
SUBMATRICES
Generación de una submatriz a partir de una matriz dada.
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.
MATRICES ESPECIALES
En MATLAB podemos generar matrices especiales con las siguientes instrucciones:
FUNCIONES DE MATRICES
9
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Diag
Nos permite hallar la diagonal de una matriz
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
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
Especialista en Programas de Ingeniería
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.
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
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
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.
13
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Capítulo III
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.
14
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
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
Especialista en Programas de Ingeniería
4
2
barh
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
Especialista en Programas de Ingeniería
90 2
120 60
1.5
Rose
1 30
150
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
-15 xlabel('x');
ylabel('y');
-20
grid
-25
-30
-2 -1 0 1 2 3 4 5
x
17
Ing. Henrry Ochoa León
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
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
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
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
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; y=3-
0.5 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
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
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
2 2
z=sin(x. +y. )
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
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
0
xlabel('x');ylabel('y');zlabel('z');
-0.5
10
5 10
0 5
0
-5 -5
y -10 -10
x
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
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
-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
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
1
diagramas de la barra de una campana formaron la curva (Bar plot pf a bell shaped curve)
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
-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
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
0.3
x=0:0.1:4;
0.25
0.2
y=sin (x.^2).*exp(-x);
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
z=peaks(25);
10
surf(z);
colormap(jet);
5
-5
-10
30
20 25
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
Especialista en Programas de Ingeniería
z=peaks(25);
10
surfl(z);
shading interp;
5
colormap(pink);
0
-5
-10
30
20 25
20
15
10 10
5
0 0
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
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
Se calcula lim f(x)
limit (f, x, x0)
x→xo
Se calcula el límite lateral lim +f(x) por la derecha.
limit (f, x, x0, ‘right’)
x→xo
Se calcula el límite lateral lim −f(x) por la izquierda
limit (f, x, x0, ‘left’)
x→xo
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
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
Aplicaciones
28
Ing. Henrry Ochoa León
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
Solución
syms x
y=4*x*sin(x)
k=diff(y)
k=4*sin(x)+4*x*cos(x)
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
F='4*x*sin(x)+x^5+x^2'
M=diff(F,3)
S=simplify(M)
29
Ing. Henrry Ochoa León
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
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
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
Organigrama Genérico
INICIO
31
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
ENTRADA DE
DATOS
CONDICIÓN
PROCESO
SALIDA DE
DATOS
FIN
32
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Capítulo VI
33
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
PROGRAMACION EN MATLAB
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
Ejemplos:
a=input(’Numero de filas: ’).
m=input(’Nombre del fichero: ’,’s’).
34
Ing. Henrry Ochoa León
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.
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
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
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
37
Ing. Henrry Ochoa León
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)
Programación
function superficie
clc,clear
disp('El radio de una esfera')
38
Ing. Henrry Ochoa León
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
39
Ing. Henrry Ochoa León
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
40
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
41
Ing. Henrry Ochoa León
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,
42
Ing. Henrry Ochoa León
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
43
Ing. Henrry Ochoa León
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).
44
Ing. Henrry Ochoa León
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
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