0% encontró este documento útil (0 votos)
22 vistas49 páginas

Introducción a MATLAB: Scripts y Funciones

Este documento introduce conceptos básicos de programación en MATLAB como archivos, scripts, funciones y ciclos. Explica la diferencia entre scripts y funciones y cómo crear y ejecutar cada uno. También cubre temas como ciclos for, while, if y switch para controlar flujos. Por último, describe cómo encontrar raíces de funciones usando fzero.

Cargado por

Nelson
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas49 páginas

Introducción a MATLAB: Scripts y Funciones

Este documento introduce conceptos básicos de programación en MATLAB como archivos, scripts, funciones y ciclos. Explica la diferencia entre scripts y funciones y cómo crear y ejecutar cada uno. También cubre temas como ciclos for, while, if y switch para controlar flujos. Por último, describe cómo encontrar raíces de funciones usando fzero.

Cargado por

Nelson
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a MATLAB:

programación
FPTEN20. Laboratorio de procesos de
separación
FPTEN05. Laboratorio de fluidos y
transferencias

Sergio D. Rosales-Anzola, Miguel Pérez


Archivos.m
Hasta ahora se ha trabajado directamente sobre el command window, escribiendo
cada comando que deseamos que se ejecute y observamos su resultado de manera
inmediata. Pero no es la forma habitual de trabajar en MATLAB.
Generalmente se trabaja creando y guardando código en archivos llamados
archivos.m. Cuando se guarda un archivo.m, se almacena en el directorio actual. Para
crear un archivo.m nos dirigimos a HOME y luego se presiona New Script

Existen dos tipos de


archivos.m llamados:
• scripts
• funciones
Script
• Los scripts nos permiten ejecutar secuencias de comandos. Por tanto, si tenemos que ejecutar varios
comandos (donde se encuentren varias operaciones o procedimientos) para obtener un resultado final,
automatizamos todo realizando un script
• Todos los datos se almacenan en el espacio de trabajo (workspace), como si escribiéramos los comandos en
la ventana de comandos (la principal diferencia entre un script y una función).
• Nota: se emplea % para indicar a Matlab que es un comentario y no una línea que deba ejecutar.
• Para usar el scritp solo se escribe su nombre en el command windows

Nombres de variables, script y


funciones
• Debe comenzar con una letra
• Puede formarse con letras,
números y el guion bajo (_).
• Matlab distingue entre
mayúsculas y minúsculas: A y a,
vcil y Vcil, no son el mismo nombre
Escriba un script para determinar el radio hidráulico (RH) de la figura

A área
RH  
P.M perímetro mojado
Ejercicio 1: estudiantes
La ecuación de Antoine nos permite calcular la de presión de vapor de un compuesto en función de la temperatura,
para el agua, realice un script para evaluar la ecuación de Antoine para el agua y así obtener la presión de vapor en
un rango de temperatura entre 20ºC a 40 ºC con incrementos de 2 ºC, se debe tener un vector columna de
temperatura y un vector fila de presiones de vapor a cada T
Ejercicio 1: estudiantes. Resultado
Funciones propias en MATLAB
Los scripts son útiles ...
... pero ¿y si queremos volver a calcular el radio hidráulico en distintas ocasiones y para diferentes valores de L y
D?, se escribe una función.

function [fx, fy, fz] = nombre(x,y,z)

nombre: es el nombre de la función.


[fx, fy, fz]: entre corchetes y separados por comas van la respuesta de la función, los valores de salida.
Siempre que haya más de un valor de salida se usa corchetes, si es una sola salida, no es necesario
(x, y,z): entre paréntesis también separados por comas las variables de entrada
Para correr una función se
escribe en el command
windows el nombre de la
función y el valor de los
argumentos (en los casos que
aplique)

Nota: lo calculado dentro de


una función, no aparece en el
área de trabajo, solo estará la
salida de la función (y)
Ejercicio 2: estudiantes
Realice una función para evaluar la ecuación de Antoine para el agua y así obtener la presión de vapor en un rango
de temperatura entre 20ºC a 40 ºC con incrementos de 2 ºC, al final se debe tener un vector columna de
temperatura y de presiones de vapor a cada T
Ejercicio 2: estudiantes. Resultado
General
Diferencias entre script y función
script función
No admite variables de entrada, simplemente Puede tener o no variables de entrada,
trabaja con datos existentes en el espacio de trabajo.
Todo lo calculado dentro de un script, aparece en el Lo calculado dentro de una función, no aparece en el
área de trabajo área de trabajo, solo estará la salida de la función
Live Script
Titulo

