UNIVERSIDAD NACIONAL DE SAN AGUSTIN ESCUELA PROFESIONAL DE INGENIERIA QUÍMICA
MODELAMIENTO Y SIMULACIÓN DE PROCESOS GUIA DE PRÁCTICAS MATLAB NIVEL 1
M.S. Miguel Angel Cárdenas Málaga
Arequipa – 2014 Arequipa – 2014
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 2 de 55
PRACTICA NRO. 1
INTRODUCCION A MATLAB
MATLAB. Significa “MAT “ MAThematics hematics LAB LABoratory” oratory”
es decir Laboratorio de
Matemáticas. También se dice que significa significa MAT MATrix rix LAB LABoratory. oratory. Es un software orientado a las matemáticas de alto nivel basado en el uso intenso de matrices.
Características
Programación mucho más sencilla
Tiene continuidad entre valores enteros, reales y complejos.
Mayor intervalo y exactitud en el manejo de números
Cuenta con amplias librerías matemáticas
Conceptos Básicos Constantes: Las cantidades numéricas se conocen como constantes: Ejemplo:
1, -1e5.
MSP-Matlab Nivel I
Variables:: Variables
M.S. M.A. Cárdenas Málaga
Página 3 de 55
Son nombres que representan o almacenan números o caracteres alfanuméricos Las variables numéricas almacenan números Las variables de cadena o alfanuméricas almacenan cadenas de texto (caracteres) Ejemplo:
x=5
x 1 = -0.35
v
=
'volumen' Debe evitarse el uso de variables que sean palabras
reservadas de Matlab (nombres de comandos y funciones propias de Matlab) como For, end, pi (3.1416),
eps (2.22042e-16) Es buena costumbre usar variables que recuerden el contenido que almacenan y que de preferencia no sean muy extensas. (Se recomienda no más de ocho caracteres)
Operadores: +, - , *, /, ^
suma,
resta,
multiplicación,
división,
potencia
>, <, >=, <=
mayor que, menor que, mayor o igual que,
menor o igual que
==
Igual en condicionales
~=
desigual en condicionales
& Si lógico, |
O lógico.
Los operadores lógicos se
pueden usar agrupados.
Funciones
sin (x), cos (x), tan (x) seno, coseno, tangente
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
asin (x), acos (x), tan (x)
Página 4 de 55
arco seno, arco coseno, arco
tangente sinh (x), cosh (x), tanh (x),
seno, coseno, tangente
hiperbólicos asinh (x), acosh (x), atanh (x) arco seno hiperbólico, arco coseno hiperbólico, etc.
abs (x)
valor absoluto de x
sqrt (x) (x)
raíz cuadrada de (x)
sign (x)
+1
si x es positivo
-1 si x es negativo
round (x)
redondea x al entero más cercano
exp (x)
base exponencial e
log (x)
logaritmo natural base e
log10 (x)
logaritmo decimal base 10
real (x)
parte real del número complejo x.
imag (x)
parte imaginaria de x
Asignación de Valores : x = r ; x = x +1;
r = 10;
la variable r toma toma el valor de 10
x toma el valor almacenado en la variable r el valor de x se incrementa en 1
Ventana de Comandos Comandos (Command Window) Es una de las ventanas iniciales que se presentan cuando se abre Matlab. Sirve para ejecutar comandos directos. En esta ventana se pone en ejecución a
los programas de Matlab, Matlab, conocidos como archivos m o
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 5 de 55
scripts. También aquí se presentan los resultados producidos por dichos programas.
Ventana del Editor Editor (Editor Window) En esta ventana se escriben los códigos o scripts de Matlab haciendo uso de los comandos correspondientes.
1. INICIO DE MATLAB M ATLAB Iniciar Matlab Aparecen varias varias ventanas. Una de ellas es la la ventana de comandos (Command Window)
Establecer Carpeta de Trabajo :
Matlab ejecutará solo los archivos que se encuentren en la carpeta de trabajos. Se supone que la carpeta trabajo fue creada anteriormente.
Se recomienda que cada programa sea guardado en su propia carpeta. 2. CREAR, ABRIR Y GRABAR UN ARCHIVO M
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 6 de 55
Se tienen dos formas de realizar estas acciones: utilizando el ícono o utilizando el desplegable:
Click en el icono para crear un script
Click en el desplegable y elegir
COMANDOS BASICOS Input
Para ingresar valores a través del teclado.
r = input (‘ingrese el valor del radio = ’) n = input ( ‘ingrese su nombre’, ‘s’)
El argumento ‘s’
indica que la entrada es una cadena
n = input ( ‘ingrese su nombre (entre apóstrofes):’ )
clc
borra la pantalla de comandos
clear x, y, z
borra de la memoria los valores almacenados en las variables x, y, z
Disp (x)
Presenta el valor de x en pantalla.
if – else – end Para implementar condicionales. Si se cumple la condición del if se realiza todo lo que está entre if y end. Caso contrario se realiza lo que está a continuación de else o de end.
fprintf
Para presentar mensajes literales y valores de variables. Note en los ejemplos el formato especial que tiene.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 7 de 55
Break
termina generados por los comandos for o while
For – end
Muy útil para cálculos iterativos o contadores.
For conta = 1: maxite
hace que el contador conta se
inicie en 1, se incremente de 1 en 1 y alcance el valor máximo igual a maxite Mientras que conta sea menor o igual a maxite, se repite todo lo que está entre el for y su correspondiente end Verifique
que
por
cada
if o for se tenga su
correspondiente end
%
Sirve
para
incluir
comentarios,
notas
explicativas,
instrucciones. No afecta el funcionamiento del programa
while – end
Muy útil para cálculos iterativos condicionales Mientras se cumpla la condición definida en while, se repiten los comandos comprendidos entre while y su respectivo end.
3. EJEMPLOS PROGRAMA 1 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 1 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de asignación de variables y disp %-----------------------------------------------------clc
r = 2; vol = (4/3)*pi*r^3;
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 8 de 55
disp ('volumen es =') disp (vol)
PROGRAMA 2 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 2 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de input %-----------------------------------------------------clc
r = input('ingrese el valor del radio = '); vol = (4/3)*pi*r^3; disp('volumen de la esfera es =') disp (vol)
PROGRAMA 3 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 3 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de for %-----------------------------------------------------clc for x = 1:5 r = input('ingrese el valor del radio r = ');
vol = (4/3)*pi*r^3; disp ('para el radio =') disp(r) disp ('el volumen de la esfera es = '); disp (vol) end
PROGRAMA 4 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 4 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de for %-----------------------------------------------------clc
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 9 de 55
for r = 1:5
vol = (4/3)*pi*r^3; disp ('para el radio =') disp (r) disp ('el volumen de la esfera es = ') disp (vol) end
PROGRAMA 5 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 5 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de if
%-----------------------------------------------------clc for x = 1:5 r = input('ingrese el valor del radio r = '); if r > 0 vol = (4/3)*pi*r^3; disp ('volumen de la esfera es = ') disp (vol) else disp(' radio invalido') end end
PROGRAMA 6 %-----------------------------------------------------% CALCULO DE VOLUMENES. Versión 6 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de while %-----------------------------------------------------clc r = 1; while r < 10 disp (r);
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 10 de 55
disp ('radio muy pequeño. No se volumen') disp(' ') disp(' ') r = r +1; end while r < 20 vol = (4/3)*pi*r^3; disp (r); disp ('volumen de la esfera es = ') disp (vol) r = r+1; end disp ('radio ya no es menor que 20')
calculará
el
PROGRAMA 7 %-----------------------------------------------------% CALCULO DE VOLUMENES. V 7 % Autor: Ing. Miguel A. Cárdenas Málaga % Uso de fprintf %-----------------------------------------------------clc r = 1; while r < 10 fprintf('radio % 5.2f',r); fprintf (' radio muy pequeño. No se calculará el volumen\n\n') r = r +1; end while r < 20 vol = (4/3)*pi*r^3; fprintf('para el radio radio % 3.2f',r); fprintf(' el volumen de la esfera es = %12.2f\n', vol); r = r+1; end disp ('radio ya no es menor que 20')
4. PROBLEMAS
MSP-Matlab Nivel I
1.
M.S. M.A. Cárdenas Málaga
Página 11 de 55
Calcular las áreas de los círculos para un rango de diámetros de 10 a 20.
2.
Escribir un programa para calcular el área de un círculo. El usuario debe ingresar el diámetro. No se debe calcular si el diámetro es negativo o igual a cero.
3.
Ingresar 5 diámetros y para cada diámetro calcular el área del círculo y volumen de la esfera correspondientes.
4.
Ingresar un número. Si es par el programa debe mostrar el mensaje ‘ es par’, caso contrario debe mostrar ‘ es impar’.
5.
Ingresar 10 temperaturas en grados C. Si una temperatura es par convertirla a K, caso contrario convertirla a F.
6.
La ecuación cuadrática es ax 2 + bx +c = 0 Si la discriminante es mayor que cero, se tienen dos raíces reales x1 y x2 (las mismas que pueden ser iguales o diferentes entre si). Escribir un programa para calcular dichas raíces. Si la discriminante es negativa mostrar un mensaje ‘raíces imaginarias’
7.
Sumar los primeros 10 números naturales.
8.
Sumar los primeros n números naturales
9.
Ingresar n números y sumarlos
10. Ingresar n números y hallar la suma de los pares y la suma de los impares.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 12 de 55
PRACTICA NRO. 2
VECTORES Y MATRICES
Vector fila
Es un arreglo de números en forma de fila Las tres formas siguientes proporcionan el mismo vector fila
x = [2, 4, 6, 8, 10]; x = 2: 2:10; for i = 1:5 x(i) = 2*i; end
Vector columna Es un arreglo de números en forma de columna El apóstrofe equivale al operador de transposición. z = [3, 6, 9, 12]’; Los elementos de un vector columna se separan por puntos y comas
x = [2; 4; 6; 8; 10];
MSP-Matlab Nivel I
Elemento de vector
M.S. M.A. Cárdenas Málaga
z (3)
especifica
al
Página 13 de 55
elemento
9
del
vector
columna z
Agregar elementos
z ( 5) = 15
el vector z tendrá ahora 5 elementos.
z = [z;15]
adiciona el elemento 15 al vector columna z
x = [x, 12]
adiciona el elemento 12 al vector fila x
Operaciones Asumiendo que x, y son vectores de igual tamaño. z=x+y
suma de elemento a elemento.
z = x – y
resta de elemento a elemento
z = x .* y
multiplicación de elemento a elemento.
Vea el punto z = x./ y división de elemento a elemento. Vea el punto z = x.^ 2
potencia de cada elemento. Vea el punto
z = a*b
multiplicación vectorial. Es posible si el número de columnas del vector fila a es igual al número de filas del vector columna y
Matrices
m = [1, 2, 3; 4, 5, 6; 7, 8, 9]
matriz 3x3
Operaciones Asumiendo que a y b son dos matrices del mismo tamaño c=a+b
suma de elemento a elemento.
c = a – b
resta de elemento a elemento
c = a.* b
multiplicación de elemento a elemento.
Vea el punto c = a./b división de elemento a elemento. Vea el punto
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 14 de 55
c = a.^3 potencia de cada elemento. Vea el punto c = x*y
multiplicación matricial. Es posible si el número de columnas de la matriz x es igual al número de filas de la matriz y
Ordenar
sort (x) ordena de mayor a menor los elementos de x
Sumatoria
sum (x) suma a los elementos de x
Máximo
max (x) encuentra el máximo elemento de x
Mínimo
min (x) encuentra el mínimo elemento de x
1. Dados los siguientes vectores a = [1, 3, 4, 5]
b = [7, 8, 9, 10]
-4 c=
Hallar :
8
1 d=
3
9
2
7
1
z=a+b
z1 = a – b
z2 = a.*b
z3 = b.^az4
v1 = c – d
v2 = c.*d
v3 = c.^d
v4 = c./d
= b./a v=c+d
Sumar los elementos de cada vector a, b, c y d Hallar el mayor elemento y el menor elemento de cada vector a, b, c y d
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 15 de 55
Hallar la suma de los segundos elementos de todos los vectores Ordenar a los vectores a, b, c y d 2. Hallar ¿ Es posible hallar
m = a*b
m1 = b*c
m2 = b*a
m3 = c *b ?
3. Dadas la matrices 1 2 3 a=
7 1 9
4 5 6
b=
7 8 9 Hallar
m=a+b
3 8 6 4 3 5
m1 = a – b
m2 = a.*b
m3 = b ./a
m4 = a*b Explicar el resultado de sum(a) y sum (b) Explicar el resultado de min (a), min (b), max (a), max (b) Hallar el mayor elemento de la matriz a y de la matriz b Hallar el menor elemento de la matriz a y de la matriz b
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 16 de 55
PRACTICA NRO. 3 FUNCIONES
Al igual que otros lenguajes de programación, Matlab ofrece la posibilidad de que el usuario defina sus propias funciones. Una función es un procedimiento que realiza una tarea específica y que se llama desde un programa principal. La ventaja principal de una función es que evita la programación repetida de los mismos cálculos. Una vez establecida, la función puede ser llamada en cualquier posición del programa principal. Debido a que las funciones de Matlab se graban como archivos independientes, una misma función puede ser llamada por más de un programa. Esta
característica proporciona al usuario un gran ahorro de
tiempo y le permite aprovechar al máximo cada una de las funciones elaboradas. En el siguiente ejemplo se define una función para calcular el volumen de una esfera: Function f = volesfe(x) f = 4/3*pi*x^3;
Esta función se graba en el archivo volesfe.m
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 17 de 55
Function f = volesfe(x): Es el comando que define a una función. Note como la misma variable f aparece en el comando function y en la ecuación.
volesfe es el nombre de la función. Nótese que volesfe es el mismo nombre del archivo en el que se guarda a la función. La variable x es el argumento de la función. Si la ecuación que define a la función tiene una sola variable, entonces function tendrá solamente un argumento, pero si en la ecuación intervienen dos o más
variables, entonces en function
deben aparecer esas mismas dos o más variables como argumentos. Por ejemplo la siguiente función para calcular el área de un triángulo requiere dos argumentos la base y la altura: Function f = area (b,h)
f = b*h/2; Nótese que los argumentos se separan mediante comas. El programa principal siguiente llama a la función volesfe para el cálculo del volumen de la esfera para cada radio que se ingresa:
%--------Cálculo del volumen de una esfera clc r = input(‘ingrese un radio:’); vol = feval (‘volesfe’,r);
fprint f (‘para el radio %2.1f\n’, r); fprintf (‘el volumen de la esfera es %2.1f\n’, vol)
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
vol = feval (‘volesfe’,r);
Página 18 de 55
feval es el comando para llamar a una
función específica.
feval proviene del inglés f unction evaluation o evaluación de funciones; entonces este comando sirva para evaluar o calcular funciones. Nótese que entre paréntesis se coloca el nombre de la función ( y que es el mismo del archivo de la función sin la extensión m) y la variable que debe utilizarse en el cálculo de la función. Finalmente debe indicarse que el valor calculado de la función se almacenará en la variable vol.
Una función también puede devolver múltiples variables. Por ejemplo la función siguiente devuelve el volumen de una esfera y el área de un triángulo
Function [v, a] = volarea (r,b,h) v = 3/4*pi*r^3; a = b*h/2;
Esta función se deberá grabar en un archivo llamado volarea.m
1.
Ingresar 20 números enteros positivos. Preparar una tabla que muestre cada número y
su cuadrado, cubo, raíz cuadrada y
logaritmo.
%----Ingreso de números clc for i = 1:20;
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 19 de 55
fprintf ('ingrese el número %2.0f',i) x(i) = input(' = '); end %-------Impresión de cabecera de la tabla clc fprintf('-------------------------------------------\n'); fprintf(' Tabla \n') fprintf(' x Cuadrado Cubo Raiz Logaritmo\n'); fprintf('-------------------------------------------\n'); %--------Cálculo del cuadrado, cubo, raíz y logaritmo for i = 1:20; c2 = feval ('cuadra',x(i)); c3 = feval ('cubo',x(i)); cr = feval ('raiz',x(i)); cl = feval ('loga',x(i)); fprintf ('%2.0f%10.0f%10.0f%10.4f%10.4f\n',x(i),c2,c3, cr,cl) end fprintf('-------------------------------------------\n');
2.
Ingresar N temperatura en Centigrados y presentar una tabla con la temperatura en Centigrados, Faranheit y Kelvin
3.
Se tienen 3 gases: oxigeno, helio y óxido nítrico. Calcular la presión según la Ley de los gases ideales y según la ecuación de Van der Walls para los siguientes datos de volumen molar y temperatura en Centigrados.
Tabla 1. Parámetros . Problema 3
Volumen Molar
Temperatura
(lt/mol)
( C)
Gas
a
b
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
1.6
80
1.8
80
2.0
80
2.4
100
2.8
100
3.0
100
Página 20 de 55
CO2 3.599 He
0.03412
N2O5 1.34
0.04267 0.02370 0.02789
4.
Dado un entero K hallar su factorial K! = 1*2*3*4*....K
5.
Calcular la suma de los N primeros múltiplos de un entero K. Por ejemplo si N = 10 y K = 3 se debe hallar
la sumatoria 1*3 +
2*3 + 3*3 + ......10*3. El programa debe ser totalmente general. 6.
Dado un entero determinar si es primo o no
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 21 de 55
PRACTICA NRO. 4
GRAFICOS BASICOS EN MATLAB
En ingeniería para comprender un proceso y así diseñarlo, controlarlo u optimizarlo es importante conocer como se relacionan entre si las variables que gobiernan dicho proceso.
Estas relaciones entre variables con
frecuencia se expresan en forma de ecuaciones matemáticas y estas a su vez pueden presentarse en forma gráfica para su mejor entendimiento. Las ecuaciones matemáticas pueden expresar relaciones entre variables en una, dos o tres dimensiones. Por lo tanto es muy conveniente manejar un paquete que permita graficar de manera rápida y sencilla estos tipos de gráficos. Matlab ofrece esta posibilidad. Los gráficos son una parte natural del entorno de computación de Matlab y los resultados de muchos cálculos puede efectuarse con algunos comandos. El estudiante de ingeniería debe habituarse a graficar las ecuaciones con las que trabaje al igual que los resultados de sus análisis, ello le ayudará a entender con mayor profundidad los conceptos fundamentales de su profesión.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
El siguiente código grafica la función
Página 22 de 55
y = sen(x)* exp(-0.4*x)
x = 0:0.5:10; y = sin(x)*exp(-0.4*x); plot (x,y) grid title ( 'título del gráfico') xlabel ('eje x'); ylabel ('eje y')
La primera línea genera un conjunto de valores desde 0 hasta 10 con incrementos de 0.5. Estos valores se almacenan en el vector x. En la segunda línea para cada valor de x se calcula el correspondiente valor de la función. Estos valores se almacenan en el vector y. Nótese que los vectores x, y tienen la misma longitud. Si el vector x es un vector fila y también será un vector fila, igualmente, si x es un vector columna y también será un vector columna.
COMANDOS DE GRAFICOS plot (x, y)
Sirve para graficar en un
plano con dos variables.
Especifica el tipo y color de líneas y marcas a utilizar en la curva del gráfico.
plot ( x, y ,’+r’)
Grafica los datos con la marca x de color rojo. Ver Tabla 1
plot (x, y, ‘--b’) Grafica los datos con una línea de guiones de color azul). Ver Tabla 1
grid on
Activa la cuadricula
grid off
Desactiva la cuadricula.
title ( ‘ titulo’) Sirve para colocar un título al gráfico xlabel (‘x’) , ylabel (‘y’)Se utilizan para rotular o poner nombres a los ejes de las abcisas y de las ordenadas respectivamente.
clf
Borra la ventana de gráficos
cla
Borra las curvas graficadas y redibuja los ejes
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 23 de 55
Tabla 2. Símbolos para Gráficos
Tipo de Marca
Símbolo
Tipo de Línea
Punto
Continua
Mas
+
Guiones
Asterisco
*
Punteada
Circulo
o
guiones y puntos
Marca x
x
Símbolo -: -.
Color de Línea
Símbolo
rojo
r
amarillo
y
magenta
m
turquesa
c
verde
g
azul
b
blanco
w
negro
k
axis (‘square’) Presenta un gráfico en forma cuadrada axis (‘off’) axis (‘on’)
Omite los ejes coordenados Activa los ejes coordenados. Cancela a axis (‘off’)
axis ([x_min, x_max, y_min, y_max]) Especifica los valoreS mínimos y máximo de los ejes ordenados
polar (t,y)
Grafica t , y en coordenadas polares
loglog (x,y)
Grafica logaritmo de x versus logaritmo de y
semilogy (x,y) Grafica x versus el logaritmo de y semilogx (x,y) Grafica logaritmo de x versus y
Texto en Gráficos Con frecuencia en los gráficos de ingeniería se deben incluir rótulos aclaratorios de las curvas presentes en un mismo gráfico. Matlab cuenta con el comando text.
MSP-Matlab Nivel I
text (x, y, ‘texto’)
M.S. M.A. Cárdenas Málaga
Página 24 de 55
x, y son las coordenadas del punto donde
comienza el texto Es posible cambiar el color, el tamaño y tipo de fuente.
CURVAS MULTIPLES Si se necesita presentar dos o más curvas en un mismo gráfico se puede hacer uso del comando plot
x= 0: 0.5: 5; y = sin (x); z = cos (x); plot (x, y, z)
Los colores y tipos de línea se escogerán automáticamente; pero también es posible especificar la marca, el color y tipo de línea según se necesite
plot (x, y, ‘—‘, x, z, ‘*’) plot (x, y, ‘r‘, x, z, ‘y’)
Adicionar una Curva a un Gráfico En ciertas ocasiones ya se tiene un grafico y se requiere adicionar una o más curvas, para ello se cuenta con el comando hold on
hold on
Retiene al grafico
de modo que
nuevas curvas se
adicionen al grafico.
hold off
Cancela la acción de hold on. Se recomienda que al inicio y al final de un programa se coloque hold off ya que el grafico retenido por hold on permanece en pantalla asi se ejecute otro programa diferente.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 25 de 55
GRAFICO DE SUPERFICIES En ingeniería con bastante frecuencia se puede encontrar que una variable depende solamente de otra variable. Al graficar esta relación se obtiene una grafica sencilla en un plano con dos ejes coordenados, se dice entonces que el gráfico es de dos dimensiones. Estas son las clásicas curvas y = F(x). Por otro lado también son comunes los casos en que una sola variable dependiente es función de dos variables independientes, y = F (x1, x2) y si se quiere representar gráficamente la dependencia de y es necesario un gráfico con tres ejes coordenados o de tres dimensiones. Matlab puede manejar con relativa sencillez este tipo de gráficos. Para los casos de más de 4 variables independientes, la visualización gráfica no es posible.
clear, clc xa = -2:0.5:2; ya = -2:0.5:2; [x, y] = meshgrid ( xa, ya); z = x.*exp (-x.^2 –y.^2); mesh ( x,y,z)
title ('Este es un gráfico 3D') xlabel ('eje x'); ylabel ('eje y'); zlabel('eje z');
[x, y] = meshgrid ( xa, ya);
Crea los arreglos bidimensionales (
matrices) que servirán para combinar apropiadamente los ejes coordenados x y y. Note que x es una matriz al igual que y.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 26 de 55
z es una matriz que resulta de efectuar las operaciones entre todos los valores de x con todos los valores de y
mesh (x,y,z)
Grafica z en función de x y y. Se presenta en forma de malla.
1.
Graficar la función y = sin (x).*exp ( -0.2*x) para valores de x de 0 a 10 con incrementos de 0.2 . Colocar un título de gráfico y los respectivos rótulos de los ejes coordenados. Incluir la cuadrícula.
2.
Modifique el gráfico anterior incluyendo comandos axis.
3.
Grafique la función anterior en coordenadas polares
4.
Dado el vector t = 0.1:0.1:3 prepare un gráfico loglog (x, y). Donde x = exp (t), y = exp(t.*sinh(t))
5.
Modifique el grafico anterior
de modo que sea semilogx y
semilogy 6.
Genere valores para un vector x. Grafique simultáneamente seno (x) y coseno(x). Con text identifique cada curva. Haga que una de las curvas tenga solo línea y la otra solo marcas.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 27 de 55
PRACTICA NRO. 5
ALGEBRA MATRICIAL
El cálculo matricial es de uso común en ingeniería, son numerosos los problemas cuya resolución requiere de la aplicación de los métodos matriciales. Basta mencionar los sistemas de ecuaciones algebraicas lineales
que aparecen en los balances de materia, en el cálculo de
evaporadores, columnas de destilación, reactores en estado estacionario, etc. Las ventajas de Matlab como paquete matemático tienen su origen en el denso uso de vectores y matrices.
MATRICES ESPECIALES Matriz Cuadrada:
cuando el número filas es igal al de las columnas
(m=n)
Matriz nula : Todos los elementos de la matriz son ceros. A = zeros (m,n) devuelve una matriz nula de m filas por n columnas A = zeros (n) devuelve una matriz nula de n por n
MSP-Matlab Nivel I
Matriz identidad :
M.S. M.A. Cárdenas Málaga
Página 28 de 55
Es una matriz cuadrada con los elementos de la
diagonal principal iguales a uno y el resto iguales a ceros
I = eye (n)
devuelve una matriz identidad de tamaño n
Matriz Transpuesta. Es la matriz que resulta de intercambiar filas por columnas.
B = A' devuelve la matriz transpuesta de A C = ones (m,n) devuelve una matriz de tamaño m por n con todos sus elementos iguales a uno.
zeros (size(A)) retorna una matriz nula de tamaño igual al de la matriz A ones(size(A)) retorna una matriz de unos con tamaño igual al de la matriz A
OPERACIONES MATRICIALES C=A+B
suma de matrices ci,j = ai,j + bi,j
C = A – B
resta de matrices ci,j = ai,j - bi,j
C = A*B producto de matrices. Requiere que el número de columnas de A sea igual que el número de filas de B
c i , j a i ,k b k , j k
C tendrá igual número de columnas que A , e igual número de filas que C
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 29 de 55
En general A*B B*A
B = inv(A)
retorna la inversa de la matriz A. El producto de una matriz por su inversa es igual a la matriz identidad. I = A*B No todas las matrices tienen inversa. Una matriz que no tiene inversa se denomina matriz singular .
1.
Dados las siguientes vectores y matrices :
A =
y=
2 1 4 3 1 2 4 3 1
7 8 4 2 3 5 8 2 6
x=
x + y,
x – y
A+b
A*B
A*x
B=
3 4 3
5 6 8
Calcular: A – B
2.
Escribir un programa para ingresar los elementos de un vector fila de
tamaño n 3.
Escribir un programa para ingresar un vector columna de tamaño n
MSP-Matlab Nivel I
4.
M.S. M.A. Cárdenas Málaga
Página 30 de 55
Escribir un programa para ingresar los elementos de una matriz de m filas por n columnas.
5.
Hallar la matriz transpuesta de la matriz A del problema 1
6.
Hallar la matriz inversa de la matriz b del problema 1. Verificar que el producto de la matriz B con su inversa es igual a la matriz identidad.
7.
Efectuar los siguientes productos
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 31 de 55
PRACTICA NRO. 6
SISTEMA DE ECUACIONES ALGEBRAICAS LINEALES
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 32 de 55
PRACTICA NRO. 7
ECUACIONES ALGEBRAICAS NO LINEALES: METODO DE NEWTON
Archivo newton.m % % % %
RESOLUCION DE ECUACIONES ALGEBRAICAS NO LINEALES METODO DE NEWTON
Autor: Ing. Miguel Angel Cárdenas Málaga
%------------------------------------------------------------INSTRUCCIONES % % Defina la función en:
MSP-Matlab Nivel I
% % %
M.S. M.A. Cárdenas Málaga
Página 33 de 55
archivo de función: ea_nolin.m Defina la derivada en: archivo de derivada: deriva.m
NOMENCLATURA % % x: Aproximación inicial % tol: Tolerancia % maxite: Número máximo de iteraciones % conta: Contador de iteraciones % fx: Valor de la función en x % dfx: Derivada de la función en x % xuno: Siguiente valor de x (xi+1) %------------------------------------------------------------clc
conta = 1; maxite = 50; tol = 0.0001; x = input('ingrese el valor inicial x= '); clc fprintf('------------------------------------------------\n'); fprintf(' METODO DE NEWTON\n') fprintf('itera x fx dfx xuno\n'); fprintf('------------------------------------------------\n'); for conta = 1: maxite fx = feval('ea_nolin',x); dfx = feval('deriva',x);
xuno = x -fx/dfx; fprintf('%3.0f%12.4f%12.4f%12.4f%12.4f\n',conta,x ,fx,dfx,xuno); if (abs(fx)>tol) x = xuno; else break end end
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 34 de 55
fprintf('------------------------------------------------\n'); if (conta >= maxite) fprintf(' EL METODO NO CONVERGE\n'); else
fprintf('
LA RESPUESTA ES:%12.4f\n',x);
end
Archivo ea_nolin.m % FUNCION ea_nolin.m % Define la ecuación a resolver por los métodos numéricos: Bisección, Newton, Regula Falsi, Secante %-------------------------------------------------------function f = ea_nolin(x) f = x^3+2*x^2+10*x-20;
Archivo deriva.m % FUNCION deriva.m % Define a la derivada de la función que se resuelve por el método de Newton % -------------------------------------function f = deriva(x)
f = 3*x^2+34*x + 10;
1.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 35 de 55
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 36 de 55
PRACTICA NRO. 8
ECUACIONES ALGEBRAICAS NO LINEALES: METODO DE PUNTO FIJO
Archivo pfijo.m % % RESOLUCION DE ECUACIONES ALGEBRAICAS NO LINEALES METODO DE PUNTO FIJO % % % Autor: Ing. Miguel Angel Cárdenas Málaga %------------------------------------------------------------% INSTRUCCIONES % Defina la funcion gx en: % archivo de función: gx.m
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 37 de 55
% Defina la derivada de gx en: % archivo de derivada: gprima.m % NOMENCLATURA % % x: Aproximación inicial % tol: Tolerancia % maxite: Número máximo de iteraciones % conta: Contador de iteraciones % xuno: Siguiente valor de x (xi+1) % ea: Error actual % conta: Contador de iteraciones %------------------------------------------------------------maxite = 50; tol = 0.0001; ea = 10; conta = 0; clc x = input('ingrese el valor inicial x= '); fprintf('------------------------------------------------\n'); fprintf(' METODO DE PUNTO FIJO\n') fprintf('itera x xuno gprima ea\n'); fprintf('------------------------------------------------\n'); while ea > tol
conta = conta +1; if conta < maxite xuno = feval('gx',x); gpri = feval('gprima',x); ea = abs(x -xuno); fprintf('%3.0f%12.4f%12.4f%12.4f%12.4f\n', conta,x,xuno,gpri,ea); x = xuno; else
break end end
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 38 de 55
fprintf('------------------------------------------------\n'); if (conta >= maxite) fprintf(' EL METODO NO CONVERGE\n'); else
fprintf('
LA RESPUESTA ES:%12.4f\n',x);
end
Archivo gx.m function f = gx(x)
f = (20 -x^3 -2*x^2)/10;
Archivo gprima.m function f = gprima(x)
f = (-3*x^2 – 4*x)/10
1.
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 39 de 55
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 40 de 55
PRACTICA NRO. 9
ECUACIONES ALGEBRAICAS NO LINEALES: METODO DE BISECCION
Archivo bis.m % % RESOLUCION DE ECUACIONES ALGEBRAICAS NO LINEALES METODO DE BISECCION % % % Autor: Ing. Miguel Angel Cárdenas Málaga %------------------------------------------------------------INSTRUCCIONES % % Defina ecuación a resolver en:
MSP-Matlab Nivel I
%
M.S. M.A. Cárdenas Málaga
Página 41 de 55
archivo de función: ea_nolin.m
% NOMENCLATURA % xi: Límite inferior del intervalo % xs: Límite superior del intervalo % xm: Punto medio del intervalo % tol: Tolerancia % maxite: Número máximo de iteraciones % conta: Contador de iteraciones % fxi: Valor de la función en xi % fxs: Valor de la función en xs % fxm: Valor de la función en xm %-----------------------------------------------------------clc maxite = 50; tol = 0.0001; xi = input('ingrese el límite inferior xi= '); xs = input('ingrese el límite superior xs= '); fxi=feval('ea_nolin',xi); fxs=feval('ea_nolin',xs); conta = 0; if ( fxi*fxs>0) fprintf('--------------------------------------------\n');
fprintf(' METODO DE BISECCION\n') fprintf('itera xi xs fxi fxs\n'); fprintf('-------------------------------------------\n'); fprintf('%3.0f%10.4f%10.4f%10.4f%10.4f\n',conta,x i,xs,fxi,fxs); fprintf('\n El intervalo inicial no contiene a la raiz \n') break end clc
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 42 de 55
fprintf('------------------------------------------------\n'); fprintf(' METODO DE BISECCION\n') fprintf('itera xi xs xm fxi fxs fxm\n'); fprintf('------------------------------------------------\n'); for conta = 1: maxite xm=(xi+xs)/2; fxm=feval('ea_nolin',xm); fprintf('%3.0f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4 f\n',conta,xi,xs,xm,fxi,fxs,fxm); if (abs(fxm)>tol) if (fxi*fxm>0) xi=xm; fxi=fxm; else xs=xm; fxs=fxm; end else break end end fprintf('------------------------------------------------\n'); if (conta>=maxite) fprintf(' EL METODO NO CONVERGE\n'); else fprintf(' LA RESPUESTA ES:%12.4f\n',xm); end
Archivo ea_nolin.m % FUNCION ea_nolin.m % Define la ecuación a resolver por los métodos numéricos: Bisección, Newton, Regula Falsi, Secante %-------------------------------------------------------function f= ea_nolin(x) f=x^3+2*x^2+10*x-20;
MSP-Matlab Nivel I
1.
M.S. M.A. Cárdenas Málaga
Página 43 de 55
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 44 de 55
PRACTICA NRO. 10
RESOLUCION DE ECUACIONES ALGEBRAICAS CON FSOLVE
Archivo eje1fsolve.m % --------- Ejemplo 1: uso de fsolve vini = 1; s = fsolve(@fun1,vini); s
Archivo de función fun1.m
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 45 de 55
function f = fun1(x) f = 3*x -sqrt(x) +x^2*exp(0.2*x)-10; end
Archivo eje2fsolve.m % --------- Ejemplo 2: uso de fsolve a = input('ingrese el valor de a = ') b = 0.2; vini = 1; s = fsolve(@(x) fun2(x, a,b),vini); s
Archivo de función fun2.m function f = fun2(x,a,b)
f = a*x -sqrt(x) +x^2*exp(b*x)-10; end
Archivo eje3fsolve.m % --------- Ejemplo 3: uso de fsolve a = [3,4,5,6]; b = 0.2; vini = [1,1,1,1]; s = fsolve(@(x) fun3(x, a,b),vini); s
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 46 de 55
Archivo de función fun3.m function f = fun3(x,a,b) f = a.*x + sqrt(x)+x.^2.*exp(b.*x)-10; end
Archivo eje3fsolve.m
% ----------Ejemplo 4 Uso de fsolve a= 2; b= 1; c= 0.3; d=3; g=0.5; vi = [0,0]; x= fsolve(@(z)fun4(z,a,b,c,d,g),vi)
Archivo de función fun4.m function f= fun4(z,a,b,c,d,g) x= z(1); y = z(2); f(1) = a*x -b*y - exp(c*x); f(2) = -d*x+g*y-exp(c*y); end
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 47 de 55
PRACTICA NRO. 11
SISTEMAS DE ECUACIONES ALGEBRAICAS NO LINEALES
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 48 de 55
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 49 de 55
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 50 de 55
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 51 de 55
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 52 de 55
MSP-Matlab Nivel I
ACTIVIDADES
M.S. M.A. Cárdenas Málaga
Página 53 de 55
MSP-Matlab Nivel I
M.S. M.A. Cárdenas Málaga
Página 54 de 55
CONTENIDOS PRACTICA NRO. 1:
INTRODUCCION A MATLAB
PRACTICA NRO. 2:
VECTORES Y MATRICES
PRACTICA NRO. 3:
FUNCIONES
PRACTICA NRO. 4:
GRAFICOS BASICOS EN MATLAB
PRACTICA NRO. 5:
ALGEBRA MATRICIAL
PRACTICA NRO. 6:
SISTEMA DE ECUACIONES ALGEBRAICAS LINEALES
PRACTICA NRO. 7:
ECUACIONES ALGEBRAICAS NO LINEALES
PRACTICA NRO. 8: PRACTICA NRO. 9: PRACTICA NRO. 10:
AJUSTE DE CURVAS
PRACTICA NRO. 11:
FUNCIONES DE SPLINES
PRACTICA NRO. 12:
SISTEMA DE ECUACIONES ALGEBRAICAS NO LINEALES
PRACTICA NRO. 13:
ECUACIONES DIFERENCIALES ORDINARIAS