Re: Trouble using Eliminate and Reduce with big examples
- To: mathgroup at smc.vnet.net
- Subject: [mg118122] Re: Trouble using Eliminate and Reduce with big examples
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Wed, 13 Apr 2011 05:53:29 -0400 (EDT)
> Daniel, > > thanks for your advice, the example above solves very fast with the > shown method. Now i have a other equation system which seems to be a bit > more difficult for mathematica to solve. I tried with the method you > showed above it looks like this (this time the variable names are a bit > longer): > > In[18]:= eqns = {satelliteLink=A7mass == > 1.*transmitter=A7baseMass + > 1.*satelliteLink=A7power*transmitter=A7efficiencyTransmitter* > transmitter=A7weightFactor + > 1.*zzhornAnt=A7density*((-0.048999999999999995* > global=A7c^2*((-0.35*global=A7c)/satelliteLink=A7carrierFrequency + > 1.4254109407099804*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius- > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^0.5)*(-0.25 + \ > (0.5079490874739279*dataBudget=A7requiredDownLinkRate^2*global=A7boltzmann^2* > > global=A7c^2*satelliteLink=A7EbN0^2*satelliteLink=A7linkMargin^2* > satelliteLink=A7lossLine^2* > satelliteLink=A7noiseTemperature^2*(global=A7earthRadius- > 1.*satelliteLink=A7orbitSMA)^4)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna^2* > satelliteLink=A7groundDiameter^4* > satelliteLink=A7power^2*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^1.* > transmitter=A7efficiencyTransmitter^2))^0.5)/ > satelliteLink=A7carrierFrequency^2 + > 0.2*((-0.35*global=A7c)/satelliteLink=A7carrierFrequency + > 1.4254109407099804*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^0.5)*(-0.25 + \ > (0.5079490874739279*dataBudget=A7requiredDownLinkRate^2*global=A7boltzmann^2* > global=A7c^2*satelliteLink=A7EbN0^2*satelliteLink=A7linkMargin^2* > satelliteLink=A7lossLine^2* > satelliteLink=A7noiseTemperature^2*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^4)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna^2* > satelliteLink=A7groundDiameter^4* > satelliteLink=A7power^2*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^1.* > transmitter=A7efficiencyTransmitter^2))^0.5*((0.35*global=A7c)/ > satelliteLink=A7carrierFrequency + > zzhornAnt=A7thickness)*((0.7*global=A7c)/ > satelliteLink=A7carrierFrequency + zzhornAnt=A7thickness) + > > 0.3333333333333333*((-0.35*global=A7c)/satelliteLink=A7carrierFrequency + > 1.4254109407099804*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^0.5)*(-0.25 + \ > (0.5079490874739279*dataBudget=A7requiredDownLinkRate^2*global=A7boltzmann^2* > global=A7c^2*satelliteLink=A7EbN0^2*satelliteLink=A7linkMargin^2* > satelliteLink=A7lossLine^2* > satelliteLink=A7noiseTemperature^2*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^4)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna^2* > satelliteLink=A7groundDiameter^4* > satelliteLink=A7power^2*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^1.* > transmitter=A7efficiencyTransmitter^2))^0.5*((-0.\ > 24499999999999997*global=A7c^2)/satelliteLink=A7carrierFrequency^2 - > > 0.7808110392505321*((global=A7c^2*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^1.)/ > satelliteLink=A7carrierFrequency^2)^0.5 - > 2.4884321592469227*((dataBudget=A7requiredDownLinkRate* > global=A7boltzmann*global=A7c^2*satelliteLink=A7EbN0* > satelliteLink=A7linkMargin*satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadius - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenna* > satelliteLink=A7groundDiameter^2*satelliteLink=A7power* > transmitter=A7efficiencyTransmitter))^1. + ((0.35*global=A7c)/ > satelliteLink=A7carrierFrequency + > zzhornAnt=A7thickness)*((0.7*global=A7c)/ > satelliteLink=A7carrierFrequency + > zzhornAnt=A7thickness) + \ > (1.4254109407099804*((dataBudget=A7requiredDownLinkRate*global=A7boltzmann* > global=A7c^2*satelliteLink=A7EbN0*satelliteLink=A7linkMargin* > satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadiu s - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenn= a* > satelliteLink=A7groundDiameter^2*satelliteLink=A7powe= r* > transmitter=A7efficiencyTransmitter))^0.5 + > zzhornAnt=A7thickness)*(1.7457647392600089*((\ > dataBudget=A7requiredDownLinkRate*global=A7boltzmann*global=A7c^2* > satelliteLink=A7EbN0*satelliteLink=A7linkMargin* > satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadiu= s - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenn= a* > satelliteLink=A7groundDiameter^2*satelliteLink=A7powe= r* > transmitter=A7efficiencyTransmitter))^0.5 + > zzhornAnt=A7thickness) + (((0.35*global=A7c)/ > satelliteLink=A7carrierFrequency + > zzhornAnt=A7thickness)*((0.7*global=A7c)/ > satelliteLink=A7carrierFrequency + > zzhornAnt=A7thickness)*(1.4254109407099804*((\ > dataBudget=A7requiredDownLinkRate*global=A7boltzmann*global=A7c^2* > satelliteLink=A7EbN0*satelliteLink=A7linkMargin* > satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadiu= s - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenn= a* > satelliteLink=A7groundDiameter^2*satelliteLink=A7powe= r* > transmitter=A7efficiencyTransmitter))^0.5 + > zzhornAnt=A7thickness)*(1.7457647392600089*((\ > dataBudget=A7requiredDownLinkRate*global=A7boltzmann*global=A7c^2* > satelliteLink=A7EbN0*satelliteLink=A7linkMargin* > satelliteLink=A7lossLine* > satelliteLink=A7noiseTemperature*(global=A7earthRadiu= s - > 1.*satelliteLink=A7orbitSMA)^2)/(\ > satelliteLink=A7carrierFrequency^2*satelliteLink=A7efficiencyGroundAntenn= a* > satelliteLink=A7groundDiameter^2*satelliteLink=A7powe= r* > transmitter=A7efficiencyTransmitter))^0.5 + > zzhornAnt=A7thickness))^0.5)), Pi0 == satelliteLink=A7l= ossLine, > Pi1 == global=A7c*global=A7earthRadius^-1*satelliteLink=A7carrierFre= quency^-1, > Pi2 == transmitter=A7efficiencyTransmitter, > Pi3 == satelliteLink=A7efficiencyGroundAntenna, > Pi4 == zzhornAnt=A7thickness*global=A7earthRadius^-1, > Pi5 == > dataBudget=A7requiredDownLinkRate*satelliteLink=A7carrierFrequency^-1* > satelliteLink=A7EbN0^1, Pi6 == satelliteLink=A7linkMargin, > Pi7 == satelliteLink=A7noiseTemperature*satelliteLink=A7power^-1* > global=A7boltzmann^1*satelliteLink=A7carrierFrequency^1, > Pi8 == satelliteLink=A7orbitSMA*global=A7earthRadius^-1, > Pi9 == satelliteLink=A7groundDiameter*global=A7earthRadius^-1, > Pi10 == satelliteLink=A7mass*satelliteLink=A7power^-1*global=A7earth= Radius^2* > satelliteLink=A7carrierFrequency^3, > Pi11 == > transmitter=A7baseMass*satelliteLink=A7power^-1*global=A7earthRadius^2* > satelliteLink=A7carrierFrequency^3, > Pi12 == transmitter=A7weightFactor*global=A7earthRadius^2* > satelliteLink=A7carrierFrequency^3, > Pi13 == zzhornAnt=A7density*satelliteLink=A7power^-1*global=A7earthR= adius^5* > satelliteLink=A7carrierFrequency^3} ; > > In[19]:= exprs = Apply[Subtract, eqns, 1]; > > In[15]:= elimvars = {satelliteLink=A7carrierFrequency, > satelliteLink=A7linkMargin, > zzhornAnt=A7density, satelliteLink=A7EbN0, satelliteLink=A7lossLine, > transmitter=A7weightFactor, global=A7c, transmitter=A7efficiencyTransm= itter, > transmitter=A7baseMass, zzhornAnt=A7thickness, satelliteLink=A7mass, > global=A7earthRadius, satelliteLink=A7power, > satelliteLink=A7efficiencyGroundAntenna, satelliteLink=A7groundDiamete= r, > dataBudget=A7requiredDownLinkRate, satelliteLink=A7orbitSMA, > satelliteLink=A7noiseTemperature, global=A7boltzmann}; > keepvars = {Pi0, Pi1, Pi10, Pi11, Pi12, Pi13, Pi2, Pi3, Pi4, Pi5, Pi6, P= i7, > Pi8, Pi9}; > > In[17]:= InputForm[Timing[ > gb = GroebnerBasis[exprs, keepvars, elimvars, > MonomialOrder -> EliminationOrder, CoefficientDomain -> > InexactNumbers]]] > > Out[17]//InputForm= > {394.245, {}} No surprise there. You are trying to eliminate 19 variables from 15 equations. Almost always that will give the empty set. > I could advance a bit in this case by giving the Pi-equations in a > slight different form: > > satelliteLink=A7lossLine := Pi0 > global=A7c := > Pi1*(global=A7earthRadius)^1.0*(satelliteLink=A7carrierFrequency)^1.0 > transmitter=A7efficiencyTransmitter := Pi2 > satelliteLink=A7efficiencyGroundAntenna := Pi3 > zzhornAnt=A7thickness := Pi4*(global=A7earthRadius)^1.0 > dataBudget=A7requiredDownLinkRate := > Pi5*(satelliteLink=A7carrierFrequency)^1.0*(satelliteLink=A7EbN0)^-1.0 > satelliteLink=A7linkMargin := Pi6 > satelliteLink=A7noiseTemperature := > Pi7*(satelliteLink=A7power)^1.0*(global=A7boltzmann)^-1.0*(\ > satelliteLink=A7carrierFrequency)^-1.0 > satelliteLink=A7orbitSMA := Pi8*(global=A7earthRadius)^1.0 > satelliteLink=A7groundDiameter := Pi9*(global=A7earthRadius)^1.0 > satelliteLink=A7mass := > Pi10*(satelliteLink=A7power)^1.0*(global=A7earthRadius)^-2.0*(\ > satelliteLink=A7carrierFrequency)^-3.0 > transmitter=A7baseMass := > Pi11*(satelliteLink=A7power)^1.0*(global=A7earthRadius)^-2.0*(\ > satelliteLink=A7carrierFrequency)^-3.0 > transmitter=A7weightFactor := > Pi12*(global=A7earthRadius)^-2.0*(satelliteLink=A7carrierFrequency)^-3.0 > zzhornAnt=A7density := > Pi13*(satelliteLink=A7power)^1.0*(global=A7earthRadius)^-5.0*(\ > satelliteLink=A7carrierFrequency)^-3.0 > > By this i could get the system down to a seemingly simple equation: > > > global=A7earthRadius^2 == (0.56 Pi1 Pi4 global=A7earthRadius^2 + 0.866667 > Pi4^2 global=A7earthRadius^2 + > 1.05706 Pi4 global=A7earthRadius ((Pi0 Pi1^2 Pi5 Pi6 Pi7 (-1 + Pi8)^2 > global=A7earthRadius^2)/( > Pi2 Pi3 Pi9^2))^0.5 - > 0.26027 ((Pi0 Pi1^4 Pi5 Pi6 Pi7 (-1 + Pi8)^2 global=A7earthRadius^4)/( > Pi2 Pi3 Pi9^2))^0.5 + > 0.333333 ((0.35 Pi1 + Pi4) (0.7 Pi1 + Pi4) global=A7earthRadius^2 (Pi4 > global=A7earthRadius + > 1.42541 ((Pi0 Pi1^2 Pi5 Pi6 Pi7 (-1 + Pi8)^2 > global=A7earthRadius^2)/( > Pi2 Pi3 Pi9^2))^0.5) (Pi4 global=A7earthRadius + > 1.74576 ((Pi0 Pi1^2 Pi5 Pi6 Pi7 (-1 + Pi8)^2 > global=A7earthRadius^2)/( > Pi2 Pi3 Pi9^2))^0.5))^0.5) > > I tried now to eliminate global=A7earthRadius with the eliminate function > but it didnt terminate within 4hours. Now again i assume the > case-by-case analysis of the roots is so time (and memory) consuming for > the system. Is there a way to avoid this by telling the system that all > variables are not zero and positiv? > Do you have another idea why eliminate doesnt solve this equation (in > reasonable time)? > > Thanks for any hints how i can get a stable way to solve my equations, > > Johannes I really cannot follow this. First, use rationals for your exponents. Second, try to avoid SetDelayed e.g. satelliteLink=A7lossLine := Pi0. I cannot tell whether you mean for this to be Equal or whether Pi0 has become a surrogate for satelliteLink=A7lossLine. It looks like you want Equal, because that's what you had in the prior setup. Third is that I do not know how you went from the new formulation to the new equation. After all this, you still are left with one equation above. One cannot eliminate a variable from just a single equation. If you have but one equation and want to impose positivity on the parameters, you might be able to get a result with FindInstance. Daniel