Texto, imagen y
ecuaciones
Código
Ejemplo:
Ejemplo: continuación
Ciclos y bifurcaciones en MATLAB: for, while, if
switch
Ciclos for
for i =1: n for i =1: n s = 10;
líneas de instrucciones for j=1:m for c = 1:s
end líneas de instrucciones for r = 1:s
end H(r,c) = 1/(r+c-1);
end end
end
Ciclos while

while condición n = 3;
%Paso : iterar
líneas de instrucciones f = n;
Qa=Q;
end while n > 1
while (fx(Qa)>0.01) & (Qa>0)
n = n-1;
Qa=Qa-0.00001;
f = f*n;
end
end
disp(['n! = ' num2str(f)])
Ciclos if

if condición if condición 1 if x>=0 & x<=1


líneas de instrucciones 1 líneas de instrucciones 1 y=x;
else elseif condición 2 disp('x es mayor a cero y menor igual a 1')
líneas de instrucciones 2 líneas de instrucciones 2 elseif x>1 & x<=2
end else y=2-x;
líneas de instrucciones 3 disp('x es mayor a 1 y menor igual a 2')
end else
y=0;
end
Ciclos switch

switch expresión SO= 'Windows' % usuario responde


case valor1 switch SO
líneas de instrucciones 1 case 'Windows'
case valor2 disp('Windows')
líneas de instrucciones 2 case "Linux"
case valor3 disp('Linux')
líneas de instrucciones 3 case 'Android'
otherwise disp('Android')
líneas de instrucciones 4 otherwise
end disp('sistema operativo desconocido')
end
Obtención de ceros de una función: raíz
Para calcular los ceros de un función tenemos el comando fzero, la cual encuentra las raíces de una ecuación no lineal
de una sola variable
>>raiz=fzero(@(x)f(x),x0): f(x) es la función y x0 es el valor inicial de búsqueda

Calcular la raíz de la función f(x)=3x4-4x3 en el intervalo [-1 2]

Paso 1: se crea una función donde este la función a buscar la raíz


Calcular la raíz de la función f(x)=3x4-4x3 en el intervalo [-1 2]

Paso 2: escribir el comando para buscar la raíz de una función de una variable fzero.
Paso 2.1: Colocar distintos valores iniciales, al menos 3 valores iniciales diferentes (como mínimo
tres y la raíz debe coincidir, caso contrario, probar con más valores iniciales)
>> raiz=fzero(@(x)f(x), x0)
Ejercicio 1
Obtener el valor v1 de la expresión

  
v1  0,25 34,554  v12  0,25 83,604  v12  0

Nota: usar paréntesis para asegurar que la ecuación quede bien planteada

Paso 1: se crea una función donde este la función a buscar la raíz


Paso 2: escribir el comando para buscar la raíz de una función de una variable fzero.
Paso 2.1: Colocar distintos valores iniciales, al menos 3 valores iniciales diferentes (como mínimo
tres y la raíz debe coincidir, caso contrario, probar con más valores iniciales)
>> raiz=fzero(@(x)f(x), x0)
Obtención de ceros de una función: raíz
(continuación)
Si la función tiene constantes que deseas variar luego, es decir:

f(x)=axb-bxa f(x)=3x4-4x3

Se escribe así la función y luego el comando:


>>>> raiz=fzero(@(x)f(x,a,b), x0): f(x,a,b) es la función y x0 es el valor inicial de búsqueda

Paso 1: se crea una función donde este la función a buscar la raíz


f(x)=axb-bxa

Paso 2: escribir el comando para buscar la raíz de una función de una variable fzero.
Paso 2.1: Colocar distintos valores iniciales, al menos 3 valores iniciales diferentes (como mínimo
tres y la raíz debe coincidir, caso contrario, probar con más valores iniciales)
>> raiz=fzero(@(x)f(x,a,b), x0)
Cálculo de mínimos locales
Para obtener el mínimo local de una función, se pueden emplear diferentes funciones disponibles en MATLAB. Entre
los diferentes comandos se tiene:
• min=fminbnd(@fun,a,b): cálculo de los mínimos locales de una función de una variable en el intervalo [a,b]

Calcular un mínimo local de la función f(x)= x3-3x+3 en el intervalo [-2.5 2.5]

Paso 1: se crea una función donde este la función objetivo a minimizar


