Re: Solve problems
- To: mathgroup at smc.vnet.net
- Subject: [mg64248] Re: [mg64233] Solve problems
- From: Pratik Desai <pdesai1 at umbc.edu>
- Date: Wed, 8 Feb 2006 03:53:35 -0500 (EST)
- References: <200602070836.DAA29884@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Joerg Schaber wrote: >Hi, > >I have a system of polynomial equations where Solve cannot find the >right solutions. Any hints? By the way, actually I just want to find the >steady states of a differential equation system. If there is another >clever way, please let me know. >There are also coonstraints that all variable must be >=0, but including >those constraints and using Reduce also does not yield a valid solution. >There exisits a valid solution. I checked this solving the differential >equation system with NDSolve and let it run into the steady state. But >this is not very elegant and principally the steady states can be >calculated directly. > >eqns1={0 == 0. c1 + 0.001 c3 - 721.9 c1 c4 + 0.001 c2 c8, >0 == 0.001 c3 - 721.9 c1 c4 + 0.001 c5 - 346.09 c4 c6, >0 == 0.001 c5 - 346.09 c4 c6 - 989.77 c6 c7 + 0.001 c8, >0 == -989.77 c6 c7 + 0.001 c8, c1 + c2 + c3 == 5.7, >c3 + c4 + c5 == 19.3, >c5 + c6 + c8 == 4., >c7 + c8 == 1.}; > >sol = Solve[eqns1, {c1, c2, c3, c4, c5, c6, c7, c8}, VerifySolutions -> >True]; > >\!\({{c2 -> 0.`, c3 -> > 5.69999921807596`, c5 -> 3.502051416006559`, c1 -> \ >7.819240400365867`*^-7, c7 -> 0.5020524180816763`, c8 -> >0.4979475819183236`, \ >c6 -> 1.0020751177226038`*^-6, c4 -> 10.097949365917481`}, {c2 -> 0.`, >c3 -> \ >5.699999640315395`, > c5 -> \(-8.352092810365317`\), c1 -> 3.5968460447115093`*^-7, > c7 -> \(-11.352093909700997`\), c8 -> 12.352093909700997`, c6 -> \ >\(-1.0993356796497231`*^-6\), c4 -> 21.95209317004992`}, {c2 -> 0.`, > c3 -> 8.687577015258206`, c5 -> 10.612427012862872`, > c1 -> \(-2.987577015258207`\), c7 -> \(-1.3272190975834564`*^-7\), > c8 -> 1.0000001327219097`, c6 -> \(-7.612427145584781`\), > c4 -> \(-4.028121078693263`*^-6\)}, {c2 -> 0.`, c3 -> \ >19.300001049304143`, > c5 -> 9.165049916617935`*^-7, c1 -> \(-13.600001049304144`\), >c7 -> \ >\(-3.0000004306092727`\), c8 -> 4.000000430609273`, > c6 -> \(-1.3471142644128086`*^-6\), c4 -> \ >\(-1.965809135229149`*^-6\)}, {c2 -> 0.`, > c3 -> 24.324407481766347`, c5 -> \(-5.024405672582244`\), c1 -> \ >\(-18.624407481766347`\), c7 -> 1.259078407457304`*^-7, c8 -> \ >0.9999998740921593`, c6 -> 8.024405798490085`, > c4 -> \(-1.8091841042296682`*^-6\)}}\) > > >Einsetzen ergibt: > >eqns1 /. sol > >{{True, False, False, False, True, True, True, True}, {True, True, > False, False, True, True, True, True}, {True, False, False, True, > True, True, True, True}, {True, False, True, True, True, True, > True, True}, {False, False, False, True, True, True, True, True}} > > >best wishes, > >joerg > > > I think that this is a precision issue, have look at eqns1[[3]]/.sol[[3]]//Trace the last lines will have something like HoldForm[0 == 3.469446951953614*^-18], HoldForm[False]} Workaround is to increase the precision or use exact arithmatic (see Rationalize) In[77]:= Clear[eqns1, sol1] eqns1=SetPrecision[{0 == 0. c1 + 0.001 c3 - 721.9 c1 c4 + 0.001 c2 c8, 0 == 0.001 c3 - 721.9 c1 c4 + 0.001 c5 - 346.09 c4 c6, 0 == 0.001 c5 - 346.09 c4 c6 - 989.77 c6 c7 + 0.001 c8, 0 == -989.77 c6 c7 + 0.001 c8, c1 + c2 + c3 == 5.7, c3 + c4 + c5 == 19.3, c5 + c6 + c8 == 4., c7 + c8 == 1.},40]; sol1=Solve[eqns1//Simplify, {c1, c2, c3, c4, c5, c6, c7, c8},VerifySolutions\[Rule]True]; eqns1/.sol2 Out[80]= {{True,True,True,True,True,True,True,True},{True,True,True,True,True,True, True,True},{ True,True,True,True,True,True,True,True},{True,True,True,True,True,True, True,True},{True,True,True,True,True,True,True,True}}
- References:
- Solve problems
- From: Joerg Schaber <schaber@molgen.mpg.de>
- Solve problems