Numeric solution for a set of equations
1 view (last 30 days)
Show older comments
Leandro Cavalheiro
on 25 Sep 2016
Commented: Star Strider
on 25 Sep 2016
What's up, guys? I'm new to Matlab, so I apologize for my lack of knowledge. I've been trying to solve a set of 4 equations from a thermodynamics problem but I can't seem to get Matlab to work properly.
The equations are :
0.70*P = 0.35 * Psat1;
0.30*P = 0.65 * Psat2;
log (Psat1) = 13.7819 - 2726.81/(t + 217.572);
log (Psat2) = 13.9726 -3259.93/(t + 212.300);
I want to solve them for P and t (eq. 1 and 2 could eventually go into 3 and 4 thus making a 2 variable system but I chose to write the 4 eqs. anyway). I used the vpasolve function, with eq1 - eq4 being those above, but I got this:
>> syms P t Psat1 Psat2
>> vpasolve([eq1, eq2, eq3, eq4], [P t Psat1 Psat2])
ans =
P: [1x1 sym]
t: [1x1 sym]
Psat1: [1x1 sym]
Psat2: [1x1 sym]
What am I doing wrong? Is there a better function to solve this kind of problem?
0 Comments
Accepted Answer
Star Strider
on 25 Sep 2016
Edited: Star Strider
on 25 Sep 2016
Try this:
syms P t Psat1 Psat2
eq1 = 0.70*P == 0.35 * Psat1;
eq2 = 0.30*P == 0.65 * Psat2;
eq3 = log(Psat1) == 13.7819 - 2726.81/(t + 217.572);
eq4 = log(Psat2) == 13.9726 -3259.93/(t + 212.300);
[P, t, Psat1, Psat2] = vpasolve([eq1, eq2, eq3, eq4], [P t Psat1 Psat2])
P =
207.45534890683278690964114324486
t =
134.10035388099313659241316466853
Psat1 =
414.91069781366557381928228648973
Psat2 =
95.748622572384363189065143036091
EDIT — Added output.
2 Comments
Walter Roberson
on 25 Sep 2016
Caution: there is a second solution with negative t and the other values on the order of 10^53 . vpasolve() might find either of them unless you add a restriction to the range. For example,
syms P t Psat1 Psat2 positive
Star Strider
on 25 Sep 2016
@Walter — Excellent point. When the solutions I got seemed reasonable, I didn’t explore the complete solution space.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!