Paso 2: escribir el comando para buscar el mínimo de la función de una variable en un intervalo [a,b].
>> xmin=fminbnd(@(x)f(x),a,b)
Para calcular el máximo de la función g(x) en el intervalo [a,b] es lo
mismo que calcular un mínimo sobre –g
Cálculo de mínimos de funciones de varias
variables
Se tiene otros comandos de MATLAB para la búsqueda de mínimos, los cuales funcionan también para funciones de
varias variables, entre ellos se tienen
• min=fminsearch(@fun,x0): cálculo de mínimo de una función de una o más variables, se debe especificar el valor
inicial (o valores iniciales en el caso de funciones de varias variables) para la búsqueda del mínimo
• min = fminunc(@fun,x0): cálculo de mínimo de una función de una o multivariable sin restricciones

la diferencia es que en lugar de dar un intervalo se proporciona


un escalar (para una funcion de una variable) o un vector (para
funcion multivariable) x0 de valor o valores iniciales

Calcular un mínimo local de la función f(x)= x3-3x+3 en el intervalo [-2.5 2.5]


Paso 1: se crea una función donde este la función objetivo a minimizar
Paso 2: escribir el comando para buscar el mínimo de Paso 2: escribir el comando para buscar el mínimo de
la función la función
>> xmin=fminsearch (@(x)f(x),x0) >> xmin=fminunc (@(x)f(x),x0)
Derivación numérica
Para calcular la derivada de una ecuación primero se calcula la diferencia de los valores de x (dx) y de y (dy) lo cual se
logra empleando el comando siguiente:

diff devuelve un vector que contiene las diferencias entre los valores adyacentes
>>dx=diff(x); del vector x. El vector dx contiene un elemento menos que el vector x, es decir, si x
es un vector de n elementos, diff(x) será un vector de n-1 elementos.

Calculemos la derivada de los siguientes datos:


x=[x1, x2, …,xn] ; % datos de la variable independiente
y=[y1, y2, …,yn] ; % datos de la variable dependiente

Paso 1: para obtener la primera derivada se calcula:


>>dydx=diff(y) ./diff(x) ; % primera derivada

Paso 2: para obtener la segunda derivada se calcula:


>>d2ydx2=diff(diff(y)./diff(x)) ./diff(x(2:end))
Ejercicio 3
Calcule la primera y segunda derivada de la función siguiente, en el intervalo [-4, 5]:

f  x 5  3x 4  11x 3  27x 2  10x  24

Paso 1: escribir la ecuación

Paso 2: para obtener la primera derivada se calcula:


>>dfdx=diff(f) ./diff(x) ; % mismo resultado que df ./dx
Paso 3: para obtener la segunda derivada se calcula:
>>d2fdx2=diff(diff(f)./diff(x)) ./diff(x(2:end));
Integración numérica de funciones
Para calcular la integral de una ecuación se puede emplear dos comandos, estos son:
>>valor=integral(@(x)f(x),xinf, xsup); donde f(x) es la función y xinf, xsup son los límites de la integral
>>valor=quad(@(x)f(x),xinf, xsup); también valor=quad(‘expresión’, xinf, xsup); donde ‘expresión’ es
la ecuación a integrar y xinf, xsup son los límites de la integral

Calcular la integral de la función f(x)=3x2 en el intervalo [0 1]

Paso 1: se crea una función donde este la función a integrar

1 1
1 1
0
2 3 3
3 x   3 x  x  13  0 3  1
3 0
0
Calcular la integral de la función f(x)=3x2 en el intervalo [0 1]
1 1
1 1
0
2 3 3
3 x   3 x  x  13  0 3  1
3 0
0

Paso 2: escribir el comando para calcular la integral de la función.


>> valor_metodo1=integral(@(x)f(x),xinf, xsup);
>> valor_metodo2=quad(‘expresión’, xinf, xsup); también valor_metodo2=quad(‘expresión’, xinf, xsup);
Integración numérica de datos
Para la integración de datos numéricos, se emplea el comando trapz, el cual integra la curva generada por el par
ordenado (x,y):
>>área= trapz (x, y): integración numérica

Tanto x como y (se sugiere) son x y


vectores columna, estos
x1 y1
pueden ser vectores filas, sin
x2 y2
embargo, habitualmente se
organizan los datos en : :
vectores columna  xn yn

También se tiene el comando cumtrapz el cual realiza la integración numérica acumulada:


