Your SlideShare is downloading. ×
Ing. HENRRY R. OCHOA LEON
ESPECIALISTA EN PROGRAMACIÓN DE SOFTWARE DE INGENIERÍA

Henry_ol_iq@hotmail.com

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

Ingeniería Química

Capítulo I
¿QUÉ ES MATLAB?
MATLAB = 'M...
Ingeniería Química

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

se pueden volver a ejecutar haciendo d...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Manejo de comandos:
Cada comando en MA...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
==
~=

Igual
no igual

Comandos de Oper...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
Funciones Que Realizan Tareas
Función

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

Ingeniería Química

Capítulo II
MATRICES Y ARREGLOS
Arregl...
Ingeniería Química

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

APLICACIÓN DE MATRICES
DEFINICIÓN DE U...
Ingeniería Química

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

SUBMATRICES
Generación de una submatri...
Ingeniería Química

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

Tril
Matriz formada por la parte trian...
Ingeniería Química

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

min
Muestra los valores mínimos de los...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
FUNCIONES QUE ACTÚAN SOBRE VECTORES

La...
Ingeniería Química

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

Si se desea cambiar todo el valor de u...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Capítulo III
GRÁFICAS CON MATLAB
FUNCI...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

ESTILOS DE LÍNEA Y MARCADORES EN LA FU...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
4
3

barh
x=-3:0.2:3;
y=cos(x.^3)-2.*x+...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
90

2

120

60
1.5
1

150

