Sei sulla pagina 1di 5

Universidad Andrs Bello

Campus Concepcin
Facultad de Ingeniera
Escuela de Ciencias de la Tierra

Anlisis Numrico - IMIN313


Desarrollo Certamen 1

1. Emplee el siguiente conjunto de datos de presin-temperatura para encontrar las mejores


constantes A1 y A2 para la ecuacin de estado que se muestra a continuacin:

PV A1 A2
=1+ + 2
RT V V
h i
donde R = 82.05 gmlmol
atm y T = 303 [K].
K

P[atm] 0.985 1.108 1.363 1.631


V [ml] 25000 22200 18000 15000

Cuadro 1: Datos Presin-Volumen Ejercicio 1

Estime el valor de P cuando V = 23000 [ml] y T = 350 [K].


Solucin:
Primeramente, se despeja P , para que nos quede una expresin que determine P en trminos
de V y T . Entonces, tenemos la expresin

RT RT A1 RT A2
P = + +
V V2 V3
Los datos tabulados deben aproximarse por el modelo anteriormente descrito, por lo que
podemos representar los datos de la siguiente manera:

RT RT RT

P1

V1 V12 V13 1
.. .. .. ..
A1
. = . . . (1)
Pm RT RT
2
RT
3
A2
Vm Vm Vm

Para m datos tabulados. Ahora, considere

RT RT RT

P1

V1 V12 V13 1
P = ... Z = .. .. ..

A = A1
. . .
Pm RT RT
2
RT
3
A2
Vm Vm Vm

La dimesiones de los arreglos son Pm1 , Zm3 y A31 , por lo que despejar la matriz A sera
imposible, bajo las condiciones actuales. Ahora, si se mutiplicase por la izquierda la ecuacin
1 por Z 0 , nos quedara

1
Z 0 P = Z 0 ZA

Ahora, sea Y = Z 0 P y X = Z 0 Z. Las dimensiones de estas matrices son Y31 y X33 , quedando

Y = XA (2)

Al ser X una matriz cuadrada, es factible la existencia de su inversa si y slo si det(X) 6= 0.


A partir de la ecuacin 2, A se despeja como

A = X 1 Y

donde A es el arreglo de dimensiones 3 1, donde los elementos A(2, 1) y A(3, 1) corresponden


a las constantes A1 y A2 , respectivamente.
Ahora, en Matlab esto se traduce como:

1 P=[0.985;1.108;1.363;1.631];
2 V=[25000;22200;18000;15000];
3 R=82.05;
4 T=303;
5 Z=R*T*[1./V 1./V.^2 1./V.^3];
6 Y=Z'*P;
7 X=Z'*Z;
8 A=X\Y; % Tambin es vlido X^(-1)*Y.
9 A1=A(2,1);
10 A2=A(3,1);
11 fprintf('El valor de A1 es %.3f y el de A2 es %.3f\n',A1,A2);
12 p=@(v,t)R*t*(1./v+A1./v.^2+A2./v.^3); % Funcin para determinar la presin.
13 p1=p(23000,350);
14 fprintf('La presin es %.3f\n',p1);

2. Un pasillo tiene la forma indicada en la figura 1. La mxima longitud L de la barra que puede
pasar de un extremo a otro deslizndose sobre el suelo est dada por

l2 l1
L= +
sin( ) sin()
donde el ngulo , medido en radianes, est determinado por la solucin de la ecuacin no
lineal

cos( ) cos()
l2 l1 2 =0
sin( ) sin ()
Determine

a) Usando el mtodo grfico.


b) Usando el mtodo de biseccin.
c) Usando Newton-Raphson.

2
d ) Usando fzero.
2
Considere l2 = 10, l1 = 8 y = 5 .

Figura 1: Pasillo del Problema 2

Solucin:
De acuerdo
 a la  informacin del problema, los valores en que tiene sentido estn en el
intervalo 0, 35 . Entonces en Matlab

1 l1=8;l2=10;y=2/5*pi; % Valores iniciales.


2 % Funcin para determinar "a".
3 F1=@(a)l2*cos(pi-y-a)./sin(pi-y-a)-l1*cos(a)./(sin(a)).^2;
4 ezplot(F1,[0,3/5*pi]); grid on % Grfico de la funcin en [0,3/5*pi].

El grfico generado por Matlab debe verse similar a

l 2 cos( -y-a)/sin( -y-a)-l 1 cos(a)/(sin(a))2

200

150

100

50

-50

-100

-150

-200

-250

-300

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8


a

Figura 2: Grfico de la funcin objetivo

