MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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



  • Prev by Date: FindFit[] Blues
  • Next by Date: Re: Trouble using Eliminate and Reduce with big examples
  • Previous by thread: Re: Trouble using Eliminate and Reduce with big examples
  • Next by thread: Re: Trouble using Eliminate and Reduce with big examples