>>acum_área= cumtrapz (x, y): integración numérica acumulada
Los pasos sugeridos son:
Paso 1: Cargar lo datos (se sugiere que los datos estén en vectores columna, en caso que estén como vector fila, se
hace la traspuesta y se coloca como columna (x=x’; y=y’), realizar la gráfica de los datos
Paso 2: escribir el comando para la integración (trapz) o para la integración numérica acumulada (cumtrapz)
Integración numérica de datos (continuación)
Ejemplo:
El siguiente par ordenado de datos representa el tiempo y la velocidad de un carro, calcule la distancia recorrida en
dicho intervalo de tiempo.
t =[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24]
v = [0 .45 1.79 4.02 7.15 11.18 16.09 21.90 29.05 29.05 29.05 29.05 29.05 22.42 17.9 17.9 17.9 17.9 14.34 11.01 8.9
6.54 2.03 0.55 0];

Paso 1: Cargar lo datos (se sugiere que los datos estén en vectores columna, en caso que estén como vector fila, se
hace la traspuesta y se coloca como columna (x=x’; y=y’), realizar la gráfica de los datos
t v
>>t=t’;
0 0
>>v=v’; 1 0.45
>>plot(t,v,’o-’); title(‘velocidad del carro en el tiempo’); xlabel(‘tiempo (s)’); ylabel(‘velocidad(m/s)’); 2 1.79
3 4.02
4 7.15
: :
24 0
Integración numérica de datos (continuación)
Ejemplo: (continuación)
El siguiente par ordenado de datos representa el tiempo y la velocidad de un carro, calcule la distancia recorrida en
dicho intervalo de tiempo.
Paso 2: escribir el comando para la integración (trapz) o para la integración
numérica acumulada (cumtrapz)

>>distancia=trapz(t,v);

>>distancia_acum=cumtrapz(t,v);
Integración numérica de datos (continuación)
Ejemplo: (continuación)
La distancia_acum nos da la distancia recorrida e el tiempo, vamos a verlo mejor a escribir l matriz [t, distancia_acum]
y luego grafica la distancia_acum en el tiempo
Consideraciones para resolución
de problemas
Pasos sugeridos para generar un programa
relacionado a un problema
Paso 1. Plantear el problema
Escribir un enunciado que describa el problema, así se tendrá claro lo que se necesita y lo que se obtendrá. En este
paso es importante un esquema o dibujo de la situación (en los casos que lo amerite).

Solución de problemas de ingeniería con MATLAB. 2da edición. Delores Etter. Prentice Hall
Paso 2. Describir las variables de entrada (datos conocidos)
y la de salida
Colocar secciones como:
• variables de entrada por el usuario: paso importante donde se tendrá claro cuales son las datos necesarios
para resolver el problema, es muy importante incluir las unidades de cada variable.
• constantes necesarias: Identifique las constantes que tal vez requiera en el cálculo, como la constante de los
gases ideales y la aceleración de la gravedad, incluso hacer una base de datos de las sustancias que se
trataran, por ejemplo, densidad, cp, k, Pr, viscosidad dinámica a diferentes temperaturas.
• variable de salida: muy importante incluir las unidades de cada variable de salida

Cargar datos
No considerar las
unidades de las load Agua.txt;
variable, puede
ocasionar respuestas
incorrectas.
Paso 3. Resolver un problema sencillo similar o el mismo
aproximado
Resolver manualmente un problema similar, en forma ordenada.
• Datos de entrada con sus unidades
• Constantes necesarias con sus unidades
• Variables de salida con sus unidades
• Ecuaciones involucradas y pasos intermedios necesarios, como por ejemplo, interpolación de la base de datos
para una condición de entrada dada que no este en especificada en el conjunto de propiedades

Así se tendrá claro los pasos requeridos a medida que se resuelve el problema, y se tiene un idea de como será el
algoritmo a escribir en MATLAB

Nota: tomar un problema


resuelto en la literatura y
comparar el resultado
obtenido con el
reportado en el libro
Paso 4. Desarrollar un algoritmo para resolver el problema
y pasarlo a MATLAB
Muy importante colocar:
Secciones de entrada, de constantes necesarias, sección de calculo y salida del sistema.
Muy importante comentar cada ecuación y dato, sus unidades, en caso de requerir un cambio de unidad,
especificar los cambios de unidades con comentarios y la nueva unidad de medida de la variable involucrada.
Las funciones necearías que se emplearan, especificar las variables de entrada de la función, las constantes
requeridas y variable de salida
Paso 5. Probar el programa.
La salida o salidas del programa deben cumplir lo siguiente:
• Los resultados deben tener sentido físico.
• Coincidir con los resultados del libro. Recordar que se toma un problema de la literatura
• La salida o variable dependiente debe ser la que se necesita y con sus unidades.

En caso de no obtener la solución


correcta, correr el programa línea
por línea y comparar con cada línea
de resultado realizado a mano
anteriormente, para así identificar
el problema

Observar el Workspace para


identificar valores de variables que Workspace
no tienen sentido físico

También podría gustarte