Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OCHOA LEON
ESPECIALISTA EN PROGRAMACIÓN DE SOFTWARE DE INGENIERÍA
Henry_ol_iq@hotmail.com
2017
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
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.
Nombre de la Significado
variable
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)
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
OPERAD DESCRIPCIÓN
OR < menor que
< menor o igual
> 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
Separador deforma usual de una matriz, argumentos de funciones
elementos
y
; declaraciones
Separador en líneas con declaraciones
de declaraciones, múltiples
termina renglones de una matriz
Funciones Trigonométricas
Funció Descripción
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 Arco coseno de x.
(x)
cosh(x) Coseno hiperbólico de x.
acosh( Arco coseno hiperbólico de x.
x)
tan(x) Tangente de x.
atan(x) Arco tangente de x.
tanh(x) Tangente hiperbólico de x.
atanh( Arco tangente hiperbólico de
x) x.
cot(x) Cotangente de x.
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( Convierte en número real la cadena x.
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, Grafica la función en el intervalo [a,b].
[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.
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
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
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
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.
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
min(x) posición elemento
Mínimo que ocupade
imun vector. Devuelve el valor mínimo y la
posición
sum(x) que ocupa
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
mean(x) del original)
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
[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
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.
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.
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.
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
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%
X=
28%
90 2
120 60
1.5
Rose
150 1
x=[1 3 6 2 7 1 5 12];
30
rose(x);
0.5
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
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 0 10 20 30
30
1 0.5
0.5
0
0
-0.5
-0.5
-1 -1
0 10 20 0 10 20 30
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
fpolt('f',[a,b]) Y.
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.
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
1.054
10
1.052
10 Loglog:
1.05
1
x=1:0.2:10;
0
y=11+exp(-x.^2);
loglog(x,y);
y
1.048
10
1.046
10
1.044
10
1.042
10
0 1
10 10
x
0.8
0.6
Fill:
0.4
x=1:0.2:10;
0.2
y=cos(x);
0 fill (x,y, 'm');
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
meshgrid(x,y
grafica
)
mesh(x,y,z) de una superficie
Grafica explicita
una superficie z = f(x,y).
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
meshc(x,y,z)
curvas
de niveluna
Grafica enelsuperficie
plano xy.explicita z - f(x,y) con los arreglos x, ye z; cerrando la
meshz(x,y,z)
grafica
con las fronteras
Grafica del dominio.
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
surfc(x,y,z)
curvas
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, 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).
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
2 2
z=x.*exp(-x. -y. )
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
2 2
z=x. +y.
8
meshc: z=x.^2+y.^2;
[x,y]=meshgrid(- meshc(x,y,z)
2:0.2:2); title('z=x.^2+y.^2');
xlabel('x');ylabel('y');zlabel('z ');
4
z
0
2
1 2
0 1
0
-1 -1
y -2 -2
x
2 2
z=x. -y. -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
2 10
z=-x+y.
z
30
20
5:0.2:5); z=-x+y.^2;
surfc: surfc(x,y,z)
[x,y]=meshgrid(- title('z=-x+y.^2');
xlabel('x');ylabel('y');zlabel('z');
-10
5
5
0
0
y -5 -5
x
2 2 2
z=sin(sqrt(x. +y. ))./(sqrt(x. +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
-10 -10
y 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
1
2 2
z=x.*exp(-x. -y. )
2
0.5
1.5
c our: z=x.*exp(-x.^2-y.^2);
o [x,y]=mesh contour(x,y,z)
n grid(- title('z=x.*exp(-x.^2-y.^2)');
t 2:0.2:2); 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
2 2
z=-x. -y. +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
-4 -4
y 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.
3
y. +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
Línea diagrama de un chirrido (Línea plot of a chirp) Line plot a chirp
1
0.8
0.6
0.4
x =0:0.05:5;
y=sin(x.^2);
plot(x,y);
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
0.2
90
0.5
12 0.1
60
0 0.4
0.3
150 30
=0:0.01:2*pi; r=sin(2*t).*cos(2*t);
t 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
25
20 20
15
10 10
5
0 0
Diagrama superficial (con sombra) de picos (Surface Plot (with Shading) of Peaks)
z=peaks(25);
10
surfl(z);
shading interp;
5
colormap(pink);
0
-5
-10
30
25
20 20
15
10 10
5
0 0
z=peaks (25);
20
contour (z,16);
colormap (hsv)
15
10
5 10 15 20
25
Temblor (Quiver)
1.5 x=-2:.2:2;
y=-1:.2:1;
1
[xx,yy]=meshgrid(x,y);
zz=xx.*exp(-xx.^2-yy.^2);
0.5
[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
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,
x→
‘right’) Se calcula el límite lateral lim −f(x) por la izquierda
limit (f, x, x0, ‘left’)
x→
diff (' f ', 'x', n) calcula la derivada de f respecto de x de orden n, sin declaración
previa
syms x de variables
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
syms x , int (f, x, a, �
Aplicaciones
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)
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
Definició DIAGRAMA DE FLUJOS
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í
m
b
ol
o
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
31
Líneas de conexión y dirección del flujo
Organigrama
Genérico
INICIO
32
ENTRADA DE
DATOS
CONDICIÓN
PROCESO
SALIDA DE
DATOS
FIN
Capítulo VI
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’).
disp(’mensaje’) ´o disp(’texto’)
Muestra un texto o
una matriz de texto
por pantalla
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.
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.
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
Programación
function superficie
clc,clear
disp('El radio de una esfera')
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
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,
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
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).
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('*********************')