Group Abstract Group Abstract

Message Boards Message Boards

Solve in 8.0 does not handle some systems of equations that Solve in 7.0 di

GROUPS:
(example post)

Solve in 8.0 does not handle some systems of equations that Solve in 7.0 did.

Example:
7.0:
In[1]:= Solve[{oBI == -((c*delta)/(p*beta)) + t0,  oBV == -(delta/beta) + (p*t0)/c}, oBI]

                 c oBV
Out[1]= {{oBI -> -----}}
                   p


8.0:
In[1]:= Solve[{oBI == -((c*delta)/(p*beta)) + t0,  oBV == -(delta/beta) + (p*t0)/c}, oBI]
Out[1]= {}


POSTED BY: Bruce Miller
Answer
2 years ago
The difference between 7.0 and 8.0 output in this case is that 7.0 Solve was treating equations that
involved only variables as assumptions. This functionality was not precisely defined or consistently
implemented and has been removed in 8.0. Instead there is a new option MaxExtraConditions which
provides a well-defined and extended version of the functionality.

In[1]:= Solve[{oBI==-((c*delta)/(p*beta))+t0,oBV==-(delta/beta)+(p*t0)/c}, oBI, MaxExtraConditions->1]
Out[1]= {{oBI ->

                             c oBV
>      ConditionalExpression[-----, c delta + beta c oBV - beta p t0 == 0]}}
                               p

The conditional is a restatement of the second equation in the Solve.

The old Solve code is still available in 8.0 by using Method->"Legacy". However, this way
you do not get the performance improvements of the new code.

Note that, for 8.0, the former syntax of a third argument as a list of symbols to eliminate is still available.
This is strongly discouraged for new code. There is no guarantee that it will be supported in the future.

In[2]:= Solve[{oBI==-((c*delta)/(p*beta))+t0,oBV==-(delta/beta)+(p*t0)/c},oBI, {t0}]
                 c oBV
Out[2]= {{oBI -> -----}}
                   p
POSTED BY: Bruce Miller
Answer
2 years ago