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