NMinimize a complicated built function
- To: mathgroup at smc.vnet.net
- Subject: [mg126945] NMinimize a complicated built function
- From: Meriens <meriens at gmail.com>
- Date: Tue, 19 Jun 2012 03:15:34 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Dear all,
I try to find a Minimum of a complex function that I've built previously.
My function is a list of many operations.
I tried with FindMinimum, or NMinimize, but I've got no result.
any suggestions?
I attach my complicated function.
Thank you...
(*--------------Begin Experimental Value & Constant --------------- *)
Vliquidexp = {32.144, 33.174, 34.174};
Vvaporexp = {1200.1, 885.25, 664.20};
p = 0.498;
t = {150, 115, 120};
tc = 150.86;
pc = 4.898;
\[Omega] = -0.00219;
tr = Table[t[[i]]/tc, {i, Length[t]}];
r = 8.314472; (*Volume cm^3; e molar basis*)
\[Psi] = 0.45724;
\[Psi] = 0.45724; (*Subscript[\[CapitalOmega], a] di Peng Robinson*)
\[CapitalOmega] = 0.07780; (*Subscript[\[CapitalOmega], b] di Peng \
Robinson*)
\[Epsilon] = 1 - Sqrt[2];
\[Sigma] = 1 + Sqrt[2];
b = \[CapitalOmega]*r*tc/pc;
\[Beta] = Table[b*p/(r*t[[i]]), {i, Length[t]}];
(*--------------End Experimental Value & Constant --------------- *)
(*------------------Begin My function------------------------------*)
PR1[k1_] := Module[{},
alfa = Table[(1. + (k1 + 1.54226*\[Omega] -
0.26993*\[Omega]^2 ) (1 - Sqrt[tr[[i]]]))^2, {i, Length[t]}];
a = Table[\[Psi]*alfa[[i]]*r^2*(tc^2)/pc, {i, Length[t]}];
q = Table[a[[i]]/(b*r*t[[i]]), {i, Length[t]}];
Zl = Table[
NSolve[zl - \[Beta][[
i]] - (zl + \[Epsilon]*\[Beta][[i]])*(zl + \[Sigma]*\[Beta][[
i]])*((1 + \[Beta][[i]] - zl)/(q[[i]]*\[Beta][[i]])), zl,
Reals], {i, Length[t]}];
If[Dimensions[Zl] == {3, 3, 1},
Zliquid = Table[zl /. Zl[[i, 1]], {i, Length[t]}];
Zvapor = Table[zl /. Zl[[i, 3]], {i, Length[t]}],
Zliquid = Table[zl /. Zl[[i, 1]], {i, Length[t]}];
Zvapor = Zliquid];
il = Table[
1/(\[Sigma] - \[Epsilon])*
Log[(Zliquid[[i]] + \[Sigma]*\[Beta][[i]])/(
Zliquid[[i]] + \[Epsilon]*\[Beta][[i]])], {i, Length[t]}];
iv = Table[
1/(\[Sigma] - \[Epsilon])*
Log[(Zvapor[[i]] + \[Sigma]*\[Beta][[i]])/(
Zvapor[[i]] + \[Epsilon]*\[Beta][[i]])], {i, Length[t]}];
fliquid =
Table[Zliquid[[i]] - 1 - Log[Zliquid[[i]] - \[Beta][[i]]] -
q[[i]]*il[[i]], {i, Length[t]}];
fvapor =
Table[Zvapor[[i]] - 1. - Log[Zvapor[[i]] - \[Beta][[i]]] -
q[[i]]*iv[[i]], {i, Length[t]}];
fugliquid = Table[Exp[fliquid[[i]]]*p, {i, Length[t]}];
fugvapor = Table[Exp[fvapor[[i]]]*p, {i, Length[t]}];
Vliquid = (Zliquid*r*t)/p;
Vvapor = (Zvapor*r*t)/p;
deltaliquid = (Vliquid - Vliquidexp)^2;
deltavapor = (Vvapor - Vvaporexp)^2;
delta = deltaliquid + deltavapor;
Return[Sum[delta[[i]], {i, Length[t]}]];
]
(*---------------------End My function--------------------------*)