Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.mathematica > #2105
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!nx02.iad01.newshosting.com!newshosting.com!newspump.sol.net!posts.news.twtelecom.net!nnrp3.twtelecom.net!not-for-mail |
|---|---|
| From | Maxim <m.r@inbox.ru> |
| Newsgroups | comp.soft-sys.math.mathematica |
| Subject | Re: anything faster than Solve[] for solving sets of polynomial equations symbolically? |
| Date | Wed, 4 May 2011 23:48:12 +0000 (UTC) |
| Organization | Steven M. Christensen and Associates, Inc and MathTensor, Inc. |
| Sender | steve@smc.vnet.net |
| Approved | Steven M. Christensen <steve@smc.vnet.net>, Moderator |
| Message-ID | <ipsojs$8c2$1@smc.vnet.net> (permalink) |
| Lines | 43 |
| NNTP-Posting-Date | 04 May 2011 22:49:02 GMT |
| NNTP-Posting-Host | dd96ef00.news.twtelecom.net |
| X-Trace | DXC=Nk^[:^i[67VF`5M@]Oe7e\C_A=>8kQj6]Y;@_o827nGScmZ:nPZKL0YEFiONJ7[GoVj<1XJHLc<_S |
| X-Complaints-To | abuse@twtelecom.net |
| Xref | x330-a1.tempe.blueboxinc.net comp.soft-sys.math.mathematica:2105 |
Show key headers only | View raw
On May 3, 4:47 am, dantimatter <goo...@dantimatter.com> wrote:
> Hi Everyone,
>
> I've got a set of equations and I'd really like to determine the number of real solutions in terms of the unspecified parameters. The equations are:
>
> eqs = {-k5 x1 x3+k6 x4==0, k1 x1-k4 x2-2 k2 x2^2+2 k3 x3+k7 x4==0, k2 x2^2-k3 x3-k5 x1 x3+k6 x4==0,x1+x4-Xtot==0};
>
> where x1, x2, x3, and x4 are the variables I'd like to solve for and k1, k2, k3, k4, k5, k6, k7, and Xtot are real numbers that are greater than or equal to zero. I've tried doing
>
> Solve[eqs, {x1, x2, x3, x4}, Reals]
>
> but after days and days I still have no solution. Perhaps there's a faster or better way to do this?
>
> Thanks,
> Dan
I'll deal with the case when the parameters are strictly greater than
0. This subsystem gives only one solution:
sols = Solve[eqs[[{1, 3, 4}]], {x1, x3, x4}]
So the number of solutions is determined by the remaining equation:
poly = Subtract @@ eqs[[2]] /. First@ sols // Together // Numerator
The number of real roots changes when crossing the discriminant, for a
cubic equation there simply will be three roots when the discriminant
is positive and one root when it's negative. This is the domain where
the system has three real solutions:
assums = And @@ Thread[{k1, k2, k3, k4, k5, k6, k7, Xtot} > 0];
Reduce[Discriminant[poly, x2] > 0 && assums] // FullSimplify[#,
assums]&
Out[15]= 9 k1 < k7 && (
k3 k4^2 k6 (-27 k1^2 + 18 k1 k7 + k7^2 -
Sqrt[(-9 k1 + k7)^3 (-k1 + k7)]))/(8 k1 k5 k7^3 Xtot^2) < k2 < (
k3 k4^2 k6 (-27 k1^2 + 18 k1 k7 + k7^2 +
Sqrt[(-9 k1 + k7)^3 (-k1 + k7)]))/(8 k1 k5 k7^3 Xtot^2)
Maxim Rytin
m.r@inbox.ru
Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread
Re: anything faster than Solve[] for solving sets of polynomial equations symbolically? Maxim <m.r@inbox.ru> - 2011-05-04 23:48 +0000
csiph-web