Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTENIDOS:
1. Generalidades.
2. Manipulación de matrices.
3. Gráficas en 2D y 3D.
4. Programación.
5. Métodos numéricos.
6. Matemáticas simbólicas.
7. Simulink.
1. Generalidades
Operadores
2
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Tipos de datos: MATLAB es un programa preparado para trabajar con vectores y matrices.
Como caso particular también trabaja con variables escalares (matrices de dimensión 1). MATLAB
trabaja siempre en doble precisión, es decir guardando cada dato en 8 bytes, con unas 15 cifras
decimales exactas. Ya se verá más adelante que también puede trabajar con cadenas de caracteres
(strings) y, desde la versión 5.0, también con otros tipos de datos: Matrices de más dos
dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.
magic(4)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
hilb(5)crea una matriz de Hilbert de tamaño (5x5). La matriz de Hilbert es una matriz cuyos
elementos (i, j) responden a la expresión (1/(i+j-1)). Esta es una matriz especialmente difícil
de manejar por los grandes errores numéricos a los que conduce.
A continuación se describen algunas de las funciones que crean una nueva matriz a partir de otra o
de otras, comenzando por dos funciones auxiliares:
zeros(size(A))forma una matriz de ceros del mismo tamaño que una matriz A previamente
creada.
A=diag(x)forma una matriz diagonal A cuyos elementos diagonales son los elementos de un
vector ya existente x
triu(A)forma una matriz triangular superior a partir de una matriz A (no tiene por qué ser
cuadrada).
>> x=1:10
x=
1 2 3 4 5 6 7 8 9 10
En cierta forma se podría decir que el operador (:) representa un rango: en este caso, los números
enteros entre el 1 y el 10.
Por defecto el incremento es 1, pero este operador puede también 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
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
OPERADORES RELACIONALES
OPERADORES LOGICOS
5
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
6
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
7
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo
64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4A J 90 5A Z 106 6A j 122 7A z
75 4B K 91 5B [ 107 6B k 123 7B {
76 4C L 92 5C \ 108 6C l 124 7C |
77 4D M 93 5D ] 109 6D m 125 7D }
78 4E N 94 5E ^ 110 6E n 126 7E ~
79 4F O 95 5F _ 111 6F o 127 7F •
8
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
GUIA DE LA CLASE1
9
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Ventana Propósitos
Command Window Ventana principal, variables enteras, corre programas.
Figure Window Contiene información para controles gráficos.
Editor Window Crea y elimina escritos y archivos de funciones.
Help Window Proporciona información de ayuda
Launch Pad Window Provee acceso a herramientas, demostraciones y documentación.
10
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
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 automáticamente cuando ejecutamos los comandos
gráficos y contienen gráficos creados por estos comandos. Un ejemplo de la ventana Figure es
mostrada en la figura 2.
11
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
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 depuración). 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
paréntesis que se abren, no se queden sin cerrar. Figura 3
12
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
13
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Este formato es menos adecuado para consultar que el HTML, pero mucho más adecuado
para imprimir y revisar luego sobre papel. El formato *.pdf requiere del programa gratuito
Adobe Acrobat Reader 5.0 o una versión superior.
4. Examples and Demos. Se abre una ventana que da acceso a un buen número de ejemplos
resueltos con MATLAB, cuyos resultados se presentan gráficamente de diversas formas. Es
bastante interesante recorrer estos ejemplos para hacerse idea de las posibilidades del
programa.
14
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Además, se puede también recurrir al Help desde la línea de comandos. Se aconseja hacer
prácticas al respecto. Por ejemplo, obsérvese la respuesta a los siguientes usos del comando
help:
» help
» help lang
El comando helpwin seguido de un nombre de comando muestra la información
correspondiente a ese comando en la ventana Help Window (ver Figura 5), incluyendo
también comandos similares sobre los que se ofrece ayuda.
El comando doc seguido de un nombre de comando muestra la información correspondiente a
ese comando a través 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 gráfico van a apareciendo las correspondientes instrucciones en la línea de
comandos.
VISITE:
VENTANA WORKSPACE
El espacio de trabajo consiste en el sistema de variables acumuladas durante una sesión de
usar el software de MATLAB y almacenadas en memoria. Usted agrega variables al espacio
de trabajo usando las funciones, M-archivos corrientes, y cargando espacios de trabajo
ahorrados. Por ejemplo, si usted funciona estas declaraciones,
A = magic(4)
R = randn(3,4,5)
Usted puede realizar workspace y operaciones relacionadas usando el browser del workspace.
Cuando están disponibles, las funciones equivalentes se documentan con cada característica
del browser del espacio de trabajo. Si usted tiene una conexión activa del Internet, usted
puede mirar el Workspace browser video demo para una descripción de la funcionalidad
principal:
15
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
>> A=[1 2 3; 4 5 6; 7 8 9]
A= 123
456
789
Una sencilla operación con A es hallar su matriz traspuesta. En MATLAB el apóstrofe (')
es el símbolo de trasposición matricial.
>> A'
ans =
14 7
258
369
La variable ans puede ser utilizada como operando en la siguiente expresión que se
introduzca. También podría haberse asignado el resultado a otra matriz llamada B:
>> B = A'
16
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
B =
147
258
369
Ahora ya están 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 simétrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
>> A = [1 4 -3; 2 1 5; -2 5 3]
A=
1 4 -3
2 1 5
-2 5 3
>> B = inv(A)
B=
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
Para comprobar que este resultado es correcto basta con multiplicar A por B
>> B*A
ans =
17
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
De forma análoga a las matrices, es posible definir un vector fila x en la forma siguiente
(silos tres números están separados por blancos o comas, el resultado será un vector fila):
MATLAB considera comentarios todo lo que va desde el carácter tanto por ciento (%)
hasta el final de la línea.
Si los números están separados por intros o puntos y coma (;) se obtendrá un vector
columna:
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
>> x + y'
ans =
21 32 43
k = constante.
Una soda a una temperatura de 120ºF es ubicada dentro de un refrigerador donde la
temperatura es 38ºF. Determine la temperatura alcanzada después de 3 horas. Asumir
k=0.45. Primero define todas las variables y entonces calcula la temperatura usando un
comando Matlab.
Solución
>> Ts= 38; T0 = 120; k = 0.45; t = 3;
>>T = round (Ts +(T0 – Ts) *exp(-k*t))
T = 59
2. Identidad Trigonométrica:
Una identidad trigonométrica está dado por:
x tan x sin x
cos2
2 2 tan x
𝑇
𝑇𝑟 = 1 −
𝑇𝐶
esta ecuación se utiliza para escribir la función MATLAB¸ necesario. Esta función
llama un argumento que tiene en cuenta el valor de la temperatura y valor de retorno
actual correspondiente presión de vapor.
function pv = pvapH2O(T);
% Función para calcular la presión de vapor del agua
%%
Mod de llamar:
% PV = PVAPH2O(T)
% donde: PV - presión de vapor, [bar]
% T - temperatura, [K]
Tc = 647.3; % temperatura critica, [K]
Pc = 221.2; % presión 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
>> pv = pvaph2o(303.15)
pv =
0.0425
O a través de un vector matriz.
Polinomios:
20
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Comandos:
>>raíces = roots(A)
poly: nos da los coeficientes del polinomio que originan esas raíces.
>>poly (raíces)
>>poly(r)
1 -5 10 -10 4 (𝑥 4 − 5 𝑥 3 + 10 𝑥 2 − 10 𝑥 + 4 = 0)
>>pp=[1 2 3 4 ];
>>qq=[1 0 0 2 3];
>>producto=conv(pp, qq)
>>[co, re]=deconv(qq,pp)
co=
1 -2
re=
0 0 1 4 11
>>A=[1 2 3 4];
>>p=polyval(A,[1 2 3 ])
pl =
26
>>D=polyder(A)
21
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
FUNCIÓN input
(en este caso, la respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la
cadena nombre).
>>A=rand(4)
>>disp(A)
FUNCIONES
Ejm: Se creará una función que evalúe el numerador, denominador y la división de:
𝑥 𝑦 + 𝑠𝑒𝑛 𝑥 ∗𝑦 − 𝑥
P(x,y)= 𝑥 2+ 𝑦 3
num=x.^y + sin(x.*y) – x;
den=x.^2 + y.^3;
c=num./den;
GUIA DE CLASE 2:
22
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Recuerde: Los paréntesis cuadrados “[” y “]” son empleados para matrices, mientras que los
paréntesis “(” y “)” se emplean para funciones. El carácter coma “,” para separar elementos
[1,2,3,4] y el punto y como “;” para separar filas en las matrices. [ 1 2; 3 4]. El carácter dos
puntos “:” indica números consecutivos entre dos valores, [2:5] es equivalente a [2 3 4 5].
Gráficas de funciones
MATLAB tiene un gran potencial de herramientas gráficas. 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
0.8
0.6
0.4
0.2
0
-4 -3 -2 -1 0 1 2 3 4
Como se ve, con pocos puntos la gráfica tiene un aspecto demasiado lineal a trozos. Para
"engañar" al ojo, basta tomar más puntos.
>>x=pi*(-1:0.01:1);
>>y=x.*sin(x);
>>plot(x,y)
23
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
-4 -3 -2 -1 0 1 2 3 4
1.5
0.5
-0.5
-1
-4 -3 -2 -1 0 1 2 3 4
>>hold off % Con esto olvida los dibujos anteriores % y dibuja en una ventana nueva El
mismo gráfico de la figura superior puede obtenerse con una única orden, dibujándose cada
curva de un color distinto:
24
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
>>plot(x,cos(x),x,y)
1.5
0.5
-0.5
-1
-4 -3 -2 -1 0 1 2 3 4
Además se puede especificar el color de cada curva, el tipo de línea y el marcador, según la
tabla:
25
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Por ejemplo
>> plot(x,cos(x),'ro-',x,y,'bp:')
1.5
0.5
-0.5
-1
-4 -3 -2 -1 0 1 2 3 4
>> xlabel('tiempo')
>> ylabel('valor')
>> legend('coseno','y')
26
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
grafico de ejemplo
2
coseno
y
1.5
1
valor
0.5
-0.5
-1
-4 -3 -2 -1 0 1 2 3 4
tiempo
También se pueden realizar gráficas logarítmicas con las instrucciones: semilogx (eje x
logarítmico), semilogy (eje x logarítmico) y loglog (ejes x e y logarítmicos). Además de
gráficas en 3D con las instrucciones: mesh, surf, plot3...
Ejercicio:
y A sin kx
Función sinusoidal:
A: amplitud, k: factor multiplicativo del argumento, que se denomina pulsación en el caso de que la
variable sea independiente del tiempo; el desfasaje
>> plot(x,y)
>> hold on
>> plot(x,y)
27
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
onda seno
20
onda1
15 onda2
10
5
señal
-5
-10
-15
-20
-4 -3 -2 -1 0 1 2 3 4
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 determinación de las
raíces.
Ejemplo:
𝑃 𝑥 = 𝑥 4 + 2𝑥 2 + 3𝑥 + 4
>>A=[1 2 3 4]
A=
1 2 3 4
RAICES: se emplea el comando roots que al digitarlo en la ventana de comando nos da las
raíces del polinomio.
>> raices=roots(A)
raices =
-1.6506
28
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
-0.1747 + 1.5469i
-0.1747 - 1.5469i
>> poly(raices)
ans =
>> poly(r)
ans =
1 -5 10 -10 4
>> producto=conv(pp,qq)
producto =
1 2 3 6 7 12 17 12
>> [co,re]=deconv(qq,pp)
co =
1 -2
re =
0 0 1 4 11
>> p=polyval(A,2)
29
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
p=
26
p1 =
10 26 58
>> D=polyder(A)
D=
3 4 3
FUNCION INPUT
n=
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 fórmula, se almacena
como texto sin evaluarse.
FUNCION DISP
30
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
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.
El programa ha terminado
>> A=rand(4)
A=
>> disp(A)
Para escribir un programa o fichero de comandos con MATLAB habrá que crear un fichero
que tenga extensión .m y contenga las instrucciones. Esto se puede hacer con cualquier editor
de textos, pero tiene algunas ventajas usar el editor propio de MATLAB llamándolo desde la
barra de herramientas con los menús FILE > NEW > M-FILE. Una vez estamos en el editor
de funciones se puede ejecutar el código escrito con el menú DEBUG>RUN o pulsando la
tecla F5, o bien escribiendo en el Command Windows el nombre de la función.
MATLAB trabaja con memoria dinámica, por lo que no es necesario declarar las variables
que se van a usar. Por esta misma razón, habrá que tener especial cuidado y cerciorarse de que
entre las variables del espacio de trabajo no hay ninguna que se llame igual que las de nuestro
programa (proveniente, por ejemplo, de un programa previamente ejecutado en la misma
sesión), porque esto podría provocar conflictos.
FICHEROS *.m
Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que
constituye el centro de la programación en MATLAB. 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.
31
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Las funciones permiten definir funciones enteramente análogas 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 través de internet). Las funciones
definidas en ficheros *.m se caracterizan por que la primera línea (que no sea comentario)
comienza por la palabra función, seguida por los valores de retorno (entre corchetes [ ] y
separados por comas, si hay más de uno), el signo igual ( = ) y el nombre de la función,
seguido de los argumentos (entre paréntesis y separados por comas).
DEFINICION DE FUNCIONES:
La primera línea de un fichero llamado name.m que define una función tiene la forma:
donde name es el nombre de la función. Entre corchetes y separados por comas van los
valores de retorno (siempre que haya más de uno) y entre paréntesis también separados por
comas los argumentos. Recuerde que los argumentos son los datos de la función 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
paréntesis si hay argumentos.
Ejemplo: Se creará una función que nos evalúe el numerador, denominador y la división de:
𝑥 𝑦 + 𝑠𝑒𝑛 𝑥 ∗ 𝑦 − 𝑥
𝑃 𝑥, 𝑦 =
𝑥2 + 𝑦3
Observamos que depende de 2 entradas x e y , además tiene tres salidas: num, den y la
división num/den.
>> [a,b,c]=division(2,3)
a=
5.7206
b=
31
c=
0.1845
Ejemplo: Crear una función de Newton („fnewton‟) que resuelva una ecuación no – lineal de
una sola variable, abriendo una ventana de programación y teclear el siguiente contenido:
32
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Para correr la función („fnewton‟) necesitamos abrir uan ventana de programa y creamos una
función donde guardaremos la ecuación a resolver, por ejemplo x=cos(x), y se guarda con el
nombre „calcular‟:
function y=calcular(x)
y=x-cos(x);
>> x=fnewton('calcular',0,0.00001)
x=
0.7391
IF
33
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
if condición
comandos
end
Si la bifurcación es múltiple entonces podemos combinar con los comandos else y elseif
If condicion
comandos
elseif condicion
comandos
elseif condicion
comandos
else
comandos
end
Por ejemplo, crear el fichero “prueba_condicion.m” y ejecutar el siguiente código:
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)
>>prueba_condicion
el resultado es 3
También se puede llamar la función recién descrita desde otra función sin más que escribir su
nombre.
SWITCH
switch expresion
case case_expr1
comandos
case case_expr2
comandos
...
otherwise % opción por defecto
comandos
end
Por ejemplo si queremos realizar acciones distintas en función 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
suma = 0
for k = 1:2:11
suma = suma + k^2;
end
suma
Aunque produciría el mismo resultado la instrucción:
Ejercicio:
35
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
WHILE...END
A diferencia del comando for, el comando while se utiliza cuando el número de veces que se
ejecuta un determinado conjunto de sentencias depende de una determinada condición lógica.
Su utilización genérica es la que sigue:
while condicion
comandos
end
Por ejemplo si queremos sumar el cuadrado de números pares mientras no se supere un
determinado valor, por ejemplo, 500, entonces:
suma = 0; num = 2;
while suma < 500
suma = suma + num^2;
num = num + 2;
end
suma
Una instrucción muy útil es el comando “break” que se utiliza para salir de un bucle. Por
ejemplo, si desea salir del bucle en el caso de que alguna suma parcial sea exactamente igual a
100, entonces:
suma = 0; num = 2;
while suma < 500
suma = suma + num^2;
num = num + 2;
if suma == 100
break
end
end
suma
Ejercicio:
Dada la función 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 condición que limite a 10 el número
de iteraciones para llegar a la solución (utilizar break). Además, probar el programa realizado
suponiendo como condición inicial x=10.
36
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Ejercicio:
Se desea programar una función que calcule, mediante el algoritmo de Euclides, el máximo
común divisor de dos números naturales, basta escribir un fichero euclides.m cuyo contenido
sea:
function m=euclides(a,b)
% Cálculo del máximo común divisor de dos números 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
instrucción
mcd=euclides(33,121)
Las variables de una función son siempre locales. Por tanto, aunque en el seno de la función
se modifiquen los argumentos de entrada, el valor de las variables correspondientes queda
inalterado.
Por ejemplo, en la función euclides.m se modifica el valor de los argumentos de entrada, pero,
sin embargo:
>>x=15;
>>mcd=euclides(x,3);
>>x
x=
15
Ejercicio:
Crear una función llamada “miexp” que dado un valor de x devuelva como los dos resultados
de las ecuaciones:
𝑌1 = 𝑥 + 𝑒 −𝑥
𝑌2 = 𝑒 −𝑥
GUIA DE CLASE N° 3:
GRAFICOS BI Y TRIDIMENSIONALES:
PLOT( ): permite crear un gráfico 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 logarítmica.
Semilogx( ): igual que el primero con escala lineal en el eje de las ordenadas y
logarítmica en el eje de las abscisas.
Semilogy( ): igual que el primero con escala lineal en el eje de las abscisas y
logarítmica en el eje de las ordenadas.
Para agregar títulos, nombres a cada eje, cuadrículas, textos, etc., existen otras funciones:
38
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Ejemplo: Realizar una gráfica de un coseno multiplicado por una función exponencial
Recordar dar espaciamiento entre puntos pequeños (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‟); % título
>>text(1.5, 0.75,‟cos(x)*exp(-0,05 * x)‟); % texto en la posición x,y,
>>grid on; % rejilla
>>legend(„Coseno Exponencial‟); %rótulo
>>figure (gcf); % para que la figura pase a primer plano.
COSENO EXPONENCIAL
1.5
Coseno Exponencial
cos(x)*exp(-0,05 * x)
0.5
Eje Y
-0.5
-1
-1.5
-5 -4 -3 -2 -1 0 1 2 3 4 5
Eje X
Se usan en las gráficas para ciertas condiciones. El primero de ellos hace que los gráficos
sucesivos respeten los ya dibujados en la figura.
39
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
GUIA DE CLASE N° 4:
SISTEMAS DE ECUACIONES Y FUNCIONES
TRIDIMENSIONALES.
Interpretación Gráfica:
Una ecuación 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 ecuación 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 ecuación con más de tres variables. Y
en general, un conjunto de M ecuaciones lineales con N incógnitas, donde cada ecuación
define un hiperplano único que no es idéntico a ninguno otro del sistema. Si M<N, el sistema
está subespecificado y no existe una solución única. Si M=N, existirá una solución única si
ningún par de ecuaciones representa hiperplanos paralelos. Si M>N, el sistema está sobre
especificado y no existe solución única. El conjunto de ecuaciones también se denomina
sistema de ecuaciones. Un sistema de ecuaciones con una solución única es no singular, y
uno que no tiene solución única se llama singular.
Ejemplo:
M=3>N=2, de modo que la única solución es x =1, y=1. Si M>N el sistema puede no tener
solución, tener solución única o infinidad de soluciones.
3x + 2y – z =10
x + 3y + 2 z = 5
x - y - z = -1
3 2 −1 𝑥 10
𝐴= −1 3 2 ; 𝑋= 𝑦 ; 𝐵= 5
1 −1 −1 𝑧 −1
La forma matricial:
40
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
AX = B
Pero, si se tiene más de tres variables, la notación 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
3 −1 1
X=[ x1 x2 x3] 𝐴= 2 3 −1 B=[ 10 5 -1]t
−1 2 −1
PROGRAMACION BASICA:
41
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Reacciones múltiples
CLASE N° 5:
function cp = cpSuelo(x, T)
% función para calcular el calor específico de una solución de NaOH
%%
Modo de aplicarse:
% CP = CPSOL(X,T)
% donde: CP – calor específico de un soluto, [J/(kg.K)]
% X - fracción masica del NaOH en la solución
% 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 específico de una solución de Na OH a una fracción másica de 0,25, la
temperatura de 50°C =323,15°K,el comando necesario es:
>> cpSol(0.25,323.15)
ans =
3.3950e+003
Solución:
La densidad de una mezcla de gases reales, mez, se calculas mediante la expresión: 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/(mol·K)].
La Masa molecular de la mezcla se calcula por la expresión:
Mmez = 𝑛𝑗=1 𝑀𝑖 𝑋𝑖 y los coeficienes de comprensibilidad mediante la relación:
42
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Zam = 𝑛𝑖=1 𝑍𝑖 𝑋𝑖
Para el caso en que la mezcla se compone de n componentes la relación de representación de una maza
molecular con el coeficiente de compresibilidad Zi, y xi representa una fracción 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 función en MATLAB está diseñada 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
presión, en bar, aplicada a la mezcla de gases.
Tenemos la siguiente función en MATLAB:
function ro = densMez(x,T,P)
%Función 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 - composición en fracción másica en orden CO2 H2 CO
% T - temperatura, [K]
% P - presión, [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 función con nuestros datos:
>> densMez([0.25 0.6 0.15],423,20)
ans =
7.0688
Calcul de rezistent¸˘a prezentat este valabil doar pentru vase cu peret¸i subt¸iri,
condit¸ia care se cere a fi ˆındeplinit˘a pentru aceasta fiind:
__
0D
6 0,1 (10.12)
unde __
0 = _p − cex − cab este grosimea de rezistent¸˘a efectiv˘a.
Presiunea de calcul, pc este egal˘a cu presiunea maxim˘a admisibil˘a de lucru a
vasului, pm la care se adaug˘a presiunea hidrostatic˘a a coloanei de lichid din vas:
pc = pm + ph (10.13)
Presiunea hidrostatic˘a, ph reprezint˘a presiunea datorat˘a coloanei de lichid din
recipient ¸si se calculeaz˘a cu relat¸ia:
ph = 9,81 · 10−9 hl · _ (10.14)
unde hl reprezint˘a ˆın˘alt¸imea coloanei de lichid iar _ densitatea lichidului.
Presiunea de ˆıncercare hidraulic˘a a recipientului pph este dat˘a de relat¸ia:
pph = 1,25 · pm · _20
a
_ta
(10.15)
unde _20
a este rezistent¸a admisibil˘a a materialului de construct¸ie al vasului la temperatura
de 20°C.
Presiunea de ˆıncercare hidraulic˘a calculat˘a, pphc este dat˘a de relat¸ia:
pphc = pph + pha (10.16)
unde pha este presiunea hidrostatic˘a a lichidului de ˆıncercare care este apa.
Rezistent¸a admisibil˘a a materialului _20
a ¸si _ta
se calculeaz˘a prin relat¸iile:
_20
a = min
__20
c
1,5 ; _20
r
2,4
_
(10.17)
_ta
= min
_ _tc
1,5; _tr
2,4
44
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
_
(10.18)
unde: _c ¸si _r reprezint˘a limita de curgere respectiv rezistent¸a la rupere la tract¸iune
ˆın [MPa].
Rezistent¸a efectiv˘a a peretelui vasului la ˆıncercarea de presiune hidraulic˘a se calculeaz
˘a cu relat¸ia:
_ef = pphc(D + s_
0)
2 ' __
0
(10.19)
Verificarea vasului la presiune hidraulic˘a implic˘a respectarea condit¸iei:
_ef 6 0,9 _20
c (10.20)
Calculul de rezistent¸˘a al peretelui unui vas cilindric implic˘a parcurgerea urm˘atorului
algoritm:
45
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
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);
46
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Nf ¸si puterea pierdut˘a ˆın vas datorit˘a amenaj˘arilor interioare (teac˘a de m˘asurare a
temperaturii, serpentin˘a, sp˘arg˘ator de vˆartej, rugozitatea peret¸ilor, ¸s.a.m.d.). Relat¸ia
de calcul utilizat˘a este [20]:
47
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
N=k
_t
·
h
Nam
_
1+
X
'i
_
+ Nf
i
(10.21)
unde: k reprezint˘a coeficientul de majorare a puterii care t¸ine seama de suprasarcinile
care apar la pornire, umplere sau alimentare, _t este randamentul total al sistemului
de act¸ionare iar 'i reprezint˘a factori de majorare datorate prezent¸ei unor amenaj˘ari
interioare. ˆIn cazul P'i = 0,4. nostru, valorile acestor coeficien¸ti sunt: k = 1,25, _t = 0,95 ¸si
Puterea necesar˘a amestec˘arii, ˆın [kW], pentru alte amestec˘atoare decˆat cele de
tipul impeller, se calculeaz˘a cu relat¸ia:
Nam = np
_n
60
_3
d5 · _ · 10−3 (10.22)
unde: np este num˘arul caracteristic de putere, n reprezint˘a turat¸ia amestec˘atorului
[min−1], d este diametrul amestec˘atorului, [m], iar _ este densitatea lichidului antrenat.
Num˘arul caracteristic de putere, np, se stabile¸ste funct¸ie de criteriul Reynolds
conform datelor prezentate ˆın tabelul 10.3. Valoarea criteriului Re se calculeaz˘a cu
expresia:
Re = 16,25 · n · d2 · _
_ (10.23)
unde _ reprezint˘a vˆascozitatea mediului de lucru, ˆın [cP].
Tabelul 10.3. Num˘arul caracteristic de
putere pentru amestec˘atoare cu elice.
Valoarea Num˘arul caracteristic
criteriului Re de putere, np
102 1
103 0,5
104 0,3
105 0,27
106 0,22
Puterea consumat˘a prin frecare ˆın cutia de etan¸sare a sistemului de amestecare,
Nf ˆın [kW], se calculeaz˘a cu relat¸ia:
Nf = 2,255 · 10−7 · d2
a · m · b · μ · pm · n (10.24)
unde: da este diametrul arborelui amestec˘atorului ˆın dreptul cutiei de etan¸sare, ˆın
[mm], m reprezint˘a num˘arul de inele de etan¸sare, b esteˆın˘alt¸imea unui inel de etan¸sare,
ˆın [mm], μ este coeficientul de frecare ¸si pm reprezint˘a presiunea maxim˘a admisibil˘a
de lucru ˆın vas, [MPa]. Valorile utilizate ˆın acest caz sunt: m = 4, b = 20 [mm] ¸si
μ = 0,075.
Puterea calculat˘a a electromotorului, conform relat¸iei 10.21, este folosit˘a pentru
alegerea puterii electromotorului dintr-o list˘a de puteri disponibile. Puterile electromotoarelor
disponibile pe piat¸˘a formeaz˘a urm˘atorul ¸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.
Utilizˆand aceste informat¸ii, se construie¸ste urm˘atorul program MATLAB:
%Program de calcul al puterii electromotorului
48
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
FUNCION plot3( )
La función plot3 es análoga a su homóloga bidimensional plot. Su forma más sencilla es la
siguiente:
>> plot3(x,y,z)
que dibuja una línea 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
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
x=cost(t);
y=cost(t);
z=t;
DIBUJO DE MALLADOS:
Meshgrid
50
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
51
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
52
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
53
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
54
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
55
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
mifuncion.m
56
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
En la ventana de comandos:
Integración
Diferenciación numérica:
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)]
57
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Límites
58
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Derivación e integración
59
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
60
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
61
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
62
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
Series de Taylor
63
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
64
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
65
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
66
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
67
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
68
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
69
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
70
MANUAL DE MATLAB BASICO I
MATLAB VER 7.12.0.635 (R2011a) ING. JOSE SAUL ORBEGOSO LOPEZ
71