Академический Документы
Профессиональный Документы
Культура Документы
OCHOA LEON
ESPECIALISTA EN PROGRAMACIN DE SOFTWARE DE INGENIERA
Henry_ol_iq@hotmail.com
2013
Ingeniera Qumica
Captulo I
QU ES MATLAB?
MATLAB = 'MATrix LABoratory' (LABORATORIO DE MATRICES).
MATLAB es un medio computacional tcnico, con un gran desempeo para el clculo numrico
computacional y de visualizacin. MATLAB integra anlisis numrico, matrices, procesamiento
de seales y grficas, todo esto en un ambiente donde los problemas y soluciones son
expresados tal como se escriben matemticamente.
MATLAB fue escrito originalmente en fortran, actualmente est escrito en lenguaje C. MATLAB
es un lenguaje de programacin amigable al usuario con caractersticas ms avanzadas y
mucho ms fciles de usar que los lenguajes de programacin 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 opcin Desktop Layout/Default, en el men View.
Como esta configuracin puede ser cambiada fcilmente 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
Ingeniera Qumica
se pueden volver a ejecutar haciendo doble clic sobre ellos. Clicando sobre un comando con el
botn derecho del ratn 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 deba cambiar
desde la Command Window, a partir de la versin 6.0 se puede cambiar desde la propia
ventana (o desde la barra de herramientas, debajo de la barra de mens) con los mtodos de
navegacin 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 programacin.
GENERALIDADES
Manejo de variables:
En MATLAB como en cualquier otro lenguaje de programacin, y/o asistente matemtico se
utilizan variables. Las variables deben tener un nombre segn ciertas reglas. Estas reglas son:
NO pueden comenzar con un nmero, aunque si pueden tener nmeros (variable1 es
un nombre vlido).
Las maysculas y minsculas 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 vlido
usar /, *, -, +, ...)
Si se trabaja con complejos slo puede utilizarse un de los nombres i y/o j para
variables.
No es necesario definir el tipo de variable o tamao (si se usa un vector y despus 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
Pi
Inf
Eps
NaN
Realmin
Realmax
Significado
1.0000e-006
No es nmero
Menor nmero2-1022
Mayor nmero (2-e)21023
Manejo de expresiones:
Una expresin en MATLAB, puede ser:
Una variable o un nmero. (ej: variable1, x, 3, 22.3)
Un comando aplicado. (ej: norm(A), sin(2*pi) )
Una expresin matemtica. (ej: 2+3*variab1^ 4.5)
Si cualquiera de las anteriores se escribe en la lnea de comandos (>> ) del MATLAB, l
devolver el nombre de la variable y su valor (en caso de que la expresin tenga nombre, de
no tenerlo, MATLAB devolver ans = resultado). Un punto importante que se debe resaltar es
que esto ocurre siempre y cuando la expresin no termine con punto y coma. Al aadir un
punto y coma al final de la expresin MATLAB no imprime su valor en la pantalla, aunque si
realiza el clculo. (a=3+2; deja en a el valor de 5, pero no lo muestra).
Ingeniera Qumica
Manejo de comandos:
Cada comando en MATLAB es un archivo con extensin .m, por lo tanto es necesario tener las
libreras en que se encuentran los comandos que se desean utilizar. Aunque la gran mayora de
los comandos utilizados siempre vienen incluidos en las libreras.
MATLAB NO distingue entre maysculas y minsculas en los comandos (a menos que se
trabaje en Unix). El resto de esta presentacin trata cada comando en detalle (los ms 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 grficos.
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 instruccin omite el eco o salida a la pantalla.
o Guardar variable save.
o Recuperar variable guardada load.
Formatos Numricos
Comando MATLAB
format short
format short e
format long
format long e
format bank
format rat
Exhibicin
Por omisin
4 decimales
14 decimales
15 decimales
2 decimales
fraccin
Ejemplo
2.3333
2.3333e+000
2.33333333333333
2.333333333333334e+000
2.33
2/5
MATRIZ
+
*
/
\
VECTOR
+
.*
./
\.
.
DESCRIPCIN
Adicin
Sustraccin
Multiplicacin
Divisin hacia la derecha
Divisin hacia la izquierda
Transposicin
OPERADOR
DESCRIPCIN
<
<=
>
>=
menor que
menor o igual que
mayor que
mayor o igual que
Ingeniera Qumica
==
~=
Igual
no igual
DESCRIPCIN
Y (and)
O (or)
NO (not)
Caracteres Especiales:
Caracteres
[]
()
,
;
Descripcin
Se utilizan para formar vectores y matrices
Define precedencia en expresiones aritmticas. Encierra argumentos de
funciones en forma usual
Separador de elementos de una matriz, argumentos de funciones y
declaraciones en lneas con declaraciones mltiples
Separador de declaraciones, termina renglones de una matriz
Descripcin
sin(x)
Senos de x.
asin(x)
Arco seno de x.
sinh(x)
Seno hiperblico de x.
asnh(x)
cos(x)
Coseno de x.
acos (x)
Arco coseno de x.
cosh(x)
Coseno hiperblico de x.
Tangente de x.
atan(x)
Arco tangente de x.
tanh(x)
Tangente hiperblico de x.
cot(x)
Cotangente de x.
sec(x)
Secante de x.
csc(x)
Cosecante de x.
Ingeniera Qumica
Funciones Que Realizan Tareas
Funcin
Descripcin
abs(x)
Valor absoluto de x.
sqrt(x)
Raz cuadrada de x.
real(x)
imag(x)
sign(x)
Funcin signo de x.
exp(x)
log(x)
Logaritmo natural.
log10(x)
Logaritmo decimal.
num2str(x)
mod(x,y)
Similar a rem
round(x)
fix(x)
floor(x)
ceil(x)
gcd(x)
lcm(x)
Funciones Reales
Funcin
Descripcin
eval(f,x)
trapz(x,f)
Calcula el rea de la regin plana limitada por f en el intervalo [a, b], donde a es
el primer valor de x y b el ltimo valor de x, x debe ser una variable con
mltiples ordenados en orden creciente.
Ingeniera Qumica
Captulo II
MATRICES Y ARREGLOS
Arreglo: Es un conjunto de nmeros, ordenados en filas y columnas.
Arreglos unidimensionales: Es un conjunto de nmeros, ordenados en una sola fila o
columna.
Arreglos bidimensionales: Es un conjunto de nmeros, ordenados en filas y
columnas, teniendo para ello ms de una.
Matriz: Es un arreglo rectangular de nmeros (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 nmeros 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)
zeros(3,5)
ones(3)
t = trace(A)
[m,n] = size(A)
n = size(A)
nf = size(A,1)
nc = size(A,2)
det(A)
inv(A)
Ingeniera Qumica
APLICACIN DE MATRICES
DEFINICIN DE UNA MATRIZ
MATLAB trabaja esencialmente con matrices numricas rectangulares. La manera ms fcil 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 estn cerrados entre corchetes, [ ].
Ingeniera Qumica
SUBMATRICES
Generacin de una submatriz a partir de una matriz dada.
Submatriz formada por los elementos que estn 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
Ingeniera Qumica
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
Ingeniera Qumica
min
Muestra los valores mnimos de los elementos que se encuentran en la matriz.
max
Muestra los valores mximos 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
Ingeniera Qumica
FUNCIONES QUE ACTAN SOBRE VECTORES
Las siguientes funciones actan sobre vectores (no sobre matrices ni sobre escalares)
[xm,im]=max(x)
Mximo elemento de un vector. Devuelve el valor mximo xm y la
posicin que ocupa im
min(x)
Mnimo elemento de un vector. Devuelve el valor mnimo y la posicin
que ocupa
sum(x)
Suma de los elementos de un vector
cumsum(x)
mean(x)
std(x)
prod(x)
cumprod(x)
[y,i]=sort(x)
l = length (x)
No necesariamente se tiene que incrementar por nmeros enteros, pueden ser decimales,
nmeros negativos constantes
Otra forma de asignar valores a un vector es por medio de los subndices. El menor subndice
utilizado por MATLAB es 1, y va aadiendo valores a medida que se requieran. Los subndices
se escriben entre parntesis.
12
Ingeniera Qumica
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 trminos vector y polinomio indistintamente para referirnos al mismo
concepto.
FUNCIONES PARA CLCULOS CON POLINOMIOS
roots(pol)
polyval(pol,x)
conv(p1,p2)
13
Ingeniera Qumica
Captulo III
GRFICAS CON MATLAB
FUNCIONES GRFICAS 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 agrupacin y
superposicin de ellos.
GRAFICAS EN EL PLANO
Con Matlab es sencillo crear objetos grficos e incluso artsticos mediante expresiones
matemticas a travs de los siguientes comandos.
Comandos
plot(x,y)
bar(x,y)
barh(x,y)
stem(x,y)
stairs(x,y)
polar(x,y)
pie(x,y)
rose(x,y)
descripcin
Dibuja el conjunto de puntos (x,y) en un sistema cartesiano.
Grafico de barras vertical, donde y representa las frecuencias y x
define los espacios en el eje x.
Grafico de barras vertical, donde x representa las frecuencias y y
define los espacios en el eje y.
Grafico de bastones vertical, donde y representa las frecuencias y x
define los espacios en el eje x.
Grafica una curva escalonada.
Dibuja una curva en coordenadas polares, y=y(x).
Realiza el grafico de sectores relativo al vector x.
Dibuja la histograma angular relativo al vector y.
xlabel('tal')
ylabel('cual')
text(x,y,'texto')
gtext('texto')
legend(rotulo)
grid
14
Ingeniera Qumica
Ejemplos
1
line;
x=-1:0.1:5;
y=sin(x.^2);
plot(x,y);
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
bar
x=-3:0.2:3;
y=exp(-x.^2);
bar(x,y);
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-4
15
-3
-2
-1
Ingeniera Qumica
4
3
barh
x=-3:0.2:3;
y=cos(x.^3)-2.*x+1;
barh(x,y);
2
1
0
-1
-2
-3
-4
-6
-4
-2
1
0.8
Stairs
x=0:0.2:10;
y=sin(x);
stairs(x,y);
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
90
10
0.5
120
60
0.4
polar
t=0:0.1:2*pi;
y=abs(sin(2*t).*cos(2*t));
polar(t,y);
0.3
150
30
0.2
0.1
180
210
330
240
300
270
4%
12%
36%
20%
28%
16
Pie
x=1:2:9;
pie(x)
Ingeniera Qumica
90
120
60
1.5
1
150
Rose
x=[1 3 6 2 7 1 5 12];
rose(x);
30
0.5
180
210
330
240
300
270
1
0.8
x=0:0.05:5;
y=sin(x);
z=cos(x);
plot(x,y,x,z);
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0.5
1.5
2.5
3.5
4.5
Observacion: Despus 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;
y=sin(x);
z=cos(x);
plot(x,y,x,z);
hold on
w=abs(x-2)-2;
plot(x,w,'g');
grid
0.5
-0.5
-1
-1.5
-2
0.5
1.5
2.5
3.5
4.5
x=-2:0.05:5;
y=-x.^2+sin(x);
plot(x,y);
text(2.7,-4,'y=-x.^2+sin(x)');
title('Grafica con Matlab 7');
xlabel('x');
ylabel('y');
grid
0
y=-x. 2+sin(x)
-5
-10
-15
-20
-25
-30
-2
-1
2
x
17
Ingeniera Qumica
0.5
0.5
-0.5
-0.5
-1
10
20
30
-1
10
20
30
10
20
30
0.5
0.5
0
-0.5
-0.5
-1
10
20
30
-1
feather(x,y)
fpolt('f',[a,b])
ezplot('f',[a,b])
loglog(x,y)
semilogx(x,y)
18
Descripcin
Dibuja un conjunto de flechas con origen en (0,0) y cuya
magnitud y direccin vienen determinadas por el modulo de z,
(z=x+iy).
Dibuja un conjunto de flechas con origen en el eje X, y cuya
magnitud y direccin vienen determinadas por el modulo de Y.
Grafica la funcin f en el intervalo [a,b].
Grafica la funcin f en el intervalo [a,b], adicionndole el titulo
por defecto.
Realiza una grafica cartesiana con escala logartmica en los ejes
coordenados.
Realiza una grafica cartesiana con escala logartmica en el eje
Ingeniera Qumica
semilogy(x,y)
fill(x,y,c)
90
120
60
Compass:
x=-pi:0.8:pi;
y=3-sin(x);
compass(x,y);
4
3
150
30
2
1
180
210
330
240
300
270
Feather:
x=-pi:0.8:pi;
y=3-sin(x);
feather(x,y);
3.5
3
2.5
2
1.5
1
0.5
0
-4
-2
10
12
y=cos(x)
1
fplot;
fplot('cos(x)',[-3,3]);
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-3
-2
-1
0
x
4-abs(x)
ezplot;
ezplot('4-abs(x)',[-3,3]);
3.5
2.5
1.5
1
-3
19
-2
-1
0
x
Ingeniera Qumica
Loglog:
x=1:0.2:10;
y=11+exp(-x.^2);
loglog(x,y);
1.054
10
1.052
10
1.05
10
1.048
10
1.046
10
1.044
10
1.042
10
10
10
x
Fill:
x=1:0.2:10;
y=cos(x);
fill (x,y, 'm');
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
GRFICOS TRIDIMENSIONALES
Quizs sea sta una de las caractersticas de MATLAB que ms admiracin despierta entre los
usuarios no tcnicos (cualquier alumno de ingeniera sabe que hay ciertas operaciones
algebraicas como la descomposicin de valor singular, sin ir ms lejos que tienen dificultades
muy superiores, aunque "luzcan" menos).
GRAFICA DE SUPERFICIES
Matlab permite realizar graficos en tres dimensiones tanto de lneas como de superficies,
siendo sencillo crear objetos graficos a travs de los siguientes comandos.
Comandos
plot3(x,y,z)
Descripcin
Dibuja el conjunto de puntos (x,y,z) en un sistema de tres dimensiones.
Dibuja una regin poligonal cuyos vrtices son los elementos de los vectores
fill3(x,y,z,c)
columna x, y, z. el parmetro 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)
iluminacin en formato bsico.
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
Ingeniera Qumica
A continuacin se presentan grficos con tres dimensiones haciendo uso de los comandos
descritos anteriormente.
Plot3:
t=-6:0.2:8;
x=t;
y=3-t;
z=cos(t);
plot3(x,y,z);
gris
0.5
-0.5
-1
10
10
5
0
0
-5
-5
-10
fill3:
t=-6:0.2:8;
x=t;
y=3-t;
z=cos(t);
c=[1 0.8 0.1];
fill3(x,y,z,c);
grid
0.5
-0.5
-1
10
10
5
0
0
-5
-5
-10
z=x.*exp(-x. 2-y. 2)
mesh:
[x,y]=meshgrid(-2:0.2:2);
z=x.*exp(-x.^2-y.^2);
mesh(x,y,z)
title('z=x.*exp(-x.^2-y.^2)');
xlabel('x');ylabel('y');zlabel('z');
0.5
-0.5
2
1
2
1
-1
y
21
-1
-2
-2
Ingeniera Qumica
meshc:
[x,y]=meshgrid(-2:0.2:2);
z=x.^2+y.^2;
meshc(x,y,z)
title('z=x.^2+y.^2');
xlabel('x');ylabel('y');zlabel('z ');
z=x. 2+y. 2
0
2
1
2
1
-1
-1
-2
-2
meshz:
[x,y]=meshgrid(-3:0.2:3);
z=x.^2-y.^2-9;
meshz(x,y,z)
title('z=x.^2-y.^2-9');
xlabel('x');ylabel('y');zlabel('z');
-5
-10
-15
-20
4
2
4
2
-2
-2
-4
-4
z=sin(x. 2+y. 2)
surf:
[x,y]=meshgrid(-1.5:0.2:1.5);
z=sin(x.^2+y.^2);
surf(x,y,z)
title('z=sin(x.^2+y.^2)');
xlabel('x');ylabel('y');zlabel('z');
0.5
-0.5
-1
2
1
2
1
-1
y
22
-1
-2
-2
Ingeniera Qumica
z=-x+y. 2
surfc:
[x,y]=meshgrid(-5:0.2:5);
z=-x+y.^2;
surfc(x,y,z)
title('z=-x+y.^2');
xlabel('x');ylabel('y');zlabel('z');
30
20
10
-10
5
5
0
0
-5
-5
surfl:
[x,y]=meshgrid(-7.5:0.5:7.5);
z=sin(sqrt(x.^2+y.^2))./(sqrt(x.^
2+y.^2));}
surfl(x,y,z)
title('z=sin(sqrt(x.^2+y.^2))./(sq
rt(x.^2+y.^2))');
xlabel('x');ylabel('y');zlabel('z');
0.5
-0.5
10
5
10
5
-5
-5
-10
-10
z=sin(x)+cos(y)
-1
-2
4
2
4
2
-2
y
23
-2
-4
-4
Ingeniera Qumica
contour:
[x,y]=meshgrid(-2:0.2:2);
z=x.*exp(-x.^2-y.^2);
contour(x,y,z)
title('z=x.*exp(-x.^2-y.^2)');
xlabel('x');ylabel('y');zlabel('z');
z=x.*exp(-x. 2-y. 2)
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2
-1.5
-1
-0.5
0
x
0.5
1.5
contour3:
[x,y]=meshgrid(-4:0.2:4);
z=-x.^2-y.^2+8;
contour3(x,y,z,20)
title('z=-x.^2-y.^2+8');
xlabel('x');ylabel('y');zlabel('z');
10
-10
-20
-30
4
2
4
2
-2
-2
-4
-4
Observaciones:
El parmetro 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 funcin implcita.
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
[x,y]=meshgrid(-3:0.2:3);
f=y.^3+exp(y)-tanh(x);
contour(x,y,f,[0,0])
xlabel('x');ylabel('y');
-1
-2
-3
-3
24
-2
-1
0
x
Ingeniera Qumica
GRAFICA ESPECIALES
Lnea diagrama de un chirrido (Lnea plot of a chirp)
Line plot a chirp
1
x =0:0.05:5;
y=sin(x.^2);
plot(x,y);
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0.5
1.5
2.5
3.5
4.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
Diagrama del Escaln de una onda del seno (Stairstep plot of a sirve wave)
1
x=0:0.25:10;
stairs(x,sin(x));
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
1.5
0.5
-0.5
-1
-1.5
-2.5
25
-2
-1.5
-1
-0.5
0.5
1.5
2.5
Ingeniera Qumica
90
0.5
120
60
0.4
t=0:0.01:2*pi;
r=sin(2*t).*cos(2*t);
polar(t,r)
0.3
150
30
0.2
0.1
180
210
330
240
300
270
x=0:0.1:4;
y=sin (x.^2).*exp(-x);
stem(x,y)
0.3
0.25
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
0.5
1.5
2.5
3.5
Diagramas de XYZ en MATLAB. Aqu estn algunos ejemplos de los diagramas superficiales
en MATLAB.
Diagrama del acoplamiento del pico (Mesh Plot of Peak)
10
z=peaks (25);
mesh (z);
colormap (hsv)
-5
-10
30
25
20
20
15
10
10
5
10
-5
-10
30
25
20
20
15
10
10
0
26
5
0
Ingeniera Qumica
Diagrama superficial (con sombra) de picos (Surface Plot (with Shading) of Peaks)
z=peaks(25);
surfl(z);
10
shading interp;
5
colormap(pink);
0
-5
-10
30
25
20
20
15
10
10
0
5
0
z=peaks (25);
contour (z,16);
colormap (hsv)
20
15
10
10
15
20
25
Temblor (Quiver)
1.5
x=-2:.2:2;
y=-1:.2:1;
[xx,yy]=meshgrid(x,y);
zz=xx.*exp(-xx.^2-yy.^2);
[px,py]=gradient(zz,.2,.2)
;
quiver(x,y,px,py,2);
0.5
-0.5
-1
-1.5
-2.5
-2
-1.5
-1
-0.5
0.5
1.5
Rebanada (Slice)
[x,y,z]=meshgrid (-2:.2:2,2:.2:2,-2:.2:2);
v=x.*exp (-x.^2-y.^2z.^2);
slice (v,[5 15 21],21,[1
10])
axis ([0 21 0 21 0 21]);
colormap(jet)
20
15
10
0
20
15
20
15
10
10
5
0
27
Ingeniera Qumica
Captulo IV
LIMITES, DERIVACIN E INTEGRACIN
Lmites utilizando Matlab
El lmite de una funcin real de variable real en un punto slo requiere la declaracin de la
variable en uso como simblica con syms y la orden limit a continuacin.
syms x
limit (f, x, x0)
Se calcula
por la derecha.
por la izquierda
calcula la
int (f, x, a, b)
calcula la
syms x , int ( f , x)
calcula la
calcula la
pretty(f)
28
Ingeniera Qumica
Aplicaciones
1) Aplicacin de Limites
Solucin
syms x
y=(x^2-3)/(3*x^5+5*x)
l=limit(y,x,3)
l=1/124
Solucin
syms x
y=(exp(x)-1)/log10(1+x)
l=limit(y,x,0)
l=log(2)+log(5)
2) Aplicacin de Derivadas
Calcular la primera deriva de y(x)
y(x)=4.x.sen(x)
Solucin
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
Solucin
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
29
Ingeniera Qumica
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
3) aplicacin de integracin
Solucin
syms x
y=x/(x^2+1)
I=int(y)
pretty(I)
I=1/2*log(x^2+1)
Solucin
syms x
y=x/(x^2+1)
I=int(y,0,1)
I=1/2*log(2)
30
Ingeniera Qumica
Definicin
Un Diagrama de Flujo es una representacin pictrica de los pasos en un proceso, til para
determinar cmo funciona realmente el proceso para producir un resultado. El resultado
puede ser un producto, un servicio, informacin o una combinacin de los tres. Al examinar
cmo 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 mayora 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 versin de arriba hacia abajo.
Reglas Bsicas
Todos los smbolos han de estar conectados.
A un smbolo de proceso pueden llegarle varias lneas.
A un smbolo de decisin pueden llegarle varias lneas, pero slo saldrn dos.
A un smbolo de inicio nunca le llegan lneas.
De un smbolo de fin no parte ninguna lnea.
Smbolo
Imagen o figura con la que se representa un concepto. Aunque hay literalmente docenas de
smbolos especializados utilizados para hacer Diagramas de Flujos, se utiliza con ms
frecuencia los siguientes:
Smbolo
Descripcin
Inicio o fin de un diagrama
31
Ingeniera Qumica
Organigrama Genrico
INICIO
ENTRADA DE
DATOS
CONDICIN
PROCESO
SALIDA DE
DATOS
FIN
Aplicacin de bifurcaciones y bucles
Determinar la velocidad a partir de la energa cintica
32
Ingeniera Qumica
33
Ingeniera Qumica
Captulo VI
PROGRAMACION EN MATLAB
Manejo de archivos con extensin .m:
Todos los comandos a que se refiere esta presentacin pueden utilizarse directamente desde
la lnea de comandos del MATLAB (>>). Sin embargo la idea es hacer un archivo (con extensin
.m) que contenga el programa (para poder modificarlo, revisarlo, correrlo otra vez) ya que es
ms ventajoso as. Los programas no requieren in denotacin 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. (slo que su extensin no es txt sino m)
Como correrlo para obtener los resultados: Desde la lnea de comandos de MATLAB
se escribe el nombre del archivo (sin el .m)
Ficheros *.M
Los ficheros con extensin (.m) son ficheros de texto sin formato (ficheros ASCII) que
constituyen el centro de la programacin en MATLAB. Ya se han utilizado en varias ocasiones.
Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB
ejecutado en un PC bajo Windows, lo mejor es utilizar su propio editor de textos, que es
tambin Debugger.
Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en ingls) y las
funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos de MATLAB o
se incluye dicho nombre en otro fichero *.m. Un fichero de comandos puede llamar a otros
ficheros de comandos. Si un fichero de comandos se llama desde de la lnea de comandos de
MATLAB
Programacin De Matlab Propiamente Dicho
Como ya se ha dicho varias veces incluso con algn ejemplo MATLAB es una aplicacin que se
puede programar muy fcilmente. De todas formas, como lenguaje de programacin pronto
ver que no tiene tantas posibilidades como otros lenguajes (ni tan complicadas...). Se
comenzar viendo las bifurcaciones y bucles, y la lectura y escritura interactiva de variables,
que son los elementos bsicos de cualquier programa de una cierta complejidad.
Instrucciones de Entrada y Salida en la Programacin
x=input(mensaje)
34
Ingeniera Qumica
disp(mensaje)
disp(texto)
disp(A)
disp([A B C])
Dentro de los comandos ms tiles de Matlab, similares a disp se encuentran sprintf y fprintf,
que permiten la impresin de datos con formatos ms 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 programacin que como cualquier otro lenguaje dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra
operacin segn se cumpla o no una determinada condicin. La Figura muestra tres posibles
formas de bifurcacin.
35
Ingeniera Qumica
Los bucles permiten repetir las mismas o anlogas 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 anloga finalidad. Existen
tambin algunas otras diferencias de sintaxis.
36
Ingeniera Qumica
BIFURCACIONES
SENTENCIA IF
En su forma ms simple, la sentencia if se escribe en la forma siguiente (obsrvese que a
diferencia de C/C++/Java la condicin no va entre parntesis, aunque se pueden poner si se
desea):
if condicin
Sentencias
end
Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones
como se desee, y que tiene la forma:
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opcin por defecto para cuando no se cumplan las condiciones
1,2,3
bloque4
end
Ejemplos 1: altura mxima
Diagrama de flujo
37
Ingeniera Qumica
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: Determinacin de radio
Diagrama de flujo
Programacin
function superficie
clc,clear
disp('El radio de una esfera')
38
Ingeniera Qumica
39
Ingeniera Qumica
Programacin
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 especfico Ce=');
VT=Q/(Ce*m);
disp('La variacion de temperatura es:')
disp(VT)
case 2
Q=input('Cantidad de calor Q=');
Ce=input('Calor especfico 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 especfico 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 ecuacin de movimiento rectilneo uniformemente
variado
Diagrama de flujo
40
Ingeniera Qumica
41
Ingeniera Qumica
Programacin
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 separacin 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 nmero predeterminado de veces. La
sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de
C/C++/Java. La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de
uno en uno.
for i=1:n
Sentencias
end o bien,
for i=vector Valores
Sentencias
end
42
Ingeniera Qumica
Programacin
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
Ingeniera Qumica
Programacin
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 condicin
Sentencias
end
Donde condicin puede ser una expresin vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condicin, es decir, mientras haya
algn o algunos elementos true. El bucle se termina cuando todos los elementos de condicin
son false (es decir, cero).
44
Ingeniera Qumica
Programacin
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
Ingeniera Qumica
Programacin
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