3
Del grfico se aprecia que la solucin aproximada para es 1. Para los siguientes apartados
del problema, se usarn unas m-functions llamadas Biseccion y newtonraph, que determinan
una solucin de una ecuacin no lineal mediante el mtodo de biseccin y Newton-Raphson,
respectivamente. Dentro de los criterios de paro que tienen cada m-function, se encuentra un
contador de iteraciones y un criterio de error. Para el caso de Biseccion, el criterio de error
viene definido mediante la expresin |f (h)f (a)|, donde f (h) es el valor de la funcin evaluada
en el punto medio del intervalo en la i-sima iteracin y f (a) corresponde a la funcin evaluada
en el extremo izquierdo del intervalo de la i-sima iteracin. Si ese valor se encuentra por
debajo de una tolerancia preestablecida por el usuario, el bucle deja de iterar y arroja una
aproximacin a la raz real. En el caso del mtodo de Newton-Raphson, el criterio usado es
|f (xn )|, donde f (xn ) corresponde a la funcin evaluada en la aproximacin a la raz en la
i-sima iteracin. Para ambos casos usaremos un mximo de n=50 iteraciones y una tolerancia
t=1e-5. Siguiendo en Matlab,

5 disp('Del grfico, se aproxima una solucin en a ~ 1.');


6 t=1e-5;
7 n=50;
8 a1=Biseccion(F1,0.8,1.2,n,t);
9 fprintf('Segn biseccin, "a"=%.5f radianes.\n',a1);

Para el mtodo de Newton Raphson, la funcin newtonraph no calcula la derivada de la


funcin internamente, sino que hay que ingresarla como argumento de la funcin. Matlab no
est concebido para el clculo simblico, pero ha ido adquiriendo herramientas con el correr
de los aos para realizar ciertas operaciones simblicas. Para estos fines se utiliza el comando
syms a, generando en el Workspace una variable a de tipo 1x1 sym. Al tener esta variable de
tipo simblico, podemos realizar ciertas operaciones que antes no se podan realizar, como el
uso del comando diff. Para generar la derivada de nuestra funcin F1, utilizamos la sentencia
dF1=diff(F(a),a). En algunos casos, dependiendo de la versin de Matlab, puede que sea
necesario utilizar la orden dF1=diff(subs(F,a),a). As, en la variable dF1 queda almacenada
la derivada de la funcin F. Como se coment lneas atrs, Matlab no trabaja de manera
nativa con funciones simblicas, por lo que es conveniente trabajar con funciones que Matlab
trabaje mejor, como es el caso de las funciones annimas. Para convertir una funcin simblica
a una annima, se usa el comando matlabFunction. As, para transformar la funcin simblica
dF1 realizamos la siguiente reasigacin: dF1=matlabFunction(dF1). Siguiendo con el script
10 syms a
11 dF1=diff(F1(a),a) % Tambin dF1=diff(F1) o dF1=diff(subs(F,a),a)
12 dF1=matlabFunction(dF1);
13 clear a % Eliminamos la variable simblica a porque ya no se necesita.
14 a2=newtonraph(F1,dF1,1,n,t);
15 fprintf('Segn Newton-Raphson, "a"=%.5f radianes.\n',a2);
16 a3=fzero(F1,1);
17 fprintf('Segn fzero, "a"=%.5f radianes.\n',a3);

A continuacin se adjuntan los cdigos fuentes de las funciones Biseccion.m y newtonraph.m:

4
Biseccion:

1 function [Cero,Mat] = Biseccion(f,a,b,n,tol)


2 Err=1; % Inicializacin del Error.
3 c=0; % Contador de Iteraciones.
4 while Err > tol && c <= n
5 h = (a+b)/2;
6 c = c+1;
7 Mat(c,:) = [a f(a) b f(b) h f(h)]; % Matriz con los datos.
8 disc = f(h)*f(a); % Criterio de evaluacin.
9 if abs(disc) < tol
10 Err = 0;
11 Cero = h;
12 elseif disc > 0
13 a = h;
14 elseif disc < 0
15 b = h;
16 end
17 Err=abs(disc); % Criterio de Error.
18 end
19 Cero = h; % Cruce por cero de la funcin.
20 end

newtonraph:

1 function [Cero,Mat]=newtonraph(f,df,a,n,t)
2 Err = 1; % Inicializacin del error.
3 c = 0; % Iniciailzacin del contador.
4 while Err > t && c <= n % Bucle while que condiciona las iteraciones.
5 xn = a-f(a)/df(a); % Aproximacin a la solucin.
6 c = c+1; % Aumento del contador para prevenir bucles infinitos.
7 Mat(c,:) = [a f(a) df(a)]; % Matriz de iteracin.
8 a = xn; % Nueva asignacin para comenzar nuevamente el ciclo.
9 Err=abs(f(xn)); % Criterio de error.
10 end
11 Cero=xn; % Asignacin de la solucin aproximada de acuerdo al mtodo.
12 end

PPG.
Santiago, 8 de septiembre de 2017.

Potrebbero piacerti anche