You are on page 1of 6

Método de Posición Falsa

ClearAll["Global`*"]
borra todo
Tc = Input["Ingrese Temperatura Crítica (K)"];
entra
Pc = Input["Ingrese Presión Crítica (kPa)"];
entra
ω = Input["Ingrese Factor Acéntrico"];
entra factoriza
T = Input["Ingrese Temperatura (K)"];
entra
R = 8.314; (*Constante universal de los gases*)
imax = 150; (*máximo de iteraciones*)
tol = 1 * 10-8 ;(*Tolerancia*)
P = Input["Calcular desde Presión(atm)"];
entra
Pmax = Input["Hasta Presión (atm)"];
entra
(*Inicialización de listas donded serán almacenados los resultados*)
Patm = {};
Vgi = {}; Vsrk = {}; itera = {}; iterb = {}; IntervA = {}; IntervB = {};
(*Parámetros calculables*)
a = 0.4278 * R2 * Tc2  Pc;
b = 0.0867 * R * Tc / Pc;
S = 0.48508 + 1.55171 * ω - 0.15613 * ω2 ;
2
α = 1 + S 1 - T / Tc  ;
(*Definición de Función f(x)=0*)
R*T a*α
F[V_] := - - Pk
V - b V * V + b
(*Definición de ciclo donde se harán las iteraciones desde Pinicial hasta Pfinal*)
WhileP ≤ Pmax,
mientras
Pk = 101.325 * P; (*Conversión de atm a kPa*)
V[0] = 0.1; (*Valor inicial definido arbitrariamente, m 3 *)
(*Definición de ciclo que se encarga de buscar los dos
estimados iniciales para el intervalo, al detectar un cambio de signo,
se dice que la raíz se encuentra entre esos valores, V[i+1] y V[i]*)
For[i = 0, i < imax, i ++,
para cada
V[i + 1] = V[i] + 0.3; (*El valor de 0.5 se define arbitrariamente*)
If[F[V[i + 1]] * F[V[i]] < 0,
si
A = Min[V[i + 1], V[i]]; (*límite inferior del interv., valor menor*)
mínimo
B = Max[V[i + 1], V[i]]; (*límite superior del interv., valor mayor*)
máximo

Printed by Wolfram Mathematica Student Edition


2 SRKvsGI_PosiciónFalsa.nb

máximo
AppendTo[IntervA, A];
añade al final
AppendTo[IntervB, B];
añade al final
AppendTo[itera, i];
añade al final
Break[];
finaliza iteración
];
]; (*Terminan de calcularse los estimados iniciales*)

(*Comienza ciclo para encontrar la raíz mediante el método de posición falsa*)


Forj = 2, j < imax, j ++,
para cada
(B - A) * F[B]
V[j] = B - ;
F[B] - F[A]
If[Abs[F[V[j]]] < tol,
si valor absoluto
Break[];
finaliza iteración
];
IfF[A] * F[V[j]] > 0,
si
A = V[j],
B = V[j];
;
; (*Termina método de posición falsa*)
(*Cálculo empleando Gas Ideal*)
Vgid = R * T  Pk;
AppendTo[Vsrk, V[j]];
añade al final
AppendTo[Patm, P];
añade al final
AppendTo[Vgi, Vgid];
añade al final
(*Se calcula ahora al siguiente valor de presión*)
P = P + 1;
AppendTo[iterb, j];
añade al final
;
(*Fin del Ciclo While*)
mientras

Printed by Wolfram Mathematica Student Edition


SRKvsGI_PosiciónFalsa.nb 3

(******Presentación de Resultados en forma de Tabla******)


TableForm[Table[{Patm, Vgi, Vsrk, iterb, IntervA, IntervB, itera}, 1], TableHeadings →
forma de ta⋯ tabla cabeceras de tabla
{None, {"Presión", "Videal", "Vsrk", "iter", "Intervalo Inferior", "Superior", "iter"}},
ninguno
TableAlignments → Center]
alineamientos de tabla centro
(******Presentación de Resultados en forma de Gráfico******)
Ideal = Transpose @ {Patm, Vgi};
transposición
SRK = Transpose @ {Patm, Vsrk};
transposición
ListLogLogPlot{Ideal, SRK}, PlotLegends → {"Gas Ideal", "SRK"},
representación log log de lista leyendas de representación
PlotLabel → Style[ "V vs P", FontSize → 18, FontColor → Black], Background → LightBlue,
etiqueta de r⋯ estilo tamaño de tipo de⋯ color de tipo ⋯ negro fondo de imagen azul claro
3
AxesLabel → "P (atm)", "V (m /kmol)", GridLines → Automatic,
etiqueta de ejes parrilla de lín⋯ automático
PlotMarkers → {Automatic, 5}, Joined → True, AspectRatio → Full, PlotTheme → "LargeLabels"
marcadores de re⋯ automático unido verd⋯ cociente de asp⋯ com⋯ tema de representación

