I am trying to find parameters to adjust an EoS to saturation pressures at different temperatures.

My experimental data is like this

```
psatx={{Temperature1,Pressure1,Uncertainty1},{T2,p2,u2},....}
```

Then I defined a function to calculate saturation pressures

```
psat(T_, p0_, Tc_, a0_, b_, c1_, E11r_, v11_) := (Do(
p(0) = p0;
f11 = Exp(-E11r/T) - 1;
m11 = v11*f11;
a = a0*(1 + c1*(1 - Sqrt(T/Tc)))^2;
(Alpha) = p(i)*a/(R*T)^2; (* Dimensionless groups*)
(Beta) = p(i)*b/R/T;
(Gamma) = p(i)*m11/R/T;
d0 = -(Gamma)*(Beta)*((Beta) + (Alpha));(*Coefficients of the equation*)
d1 = (Alpha)*((Gamma) - (Beta)) - (Beta)*(Gamma)*(1 + (Beta));
d2 = (Alpha) - (Beta)*(1 + (Beta));
d3 = (Gamma) - 1;
d4 = 1;
polin = d4*z^4 + d3*z^3 + d2*z^2 + d1*z + d0;
Raices = NSolve(polin == 0, z, PositiveReals); (* Solving the 4th grade polinomy for compressibility factor*)
zv = Max(z /. Raices);
zl = Min(z /. Raices);
vv = zv*R*T/p(i);
vl = zl*R*T/p(i);
ln(CapitalPhi)v =
zv - 1 - Log(zv) + Log(vv/(vv - b)) + a/b/R/T*Log(vv/(vv + b)) +
Log(vv/(vv + m11)); (*Fugacity coefficients*)
ln(CapitalPhi)l =
zl - 1 - Log(zl) + Log(vl/(vl - b)) + a/b/R/T*Log(vl/(vl + b)) +
Log(vl/(vl + m11));
(CapitalPhi)v = Exp(ln(CapitalPhi)v);
(CapitalPhi)l = Exp(ln(CapitalPhi)l);
p(i + 1) = p(i)*(CapitalPhi)l/(CapitalPhi)v,
{i, 0, 9});
p(9))
```

Where **T** is the temperature **p0** is the initial pressure assumption, **Tc** is the critical temperature and **a0, b, c1, E11r, v11** are the parameters of the equation.

Up to this point, we have a saturation pressure calculator, given the parameters, and it works fine, now what I can't seem to solve is fitting it to my experimental data, minimizing an objective function, which is:

I said it like this:

```
F(a0_, b_, c1_, E11r_, v11_) :=
Sum((psat(psatx((k, 1)), psatx((k, 2)), Tcaceto, a0, b, c1, E11r,
v11) - psatx((k, 2)))^2/psatx((k, 3))^2, {k, 200});
(* I declared the Tc as "Tcaceto", a constant, and I use as initial guess for each psat calculation the experimental pressure*)
```

And then I just used **NMinimize**, In this way.

```
NMinimize(F(a0, b, c1, E11r, v11), {a0, b, c1, E11r, v11})
```

I run it, and it never ends. I don't know what might not be working, I have tried to configure the method, the starting points, but the result is the same. I would really appreciate someone to help me on this matter. Thank you.