MATLAB Answers

Solving System of Equations - Complex

6 views (last 30 days)
Articat
Articat on 8 Jul 2020
Commented: KSSV on 8 Jul 2020
I want to solve a system of equatoins. It is resulting an empty structure. Any help would be greatly appreciated!
I want to solve for: xco2, xco, xo2, xo
With these 4 unkowns I have the following 4 equations:
kp1 = (xo2^(1/2) * p^(1/2)*xco) / xco2
kp2 = (xo^2*p) / xo2
1 = xco2 + xco + xo2 + xo
1/2 = (xco2 + xco) / (xco + xo + 2*xo2)
Here is the following code:
% these are just some arbitrary values I chose for kp1, kp2, and p to see if solutoins could be solved for
kp1 = 2;
kp2 = 3;
p = 1;
syms xco2 xco xo2 xo
equation1 = (1/kp1)*((xo2^(1/2)* p^(1/2)*xco) / xco2);
equation2 = (1/kp2)*((xo^2*p) / xo2);
equation3 = xco2 + xco + xo2 + xo - 1;
equation4 = 2*((xco2 + xco) / (xco + xo + 2*xo2));
sol = solve(equation1,equation2,equation3,equation4, 'xco2 > 0', 'xco > 0'...
,'xo2 > 0', 'xo > 0');
When I type in "sol.xco" or any of the other symbols I am trying to solve for I get an empty structure which I can not explain. Any help would be greatly appreciated!

  0 Comments

Sign in to comment.

Accepted Answer

KSSV
KSSV on 8 Jul 2020
Try this:
kp1 = 2;
kp2 = 3;
p = 1;
syms xco2 xco xo2 xo
eqns = [(xo2^(1/2)* p^(1/2)*xco)/xco2 == kp1,
(xo^2*p)/xo2 == kp2,
xco2 + xco + xo2 + xo == 1,
(xco2 + xco)/(xco + xo + 2*xo2) == 1/2] ;
sol = solve(eqns,[xco2, xco, xo2, xo])

  4 Comments

Show 1 older comment
KSSV
KSSV on 8 Jul 2020
Try
double(sol{1}.xco2)
double(sol{1}.xco)
double(sol{1}.xo2)
double(sol{1}.xo)
Articat
Articat on 8 Jul 2020
I get a "Cell contents reference from a non-cell array object." error.
Perhaps I could put the equations into cell format?? I am not super familiar with cell formats but could give it a try.
KSSV
KSSV on 8 Jul 2020
Okay.....actually I have octave and answering through that..I have no access to MATLAB. Might be sol is a structure.
Try sol.xo..etc.

Sign in to comment.

More Answers (0)