Printed by Wolfram Mathematica Student Edition


4 SRKvsGI_PosiciónFalsa.nb

Presión Videal Vsrk iter Intervalo Inferior Superior iter


1 41.0264 40.8111 5 40.6 40.9 135
2 20.5132 20.2975 5 20.2 20.5 67
3 13.6755 13.4594 6 13.3 13.6 44
4 10.2566 10.0401 5 10. 10.3 33
5 8.20528 7.98841 6 7.9 8.2 26
6 6.83773 6.62047 7 6.4 6.7 21
7 5.86091 5.64325 7 5.5 5.8 18
8 5.1283 4.91024 5 4.9 5.2 16
9 4.55849 4.34003 6 4.3 4.6 14
10 4.10264 3.88378 9 3.7 4. 12
11 3.72967 3.51041 8 3.4 3.7 11
12 3.41887 3.1992 8 3.1 3.4 10
13 3.15588 2.9358 9 2.8 3.1 9
14 2.93046 2.70998 10 2.5 2.8 8
15 2.73509 2.51421 6 2.5 2.8 8
16 2.56415 2.34286 9 2.2 2.5 7
17 2.41332 2.19162 11 1.9 2.2 6
18 2.27924 2.05714 10 1.9 2.2 6
19 2.15928 1.93677 7 1.9 2.2 6
20 2.05132 1.8284 12 1.6 1.9 5
21 1.95364 1.73032 10 1.6 1.9 5
22 1.86484 1.64111 8 1.6 1.9 5
23 1.78376 1.55963 13 1.3 1.6 4
24 1.70943 1.4849 12 1.3 1.6 4
25 1.64106 1.41613 11 1.3 1.6 4
26 1.57794 1.35261 9 1.3 1.6 4
27 1.5195 1.29378 14 1. 1.3 3
28 1.46523 1.23912 14 1. 1.3 3
29 1.4147 1.18821 13 1. 1.3 3
30 1.36755 1.14067 12 1. 1.3 3
31 1.32343 1.09618 11 1. 1.3 3
32 1.28208 1.05446 9 1. 1.3 3
33 1.24322 1.01524 7 1. 1.3 3
34 1.20666 0.978322 17 0.7 1. 2
35 1.17218 0.943499 16 0.7 1. 2
36 1.13962 0.9106 16 0.7 1. 2
37 1.10882 0.879472 15 0.7 1. 2
38 1.07964 0.849977 14 0.7 1. 2
39 1.05196 0.82199 13 0.7 1. 2
40 1.02566 0.795401 12 0.7 1. 2

Printed by Wolfram Mathematica Student Edition


SRKvsGI_PosiciónFalsa.nb 5

V vs P
V (m3 /kmol)
50



10 ●

Gas Ideal






■ ■ SRK
5 ●






■ ●
■ ●
■●
■●
■●
■ ●●
■ ●
■ ●
■ ●
■ ●●
■ ●
■ ●
■ ●●
■ ●
■ ●
■ ●●
■ ●
■ ●●

■ ●●●
■ ●●
1
■ ●







P (atm)
1 5 10

Printed by Wolfram Mathematica Student Edition


6 SRKvsGI_PosiciónFalsa.nb

Interv = Transpose @ {Patm, itera};


transposición
Raiz = Transpose @ {Patm, iterb};
transposición
ListLogLogPlot[{Interv, Raiz}, PlotLegends → {"Intervalo", "Raiz"},
representación log log de lista leyendas de representación
PlotLabel → Style[ "Iteraciones", FontSize → 18, FontColor → Black],
etiqueta de r⋯ estilo tamaño de tipo de⋯ color de tipo ⋯ negro
Background → LightBlue, AxesLabel → {"P (atm)", "iter"}, GridLines → Automatic,
fondo de imagen azul claro etiqueta de ejes parrilla de lín⋯ automático
PlotMarkers → {Automatic, 5}, Joined → True, AspectRatio → Full, PlotTheme → "LargeLabels"]
marcadores de re⋯ automático unido verd⋯ cociente de asp⋯ com⋯ tema de representación

Iteraciones
iter

100

50


● Intervalo



■■

■ Raiz
● ■■ ■
■ ■ ■
● ■ ■ ■ ■
● ■ ■ ■

10 ■





■ ■
■ ■
■ ■ ●● ■

■ ■ ● ■ ■

■ ■ ■ ■ ●●●

5 ■ ■ ■ ■ ●●●

●●●●

●●●●●●●

●●●●●●●

P (atm)
1 5 10

Printed by Wolfram Mathematica Student Edition

You might also like