Re: Trouble with a system of equations
- To: mathgroup at smc.vnet.net
- Subject: [mg77509] Re: Trouble with a system of equations
- From: dh <dh at metrohm.ch>
- Date: Mon, 11 Jun 2007 04:22:17 -0400 (EDT)
- References: <f4gn49$htt$1@smc.vnet.net>
HI Yaroslav, your equation in terms of a,b,c,d is linear and easy to solve. However, by transformations like a->a -> t0/(1 + t0) you are creating rational equations with poles. Now, as far as I can see, there is nothing that prevents you to use a,b,c... as variables. Why do you want to make your problem harder than necessary? hope this helps, Daniel Yaroslav Bulatov wrote: > Hi, I'm trying to solve a certain kind of system of equations, and > while they are solvable by hand, Mathematica 6.0 has problems solving > it > > Here's an example > > eqns = {a + b + c + d == 4*m0, b + d == 4*m1, c + d == 4*m2, d == > 4*m3} /. {a -> t0/(1 + t0), b -> (t0*t1)/(1 + t0*t1), c -> (t0*t2)/(1 > + t0*t2), d -> (t0*t1*t2*t3)/(1 + t0*t1*t2*t3)} > Solve[eqns, {t0, t1, t2, t3}] > > The solution can be found by hand and verified below > > sol = {t0 -> a/(1/4 - a), t1 -> (b/(1/4 - b))*((1/4 - a)/a), t2 -> (c/ > (1/4 - c))*((1/4 - a)/a), t3 -> (m3/(1/4 - m3))*(a/(1/4 - a))*((1/4 - > b)/b)*((1/4 - c)/c)} /. {a -> m0 - m1 - m2 + m3, b -> m1 - m3, c -> m2 > - m3} > eqns /. sol // Simplify > > This is an example of estimating equations for a saturated logistic > regression model with 2 independent variables. I'd like to see if > formulas also exist for more variables, but they are too cumbersome to > solve by hand. Are there any Mathematica tricks I can use to answer > this question? > > Here's the procedure that generates the system of equations for d > variables (d=2 produces the system above) > > logeq[d_] := Module[{bounds, monomials, params, > partition,derivs,sums}, > xs = (Subscript[x, #1] & ) /@ Table[i, {i, 1, d}]; > monomials = Subsets[xs]; monomials = (Prepend[#1, 1] & ) /@ > monomials; > monomials = (Times @@ #1 & ) /@ monomials; > params = (Subscript[th, #1] & ) /@ Table[i, {i, 0, 2^d - 1}]; > monomials = (Times @@ #1 & ) /@ Thread[{params, monomials}]; > partition = Log[1 + Exp[Plus @@ monomials]]; > derivs = (D[partition, Subscript[th, #1]] & ) /@ > Table[i, {i, 0, 2^d - 1}]; bounds = ({#1, 0, 1} & ) /@ xs; > sums = (Table[#1, Evaluate[Sequence @@ bounds]] & ) /@ derivs; > sums = (Plus @@ #1 & ) /@ (Flatten[#1] & ) /@ sums; > Thread[sums == Table[Subscript[m, i], {i, 0, 2^d - 1}]]] > >