Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso para Ingenieros PDF
Curso para Ingenieros PDF
CONTENIDOS:
1. Generalidades.
2. Manipulacin de matrices.
3. Grficas en 2D y 3D.
4. Programacin.
5. Mtodos numricos.
6. Matemticas simblicas.
7. Simulink.
1. Generalidades
Desarrollado a finales de los setenta en las Universidades de New Mexico y Stanford. En la
actualidad ampliamente difundido en diversas Universidades e Industrias. Ncleo bsico del
programa: Clculo numrico basado en matrices. Matlab= Matrix Laboratory. Mdulos
adicionales. Simulink, MatLab Symbolic Toolbox (ncleo del programa Maple), etc. La versin
ltima es R2013a.
Operadores
Tipos de datos: MATLAB es un programa preparado para trabajar con vectores y matrices.
Como caso particular tambin trabaja con variables escalares (matrices de dimensin 1). MATLAB
trabaja siempre en doble precisin, es decir guardando cada dato en 8 bytes, con unas 15 cifras
decimales exactas. Ya se ver ms adelante que tambin puede trabajar con cadenas de caracteres
(strings) y, desde la versin 5.0, tambin con otros tipos de datos: Matrices de ms dos
dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.
2 3 4 5 6 7 8 9 10
En cierta forma se podra decir que el operador (:) representa un rango: en este caso, los nmeros
enteros entre el 1 y el 10.
Por defecto el incremento es 1, pero este operador puede tambin utilizarse con otros valores
enteros y reales, positivos o negativos. En este caso el incremento va entre el valor inferior y el
superior.
>> x=1:2:10
x=
1
3 5 7 9
>> x=10:-1:1
x=
10 9 8 7 6 5 4 3 2 1
4
OPERADORES RELACIONALES
OPERADORES LOGICOS
Hex
Smbolo
ASCII
Hex
Smbolo
ASCII
Hex
Smbolo
ASCII
Hex
Smbolo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
(espacio)
!
"
#
$
%
&
'
(
)
*
+
,
.
/
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
ASCII
Hex
Smbolo
ASCII
Hex
Smbolo
ASCII
Hex
Smbolo
ASCII
Hex
Smbolo
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
GUIA DE LA CLASE1
Ambiente de trabajo de MatLab. Workspace, Windows y Help.
Propsitos
Command Window
Figure Window
Editor Window
Help Window
Workspace Window
Ventana Command: Esta ventana es la ventana principal y se abre cuando comienza Matlab. Es
conveniente tener la ventana command como la nica ventana visible y esto puede hacerse cerrando
todas las otras ventanas.
Ventana Figure: La ventana figure se abre automticamente cuando ejecutamos los comandos
grficos y contienen grficos creados por estos comandos. Un ejemplo de la ventana Figure es
mostrada en la figura 2.
11
Ventana Editor: La ventana editor es usada para escribir y editar, crear y modificar programas,
tanto como ejecutarlos paso a paso para ver si contienen errores (proceso de depuracin). El editor
muestra con diferentes colores los diferentes tipos o elementos de los comandos (en verde, para los
comentarios; en rojo, las cadenas de caracteres, etc.). El editor se preocupa de que las comillas o
parntesis que se abren, no se queden sin cerrar. Figura 3
12
FIGURA 4:
VENTANA HELP
13
Este formato es menos adecuado para consultar que el HTML, pero mucho ms adecuado
para imprimir y revisar luego sobre papel. El formato *.pdf requiere del programa gratuito
Adobe Acrobat Reader 5.0 o una versin superior.
4. Examples and Demos. Se abre una ventana que da acceso a un buen nmero de ejemplos
resueltos con MATLAB, cuyos resultados se presentan grficamente de diversas formas. Es
bastante interesante recorrer estos ejemplos para hacerse idea de las posibilidades del
programa.
DESK
14
Adems, se puede tambin recurrir al Help desde la lnea de comandos. Se aconseja hacer
prcticas al respecto. Por ejemplo, obsrvese la respuesta a los siguientes usos del comando
help:
help
help lang
El comando helpwin seguido de un nombre de comando muestra la informacin
correspondiente a ese comando en la ventana Help Window (ver Figura 5), incluyendo
tambin comandos similares sobre los que se ofrece ayuda.
El comando doc seguido de un nombre de comando muestra la informacin correspondiente a
ese comando a travs de Netscape Navigator o Internet Explorer, en formato HTML.
El Debugger es un programa enormemente til para detectar y corregir errores, que hay que
conocer muy bien. Para ello lo mejor es practicar. De hecho, al realizar operaciones con el
Debugger grfico van a apareciendo las correspondientes instrucciones en la lnea de
comandos.
VISITE:
VENTANA WORKSPACE
15
123
456
789
Una sencilla operacin con A es hallar su matriz traspuesta. En MATLAB el apstrofe (')
es el smbolo de trasposicin matricial.
Para calcular A' (traspuesta de A) basta teclear lo siguiente:
>> A'
ans
=
14 7
258
369
La variable ans puede ser utilizada como operando en la siguiente expresin que se
introduzca. Tambin podra haberse asignado el resultado a otra matriz llamada B:
>> B = A'
16
B =
147
258
369
Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por
ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis
(por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos
ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). Las
matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha dicho
antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con
un slo subndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor
escribiendo A(1,2) que escribiendo A(4).
Invertir una matriz es tan fcil como transponerla.
A continuacin se va a definir una nueva matriz A no singular-en la forma:
>> A = [1 4 -3; 2 1 5; -2 5 3]
A=
1 4 -3
2 1 5
-2 5 3
Ahora se va a calcular la inversa de A y el resultado se asignar a B. Para ello basta hacer
uso de la funcin inv ( )
>> B = inv(A)
B=
0.1803
0.1311
-0.0984
0.2213
0.0246
0.1066
-0.1885
0.0902
0.0574
Para comprobar que este resultado es correcto basta con multiplicar A por B
>> B*A
ans =
17
1.0000
0.0000
0.0000
0.0000
1.0000
0.0000
0.0000
0.0000
1.0000
De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente
(silos tres nmeros estn separados por blancos o comas, el resultado ser un vector fila):
>> x=[10 20 30] % vector fila
x=
10 20 30
MATLAB considera comentarios todo lo que va desde el carcter tanto por ciento (%)
hasta el final de la lnea.
Si los nmeros estn separados por intros o puntos y coma (;) se obtendr un vector
columna:
>> y=[11; 12; 13] % vector columna
y=
11
12
13
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo,
si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error:
>> x+y
??? Error using ==> +
Matrix dimensions must agree. (Deben estar de acuerdo las dimensiones de la matriz).
Estas dificultades desaparecen si se suma x con el vector transpuesto de y:
>> x + y'
ans =
21 32 43
k = constante.
Una soda a una temperatura de 120F es ubicada dentro de un refrigerador donde la
temperatura es 38F. Determine la temperatura alcanzada despus de 3 horas. Asumir
k=0.45. Primero define todas las variables y entonces calcula la temperatura usando un
comando Matlab.
Solucin
>> Ts= 38;
T0 = 120;
k = 0.45;
t = 3;
+ 1,5 + 3 + 6
ln =
1
Donde:
19
= 1
Los coeficientes a, b, c, d con valores -7,76451, 1,45838, -2,7758 respectivamente 1,23303. En estas relaciones Tc es una temperatura crtica y Pc la presin crtica del
agua. Esta tiene los valores de 647,3 y 221,2Kbar. De esta relacin se puede expresar
la presin de vapor:
esta ecuacin se utiliza para escribir la funcin MATLAB necesario. Esta funcin
llama un argumento que tiene en cuenta el valor de la temperatura y valor de retorno
actual correspondiente presin de vapor.
La funcin se presenta a continuacin:
function pv = pvapH2O(T);
% Funcin para calcular la presin de vapor del agua
%%
Mod de llamar:
% PV = PVAPH2O(T)
% donde: PV - presin de vapor, [bar]
% T - temperatura, [K]
Tc = 647.3; % temperatura critica, [K]
Pc = 221.2; % presin critica, [bar]
a = -7.76451;
b = 1.45838;
c = -2.7758;
d = -1.23303;
Tr = 1 - T./Tc;
pv = exp((a*Tr+b*Tr.^(1.5)+c*Tr.^3+d*Tr.^6)./(1-Tr)).*Pc;
% end function pvapH2O
OTROS EJERCICIOS:
Polinomios:
20
-5 10 -10
( 4 5 3 + 10 2 10 + 4 = 0)
-2
re=
0
4 11
21
FUNCIN input
>>n = input(teclee el numero de ecuaciones);
>>nombre=input(Cmo te llamas?, s)
(en este caso, la respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la
cadena nombre).
FUNCION disp: Siempre imprime en pantalla un mensaje de texto o el valor de una
matriz, pero sin imprimir su nombre
>>disp(EL programa ha terminado)
>>A=rand(4)
>>disp(A)
FUNCIONES
Definicin:
Ejm: Se crear una funcin que evale el numerador, denominador y la divisin de:
P(x,y)=
+
2+ 3
GUIA DE CLASE 2:
22
Recuerde: Los parntesis cuadrados [ y ] son empleados para matrices, mientras que los
parntesis ( y ) se emplean para funciones. El carcter coma , para separar elementos
[1,2,3,4] y el punto y como ; para separar filas en las matrices. [ 1 2; 3 4]. El carcter dos
puntos : indica nmeros consecutivos entre dos valores, [2:5] es equivalente a [2 3 4 5].
Grficas de funciones
MATLAB tiene un gran potencial de herramientas grficas. Se pueden dibujar los valores de
un vector frente a otro (de la misma longitud):
>>x=pi*(-1:0.1:1);
>>y=x.*sin(x);
>>plot(x,y) % Por defecto une los puntos (x(i),y(i)) mediante una poligonal.
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
-4
-3
-2
-1
Como se ve, con pocos puntos la grfica tiene un aspecto demasiado lineal a trozos. Para
"engaar" al ojo, basta tomar ms puntos.
>>x=pi*(-1:0.01:1);
>>y=x.*sin(x);
>>plot(x,y)
23
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
-4
-3
-2
-1
1.5
0.5
-0.5
-1
-4
-3
-2
-1
>>hold off % Con esto olvida los dibujos anteriores % y dibuja en una ventana nueva El
mismo grfico de la figura superior puede obtenerse con una nica orden, dibujndose cada
curva de un color distinto:
24
>>plot(x,cos(x),x,y)
1.5
0.5
-0.5
-1
-4
-3
-2
-1
Adems se puede especificar el color de cada curva, el tipo de lnea y el marcador, segn la
tabla:
Por ejemplo
>> plot(x,cos(x),'ro-',x,y,'bp:')
1.5
0.5
-0.5
-1
-4
-3
-2
-1
>> xlabel('tiempo')
>> ylabel('valor')
>> legend('coseno','y')
>> title('grafico de ejemplo')
26
grafico de ejemplo
2
coseno
y
1.5
valor
0.5
-0.5
-1
-4
-3
-2
-1
0
tiempo
Tambin se pueden realizar grficas logartmicas con las instrucciones: semilogx (eje x
logartmico), semilogy (eje x logartmico) y loglog (ejes x e y logartmicos). Adems de
grficas en 3D con las instrucciones: mesh, surf, plot3...
Ejercicio:
Representar simultneamente dos funciones sinusoidales de frecuencia 50 Hz desfasadas 90 (/2
rad) de amplitud 10 y 20, respectivamente. Siendo la primera de ellas en color verde a puntos y la
segunda en azul continua y con asteriscos. Incorporar adems: nombre eje x: tiempo nombre eje y:
seal ttulo grfica: onda seno legenda: onda1 y onda 2
Funcin sinusoidal:
y A sin kx
A: amplitud, k: factor multiplicativo del argumento, que se denomina pulsacin en el caso de que la
variable sea independiente del tiempo; el desfasaje
15
10
seal
5
0
-5
-10
-15
-20
-4
-3
-2
-1
0
tiempo
POLINOMIOS Y ECUACIONES
Para resolver un polinomio, se formula el vector de los coeficientes del mismo, en forma
completa y ordenado decrecientemente, siendo el objetivo aqu es la determinacin de las
races.
Ejemplo:
= 4 + 2 2 + 3 + 4
>>A=[1 2 3 4]
A=
1
RAICES: se emplea el comando roots que al digitarlo en la ventana de comando nos da las
races del polinomio.
>> raices=roots(A)
raices =
-1.6506
28
-0.1747 + 1.5469i
-0.1747 - 1.5469i
poly: da los coeficientes del polinomio que origina esas races.
>> poly(raices)
ans =
1.0000 2.0000 3.0000 4.0000
>> r=[1 1+j 1-j 2];
>> poly(r)
ans =
1
-5 10 -10
12
17
12
-2
re =
0
11
p=
26
>> p1=polyval(A,[1 2 3])
p1 =
10 26 58
Polyder: nos da los coeficientes de la derivada del polinomio
>> D=polyder(A)
D=
3
FUNCION INPUT
Permite imprimir un mensaje en la lnea de comandos de MatLab y recuperar como valor de
retorno un valor numrico o el resultado de una expresin tecleada por el usuario. Despus de
imprimir el mensaje, el programa espera que el usuario teclee el valor numrico o la
expresin. El usuario puede teclear un vector o una matriz. En cualquier caso, la expresin
introducida es evaluada cono los valores actuales de las variables de MATLAB y el resultado
se devuelve como valor de retorno.
>> n=input('Teclee el numero de ecuaciones')
Teclee el numero de ecuaciones 4
n=
4
Otra forma: obsrvese el parmetro s:
>> nombre=input('Cmo te llamas?', 's')
Cmo te llamas? Jos
nombre =
Jos
En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se
almacena en la cadena nombre. As, pues, en este caso, si se teclear una frmula, se almacena
como texto sin evaluarse.
FUNCION DISP
30
Permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sim imprimir
su nombre. En realidad, disp. Siempre imprime vectores y/o matrices: las cadenas de
caracteres son un caso particular de vectores.
>> disp('El programa ha terminado')
El programa ha terminado
>> A=rand(4)
A=
0.9501
0.2311
0.6068
0.4860
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
0.1763
0.4057
0.8913
0.7621
0.4565
0.0185
0.8214
0.4447
0.6154
0.7919
0.9218
0.7382
0.1763
0.4057
>> disp(A)
0.9501
0.2311
0.6068
0.4860
Las funciones permiten definir funciones enteramente anlogas a las de MATLAB, con su
nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que definen funciones que
permiten extender las posibilidades de MatLab: de hecho existen bibliotecas de ficheros *.m
que se venden (toolkits) o se distribuyen gratuitamente ( a travs de internet). Las funciones
definidas en ficheros *.m se caracterizan por que la primera lnea (que no sea comentario)
comienza por la palabra funcin, seguida por los valores de retorno (entre corchetes [ ] y
separados por comas, si hay ms de uno), el signo igual ( = ) y el nombre de la funcin,
seguido de los argumentos (entre parntesis y separados por comas).
DEFINICION DE FUNCIONES:
La primera lnea de un fichero llamado name.m que define una funcin tiene la forma:
function [lista de valores de retorno] = name (lista de argumentos)
donde name es el nombre de la funcin. Entre corchetes y separados por comas van los
valores de retorno (siempre que haya ms de uno) y entre parntesis tambin separados por
comas los argumentos. Recuerde que los argumentos son los datos de la funcin y los valores
de retorno sus resultados. Si no hay valores de retorno se omiten los corchetes y el signo igual
( = ); si solo hay un valor de retorno no hace falta poner corchetes. Tampoco hace falta poner
parntesis si hay argumentos.
Ejemplo: Se crear una funcin que nos evale el numerador, denominador y la divisin de:
+
, =
2 + 3
Observamos que depende de 2 entradas x e y , adems tiene tres salidas: num, den y la
divisin num/den.
>> [a,b,c]=division(2,3)
a=
5.7206
b=
31
c=
0.1845
Ejemplo: Crear una funcin de Newton (fnewton) que resuelva una ecuacin no lineal de
una sola variable, abriendo una ventana de programacin y teclear el siguiente contenido:
% Funcin que resuelve Ecuaciones No - Lineales de una sola variable
32
La condiciones if y switch
IF
33
condicion
comandos
elseif condicion
comandos
elseif condicion
comandos
else
comandos
end
Por ejemplo, crear el fichero prueba_condicion.m y ejecutar el siguiente cdigo:
A = 1; B = 2;
if A + B == 3
disp('el resultado es 3')
elseif A+B > 5
disp('el resultado es mayor que 5 ')
else
disp('el resultado ni es 3 ni mayor que 5 ')
end
(la orden disp se utiliza para visualizar texto en la orden de comandos)
Para ejecutar la funcin realizada se pulsa F5 se estamos en el editor de funciones, o se
escribe su nombre en la Command Window:
>>prueba_condicion
el resultado es 3
Tambin se puede llamar la funcin recin descrita desde otra funcin sin ms que escribir su
nombre.
SWITCH
La sentencia switch realiza una funcin anloga a un conjunto de if...elseif concatenados. Su
forma general es la siguiente:
34
switch expresion
case case_expr1
comandos
case case_expr2
comandos
...
otherwise % opcin por defecto
comandos
end
Por ejemplo si queremos realizar acciones distintas en funcin del valor de una variable entera
podemos escribir:
A = 1; B = 2;
switch A + B
case 3
disp('el resultado es 3')
case 5
disp('el resultado es 5 ')
otherwise
disp('el resultado ni es tres ni cinco')
end
Los bucles for y while
FOR...END
Cuando queremos ejecutar un conjunto de comandos un nmero predeterminado de veces
utilizamos la funcin for...end, cuya forma general es:
for contador = [vector de valores]
comandos
end
A modo de ejemplo si queremos sumar los cuadrados de los nmeros enteros impares del 1 al
11 podemos escribir:
suma = 0
for k = 1:2:11
suma = suma + k^2;
end
suma
Aunque producira el mismo resultado la instruccin:
>> suma = sum([1:2:11].^2)
Ejercicio:
35
Ejercicio:
Dada la funcin y = e-x calcular el valor x que haga que se cumpla la igualdad x = e-x con un
error de 10-6. Tomar como valor inicial 0.5. Poner una condicin que limite a 10 el nmero
de iteraciones para llegar a la solucin (utilizar break). Adems, probar el programa realizado
suponiendo como condicin inicial x=10.
36
Ejercicio:
Se desea programar una funcin que calcule, mediante el algoritmo de Euclides, el mximo
comn divisor de dos nmeros naturales, basta escribir un fichero euclides.m cuyo contenido
sea:
function m=euclides(a,b)
% Clculo del mximo comn divisor de dos nmeros naturales
% mediante el algoritmo de Euclides
if a<b
c=b;
b=a;
a=c;
end
while b>0
c=rem(a,b);
a=b;
b=c;
end
m=a;
Si, una vez escrito el fichero anterior, en el espacio de trabajo o en un programa se escribe la
instruccin
mcd=euclides(33,121)
en la variable mcd se almacenar el valor 11.
Las variables de una funcin son siempre locales. Por tanto, aunque en el seno de la funcin
se modifiquen los argumentos de entrada, el valor de las variables correspondientes queda
inalterado.
Por ejemplo, en la funcin euclides.m se modifica el valor de los argumentos de entrada, pero,
sin embargo:
>>x=15;
>>mcd=euclides(x,3);
>>x
x=
15
Si se pretende que las modificaciones de un argumento de entrada afecten a la variable
correspondiente, deber situarse dicho argumento, adems, en la lista de argumentos de
salida.
37
Ejercicio:
Crear una funcin llamada miexp que dado un valor de x devuelva como los dos resultados
de las ecuaciones:
1 = +
2 =
Utilizar dicha funcin para resolver la ecuacin no lineal = + mediante NewtonRaphson con un error de 10 6 limitando el nmero de iteraciones a 10.
GUIA DE CLASE N 3:
GRAFICOS BI Y TRIDIMENSIONALES:
Para realizar grficos 2 D hay cuatro funciones bsicas:
PLOT( ): permite crear un grfico a partir de vectores y/o columnas de matrices con
escalas lineales sobre ambos ejes (x e y).
Loglog( ): igual que el anterior, pero con escala logartmica.
Semilogx( ): igual que el primero con escala lineal en el eje de las ordenadas y
logartmica en el eje de las abscisas.
Semilogy( ): igual que el primero con escala lineal en el eje de las abscisas y
logartmica en el eje de las ordenadas.
Se toma como referencia la primera y las dems, como consecuencia.
Para agregar ttulos, nombres a cada eje, cuadrculas, textos, etc., existen otras funciones:
title (Grfica P vs T)
xlabel(Temp(C))
ylabel(Presin(KPa))
text (x,y,texto)
gtext(texto)
legend ( )
38
grid on
Ejemplo: Realizar una grfica de un coseno multiplicado por una funcin exponencial
Recordar dar espaciamiento entre puntos pequeos (0.01 o 0.00 son suficientes) y que los
productos o divisiones se tienen que hacer elemento a elementos (.* ./ ).
>> x= -5: 0.01:5;
>> y= cos(x).*exp(-0.05* x);
>>h=figure(1);
>>plot(x,y,r); % grafica x vs y de color rojo.
>>xlabel(Eje X);
%etiqueta del eje x
>>yalbel(Eje Y);
% etiqueta del eje y
>>title(COSENO EXPONENCIAL); % ttulo
>>text(1.5, 0.75,cos(x)*exp(-0,05 * x)); % texto en la posicin x,y,
>>grid on;
% rejilla
>>legend(Coseno Exponencial); %rtulo
>>figure (gcf); % para que la figura pase a primer plano.
COSENO EXPONENCIAL
1.5
Coseno Exponencial
1
cos(x)*exp(-0,05 * x)
Eje Y
0.5
-0.5
-1
-1.5
-5
-4
-3
-2
-1
0
Eje X
GUIA DE CLASE N 4:
SISTEMAS
DE
ECUACIONES
TRIDIMENSIONALES.
FUNCIONES
Interpretacin Grfica:
Una ecuacin lineal con dos variables, como 2x y =3, define una recta (y=mx+b). Se puede
escribir como y=2x -3. Si hay dos ecuaciones, estas pueden ser lineales y cruzarse o no. Si
una ecuacin tiene tres variables, x, y, z, representan un plano en un espacio tridimensional.
Si hay dos ecuaciones con tres variables, pueden representar dos planos que se cruzan o no,
etc..
Hiperplano: es el conjunto de puntos definido por una ecuacin con ms de tres variables. Y
en general, un conjunto de M ecuaciones lineales con N incgnitas, donde cada ecuacin
define un hiperplano nico que no es idntico a ninguno otro del sistema. Si M<N, el sistema
est subespecificado y no existe una solucin nica. Si M=N, existir una solucin nica si
ningn par de ecuaciones representa hiperplanos paralelos. Si M>N, el sistema est sobre
especificado y no existe solucin nica. El conjunto de ecuaciones tambin se denomina
sistema de ecuaciones. Un sistema de ecuaciones con una solucin nica es no singular, y
uno que no tiene solucin nica se llama singular.
Ejemplo:
Para el sistema:
x+y=2; 2x y = 1; x + 2y = 3;
M=3>N=2, de modo que la nica solucin es x =1, y=1. Si M>N el sistema puede no tener
solucin, tener solucin nica o infinidad de soluciones.
Ejercicio: considere el siguiente sistema de tres ecuaciones con tres incgnitas:
3x + 2y z =10
x + 3y + 2 z = 5
x - y - z = -1
Utilizando matrices, se puede escribir:
=
3 2 1
1 3
2 ;
1 1 1
= ;
10
= 5
1
La forma matricial:
40
AX = B
Se puede multiplicar y se obtiene el sistema original
Pero, si se tiene ms de tres variables, la notacin se puede hacer torpe, x1, x2, x3, etc. El
conjunto de ecuaciones se representa como vectores fila B y X:
Ejemplo:
3 1 + 2 2
3 = 10
1 + 3 2 + 2 3 = 5
1 2 3 = 1
X=[ x1 x2 x3]
3 1
1
2
3 1
1
2 1
B=[ 10 5 -1]t
PROGRAMACION BASICA:
Errores
Reacciones mltiples
CLASE N 5:
APLICACIONES DE MATLAB A LA RESOLUCIN DE PROBLEMAS
DE INGENIERA
TRADUCIR CON GOOGLE. DE RUMANO A ESPAOL
Resolver:
"En clculos de Ingeniera, el calor especfico de una solucin de NaOH (expresado en [J /(kg * K)]), la
Cp, de la solucin se calcula a un valor aproximado:
Cp, sol= 4190 (1 xNaOH) + Cp, NaOH xNaOH
donde Cp, NaOH representa el calor especfico del hidrxido de sodio anhidro y xNaOH es la fraccin de la
masa del hidrxido en solucin. El error respecto al verdadero valor de soluto concentrado local es vlido
para una concentracin (xNaOH > 0.2). La solucin inorgnica diluida en (xNaOH 6-0, 2) se toma
mediante la relacin:
Cp, sol = 4190 (1 xNaOH)
El Calor especfico del hidrxido de sodio anhidro (expresada en [J /(kg * K)]) como trabajo, es decir
temperatura, se calcula con la relacin:
CpNAOH = 0,1835 + 3.125 T + 0,347 T2
La funcin en MATLAB que puede calcular el calor especfico del NaOH es:
function cp = cpSuelo(x, T)
% funcin para calcular el calor especfico de una solucin de NaOH
%%
Modo de aplicarse:
% CP = CPSOL(X,T)
% donde: CP calor especfico de un soluto, [J/(kg.K)]
% X - fraccin masica del NaOH en la solucin
% T - temperatura, [K]
if x<=0.2
cpSol = 4190*(1 - x);
else
cpNaOH = 0.1835 + 3.125*T + 0.347/T.^2;
cp = 4190*(1 - x) + cpNaOH*x;
end
% end function cpSol
Para calcular el calor especfico de una solucin de Na OH a una fraccin msica de 0,25, la
temperatura de 50C =323,15K,el comando necesario es:
>> cpSol(0.25,323.15)
ans =
3.3950e+003
Densidad de una mezcla de gases:
Ejercicio:
Se desea escribir una funcin en MatLab para determinar la densidad de una mezcla de gases (CO 2, H2 y
CO). Utilice una funcin que determine la densidad de la mezcla expresada en porcentajes molares: 25%
de CO2, 60% de H2, y 15% de CO, a la temperatura de 150C y una presin de 20 bar
Solucin:
La densidad de una mezcla de gases reales, mez, se calculas mediante la expresin: mez = Mmez P Zmez RT
Donde:
Mmez representa la masa molecular de la mezcla, Zmez es el coeficiente de compresibilidad de la mezcla, T es la
temperatura en [K] y R es la constante universal de los gases igual a 8,3143 [J/(molK)].
La Masa molecular de la mezcla se calcula por la expresin:
Mmez = =1 y los coeficienes de comprensibilidad mediante la relacin:
42
Zam = =1
Para el caso en que la mezcla se compone de n componentes la relacin de representacin de una maza
molecular con el coeficiente de compresibilidad Zi, y xi representa una fraccin molar de cada componente en la
mezcla tomada.
Los datos necesarios para los calculos son presentados en una tabla:.
Tabla. Datos de los componentes de la mezcla de gases
Componente
Masa
Coeficiente
Molecular
de compresibilidad
CO2
44,010
0,274
H2
2,016
0,303
CO
28,010
0,295
La funcin en MATLAB est diseada para medir los tres argumentos siendo el primero un vector de tres
componentes para determinar el contenido de CO2, H2 y CO en fracciones molares, y la temperatura en K, la
presin, en bar, aplicada a la mezcla de gases.
Tenemos la siguiente funcin en MATLAB:
function ro = densMez(x,T,P)
%Funcin para calcular la densidad de una mezcla de CO2 H2 y CO
%%
Modo de aplicarse:
% RO = DENSMEZ(X,T,P)
% donde: RO densidad de mezcla, [kg/mc]
% X - composicin en fraccin msica en orden CO2 H2 CO
% T - temperatura, [K]
% P - presin, [bar]
R = 8.3143; % const.univ. de los gases, [J/(mol.K)]
% masa molecular
% CO2 H2 CO
M = [44.01 2.016 28.01];
% coeficiente de compresibilidad
% CO2 H2 CO
z = [0.274 0.303 0.295];
Zmez = sum(x.*z);
Mmez = sum(M./x);
ro = Mmez.*P./(Zmez.*T.*R);
% end function densMez
Llamando a la funcin con nuestros datos:
>> densMez([0.25 0.6 0.15],423,20)
ans =
7.0688
Calcular el grosor de un cilindro
Un recipiente cilndrico es utilizado para almacenar un lquido corrosivo de una densidad media de 1.200 kg/m3.
El vaso ha sido construido para trabajar con una presin mxima de 8 bar y una temperatura de 60C con un
dimetro de 1.100 mm y una altura de 2.100 mm, con fondo y tapa plana. Construir un programa en MATLAB
para calcular el grosor del cilindro
Solucin:
El grosor de la pared de un tanque en mm se calcula de la relacin:
_p = + cex + cr
donde _0 es el espesor de la resistencia de la paredel elemento, cex est agregado para Llevar a Condit
establecido operativo y cr representan el redondeo aplicado para llevar el valor de espesor disear un espesor
normalizado un Espesor resistente un _0 en [mm] para un elemento cilndrico se da un tiempo relativamente
tomar:
_0 = pc D
2 ' _ta
pc
(10.10)
unde: pc este presiunea de calcul a recipientului n [MPa], D este diametrul recipientului
n [mm], _ta
43
_ta
(10.15)
unde _20
a este rezistenta admisibila a materialului de constructie al vasului la temperatura
de 20C.
Presiunea de ncercare hidraulica calculata, pphc este data de relatia:
pphc = pph + pha (10.16)
unde pha este presiunea hidrostatica a lichidului de ncercare care este apa.
Rezistenta admisibila a materialului _20
a si _ta
se calculeaza prin relatiile:
_20
a = min
__20
c
1,5 ; _20
r
2,4
_
(10.17)
_ta
= min
_ _tc
1,5; _tr
2,4
44
_
(10.18)
unde: _c si _r reprezinta limita de curgere respectiv rezistenta la rupere la tractiune
n [MPa].
Rezistenta efectiva a peretelui vasului la ncercarea de presiune hidraulica se calculeaz
a cu relatia:
_ef = pphc(D + s_
0)
2 ' __
0
(10.19)
Verificarea vasului la presiune hidraulica implica respectarea conditiei:
_ef 6 0,9 _20
c (10.20)
Calculul de rezistenta al peretelui unui vas cilindric implica parcurgerea urmatorului
algoritm:
1. se calculeaza grosimea de rezistenta _0 cu relatia 10.10;
2. se calculeaza adaosul pentru conditiile de exploatare, cex cu relatia 10.11;
3. se identifica valoare rotunjirii cr prin alegerea grosimii standardizate imediat
superioare valorii calculate _0 + cex;
4. se verifica daca vasul este cu pereti subtiri conform conditiei 10.12. Daca acest
lucru nu se verifica, algoritmul este abandonat;
5. se calculeaza rezistenta efectiva cu relatia 10.19;
6. se verifica conditia 10.20. Daca aceasta conditie se verifica grosimea de proiectare
a peretelui vasului, _p este corecta si algoritmul furnizeaza aceasta valoare.
Daca conditia nu de respecta se incrementeaza cu 1 mm grosimea de rezistenta
efectiva a vasului, __
0 si se revine la pasul 2 al algoritmului.
Caracteristicile materialului de constructie al vasului sunt aratate n tabelul 10.2.
Tabelul 10.2. Caracteristici OL42 (conform SR EN 10207/95).
Caracteristici Valoare
_20
c , [MPa] 260
_tc
, [MPa]
la 100C 225
la 150C 216
la 200C 206
la 250C 186
_20
r , [MPa] 410
_tr
, [MPa]
la 100C 395
la 150C 380
la 200C 360
la 250C 300
grosime tabla, [mm] 4, 5 (abatere la grosime: 0,5 mm)
6, 7 (abatere la grosime: 0,6 mm)
8, 9, 10, 12, 14, 15, 16, 18, 20, 22, 25
(abatere la grosime: 0,8 mm)
28, 30 (abatere la grosime: 0,9 mm)
32, 35, 38, 40 (abatere la grosime: 1,0 mm)
Utilizand toate aceste informatii, se scrie urmatorul program MATLAB:
%Program de calcul al grosimii de proiectare
% pentru un vas cilindric vertical
45
clear all;clc
false = 0;
true = 1;
p_m = 0.8; % presiunea maxima admisibila, [MPa]
D = 1100; % diametrul vasului, [mm]
H = 2100; % inaltimea vasului, [mm]
t = 60; % temperatura maxima de lucru, [grd.C]
ro = 1200; % densitatea lichid stocat, [kg/mc]
an = 10; % durata de exploatare, [ani]
v_ex = 0.1; % viteza procesului de coroziune externa, [mm/an]
v_in = 0; % viteza procesului de coroziune interna, [mm/an]
v_e = 0.01; % viteza procesului de eroziune, [mm/an]
fi = 0.9; % coef. suduri
ro_apa = 1000; % densitate lichid de incercare, [kg/mc]
% caracteristici material
sig_c_20 = 260;
sig_r_20 = 410;
t_date = [100 150 200 250];
sig_c = [225 216 206 186];
sig_r = [395 380 360 300];
% grosime si abatere standard a tablei
ds = [4 5 6 7 8 9 10 12 14 15 16 ...
18 20 22 25 28 30 32 35 38 40];
ab = -[0.5 0.5 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8 0.8 ...
0.8 0.8 0.8 0.8 0.9 0.9 1 1 1 1];
% calcul rezistenta material
sig_a_20 = min([sig_c_20/1.5 sig_r_20/2.4]);
sig_c_t = interp1([20 t_date],[sig_c_20 sig_c],t);
sig_r_t = interp1([20 t_date],[sig_r_20 sig_r],t);
sig_a_t = min([sig_c_t/1.5 sig_r_t/2.4]);
% presiunea hidrostatica, [MPa]
p_h = 9.81e-8*H*ro;
% presiunea de calcul, [MPa]
p_c = p_m + p_h;
% grosimea de rezistenta, [mm]
d0 = p_c*D / (2*fi*sig_a_t - p_c);
% adaos de exploatare, [mm]
c_ex = (v_ex + v_in + v_e)*an;
% grosimea de rezistenta calculata, [mm]
d0c = d0 + c_ex;
test = false;
while ~test
% grosimea standardizata, [mm]
i = 1;
while (d0c-ab(i))>ds(i)
i = i + 1;
end
c_r = ds(i) - (d0 + c_ex - ab(i));
d_p = d0 + c_ex + c_r - ab(i);
% presiunea de incercare hidraulica, [MPa]
p_ph = 1.25*p_m*sig_a_20/sig_a_t;
% presiunea hidrostatica apa, [MPa]
p_ha = 9.81e-8*H*ro_apa;
% presiunea de incercare hidraulica calculata, [MPa]
p_phc = p_ph + p_ha;
if (d0c/D)>0.1
error(Vasul este cu pereti grosi!!!);
end
46
47
N=k
_t
h
Nam
_
1+
X
'i
_
+ Nf
i
(10.21)
unde: k reprezinta coeficientul de majorare a puterii care tine seama de suprasarcinile
care apar la pornire, umplere sau alimentare, _t este randamentul total al sistemului
de actionare iar 'i reprezinta factori de majorare datorate prezentei unor amenajari
interioare. In cazul P'i = 0,4. nostru, valorile acestor coeficienti sunt: k = 1,25, _t = 0,95 si
Puterea necesara amestecarii, n [kW], pentru alte amestecatoare decat cele de
tipul impeller, se calculeaza cu relatia:
Nam = np
_n
60
_3
d5 _ 103 (10.22)
unde: np este numarul caracteristic de putere, n reprezinta turatia amestecatorului
[min1], d este diametrul amestecatorului, [m], iar _ este densitatea lichidului antrenat.
Numarul caracteristic de putere, np, se stabileste functie de criteriul Reynolds
conform datelor prezentate n tabelul 10.3. Valoarea criteriului Re se calculeaza cu
expresia:
Re = 16,25 n d2 _
_ (10.23)
unde _ reprezinta vascozitatea mediului de lucru, n [cP].
Tabelul 10.3. Numarul caracteristic de
putere pentru amestecatoare cu elice.
Valoarea Numarul caracteristic
criteriului Re de putere, np
102 1
103 0,5
104 0,3
105 0,27
106 0,22
Puterea consumata prin frecare n cutia de etansare a sistemului de amestecare,
Nf n [kW], se calculeaza cu relatia:
Nf = 2,255 107 d2
a m b pm n (10.24)
unde: da este diametrul arborelui amestecatorului n dreptul cutiei de etansare, n
[mm], m reprezinta numarul de inele de etansare, b estenaltimea unui inel de etansare,
n [mm], este coeficientul de frecare si pm reprezinta presiunea maxima admisibila
de lucru n vas, [MPa]. Valorile utilizate n acest caz sunt: m = 4, b = 20 [mm] si
= 0,075.
Puterea calculata a electromotorului, conform relatiei 10.21, este folosita pentru
alegerea puterii electromotorului dintr-o lista de puteri disponibile. Puterile electromotoarelor
disponibile pe piata formeaza urmatorul sir de valori, n [kW]: 0,8; 1,1;
1,5; 2,2; 3; 4; 5,5; 7,5; 10; 13; 17; 22; 30; 40; 55; 70.
Utilizand aceste informatii, se construieste urmatorul program MATLAB:
%Program de calcul al puterii electromotorului
48
FUNCION plot3( )
La funcin plot3 es anloga a su homloga bidimensional plot. Su forma ms sencilla es la
siguiente:
>> plot3(x,y,z)
que dibuja una lnea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta
sobre un plano para poderla representar en la pantalla.
Ejemplo:
49
x=cost(t);
y=cost(t);
z=t;
DIBUJO DE MALLADOS:
FUNCIONES meshgrid(), mesh(), surf()
Meshgrid
50
51
52
53
54
Lneas
mallas
GRAFICOS DE:
reas
superficies
direcciones
volumtricos
55
mifuncion.m
56
En la ventana de comandos:
Integracin
quad(@f, a, b)Integra por cuadraturas la funcin f, desde ahasta b.
Diferenciacin numrica:
diff(x)
Si x = [x(1) x(2) x(n)] entonces
diff(x) = [x(2)-x(1) x(3)-x(2) x(n)-x(n-1)]
EDOs de primer orden
57
Lmites
58
Derivacin e integracin
59
60
61
62
Series de Taylor
63
64
65
66
67
68
69
70
71