Documente Academic
Documente Profesional
Documente Cultură
1. Sobre MATLAB.
¿Qué es MATLAB? Es un software interactivo que ha sido usado re-
cientemente en varias áreas de ingeniería y aplicaciones científicas.
No es un lenguaje computacional en el sentido “normal”, pero trabaja
como tal. Un aspecto atractivo de MATLAB es que es relativamente
fácil de aprender. El poder de MATLAB es representado por la longi-
tud y simplicidad de su código. Por ejemplo, una página de código de
MATLAB puede ser equivalente a muchas páginas de códigos fuentes
de otros lenguajes computacionales. Para los cálculos numéricos,
MATLAB usa colecciones de subrutinas matemáticas científicamente
bien escritas como LINPACK y EISPACK.
MATLAB posee herramientas muy poderosas de interfaces gráficos
(GUI) y animaciones gráficas en tres dimensiones.
En general, MATLAB es una poderosa herramienta para manejos de
vectores y matrices. Estos arreglos no requieren dimensionamiento,
por lo que se resuelven muchos problemas de computación técnica,
sobre todo la formulación de vectores y matrices se hace en un tiem-
po corto, que no se podría hacer con lenguajes como Fortran o C.
1
Para las aplicaciones específicas, MATLAB dispone de herramientas
especiales, llamadas toolboxes. En ellas se aprende y se aplica tecno-
logía especializada.
2
Componentes de una columna o fila. MATLAB posee operaciones
para visualizar o extraer filas o columnas de una matriz. La siguiente
expresión
» A(:,2) ↵
ans =
–2
4
7
visualiza la segunda columna de A, y la expresión
» A(3,:) ↵
ans =
6 7 11
visualiza la tercera fila de A.
También podemos hacer operaciones elementales sobre las filas o co-
lumnas, por ejemplo
» A(1,:) –2*A(3,:) ↵
ans =
–11 –16 –18
le resta de la primera fila 2 veces la tercera.
Podemos introducir otra matriz B como
» B=[–3, 1, 0; 3, 6, 2; –1, 3, 5] ↵
B=
–3 1 0
3 6 2
–1 3 5
Podemos realizar operaciones entre matrices del mismo tamaño, por
ejemplo
» C=A*B ↵
C=
–13 1 16
–2 42 33
–8 81 69
es el resultado de la multiplicación de A por B “en este orden”.
3
3. Matrices Elementales.
Presentaremos algunas matrices elementales que son muy útiles a la
hora de programar, para mayor información se puede consultar en “»
help elmat ↵”.
Matrices Elementales.
zeros - Arreglo de ceros.
ones - Arreglo de unos.
eye - Matriz identidad.
4
ISEMPTY(X) returns 1 if X is an empty array and 0 otherwise. An
empty array has no elements, that is prod(size(X)) = = 0.
Análisis Matricial.
norm - norma de un vector o de una matriz.
rank - rango de una matriz.
5
det - Determinante de una matriz.
trace - Suma de los elementos de la diagonal principal.
rref - Forma echelon reducida por filas.
Ecuaciones Lineales.
\ y / - Solución de ecuaciones lineales, uso del "slash de ayuda".
inv - Matriz inversa.
cond - Número de condición con respecto a la inversión.
lu - La factorización LU.
Funciones Matriciales.
expm - Exponencial de una matriz.
logm - Logaritmo de una matriz.
sqrtm - Raíz cuadrada de una matriz.
28 de mayo de 2002.
6
for - Es un comando de ciclo similar a la de otros lenguajes.
while - Se usa para combinar ciclos con declaraciones condi-
cionadas.
if - Se usa para producir una declaración condicionada.
elseif, else - Se usa en conjunción con el comando if.
break - Se usa para terminar un ciclo cuando se cumple una
condición.
for i=3:length(x);
if x(i)<m; m=x(i); end
end
7
disp(' ')
disp('El mínimo encontrado es')
m
8
Escriba un programa en MATLAB del algoritmo y pruébelo con los
datos del Ejemplo 1. También en MATLAB existe una función llama-
do sort que ordena los números en orden ascendente y hace otras co-
sas.
Actividad 2. El siguiente algoritmo calcula el promedio de un conjun-
to de n números positivos x1, x2, ..., xn, donde varios de ellos son muy
“pequeños”.
Entrada: x = ( x1, x2, ..., xn)∈Rn.
Salida: promedio de los elementos de x.
Pasos computacionales
1. Ordene los números de menor a mayor como en el paso 2 de
la Actividad 1.
2. Hacer promedio = 0; “se inicializa una suma acumulativa”.
3. Para i = 1, 2, ..., n;
Hacer promedio = promedio + xi;
4. promedio = promedio / n.
29 de mayo de 2002.
6. Método de Newton-Raphson.
Ejemplo 2. El algoritmo de Newton–Raphson para aproximar una raíz
de la ecuación f (x) = 0, dada una aproximación inicial x0, es el si-
guiente.
Entrada: Aproximación inicial x0, tolerancia tol y un número
máximo N0 de iteraciones.
Salida: Solución aproximada x o mensaje de fracaso.
Pasos computacionales
1. Sea n = 1.
2. Mientras n ≤ N0, realizar los pasos 3 al 5.
3. Calcular x = x0 − f (x0) / f ’(x0).
9
4. Si el máx (x − x0,f (x)) < tol, entonces alto, la solución
aproximada es x.
5. En caso contrario, hacer x0 = x & n = n + 1.
clear; clc
x0=input('Dame el punto inicial x0: ');
N0=input('Dame el número máximo de iteraciones: ');
disp(' ')
tol=10^(-4); n=1;
f=inline('x.^3+2*x-1','x');
while n<=N0;
if abs(x0)<eps; h=abs(x0)+eps;
else h=sqrt(eps); end
f0=f(x0);
fp=(f(x0+h)-f0)/h;
if abs(fp)<eps, break; end
x=x0-f0/fp; fx=f(x);
if max(abs(x-x0),abs(fx))<tol; break; end
fprintf('n=%2.0f, x0=%12.5e, fx0=%12.5e, fp=%12.5e\n',n,
x0,f0,fp)
x0=x; n=n+1;
end
fprintf('\n Raíz aproximada = %15.8e\n',x)
10
Enseguida MATLAB responde dibujando la gráfica de f en el interva-
lo solicitado, su respuesta es
15
10
-5
-10
-15
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
11
Actividad 3. Use el programa anterior para resolver los siguientes
problemas.
1. Una mezcla equimolar de monóxido de carbono y oxígeno debe
alcanzar el equilibrio a 3000 K (grados Kelvin) y una presión de 5
bar. La reacción teórica es CO+(1/2)O2↔CO2.
La reacción química real se escribe así
CO+O2→xCO+(1/2)(1+x)O2+(1−x)CO2.
La ecuación de equilibrio químico para determinar la fracción de
CO restante, o sea x, está dada por
(1 − x ) 3 + x
KP = , 0 < x <1,
x 1+ x P / P0
donde, KP=3.06 es la constante de equilibrio para CO+(1/2)O2 =
CO2 a 3000 K, P=5 bar y P0=1 bar. Determine el valor de x.
2. El factor de fricción f para los flujos turbulentos en una tubería
está dado por
1 e 9.35
= 1.14 − 2 log 10 +
D R f
f e
llamada correlación de Colebrook, donde Re es el número de Rey-
nolds, e es la aspereza de la superficie de la tubería y D es el diá-
metro de la tubería. Evalué f adecuadamente para los siguientes
casos:
a) D = 0.1 m, e = 0.0025 m, Re = 3 ×10 4
b) D = 0.1 m, e = 0.0001 m, Re = 5 ×10 6
3. En estudios sobre recolección de energía solar al enfocar un cam-
po de espejos planos en un colector central, un investigador obtu-
vo la siguiente ecuación para el factor de concentración geométri-
π( h / cos A) 2 F
ca C: C = , donde A es el ángulo de
0.5πD 2 (1 + sen A − 0.5 cos A)
anillo del campo, F es la cobertura fraccionaria del campo con los
espejos, D es el diámetro del colector y h es la altura del mismo.
Encuentre A, si h=300, C=1200, F=0.8 y D=14.
12
4. Un método particularmente eficiente para la integración numérica
de una función es el cuadratura gaussiana. En el desarrollo de
fórmulas para este método es necesario evaluar los ceros de poli-
nomios de Legendre. Encuentre los ceros del polinomio de Le-
gendre de sexto orden: P6(x) =(1/48) (693x6 − 945x4 + 315x2 − 15).
(Nota: Todos los ceros de los polinomios de Legendre son meno-
res que uno en magnitud y, para polinomios de orden par, son
simétricos con respecto al origen.)
5. Los polinomios de Legendre son una clase de polinomios deno-
minados ortogonales. Otro conjunto son los polinomios de Lague-
rre. Encuentre los ceros de los siguientes:
a) L3(x) = x3 − 9x2 + 18x − 6.
b) L4(x) = x4 − 16x3 + 72x2 − 96x + 24.
6. Todavía, otra clase de polinomios ortogonales son los polinomios
de Chebyshev. Encuentre las raíces de:
T6(x) =32x6 − 48x4 + 18x2 − 1.
(Observe la simetría de esta función. Todas las raíces de los polino-
mios de Chebyshev también son menores que uno en magnitud).
30 de mayo de 2002.
13
fzero - Encuentra raíces de una función de una variable.
También están las funciones fmin y fmins.
Por ejemplo,
» subplot(2,2,1), fplot('humps',[0 1]) ↵
» subplot(2,2,2), fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi]) ↵
» subplot(2,2,3), fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1]) ↵
» subplot(2,2,4), fplot('sin(1 ./ x)', [0.01 0.1],1e-3) ↵
MATLAB responde dibujando lo siguiente
100 10
80 8
60 6
40 4
20 2
0 0
0 0.5 1 0 2 4 6
1
5
0.5
0 0
-0.5
-5
-1
-5 0 5 0.02 0.04 0.06 0.08 0.1
14
% HUMPS uses X = 0:.05:1.
%
% Example:
% plot(humps)
%
% See QUADDEMO, ZERODEMO and FPLOTDEMO.
% Copyright (c) 1984-98 by The MathWorks, Inc.
% $Revision: 5.4 $ $Date: 1997/11/21 23:26:10 $
1 1
Esta función define a f ( x ) = + −6 .
( x − 0.3) + 0.01 (0 − 0.9) 2 + 0.04
2
15
x1 =
2.4753
» hold on ↵
» plot(x1,f(x1),'Or') ↵
Marca el punto mínimo en la gráfica con una O de color rojo.
Para calcular el punto máximo, observamos que está entre 0 y 2, por
lo hacemos
» g =inline('-exp(sin(x)).*cos(x)','x'); ↵
» x2=fminbnd(g,0,2) ↵
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX of
1.000000e-004
x2 =
0.6663
» plot(x2,f(x2),'Og') ↵
Dibuja el punto máximo con una O de color verde.
Para calcular la primera raíz positiva, observamos que está entre 1 y 2,
por lo que ejecutamos
» x0=fzero(f, 2) ↵
Zero found in the interval: [1.5475, 2.32].
x0 =
1.5708
» plot(x0,0,'Ok')
Dibuja la primera raíz positiva con una O de color negro.
Si queremos ver nuestros resultados
» [[x0,x1,x2]',[f(x0),f(x1),f(x2)]'] ↵
ans =
1.5708 0.0000
2.4753 −1.4585
0.6663 1.4585
Si ya no queremos insertar más información que tenga que calcularse
en nuestra gráfica, es necesario cerrarla con hold off. Importante ca-
da vez que se ejecuta hold on se debe cerrar con hold off.
16
Podemos agregar leyendas de los resultados obtenidos en nuestra grá-
fica con la ayuda del ratón, para obtener el siguiente reporte
1
f (x) = exp(sen(x)) cos(x)
0.5
0
Primera raíz positiva = 1.5708
-0.5
-1
-1.5
Punto mínimo (2.4753,-1.4585)
-2
-3 -2 -1 0 1 2 3 4 5 6
17
Ejemplo 4: Calcule el área limitada por f (x) = esen(x)cos(x) entre sus
dos primeras raíces positivas.
Sabemos que la primera raíz positiva es x0= 1.5708, calculemos de la
misma forma la segunda raíz positiva que está entre 4 y 5.
» x3=fzero(f,4) ↵
Zero found in the interval: [3.0949, 4.9051].
x3 =
4.7124
Depuramos nuestra gráfica si sigue activo o ejecutamos las siguientes
operaciones, para ver solamente la gráfica de f y sus raíces.
» f =inline('exp(sin(x)).*cos(x)','x'); ↵
» fplot(f,[-pi 2*pi]); grid ↵
» hold on ↵
» plot([x0,x3],[0,0], 'Or'); ↵
18
1.5
1
f(x) = exp(sen(x)) cos(x)
0.5
-0.5
-1
-1.5
-3 -2 -1 0 1 2 3 4 5 6
19
ode15s - Resuelve ecuaciones diferenciales stiff y ecuaciones dife-
renciales algebraicas con método de orden variable.
ode23s - Resuelve ecuaciones diferenciales stiff con método de or-
den bajo.
odefile - Formato de archivo para EDO’s.
Para mayor información consultar en » help funfun ↵.
dy=inline('y./t-(y./t).^2','t','y');
y1=inline('t./(1+log(t))','t');
[t,y]=ode23(dy,tspace,y0);
20
Analice lo que hace el programa en cada etapa, luego córrela en MA-
TLAB y analice los resultados gráficos que obtiene. Puede también
ver los resultados numéricos con » [t, y] ↵.
y’1 = y2
y’2 = y3
y’3 =3y3 + y2 y1
y0 = (y1(0), y2(0), y3(0)) = (0, 1, −1).
21