Re: simultaneous equations for chemical speciation
- To: mathgroup at smc.vnet.net
- Subject: [mg100209] Re: [mg100186] simultaneous equations for chemical speciation
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 28 May 2009 04:28:28 -0400 (EDT)
- Reply-to: hanlonr at cox.net
eqns = {
a == b + c + d,
e == f + g + c + 2 d,
h == c/(b*g),
i == d/(c*g),
h*i == d/(b*g^2),
j == m*g/f,
k == l*m,
n + m + b + c == g + l};
Length[eqns]
8
vars = Union[Cases[eqns, _Symbol, Infinity]]
{a,b,c,d,e,f,g,h,i,j,k,l,m,n}
Length[vars]
14
You have 8 eqns with 14 variables. Specify 6 variables to solve for.
(soln = Solve[eqns, Take[vars, {4, 9}]][[1]] // Sort) // Column
Union[Cases[Last /@ soln, _Symbol, Infinity]]
{a,b,c,j,l,m,n}
Length[%]
7
There are only 7 of the 8 remaining variables used so you can eliminate one variable
(soln2 = Solve[eqns, Take[vars, {5, 9}]][[1]] // Sort) // Column
Union[Cases[Last /@ soln2, _Symbol, Infinity]]
{b,c,d,j,l,m,n}
Length[%]
7
Bob Hanlon
---- Jem & Tracy <jemandtracy at bigpond.com> wrote:
=============
Hi, I am a postgrad student and completely new to mathematica, I am just
starting to realise the possibilities.
I am trying to do a chemical speciation calculation.
I have a set of simultaneous equations which represents the equilibria,
mass balance, and charge balance in the system.
I want to eliminate some of the variables, and then be able to solve for
the remaining ones.
My system of equations looks like this:
a=b+c+d
e=f+g+c+2d
h=c/(bg)
i=d/(cg)
hi=d/(bg^2)
j=mg/f
k=lm
n+m+b+c=g+l
Basically, I can solve for the variable I want, but I am having trouble
eliminating the ones I don't want (ie. I am getting an answer that is in
terms of the wrong variables)
Sofar my formula looks like:
Solve[{a == b + c + d, e == f + g + c + 2 d, h == c/(b*g),
i == d/(c*g), h*i == d/(b*g^2), j == m*g/f, k == l*m,
n + m + b + c == g + l}, {g}]
If I use a similar formula for the "Eliminate" function, I get error
mesages.
I have been in the help files for ages, and don't really understand how
to do this.
I would really appreciate some pointers!!
Thanks