Notas Matlab Totales
Notas Matlab Totales
Notas Matlab Totales
Notas
PREFACIO
1
Notas MATLAB Laboratorio. de Simulación de Procesos
Ejemplo 1:
>> help quit
QUIT Quit MATLAB session.
QUIT terminates MATLAB after running the script FINISH.M,
if it exists. The workspace information will not be saved
unless FINISH.M calls SAVE. If an error occurs while
executing FINISH.M, quitting is cancelled.
2
Notas MATLAB Laboratorio. de Simulación de Procesos
what. El comando what produce una lista de los archivos M, MAT y MEX
presentes en el directorio de trabajo actual.
who. El comando who produce una lista de las variables del espacio de trabajo
actual; whos exhibe información adicional acerca de cada variable; who global y
whos global enlistan las variables del espacio de trabajo actual.
Ejemplo 2:
>> clock
ans =
1.0e+003 *
2.0060 0.0010 0.0030 0.0190 0.0460 0.0378
Nota: Esto significa [ año, mes, día, hora, minuto, segundo ]
(1.0e+03 * 2.0060 ) = 2006.0 dos mil seis
También con clock podemos medir el tiempo que tarda una ejecución. Por
ejemplo, asigne t_0 = clock antes de que se inicie el cálculo y t_1 = clock cuando
se haya completado; entonces, t_1 – t_0 nos dará el tiempo transcurrido durante
el cálculo.
diary. El comando diary on escribe todo lo que se introduce por el teclado, así
como la mayor parte de lo que se envía en pantalla, a un archivo llamado diary.
Con diary off se termina la escritura. Si ya existe una archivo diary, las salidas de
la pantalla se anexarán a ese archivo. Se pueden especificar un nombre de
archivo distinto de diary escribiéndolo después de la palabra diary. Si no se
3
Notas MATLAB Laboratorio. de Simulación de Procesos
incluyen las palabras on u off, el comando diary alternará entre diary on y dairy off.
El archivo puede imprimirse en papel o editarse posteriormente.
demo. El comando demo guía al usuario para que pueda ejecutar diversas
demostraciones que se eligen de un menú. El contenido de algunas
demostraciones no es fácil de entender a la primera, pero puede estudiarse en
varias ocasiones si se tiene interés.
clc. Si desea borrar la ventana, utilice el comando clc.
Ejemplo 3:
Evaluemos :
Volumen = 4/3πr3, con r = 2
>> r= 2;
>> vol = (4/3)*pi*r^3;
>> vol
vol =
33.5103
Ejemplo 4:
>> r =2, vol =(4/3)*pi*r^3
o
>> r =2
>>vol =(4/3)*pi*r^3
Se imprimirán los valores de r y de vol.
Cuando lo largo de una línea no alcanza para un comando es posible seguir en
otra línea de la ventana de comandos, como se muestra en el Ejemplo 5.
Ejemplo 5:
>> r =2;
4
Notas MATLAB Laboratorio. de Simulación de Procesos
>>vol =(4/3)*pi
*r^3
Operadores aritméticos. Son los mismos que ya conoces como +,-,* y /, pero
MATLAB utiliza uno no tradicional, \, que puede llamarse división inversa. Este
operador produce el recíproco de la división.
Ejemplo 6:
>>r = 2;
>> if r ~=3, vol = (4/3) * pi *r^3;
>>end
Ejemplo 7:
>> r= 2;
>> if r > 3 b=1;
else if r==3 b=2;
else b=0;
end
Desde luego, elseif puede repetirse tantas veces como lo desee; sin embargo,
hay ocasiones en que el uso de else y elseif tiene sus bemoles, sobre todo cuando
las variables que siguen al enunciado elseif incluyen arreglos de diferentes
tamaños. Si los enunciados elseif no funcionan, olvídese de ellos y repita
enunciados if sencillos cuantas veces sea necesario.
5
Notas MATLAB Laboratorio. de Simulación de Procesos
Un ejemplo del conflicto de usar ciertos valores como: sin = 3; ya que “sin” ya no
podrá usarse como función trigonométrica en tanto no sea borrada la variable con
el comando clear o se abandone MATLAB.
En MATLAB i y j se usa para valor unitario imaginario raíz (-1), por eso es
aconsejable no usar i ni j como nombre de variable.
Ejemplo 8:
>>for r =1:5
vol = (4/3)*pi*r^3;
disp([r, vol])
end
>>r=0;
>>while r<5
r= r+1;
vol = (4/3)*pi*r^3;
disp ([r, vol)]
end
Ejemplo 9:
>>pi
ans =
3.1416
Sin embargo, los dígitos pueden exhibirse con 16 dígitos si se emite la orden
format long; por ejemplo,
>>format long
>>pi
6
Notas MATLAB Laboratorio. de Simulación de Procesos
ans =
3.141592653589793
Ejemplo 10:
>>for i=1:6
for j =1:20
if j> 2*i, break, end
end
end
clear. Borra todas las variables que se encuentren grabadas en la ventana del
workspace. Sin embargo, si quieres borrar sólo una o algunas variables lo puedes
hacer de la siguiente forma: clear x y z.
Hay varias formas de pasar datos a, y de, MATLAB. Los métodos pueden
agruparse en tres clases:
Ejemplo 11:
>>z = input (′indique el radio: ′)
Ejemplo 12:
>>fprintf ('El volumen de la esfera es %12.5f\n', vol)
7
Notas MATLAB Laboratorio. de Simulación de Procesos
Se puede tener mejor control de los archivos con fopen y fclose. Si desea
mayores detalles, consulte la guía de usuario de MATLAB.
3. Variables de arreglo
En muchas ocasiones los datos podrían ser una coordenada en un plano, y se
representa como un par de números, uno de los cuales representa una
coordenada x y el otro la coordenada y. Existen ocasiones en que se puede tener
un conjunto de cuatro coordenadas xyz representando los cuatro vértices de una
pirámide con base triangular en un espacio tridimensional. Es posible representar
todos estos ejemplos usando la estructura de datos Matriz que es un conjunto de
números dispuestos en una retícula rectangular de filas y columnas. Una
coordenada xy puede considerarse una matriz con una fila, de dos columnas y un
conjunto de cuatro coordenadas que puede considerarse como una matriz con
cuatro filas y tres columnas como ejemplo tenemos
⎡− 1 0 0⎤
C = ⎢⎢ 1 − 1 0⎥⎥
⎢⎣ 0 0 2⎥⎦
Ejemplo 13:
>>x = [ 0, 0.1, 0.2, 0.4, 0.5];
>>for i=1:6
x(i) = (i-1)*0.1;
end
8
Notas MATLAB Laboratorio. de Simulación de Procesos
>>x = 2: -0.4:-2
Es una forma de describir una variable de arreglo de fila con un incremento o
decremento fijo.
Ejemplo 14:
c(8) = 11; si se define un arreglo de esta forma se obtendrá:
>>c(8)=11
c=
0 0 0 0 0 0 0 0 11
>>z = x + y
>>z = x – y
>>z = x .* y
>>z = x ./ y
Ejemplo 15:
Si se quiere incrementar el tamaño de un vector debe hacerlo como en el
siguiente ejemplo, teniendo el arreglo x =[2 3] anexar el número 5,
>> x=[2 3];
9
Notas MATLAB Laboratorio. de Simulación de Procesos
>> x=[x 5]
x=
2 3 5
Ejemplo 16:
>> x = [9, 2, 3, 5];
>> length(x)
ans =
4
Ejemplo 17:
>>m = [1, 2, 3; 5, 6, 7; 2, 3, 5]
m=
1 2 3
10
Notas MATLAB Laboratorio. de Simulación de Procesos
5 6 7
2 3 5
La transpuesta de una matriz es una nueva matriz en las que las filas de la
matriz original son las columnas de la nueva.
⎡− 1 3 0⎤ ⎡ − 1 1 2⎤
⎢
A = ⎢ 1 4 7⎥ ⎥ A = ⎢⎢ 3 4 5⎥⎥
T
⎢⎣ 2 5 6⎥⎦ ⎢⎣ 0 7 6⎥⎦
Ejemplo 18:
>> A=[-1 3 0; 1 4 7; 2 5 6];
>> A'
ans =
-1 1 2
3 4 5
0 7 6
Ejemplo 19:
>> A=[4 -1 3];
>> B=[-2 5 2];
>> dot(A,B)
ans =
-7
11
Notas MATLAB Laboratorio. de Simulación de Procesos
Puesto que el producto punto exige que los vectores tengan el mismo número de
elementos, la primera matriz (A) debe tener tantos elementos (N) en cada fila
como elementos hay en cada columna de la segunda matriz (B). Por consiguiente,
si A tiene dos filas y tres columnas, y B tiene tres filas y tres columnas, el producto
AB tendrá dos filas y tres columnas.
⎡1 0 2 ⎤
⎡2 5 1 ⎤
A=⎢ ⎥ B = ⎢⎢− 1 4 − 2⎥⎥
⎣0 3 − 1⎦ ⎢⎣ 5 2 1 ⎥⎦
Ejemplo 20:
>> A=[2,5,1;0,3,-1];
>> B=[1,0,2;-1,4,-2;5,2,1];
>> C=A*B
C=
2 22 -5
-8 10 -7
Por definición, la inversa de una matriz cuadrada A es la matriz A-1 para la cual
los productos de las matrices AA-1 y A-1A son iguales a la matriz identidad. Por
ejemplo, considere las siguiente dos matrices, A y B:
⎡ 2 1⎤ ⎡1.5 − 0.5⎤
A=⎢ ⎥ B=⎢
⎣4 3⎦ ⎣− 2 1 ⎥⎦
Si se calculan los productos AB y BA, obtenemos las siguientes matrices:
⎡1 0⎤ ⎡1 0⎤
A=⎢ ⎥ B=⎢ ⎥
⎣0 1 ⎦ ⎣0 1 ⎦
Por lo tanto, A y B son inversos una de las una de la otra, o sea, A = B-1 y B
-1
=A .
En la MATLAB la inversa se calcula con inv(A).
Ejemplo 21:
>> A=[2 1; 4 3];
>> inv(A)
ans =
1.5000 -0.5000
-2.0000 1.0000
12
Notas MATLAB Laboratorio. de Simulación de Procesos
Ejemplo 22:
>> A=[2 1; 4 3];
>> rank(A)
ans =
2
Ejemplo 23:
>> A=[1 3 0; -1 5 2; 1 2 1];
>> det(A)
ans =
10
13
Notas MATLAB Laboratorio. de Simulación de Procesos
inf Infinito ∞
NaN No es un número
date Fecha
flops Contador de operaciones de punto flotante
nargin Número de argumentos de entrada de una función
Número de argumentos de salida de una función
nargout
14
Notas MATLAB Laboratorio. de Simulación de Procesos
sort. Ordena los elementos de un vector en orden ascendente. Esto resulta útil en
los casos en que los datos en un orden aleatorio, tienen que acomodarse de una
forma ascendente.
Ejemplo 24:
>>sum ([2 1 5]′)
ans = 8
>>sum([2 1 5; 9 8 5])
ans =
11 9 10
15
Notas MATLAB Laboratorio. de Simulación de Procesos
echo. Cuando se ejecuta un guión, lo normal es que los enunciados del archivo M
no se exhiban en la pantalla. Sin embargo, si se activa el eco con la orden echo
on, los enunciados se exhibirán. De este modo, el usuario puede ver cual parte del
archivo M se esta ejecutando. Para desactivar el eco, teclee echo off.
Ejemplo 25:
Los números aleatorios pueden servir para crear juegos. El enunciado x =
rand(1) genera un número aleatorio entre 0 y 1 y asigna ese número a x.
Consideremos 13 cartas de espadas que se barajaron bien. La probabilidad de
escoger una carta en particular de la pila es de 1/13. Escriba un programa que
simule la acción de escoger una carta de espadas con un número aleatorio. El
juego debe continuarse devolviendo la tarjeta a la pila y barajándola otra vez
después de cada juego.
Solución:
c=clock;
k=c(2)*c(3)*c(4)*c(5)*c(6);
rand('seed', k)
for k=1:20
n=ceil(13*rand(1)) ;
fprintf ('Número de carta sacada : %3.0f\n', n)
disp (' ')
disp ('Teclee r y pulse Return para repetir')
r = input ('o cualquier otra letra para terminar', 's' );
Ejemplo 26:
Las funciones en MATLAB, que se guardan como archivos M independientes,
equivalen a las subrutinas y funciones de otros lenguajes. Consideremos un
2 x 3 + 7 x 2 + 3x − 1
archivo M de función para la siguiente ecuación: f ( x ) = ,
x 2 − 3x + 5e − x
16
Notas MATLAB Laboratorio. de Simulación de Procesos
>>y = demos_(3)
y = 502.1384
Una función puede devolver más de una variable. Supongamos una función que
evalúa la media y la desviación estándar de una serie de datos. Para devolver las
dos variables utilizamos un vector en el miembro izquierdo del enunciado de la
función; por ejemplo,
Ejemplo 27:
function [media, dvstd] = media_ds(x)
n = length(x);
media = sum(x)/n;
dvstd = sqrt(sum(x.^2)/n – media.^2);
Para utilizar esta función, el miembro derecho del enunciado de llamada también
debe ser un vector. El guión anterior debe guardarse como media_ds.m.
Entonces,
>>x = [1 5 3 4 6 5 8 9 2 4];
[m, d] = media_ds(x)
m = 4.7000
d = 2.3685
Ejemplo 28:
El argumento de una función puede ser el nombre de otra función. Por ejemplo,
supongamos una función que evalúa la media ponderada de una función en tres
f (a ) + 2 f (b ) + f (c )
puntos como: f av = , donde f(x) es la función que se nombrará
4
en el argumento. El siguiente guión ilustra una función f_av.m que calcula la
ecuación anterior.
17
Notas MATLAB Laboratorio. de Simulación de Procesos
function mp = f_av(nombre_f, a, b, c)
mp = (feval (nombre_f, a) + 2*feval (nombre_f,b) …
+ feval (nombre_f,c))/ 4;
Ejemplo 29:
Evalúe la ecuación anterior para la función definida por la ecuación de f con a=1,
b=2, c=3.
Solución:
Suponemos que f_av.m se guardó como archivo M. Entonces, el comando:
>>A = f_av('demof_', 1, 2, 3)
89.8976
18
Notas MATLAB Laboratorio. de Simulación de Procesos
Se puede utilizar save para escribir datos en formato ASCII. Los comandos load
y save con la opción ASCII son importantes porque permiten exportar e importar
datos en MATLAB: Si desea utilizar el formato ASCII, agregue –ascii o /ASCII
después de los nombres de las variables; save datos.tmp x –ASCII. Guarda la
variable x en ASCII de 8 dígitos en el archivo llamado datos.tmp. El comando save
puede guardar más de una variable.
Ejemplo 30:
>>x = [1, 2, 3, 4];
>>y = [-1, -2, -3]';
>>save dat1.tmp x y –ascii
Si abre el archivo dat1.tmp, se vera así:
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
-1.0000000e+00
-2.0000000e+00
-3.0000000e+00
9. Graficación
Ejemplo 31:
>> x=pi*(-1:0.1:1);
>> y=x.*sin(x);
>> plot (x, y)
19
Notas MATLAB Laboratorio. de Simulación de Procesos
Por defecto los puntos (x(i), y(i)) se une por medio de una línea poligonal.
>> x = pi*(-1:0.01:1);
>> y = x.*sin(x);
>> plot (x, y)
Ejemplo 32:
>> fplot ('sin(x)',[0 2 *pi])
Esta expresión dibuja la expresión seno en el intervalo [0, 2*pi]
20
Notas MATLAB Laboratorio. de Simulación de Procesos
Figura 3. Ejemplo 32
Ejemplo 33:
>> fplot ('sin(x) ',[0 2 *pi])
>> hold on
>> fplot ('cos (x) ', [0 2*pi])
Figura 4. Ejemplo 33
Ejemplo 34:
>> hold off
>> fplot ('x^2*sin(1/x)',[-0.05 0.05])
21
Notas MATLAB Laboratorio. de Simulación de Procesos
Figura 5. Ejemplo 34
Ejemplo 35:
>> ezplot ('exp (x)')
Figura 6. Ejemplo 35
Curvas paramétricas.
>> ezplot ('sin (t) ', 'cos(t) ', [0 pi] )
22
Notas MATLAB Laboratorio. de Simulación de Procesos
Ejemplo 36:
>> ezsurf ('sin (x*y) ', [-2 2 -2 2]
23
Notas MATLAB Laboratorio. de Simulación de Procesos
Figura 9. Ejemplo 36
Ejemplo 37:
>> t=0:0.001:0.009;
>> v=900:1025;
>> [T V]=meshgrid (t,v);
>> aux1=16*pi^2*[T.^2].*((V-918).^2).*((V-1011).^2);
>> aux2=aux1+(2*V-1929).^2;
>> w=T./aux2;
>> z=35000000*w;
>> surfl (t,v,z);
>> shading interp;
>> colormap (pink);
>> rotate3d;
surfl: Este comando dibuja la superficie creada mediante las órdenes anteriores.
Los siguientes comandos sirven para modificar el dibujo obtenido.
50
40
30
20
10
0
1050
0.01
1000
0.008
0.006
950 0.004
0.002
900 0
24
Notas MATLAB Laboratorio. de Simulación de Procesos
2. Método Gráfico
25
Notas MATLAB Laboratorio. de Simulación de Procesos
0.8
y=x*sin(1/x)
0.6
0.4
Y
X: 0.36
0.2 Y: 0.1395
y=0.2*exp(-x)
-0.2
-0.4
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
X
Ejemplo:
Las frecuencias de vibración naturales de una viga uniforme sujeta en un
extremo es la solución de la siguiente ecuación:
cos( x ) cosh( x ) + 1 = 0
Donde:
x = ρω 2 L / EI
L = longitud de la viga (m)
ω = frecuencia( s −1 )
EI = Rigidez ante la flexión (Nm2)
ρ = Densidad del material de la viga (kg/m3)
Determine valores aproximados de las tres raíces positivas más bajas utilizando
el método gráfico.
Solución.
Primero escribiremos
f ( x ) = cos( x ) cosh( x ) + 1
Como sabemos mucho acerca de la función, primero la graficaremos sin límites
de y para 0 ≤ x ≤ 20 . Esta figura nos dice que una raíz es aproximadamente
x=17.4, pero que también es posible que existan otras raíces en 0 ≤ x ≤ 15 .
Listado 1
clf; clear
x = 0:0.1:20;
y = cos(x).*cosh(x)+1;
plot(x, y, x, zeros(size(x)), '--');
xlabel('x'); ylabel ('y = cos (x)*cosh(x)+1' )
26
Notas MATLAB Laboratorio. de Simulación de Procesos
7
x 10
12
10
y = cos (x)*cosh(x)+1
6
2
X: 17.4
Y: 0
0
-2
0 2 4 6 8 10 12 14 16 18 20
x
3. Método de la Bisectriz
27
Notas MATLAB Laboratorio. de Simulación de Procesos
c0 − a0
2n
O de forma equivalente,
⎛ c − a0 ⎞
log⎜ 0 ⎟
⎝ τ ⎠
n≥
log(2 )
28
Notas MATLAB Laboratorio. de Simulación de Procesos
bisec_n ( ‘ nombre_f ‘, a, c )
Ejemplo
y = x2 + 1
y = tan( x ),0 < x < π / 2
Solución
La salida es:
Método de la Bisectriz
It. a b c f (a) f (b ) f (c)
1 0.800000 0.900000 1.000000 0.250986 0.085204 -0.143194
2 0.900000 0.950000 1.000000 0.085204 -0.019071 -0.143194
3 0.900000 0.925000 0.950000 0.085204 0.035236 -0.019071
4 0.925000 0.937500 0.950000 0.035236 0.008660 -0.019071
5 0.937500 0.943750 0.950000 0.008660 -0.005056 -0.019071
6 0.937500 0.940625 0.943750 0.008660 0.001838 -0.005056
7 0.940625 0.942187 0.943750 0.001838 -0.001600 -0.005056
8 0.940625 0.941406 0.942187 0.001838 0.000122 -0.001600
9 0.941406 0.941727 0.942187 0.000122 -0.000738 -0.001600
10 0.941406 0.941602 0.941797 0.000122 -0.000308 -0.000738
11 0.941406 0.941504 0.941602 0.000122 -0.000093 -0.000308
12 0.941406 0.941455 0.941504 0.000122 0.000014 -0.000093
13 0.941455 0.941479 0.941504 0.000014 -0.000040 -0.000093
14 0.941455 0.941467 0.941479 0.000014 -0.000013 -0.000040
15 0.941455 0.941461 0.941467 0.000014 0.000001 -0.000013
29
Notas MATLAB Laboratorio. de Simulación de Procesos
Se satisface la tolerancia
Resultado final : Raíz = 0.941462
30
Notas MATLAB Laboratorio. de Simulación de Procesos
function bisec_n(f_name, a, c)
f_name
% a, c : extremos del intervalo inicial
% tolerance : tolerancia
% it_limit : limite del numero de iteraciones
% Y_a, Y_c : valores y de los extremos actuales
% fun_f(x) : valor funcional en x
fprintf('Metodo de la bisectriz:\n\n');
tolerance = 0.000001; it_limit = 30;
fprintf(' It.a b c fa=f(a) ');
fprintf(' fc=f(c) abs(fc-fa) \n');
it = 0;
Y_a = feval(f_name, a); Y_c = feval (f_name, c);
if (Y_a * Y_c > 0)
fprintf('\n \n Detenido porque f(a)f(c) > 0 \n');
else
while 1
it = it + 1;
b = (a + c)/2; Y_b = feval(f_name, b);
fprintf('%3.0f %10.6f, %10.6f', c, Y_a, Y_c);
fprintf(' %12.3e\n', abs((Y_c - Y_a)));
if ( abs(c-a)/2<=tolerance )
fprintf(' Se satisface la tolerancia. \n' ); break
fprintf(' Cambie a o b y ejecute otra vez .\n' );
end
if ( Y_a*Y_b <= 0 ) c = b; Y_c = Y_b;
else a = b; Y_a = Y_b;
end
end
fprintf('Resultado final : Raiz = %12.6f \n', b);
end
31
Notas MATLAB Laboratorio. de Simulación de Procesos
4. Iteración de Newton
f ( x) = f ( x0 ) + f ' ( x0 )(x − x0 )
f ( x0 )
x1 = x0 −
f ' ( x0 )
f ( xn −1 )
xn = xn +1 −
f ' ( xn −1 )
Para el valor inicial de x0, se traza la línea que pasa tangencialmente por (x0,
f0). La intersección de la línea tangencial con el eje x es x1. A continuación, se
traza la línea que pasa tangencialmente por (x1, f1). Este procedimiento se repite
utilizando el valor más actualizado como estimación para el siguiente ciclo de
iteración.
La deducción de la primera derivada de una función dada podría ser
laboriosa o incluso imposible. En un caso así, podría evaluarse f ' (x ) con una
aproximación de diferencia en lugar de analíticamente. Podemos aproximar
f ' ( xn −1 ) con:
f ( xn −1 + h ) − f ( xn −1 )
f 'n −1 =
h
O bien
f ( xn −1 ) − f ( xn −1 − h )
f 'n −1 =
h
Donde h es un valor pequeño como h = 0.001. Las ecuaciones anteriores son las
aproximaciones de diferencia hacia delante o hacia atrás, respectivamente.
32
Notas MATLAB Laboratorio. de Simulación de Procesos
Ejemplo
Solución:
f (x ) = x3 − a
f ( xn )
xn −1 = xn −
f ' (xn )
xn3 − a
= xn −
3 xn2
2 a
= xn + 2
3 3 xn
n x
0 10
1 5.4
2 5.371834
3 5.371686 (exacta)
n x
0 10
1 7.183334
2 5.790176
3 5.401203
33
Notas MATLAB Laboratorio. de Simulación de Procesos
4 5.371847
5 5.371686 (exacta)
Iteración de Newton
Teclee el nombre de la función (encerrada en apóstrofos):
‘eqn_1’
f_name =
eqn_1
Teclee la estimación inicial de la raíz: 4
n = 1, x = 2.36780E+00, Y = -1.030E+00, yd = -6.319E-01
n = 2, x = 2.92631E+00, Y = 3.488E-01, yd = -6.247E-01
n = 3, x = 2.82370E+00, Y = -9.467E-02, yd = -9.226E-01
n = 4, x = 2.82171E+00, Y = -1.774E-03, yd = -8.895E-01
n = 5, x = 2.82170E+00, Y = -4.498E-06, yd = -8.888E-01
n = 6, x = 2.82170E+00, Y = -9.553E-09, yd = -8.888E-01
La respuesta final: 2.8217E+00
Newt_g ( ‘eqn_1’, 4, 0, 7, 50 )
Ejemplo:
34
Notas MATLAB Laboratorio. de Simulación de Procesos
f (T1 ) =
k
Δx
( )
(T1 − T0 ) + εσ T14 − T∞4 + h(T1 − T f ) = 0
Donde:
Solución:
Archivo M
Function f = cal_pared (T1)
K = 1.2; e = 0.8; Tinf =298 K;
Tf = 298; h = 20; T0 = 625 K;
sig = 5.67 E − 8 ; espesor = 0.05;
f = k/espesor * (T1 –T0 )+e*sig*( T1.^4 - Tinf ^4)…
+h*( T1 –Tf );
El resultado es:
35
Notas MATLAB Laboratorio. de Simulación de Procesos
Iteración de Newton:
n = 0, x = 5.50000E+02, Y = 7.033001E+03
n = 1, x = 4.55199E+02, Y = 6.58551E+02
n = 2, x = 4.44423E+02, Y = 6.44623E+00
n = 3, x = 4.44316E+02, Y = 6.27680E-04
n = 4, x = 4.44316E+02, Y = 5.70253E-10
ans =
444.317
36
Notas MATLAB Laboratorio. de Simulación de Procesos
n = 0; del_x = 0.01;
while abs(x-xb)>0.000001
n=n+1; xb=x;
if n<300 break; end
y=feval(f_name, x);
y_driv=(feval(f_name, x+del_x) - y)/del_x;
x = xb - y/y_driv;
fprintf(' n=%3.0f, x=%12.5e, y=%12.5e,', n, x, y)
fprintf(' yd = %12.5e \n', y_driv)
end
fprintf('\n Respuesta final = %12.6e\n', x);
5. Método de la Secante
xn −1 − xn − 2
xn = xn −1 − f n −1 , n = 1,2,3...
f n −1 − f n − 2
Ejemplo
37
Notas MATLAB Laboratorio. de Simulación de Procesos
Solución
n v f(v)
0 30.00000 1.9620001E-02
1 30.10000 6.8889391E-03
2 30.15411 6.8452079E-03
3 38.62414 -8.9657493E-04
4 37.64323 9.0962276E-05
5 37.73358 9.9465251E-07
6 37.73458 -1.8626451E-09
x = g (x )
xn = g ( xn −1 )
38
Notas MATLAB Laboratorio. de Simulación de Procesos
g ' ( x) < 1
Ejemplo:
y = x 2 − 3x + e x − 2
Tiene dos raíces, una negativa y una positiva. Encuentre la raíz pequeña por
sustitución sucesiva.
Solución
x2 + ex − 2
x = g (x ) =
3
Después, escribimos el siguiente esquema iterativo:
xn = g ( xn −1 )
x = − 3x − e x + 2
Y
x = 3x − e x + 2
Sin embargo, las ecuaciones anteriores tienen discontinuidades en las
inmediaciones de la raíz más pequeña. Además que las primera derivadas de
ambas ecuaciones violan la condición de formulas anteriores. Por tanto, ninguna
de estas ecuaciones funciona.
g ( x ) = x − αf ( x )
xn = xn +1 − αf ( xn +1 )
39
Notas MATLAB Laboratorio. de Simulación de Procesos
O lo que es lo mismo:
La ecuación anterior indica que, primero debe tener el mismo signo que f’ y
segundo, que la rapidez de convergencia es óptima cuando α ≈ 1 / f ' .
La presente esquema se reduce a la iteración de Newton si se asigna al
valor de 1 / f ' ( xn ) para cada iteración.
Ejemplo
tan(0.1x) = 9.2e− x
La solución que tiene significado físico es la raíz positiva más pequeña que
satisface 3 < x < 4. Determine la raíz positiva más pequeña.
Solución
f ( x) = tan(0.1x) − 9.2e− x
f ( 4) − f (3)
f '= = 0.40299
4−3
1
α=
0.40299
40
Notas MATLAB Laboratorio. de Simulación de Procesos
Número de Solución
Iteración iterativa
n x
0 4.00000
1 3.36899
2 3.28574
3 3.29384
4 3.28280
5 3.29293
6 3.29292
7 3.29292
An −1 X n = y
X n = ωAn−−11 y + (1 + ω ) X n −1
41
Notas MATLAB Laboratorio. de Simulación de Procesos
Esta Toolbox cuenta con una interfaz gráfica de Matlab pdetool, parte de la PDE
toolbox proporciona una herramienta gráfica de fácil manejo para la descripción de
estas geometrías complicadas, generación de mallas, resolución de la ecuación
discretizadas y representación de resultados. Además, muchas de las aplicaciones
de interés en ingeniería tienen formas concretas y al ingeniero tan solo le interesa
el comportamiento de un determinado material o geometría en su problema de
estudio, sin tener que preocuparse de la formulación matemática inherente al
mismo. Por este motivo pde tool de Matlab incorpora varios modos de solución
específicos para la solución de ciertos problemas típicos en ciencia e ingeniería,
de modo que el trabajo del usuario tan sólo se limita a definir las geometrías y la
introducción de los parámetros del material.
“La pde toolbox de Matlab incluye una interfaz de usuario completa, que cubre
todos los aspectos del proceso de solución de una EDP. La interfaz se inicializa
escribiendo:
>> pdetool
Menús
• File: Como es habitual, desde este menú pueden abrirse y salvarse ficheros
.m que contienen los modelos en ecuaciones en derivadas parciales en los
42
Notas MATLAB Laboratorio. de Simulación de Procesos
Barra de Herramientas
43
Notas MATLAB Laboratorio. de Simulación de Procesos
Los cinco botones de la izquierda son los botones del modo de dibujo,
representando cada uno de izquierda a derecha:
Como en gran número de programas informáticos, sólo puede haber uno de estos
botones de dibujo activado en cada momento. El hacer doble clic sobre uno de
ellos fija esa herramienta como activa, pudiendo seguir dibujando objetos del
mismo tipo hasta que vuelva a pulsarse el botón. Usando el botón derecho del
ratón o bien Control + Clic, se restringen las herramientas a dibujar cuadrados o
círculos en vez de rectángulos o elipses.
• Resuelve la EDP.
• Zoom on/off.
44
Notas MATLAB Laboratorio. de Simulación de Procesos
45
Notas MATLAB Laboratorio. de Simulación de Procesos
Una vez resuelto nuestro problema de frontera utilizando pdetool y exportamos los
datos descritos con anterioridad, podemos procesar esta información desde la
línea de comandos de Matlab. En primer lugar, podría ser interesante guardar la
descomposición de la geometría de nuestro problema (g) en un fichero (probl.m)
que podamos utilizar más adelante. Una vez que hemos elegido en Boundary la
opción Export Descomponed Geometry, Boundary Conds, escribiremos en la línea
de comandos fid=wgeom(g,’prob1g’). Para hacer lo mismo con la información
sobre el contorno (b) que queremos en un fichero (prob1b.m) escribiremos
fid=wbound(b,’prob1b’).
46
Notas MATLAB Laboratorio. de Simulación de Procesos
Una vez que los objetos básicos han sido dibujados, la geometría final se crea
mediante la introducción, en la línea situada debajo de la barra de herramientas,
de una fórmula que emplee operaciones del álgebra de conjuntos, +, * y -. De
todos ellos, el operador de mayor precedencia es el operador diferencia, - ,
mientras que los operadores unión e intersección, + y * poseen igual prioridad. Sin
embargo, este orden de precedencia pueden controlarse mediante el uso de
paréntesis. El modelo geométrico final, Ω , es el conjunto de todos los puntos para
los cuales la fórmula introducida puede evaluarse como verdadera. El proceso
general puede entenderse más fácilmente a partir del siguiente ejemplo, la
creación de una placa con esquinas redondeadas.
47
Notas MATLAB Laboratorio. de Simulación de Procesos
Ahora debemos editar la fórmula que define la geometría. Para conseguir las
esquinas redondeadas, restemos los cuadrados pequeños del rectángulo y
sumemos a continuación los círculos. En forma de expresión de conjuntos como:
48
Notas MATLAB Laboratorio. de Simulación de Procesos
selecciona la opción “Remove All Subdomain Borders” del menú Boundary. Ahora
el modelo de la placa está completo.
49
Notas MATLAB Laboratorio. de Simulación de Procesos
malla para mejorar su calidad mediante la opción “Jiggle Mesh” del menú
Mesh.
∇ 2u = 1 en Ω, u = 0 en δΩ
Tanto para éste como para el resto de ejemplos que desarrollaremos aquí
seleccionaremos el modo Generic Scalar de la lista desplegable de modos
disponible que se encuentra localizada a la derecha de la barra de herramientas. A
continuación se listan los pasos a realizar con la pdetool para resolver el problema
descrito.
50
Notas MATLAB Laboratorio. de Simulación de Procesos
∂u
d − ∇ 2u = 0
∂t
51
Notas MATLAB Laboratorio. de Simulación de Procesos
Todas las otras fronteras del bloque se hayan aisladas térmicamente. Todo esto
nos conduce al siguiente conjunto de condiciones de contorno:
Además, para la ecuación de calor necesitamos una condición inicial t0 . Para este
caso supondremos que la temperatura del bloque es de 0º C en el momento en el
que empezamos a aplicar el calor. Finalmente, para completar la formulación del
problema, especificaremos que el tiempo inicial de 0 y que queremos estudiar la
distribución de calor durante los cinco primeros segundos.
52
Notas MATLAB Laboratorio. de Simulación de Procesos
− Δu = λ u
53
Notas MATLAB Laboratorio. de Simulación de Procesos
54
Notas MATLAB Laboratorio. de Simulación de Procesos
55