Rose
x=[1 3 ...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

GRAFICAS CON MÚLTIPLES EJES
Matlab per...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

X y escala normal en el eje Y.
Realiza...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Loglog:
x=1:0.2:10;
y=11+exp(-x.^2);
l...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

A continuación se presentan gráficos c...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

meshc:
[x,y]=meshgrid(-2:0.2:2);
z=x.^...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
z=-x+y. 2

surfc:
[x,y]=meshgrid(-5:0.2...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

contour:
[x,y]=meshgrid(-2:0.2:2);
z=x...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
GRAFICA ESPECIALES
Línea diagrama de un...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
90

0.5

120

60
0.4

t=0:0.01:2*pi;
r=...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Diagrama superficial (con sombra) de p...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Capítulo IV
LIMITES, DERIVACIÓN E INTE...
Ingeniería Química

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

Aplicaciones
1) Aplicación de Limites
...
Ingeniería Química
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

Ca...
Ingeniería Química

Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería
Capítulo V
DIAGRAMA DE FLUJOS

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

Ingeniería Química
Organigrama Genérico
INICIO

ENTRADA DE...
Ingeniería Química

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

Determinar las variables de la ecuació...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Capítulo VI
PROGRAMACION EN MATLAB
Man...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

disp(’mensaje’)
disp(’texto’)
disp(A)
...
Ingeniería Química

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

Los bucles permiten repetir las mismas...
Ingeniería Química

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

BIFURCACIONES
SENTENCIA IF
En su forma...
Ingeniería Química
function alturamaxima
clc,clear
boxtitle='altura maxima';
entries={'velocidad inicial','a','gravedad'};...
Ingeniería Química

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

A=input('area de la esfera A=');
Pi=3....
Ingeniería Química

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

Programación
clc,clear
disp('¿Qué dese...
Ingeniería Química

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

Ejemplos 2: Determinar las variables d...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química
Programación
clc,clear
disp('Ley de col...
Ingeniería Química

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

Ejemplos 1: Determinar de la fuerza el...
Ing. Henrry Ochoa León
Especialista en Programas de Ingeniería

Ingeniería Química

Programación
function buclefor
clc,cle...
Ingeniería Química

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

Programación
function bublewhile
clc,c...
Ingeniería Química

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

Ejemplos 2: Determinar las variables d...
Upcoming SlideShare
Loading in...5
×

Guia del estudiante_matlab_fiq[1] (1)

479

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
479
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Guia del estudiante_matlab_fiq[1] (1)"

  1. 1. Ing. HENRRY R. OCHOA LEON ESPECIALISTA EN PROGRAMACIÓN DE SOFTWARE DE INGENIERÍA Henry_ol_iq@hotmail.com 2012
  2. 2. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Capítulo I ¿QUÉ ES MATLAB? MATLAB = 'MATrix LABoratory' (LABORATORIO DE MATRICES). MATLAB es un medio computacional técnico, con un gran desempeño para el cálculo numérico computacional y de visualización. MATLAB integra análisis numérico, matrices, procesamiento de señales y gráficas, todo esto en un ambiente donde los problemas y soluciones son expresados tal como se escriben matemáticamente. MATLAB fue escrito originalmente en fortran, actualmente está escrito en lenguaje C. MATLAB es un lenguaje de programación amigable al usuario con características más avanzadas y mucho más fáciles de usar que los lenguajes de programación como Basic, pascal o C. Al arrancar MATLAB se abre una ventana del tipo de la indicada en la Figura 1 Ésta es la vista que se obtiene eligiendo la opción Desktop Layout/Default, en el menú View. Como esta configuración puede ser cambiada fácilmente por el usuario, es posible que en muchos casos concretos lo que aparezca sea muy diferente. En cualquier caso, una vista similar se puede conseguir con el citado comando View/Desktop Layout/Default. Figura 1 La parte más importante de la ventana inicial es la Command Window, que aparece en la parte derecha. En esta sub-ventana es donde se ejecutan los comandos de MATLAB, a continuación del prompt (aviso) característico (>>), que indica que el programa está preparado para recibir instrucciones. En la pantalla mostrada en la Figura 1 se ha ejecutado el comando A=magic(4), mostrándose a continuación el resultado proporcionado por MATLAB. En la parte superior izquierda de la pantalla aparecen dos ventanas también muy útiles: en la parte superior aparece la ventana Current Directory, que se puede alternar con Workspace clicando en la pestaña correspondiente. Current Directory muestra los ficheros del directorio activo o actual. El Workspace contiene información sobre todas las variables que se hayan definido en esta sesión. En la parte inferior derecha aparecen otra ventana, Command History. La ventana Command History muestra los últimos comandos ejecutados en la Command Window. Estos comandos 2
  3. 3. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería 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. A diferencia de versiones anteriores de MATLAB en que el directorio activo se debía cambiar desde la Command Window, a partir de la versión 6.0 se puede cambiar desde la propia ventana (o desde la barra de herramientas, debajo de la barra de menús) con los métodos de navegación de directorios propios de Windows. Clicando dos veces sobre uno de los ficheros *.m del directorio activo se abre el editor de ficheros de MATLAB, herramienta fundamental para la programación. GENERALIDADES Manejo de variables: En MATLAB como en cualquier otro lenguaje de programación, y/o asistente matemático se utilizan variables. Las variables deben tener un nombre según ciertas reglas. Estas reglas son: NO pueden comenzar con un número, aunque si pueden tener números (variable1 es un nombre válido). Las mayúsculas y minúsculas se diferencian en los nombres de variables. (A y a son dos variables diferentes) Los nombres de variables no pueden contener operadores ni puntos. (No es válido usar /, *, -, +, ...) Si se trabaja con complejos sólo puede utilizarse un de los nombres i y/o j para variables. No es necesario definir el tipo de variable o tamaño (si se usa un vector y después se expande, no hay problema) Para el uso de una variable no es necesario declarar sus nombres, en la siguiente tabla se presenta las variables predefinidas que posee Matlab. Nombre de la variable Pi Inf Eps NaN Realmin Realmax Significado π ∞ 1.0000e-006 No es número Menor número2-1022 Mayor número (2-e)21023 Manejo de expresiones: Una expresión en MATLAB, puede ser:  Una variable o un número. (ej: variable1, x, 3, 22.3)  Un comando aplicado. (ej: norm(A), sin(2*pi) )  Una expresión matemática. (ej: 2+3*variab1^ 4.5) Si cualquiera de las anteriores se escribe en la línea de comandos (>> ) del MATLAB, él devolverá el nombre de la variable y su valor (en caso de que la expresión tenga nombre, de no tenerlo, MATLAB devolverá ans = resultado). Un punto importante que se debe resaltar es que esto ocurre siempre y cuando la expresión no termine con punto y coma. Al añadir un punto y coma al final de la expresión MATLAB no imprime su valor en la pantalla, aunque si realiza el cálculo. (a=3+2; deja en a el valor de 5, pero no lo muestra). 3
  4. 4. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 Comando MATLAB format short format short e format long format long e format bank format rat Exhibición Por omisión 4 decimales 14 decimales 15 decimales 2 decimales fracción Ejemplo 2.3333 2.3333e+000 2.33333333333333 2.333333333333334e+000 2.33 2/5 Comandos de Operaciones Aritméticas ESCALAR + * / ^ MATRIZ + * / ‘ VECTOR + .* ./ . .’ DESCRIPCIÓN Adición Sustracción Multiplicación División hacia la derecha División hacia la izquierda Transposición Comandos de Operadores Relacionales OPERADOR < <= > >= 4 DESCRIPCIÓN menor que menor o igual que mayor que mayor o igual que
  5. 5. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química == ~= Igual no igual Comandos de Operadores Lógicos OPERADOR & | ~ DESCRIPCIÓN Y (and) O (or) NO (not) Caracteres Especiales: Caracteres [] () , ; Descripción Se utilizan para formar vectores y matrices Define precedencia en expresiones aritméticas. Encierra argumentos de funciones en forma usual Separador de elementos de una matriz, argumentos de funciones y declaraciones en líneas con declaraciones múltiples Separador de declaraciones, termina renglones de una matriz Funciones Matemáticas Elementales que Operan de Modo Escalar Matlab ofrece un sinnúmero de funciones las que acepta como argumentos variables reales y/o complejos sin discriminación, así como con argumentos matriciales. Funciones Trigonométricas Función Descripción sin(x) Senos de x. asin(x) Arco seno de x. sinh(x) Seno hiperbólico de x. asính(x) Arco seno hiperbólico x. cos(x) Coseno de x. acos (x) Arco coseno de x. cosh(x) Coseno hiperbólico de x. acosh(x) Arco coseno hiperbólico de x. tan(x) Tangente de x. atan(x) Arco tangente de x. tanh(x) Tangente hiperbólico de x. atanh(x) Arco tangente hiperbólico de x. cot(x) sec(x) Secante de x. csc(x) 5 Cotangente de x. Cosecante de x.
  6. 6. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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
  7. 7. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Capítulo II MATRICES Y ARREGLOS Arreglo: Es un conjunto de números, ordenados en filas y columnas. Arreglos unidimensionales: Es un conjunto de números, ordenados en una sola fila o columna. Arreglos bidimensionales: Es un conjunto de números, ordenados en filas y columnas, teniendo para ello más de una. Matriz: Es un arreglo rectangular de números (reales o complejos) ordenados en filas y columnas. a11 a12 …………………………… a1n a21 a21……………………………….. a2n A= …………..………………………… am1 am2 ……………… amn En su forma simplificada lo escribiremos como: A= (aij) y los números aij constituyen los elementos de la matriz A. Si una matriz tiene solo una columna, se denomina matriz columna, y si posee solo una fila se denomina matriz fila. TIPOS DE MATRICES PREDEFINIDOS eye(4) Forma la matriz unidad de tamaño (4x4) zeros(3,5) Forma una matriz de ceros de tamaño (3x5) ones(3) Forma una matriz de unos de tamaño (3x3) linspace(x1,x2,n) Genera un vector con n valores igualmente espaciados entre x1 y x2 rand(3) rand(2,5) randn(4) magic(4) Forma una matriz de números aleatorios entre 0 y 1, con distribución uniforme, de tamaño (3x3) Idem de tamaño (2x5) Forma una matriz de números aleatorios de tamaño (4x4), con distribución normal, de valor medio 0 y varianza 1. Crea una matriz (4x4) con los números 1, 2,... 4*4, con la propiedad de que todas las filas y columnas suman lo mismo. FUNCIONES MATRICIALES ELEMENTALES B = A' Calcula la traspuesta (conjugada) de la matriz A t = trace(A) [m,n] = size(A) Devuelve la traza t (suma de los elementos de la diagonal) de una matriz cuadrada A Devuelve el número de filas m y de columnas n de una matriz rectangular A n = size(A) nf = size(A,1) nc = size(A,2) det(A) inv(A) Devuelve el número de filas de A Idem de tamaño (2x5) Devuelve el número de columnas de A Sirve para calcular el determinante de la matriz A. Sirve para invertir la matriz A. 7
  8. 8. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería APLICACIÓN DE MATRICES DEFINICIÓN DE UNA MATRIZ MATLAB trabaja esencialmente con matrices numéricas rectangulares. La manera más fácil de ingresar matrices es enumerando los elementos de ésta de tal manera que: Para obtener una columna, los elementos deben estar separados por espacios en blanco ó comas. Para obtener una fila, se coloca punto y coma “;” al final de ingresar los elementos. Los elementos están cerrados entre corchetes, [ ]. TRANSPOSICIÓN DE UNA MATRIZ El carácter “ ' ” (apóstrofe) denota la matriz transpuesta. Si tenemos la matriz A y llamamos b = A', b es la matriz transpuesta de A. 8
  9. 9. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería SUBMATRICES Generación de una submatriz a partir de una matriz dada. 3:4 nos indica la tercera y cuarta fila completa de la submatriz A. 1:3 nos indica, desde la primera hasta la tercera columna completa de la submatriz A. Submatriz formada por los elementos que están en todas las filas que hay entre la segunda y la tercera fila en las columnas primera y tercera. ASIGNACIÓN DE UNA MATRIZ A los elementos de una matriz se accede sin más que escribir el nombre de la matriz y, entre paréntesis, los respectivos índices: También se puede acceder a una fila o columna completas Podemos acceder a la matriz como si fuera una columna, MATRICES ESPECIALES En MATLAB podemos generar matrices especiales con las siguientes instrucciones: FUNCIONES DE MATRICES Diag Nos permite hallar la diagonal de una matriz 9
  10. 10. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Tril Matriz formada por la parte triangular inferior de A Triu Matriz formada por la parte triangular superior de A Sum(matriz) Realiza la suma de todas las filas con su respectiva columna prod(matriz) Realiza el producto de todas las filas con su respectiva columna 10
  11. 11. Ingeniería Química 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
  12. 12. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química FUNCIONES QUE ACTÚAN SOBRE VECTORES Las siguientes funciones actúan sobre vectores (no sobre matrices ni sobre escalares) [xm,im]=max(x) Máximo elemento de un vector. Devuelve el valor máximo xm y la posición que ocupa im min(x) Mínimo elemento de un vector. Devuelve el valor mínimo y la posición que ocupa sum(x) Suma de los elementos de un vector cumsum(x) mean(x) std(x) prod(x) cumprod(x) [y,i]=sort(x) l = length (x) Devuelve el vector suma acumulativa de los elementos de un vector(cada elemento del resultado es una suma de elementos del original) Valor medio de los elementos de un vector Desviación típica Producto de los elementos de un vector Devuelve el vector producto acumulativo de los elementos de un vector 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. Determina el número de componentes de un vector. ASIGNACIÓN DE UN VECTOR DE COORDENADAS Si queremos declarar un vector de coordenadas equiespaciadas entre dos valores dados. No necesariamente se tiene que incrementar por números enteros, pueden ser decimales, números negativos ó constantes Equivalentemente, si lo que conocemos del vector es que la primera coordenada vale 0, la última 10 y que tiene 6 elementos en total, escribiremos: Otra forma de asignar valores a un vector es por medio de los subíndices. El menor subíndice utilizado por MATLAB es 1, y va añadiendo valores a medida que se requieran. Los subíndices se escriben entre paréntesis. 12
  13. 13. Ingeniería Química 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 en Matlab debemos ingresar a p de la siguiente manera >> p = [8 - 5 1 3 4 ] p=8-5134 Observe que Matlab al responder no reescribe los corchetes. De ahora en adelante utilizaremos los términos vector y polinomio indistintamente para referirnos al mismo concepto. FUNCIONES PARA CÁLCULOS CON POLINOMIOS roots(pol) Raíces del polinomio pol. polyval(pol,x) Evaluación del polinomio pol para el valor de x. Si x es un vector, pol se evalúa para cada elemento de x. Producto de convolución de dos polinomios p1 y p2. conv(p1,p2) [c,r]=deconv(p,q) División del polinomio p por el polinomio q. En c se devuelve el cociente y en r el resto de la división. residue(p1,p2) Descompone el cociente entre p1 y p2 en suma de fracciones simples. polyder(pol) Calcula la derivada de producto de polinomios. polyder(p1,p2) Producto de los elementos de un vector 13
  14. 14. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Capítulo III GRÁFICAS CON MATLAB FUNCIONES GRÁFICAS 2D ELEMENTALES Matlab ofrece una gama amplia de opciones a la hora de realizar representaciones graficas. Permite realizar graficas de curvas planas y superficies, posibilitando la agrupación y superposición de ellos. GRAFICAS EN EL PLANO Con Matlab es sencillo crear objetos gráficos e incluso artísticos mediante expresiones matemáticas a través de los siguientes comandos. Comandos plot(x,y) bar(x,y) barh(x,y) stem(x,y) stairs(x,y) polar(x,y) pie(x,y) rose(x,y) descripción 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. ETIQUETAS EN LAS GRAFICAS DE MATLAB. Matlab presenta funciones para colocar textos, etiquetas en los ejes coordenados, colocar titulo y efectuar un subrayado a los ejes, a continuación se presentan estas funciones: title('título') Añade un título al dibujo xlabel('tal') Añade una etiqueta al eje de abscisas. Con xlabel off desaparece ylabel('cual') Añade una etiqueta al eje de ordenadas. Con ylabel off desaparece text(x,y,'texto') Introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y son vectores, el texto se repite por cada par de elementos. Si texto es también un vector de cadenas de texto de la misma dimensión, cada elemento se escribe en las coordenadas correspondientes. Introduce texto con ayuda del ratón: el cursor cambia de forma y se espera un clic para introducir el texto en esa posición. Define rótulos para las distintas líneas o ejes utilizados en la figura. Activa la inclusión de una cuadrícula en el dibujo. Con grid off desaparece la cuadrícula. El comando plot puede utilizarse también con matrices como argumentos. gtext('texto') legend(‘rotulo’) grid GRAFICO DE MÚLTIPLES CURVAS Matlab provee con la opción plot para realizar simultáneamente la grafica de más de una curva, estableciendo por efecto 2 colores distintos. plot(x,y,x,z); 14
  15. 15. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química ESTILOS DE LÍNEA Y MARCADORES EN LA FUNCIÓN PLOT Matlab permite realizar graficas de funciones utilizando diferentes caracteres, en la siguiente tabla se presenta las siguientes opciones. Ejemplos 1 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 0 1 2 3 4 5 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 0 1 2 3 4
  16. 16. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 0 2 4 6 8 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 0 1 2 3 4 5 90 6 7 8 9 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 0 210 330 240 300 270 4% 12% 36% 20% 28% 16 Pie x=1:2:9; pie(x)
  17. 17. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 90 2 120 60 1.5 1 150 Rose x=[1 3 6 2 7 1 5 12]; rose(x); 30 0.5 180 0 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 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; 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 -0.5 -1 -1.5 -2 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Grafica con Matlab 7 5 x=-2:0.05:5; 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 y -10 -15 -20 -25 -30 -2 -1 0 1 2 x 17 3 4 5
  18. 18. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 0 10 20 30 1 -1 0 10 20 30 0 10 20 30 0.5 0.5 0 0 -0.5 -0.5 -1 0 10 20 30 -1 GRÁFICAS ESPECIALES EN EL PLANO Matlab dispone de un grupo de comandos para presentar formas geométricas especiales en dos dimensiones, estos se describen en la siguiente tabla. Comandos compass(x,y) feather(x,y) fpolt('f',[a,b]) ezplot('f',[a,b]) loglog(x,y) semilogx(x,y) 18 Descripción 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). Dibuja un conjunto de flechas con origen en el eje X, y cuya magnitud y dirección vienen determinadas por el modulo de Y. Grafica la función f en el intervalo [a,b]. Grafica la función f en el intervalo [a,b], adicionándole el titulo por defecto. Realiza una grafica cartesiana con escala logarítmica en los ejes coordenados. Realiza una grafica cartesiana con escala logarítmica en el eje
  19. 19. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química X y escala normal en el eje Y. Realiza una grafica cartesiana con escala logarítmica en el eje Y y escala normal en el eje X. 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. semilogy(x,y) fill(x,y,c) 90 5 120 60 Compass: x=-pi:0.8:pi; y=3-sin(x); compass(x,y); 4 3 150 30 2 1 180 0 210 330 240 300 270 4 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 0 2 4 6 8 10 12 y=cos(x) 1 fplot; fplot('cos(x)',[-3,3]); 0.8 0.6 0.4 y 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -3 -2 -1 0 x 1 2 3 4-abs(x) ezplot; ezplot('4-abs(x)',[-3,3]); 4 3.5 y 3 2.5 2 1.5 1 -3 19 -2 -1 0 x 1 2 3
  20. 20. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Loglog: x=1:0.2:10; y=11+exp(-x.^2); loglog(x,y); 1.054 10 1.052 10 1.05 y 10 1.048 10 1.046 10 1.044 10 1.042 10 0 1 10 10 x 1 Fill: x=1:0.2:10; y=cos(x); fill (x,y, 'm'); 0.8 0.6 0.4 y 0.2 0 -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 plot3(x,y,z) Descripción 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
  21. 21. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química A continuación se presentan gráficos 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 1 0.5 0 -0.5 -1 10 10 5 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 1 0.5 0 -0.5 -1 10 10 5 5 0 0 -5 -5 -10 Observación.-En los siguientes gráficos simplificaremos el código de la programación: [x,y]=meshgrid(-2:0.2:2) en reemplazo de: xa=-2:0.2:2; ya= -2:0.2:2; [x,y]=meshgrid(xa,ya); z=x.*exp(-x. 2-y. 2) mesh: [x,y]=meshgrid(-2:0.2:2); 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'); z 0.5 0 -0.5 2 1 2 1 0 0 -1 y 21 -1 -2 -2 x
  22. 22. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 8 6 z 4 2 0 2 1 2 1 0 0 -1 -1 -2 y -2 x 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'); z=x. 2-y. 2-9 0 z -5 -10 -15 -20 4 2 4 2 0 0 -2 -2 -4 y -4 x 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'); 1 z 0.5 0 -0.5 -1 2 1 2 1 0 0 -1 y 22 -1 -2 -2 x
  23. 23. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 z 10 0 -10 5 5 0 0 -5 y -5 x 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'); z=sin(sqrt(x. 2+y. 2))./(sqrt(x. 2+y. 2)) 1 z 0.5 0 -0.5 10 5 10 5 0 0 -5 -5 -10 y -10 x Observacion:En la orden surfl(x,y,z), es el parámetro s es un vector direccional de iluminación cuyo angulo en perspectiva es medida en grados. waterfall: [x,y]=meshgrid(-3:0.2:3); z=sin(x)+cos(y); waterfall(x,y,z) title('z=sin(x)+cos(y)'); xlabel('x');ylabel('y');zlabel('z'); z=sin(x)+cos(y) 2 z 1 0 -1 -2 4 2 4 2 0 0 -2 y 23 -2 -4 -4 x
  24. 24. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 y 0 -0.5 -1 -1.5 -2 -2 -1.5 -1 -0.5 0 x 0.5 1 1.5 2 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'); z=-x. 2-y. 2+8 10 z 0 -10 -20 -30 4 2 4 2 0 0 -2 -2 -4 y -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 [x,y]=meshgrid(-3:0.2:3); f=y.^3+exp(y)-tanh(x); contour(x,y,f,[0,0]) xlabel('x');ylabel('y'); 2 y 1 0 -1 -2 -3 -3 24 -2 -1 0 x 1 2 3
  25. 25. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química GRAFICA ESPECIALES Línea diagrama de un chirrido (Línea 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 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Los diagramas de la barra de una campana formaron la curva (Bar plot pf a bell shaped curve) 1 x=-2.9:0.2:2.9; 0.9 bar(x,exp(-x.*x)); 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -3 -2 -1 0 1 2 3 Diagrama del Escalón de una onda del seno (Stairstep plot of a sirve wave) 1 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 0 1 2 3 4 5 6 7 8 9 10 Diagrama de Errorbar (Errorbar plot) x=-2:0.1:2; y=erf(x); e=rand(size(x))/10; errorbar(x,y,e); 1.5 1 0.5 0 -0.5 -1 -1.5 -2.5 25 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
  26. 26. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 0 210 330 240 300 270 Diagrama del vástago (Stem plot) 0.35 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 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); mesh (z); colormap (hsv) 5 0 -5 -10 30 25 20 20 15 10 10 5 0 0 Diagrama superficial de picos (Surface Plot of Peaks) z=peaks(25); surf(z); colormap(jet); 10 5 0 -5 -10 30 25 20 20 15 10 10 0 26 5 0
  27. 27. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 Diagrama del contorno de picos (Contour Plot of Peaks) 25 z=peaks (25); contour (z,16); colormap (hsv) 20 15 10 5 5 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); 1 0.5 0 -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,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 5 0 20 15 20 15 10 10 5 5 0 27 0
  28. 28. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 limit (f, x, x0) Se calcula limit (f, x, x0, ‘right’) Se calcula el límite lateral por la derecha. limit (f, x, x0, ‘left’) por la izquierda Se calcula el límite lateral Derivadas utilizando Matlab Dada una función simbólica, MATLAB nos permite encontrar la función derivada de cualquier orden, y evaluarla si fuera necesario. Esta operación, se hace de forma simbólica utilizando el comando diff(…….), pero hay que resaltar que no actúa sobre funciones definidas inline, sólo lo hace sobre expresiones simbólicas en sí mismas. diff (' f ', 'x', n) syms x diff (f , x , n) calcula la derivada de f respecto de x de orden n, sin declaración previa de variables calcula la derivada de f respecto de x de orden n, con declaración previa variable simbólica Integral de una función real utilizando Matlab Dada una función simbólica, MATLAB nos permite encontrar la familia de primitivas o la integral definida, entre otras muchas utilidades que nos ofrece. Esta operación, se hace de forma simbólica utilizando el comando int(…….), pero hay que resaltar que no actúa sobre funciones definidas inline, sólo lo hace sobre expresiones simbólicas en sí mismas. int (' f ', 'x', n) calcula la int (‘f’, ‘x’, a, b) calcula la syms x , int ( f , x) calcula la syms x , int (f, x, a, b) calcula la , SIN declaración previa de variables , SIN declaración previa de variables , CON declaración precia de la variable simbólica , CON declaración precia de la variable simbólica Comandos Aplicados a Derivadas e Integrales simplify(f) Se simplifica la deriva a la mínima expresión pretty(f) Imprime la función de una forma fácil de observar 28
  29. 29. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingenierí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 Calcular la primera deriva de y(x) y(x)=4.x.sen(x) Solución syms x y=4*x*sin(x) k=diff(y) k=4*sin(x)+4*x*cos(x) Calcular la tercera derivada de f(x) f(x)= 4.x.sen(x)+ln(x).x5 Solución syms x F=4*x*sin(x)+log(x)*x^5 M=diff(F,3) S=simplify(M) pretty(M) M =-12*sin(x)-4*x*cos(x)+47*x^2+60*log(x)*x^2 S =-12*sin(x)-4*x*cos(x)+47*x^2+60*log(x)*x^2 Solución de otra manera f(x)= 4.x.sen(x)+x5+ x2 Solución F='4*x*sin(x)+x^5+x^2' 29
  30. 30. Ingeniería Química 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 Calcular la tercera derivada parcial de f(x) f(x)=4.y2.sin(x)+x5+y3*x3 Solución F='4*y^2*sin(x)+x^5+y^3*x^3' M=diff(F,'x',3) S=simplify(M) pretty(M) M =-4*y^2*cos(x)+60*x^2+6*y^3 3) aplicación de integración Solución syms x y=x/(x^2+1) I=int(y) pretty(I) I=1/2*log(x^2+1) Solución syms x y=x/(x^2+1) I=int(y,0,1) I=1/2*log(2) 30 Ing. Henrry Ochoa León Especialista en Programas de Ingeniería
  31. 31. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Capítulo V DIAGRAMA DE FLUJOS Definición Un Diagrama de Flujo es una representación pictórica de los pasos en un proceso, útil para determinar cómo funciona realmente el proceso para producir un resultado. El resultado puede ser un producto, un servicio, información o una combinación de los tres. Al examinar cómo los diferentes pasos en un proceso se relacionan entre sí, se puede descubrir con frecuencia las fuentes de problemas potenciales. Los Diagramas de Flujo se pueden aplicar a cualquier aspecto del proceso desde el flujo de materiales hasta los pasos para hacer la venta u ofrecer un producto. Los Diagramas de Flujo detallados describen la mayoría de los pasos en un proceso. Con frecuencia este nivel de detalle no es necesario, pero cuando se necesita, el equipo completo normalmente desarrollará una versión de arriba hacia abajo. Reglas Básicas Todos los símbolos han de estar conectados. A un símbolo de proceso pueden llegarle varias líneas. A un símbolo de decisión pueden llegarle varias líneas, pero sólo saldrán dos. A un símbolo de inicio nunca le llegan líneas. De un símbolo de fin no parte ninguna línea. Símbolo Imagen o figura con la que se representa un concepto. Aunque hay literalmente docenas de símbolos especializados utilizados para hacer Diagramas de Flujos, se utiliza con más frecuencia los siguientes: Símbolo Descripción Inicio o fin de un diagrama Identificación de variables, un paso o tarea del proceso, una descripción breve del proceso. Punto de verificación o de decisión. Este diamante indica un punto de la rama en el proceso. La descripción está escrita dentro del símbolo, generalmente en la forma de una pregunta. La respuesta a la pregunta determina el camino que debe tomarse desde el símbolo de decisión. Cada camino está identificado para que corresponda a una respuesta. Bucles de programación for, while Salida de datos por impresora Líneas de conexión y dirección del flujo Conexión o relación entre partes de un diagrama 31
  32. 32. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Organigrama Genérico INICIO ENTRADA DE DATOS CONDICIÓN PROCESO SALIDA DE DATOS FIN Aplicación de bifurcaciones y bucles Determinar la velocidad a partir de la energía cinética 32
  33. 33. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Determinar las variables de la ecuación de calor Determinar de la fuerza electroestática 33
  34. 34. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Capítulo VI PROGRAMACION EN MATLAB Manejo de archivos con extensión .m: Todos los comandos a que se refiere esta presentación pueden utilizarse directamente desde la línea de comandos del MATLAB (>>). Sin embargo la idea es hacer un archivo (con extensión .m) que contenga el programa (para poder modificarlo, revisarlo, correrlo otra vez) ya que es más ventajoso así. Los programas no requieren in denotación como en los ejemplos que he puesto aquí, sin embargo es recomendable hacerlo por claridad al intentar modificar el programa o revisarlo. Para trabajar estos archivos, es necesario saber:  Que es: Es un archivo de texto como cualquier otro donde se encuentra el listado del programa. (sólo que su extensión no es txt sino m)  Como crear uno: Las formas más fáciles son:  Como correrlo para obtener los resultados: Desde la línea de comandos de MATLAB se escribe el nombre del archivo (sin el .m) Ficheros *.M Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que constituyen el centro de la programación en MATLAB. Ya se han utilizado en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB ejecutado en un PC bajo Windows, lo mejor es utilizar su propio editor de textos, que es también Debugger. Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en inglés) y las funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la línea de comandos de MATLAB o se incluye dicho nombre en otro fichero *.m. Un fichero de comandos puede llamar a otros ficheros de comandos. Si un fichero de comandos se llama desde de la línea de comandos de MATLAB Programación De Matlab Propiamente Dicho Como ya se ha dicho varias veces incluso con algún ejemplo MATLAB es una aplicación que se puede programar muy fácilmente. De todas formas, como lenguaje de programación pronto verá que no tiene tantas posibilidades como otros lenguajes (ni tan complicadas...). Se comenzará viendo las bifurcaciones y bucles, y la lectura y escritura interactiva de variables, que son los elementos básicos de cualquier programa de una cierta complejidad. Instrucciones de Entrada y Salida en la Programación x=input(’mensaje’) Permite la introducción de datos numéricos por pantalla. x=input(’mensaje’,*’s’+) Permite la introducción de datos por pantalla. La opción ’s’ se emplea para leer una variable de tipo carácter (’string’), evitando los apostrofes. Ejemplos: a=input(’Numero de filas: ’). m=input(’Nombre del fichero: ’,’s’). 34
  35. 35. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química disp(’mensaje’) disp(’texto’) disp(A) disp([A B C]) ´o Muestra un texto o una matriz de texto por pantalla Muestra el valor de numérico de A Muestra el valor de numérico de A, B y C respectivamente Dentro de los comandos más útiles de Matlab, similares a disp se encuentran sprintf y fprintf, que permiten la impresión de datos con formatos más complejos. La forma de utilizarlos es la siguiente: sprintf(‘texto %g texto2 n’, variables ) fprintf(id, ‘texto %g texto2 n’, variables ) Cajas box Boxtittle =('nombre de caja'); entries={'nombre de variable1', 'nombre de variable2',…}; f=inputdlg(entries,boxtittle); variable1=str2num(f{1}); variable2=str2num(f{2}); Bifurcaciones y bucles MATLAB posee un lenguaje de programación que como cualquier otro lenguaje dispone de sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una determinada condición. La Figura muestra tres posibles formas de bifurcación. 35
  36. 36. Ingeniería Química 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
  37. 37. Ingeniería Química 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 Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque1 elseif condicion2 bloque2 elseif condicion3 bloque3 else % opción por defecto para cuando no se cumplan las condiciones 1,2,3 bloque4 end Ejemplos 1: altura máxima Diagrama de flujo 37
  38. 38. Ingeniería Química function alturamaxima clc,clear boxtitle='altura maxima'; entries={'velocidad inicial','a','gravedad'}; w=inputdlg(entries,boxtitle); v=str2num(w{1}); a=str2num(w{2}); g=str2num(w{3}) if g~=0 g=12; xmax=(v^2)*sin(a)/g else xmax=(v^2)*sin(a)/g boxtitle='altura maxima'; entries={'velocidad inicial','a','gravedad'}; w=inputdlg(entries,boxtitle); v=str2num(w{1}); a=str2num(w{2}); g=str2num(w{3}); end disp(xmax) Ejemplos 1: Determinación de radio Diagrama de flujo Programación function superficie clc,clear disp('El radio de una esfera') 38 Ing. Henrry Ochoa León Especialista en Programas de Ingeniería
  39. 39. Ingeniería Química 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 Ejemplos 1: Determinar las variables de la ecuación de calor Diagrama de flujo 39
  40. 40. Ingeniería Química 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 Ejemplos 2: Determinar las variables de la ecuación de movimiento rectilíneo uniformemente variado Diagrama de flujo 40
  41. 41. Ingeniería Química Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ejemplos 2: Determinar las variables de la ecuación de la ley de columb Diagrama de flujo 41
  42. 42. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química Programación clc,clear disp('Ley de columb') disp('Calcular la fuerza w=1') disp('Calcular la distancia w=2') disp('Calcula la carga uno w=3') disp('Calcular la carga dos w=4') w=input('¿Qué deseas calcular? w='); k=9*10^9; switch w case 1 Q1=input('Carga uno Q1= '); Q2=input('Carga dos Q2= '); D=input('Distancia de separacion d= '); F=(k*Q1*Q2)/D^2; disp('La fuerza es: ') disp(F) case 2 F=input('fuerza entre cargas F= '); Q1=input('Carga uno Q1= '); Q2=input('Carga dos Q2= '); D=sqrt((k*Q1*Q2)/(F)); disp('La distancia de separación entre cargas es:') disp(D) case 3 F=input('fuerza entre cargas F= '); Q2=input('Carga dos Q2= '); D=input('Distancia de separacion d= '); Q1=(F*(D^2))/(k*Q2); disp('La carga uno es:') disp(Q1) case 4 F=input('fuerza entre cargas F= '); Q1=input('Carga uno Q1= '); D=input('Distancia de separacion d= '); Q2=(F*(D^2))/(k*Q1); disp('La carga dos es:') disp(Q2) end BUCLES SENTENCIA FOR La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de C/C++/Java. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n Sentencias end o bien, for i=vector Valores Sentencias end 42
  43. 43. Ingeniería Química 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=%gn',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
  44. 44. Ing. Henrry Ochoa León Especialista en Programas de Ingeniería Ingeniería Química 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 = %gn',i,n,m) hold on plot(i,m,'*'),xlabel('valor de los numero'),ylabel('valor del producto'),title('multiplicacion') end SENTENCIA WHILE La estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente: while condición Sentencias end Donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras haya algún o algunos elementos true. El bucle se termina cuando todos los elementos de condición son false (es decir, cero). Ejemplos 1: Sumatoria de números naturales Diagrama de flujo 44
  45. 45. Ingeniería Química 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=====%gn',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
  46. 46. Ingeniería Química 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=%gn',V) disp('*********************') 46

×