MathGroup Archive 2013

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

Search the Archive

Re: Differencing two equations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg131481] Re: Differencing two equations
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Mon, 5 Aug 2013 06:04:05 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <20130210082414.C3A5F6937@smc.vnet.net> <kfae2p$m4o$1@smc.vnet.net>

On 11/02/2013 09:36, Murray Eisenberg wrote:> Yeah, Mathematica 
stubbornly refuses t
 >
 >> I'm brand new to Mathematica, so I apologize for the naive questions...
 >>
 >> I'm trying to figure out how to difference two equations.  Basically 
if I have:
 >> a==r
 >> b==s
 >>
 >> I'd like to get:
 >> a-b == r-s
 >>
 >> What I'm getting is more like (a==r) - (b==s).  I'm not sure how 
that's a useful result, but is there a function to do what I'm looking for?
 >>
 >> A quick search of the archives seem to bring up ways of doing this 
from using transformation rules to swap heads to unlocking the Equals 
operator and hacking its behavior.  I'd like to avoid doing that kind of 
rewiring for a simple operation, and I'd like to keep the syntax clean.
 >>
 >> The Core Language documentation makes a big point of how everything 
is basically a list with different heads.  In this case, what I'm trying 
to do would work if it were treated as a list ({a,b}-{r,s} returns 
{a-b,r-s}) but doesn't work under Equal.
 >>
 >> Thanks for any suggestions.
 >

I think it helps to manipulate algebraic expressions in a way that makes 
it easy to understand when you come back to a notebook sometime later! 
So my approach would be to define a function to subtract equations, so 
that it is pretty obvious what is going on!

In[16]:= subtract[a1_ == a2_, b1_ == b2_] := (a1 - b1) == (a2 - b2)

In[17]:= subtract[x + 3 y == 6, x - y == 2]

Out[17]= 4 y == 4

This also has the advantage that if you accidentally supply an argument 
that is not an equality, you will not get a misleading answer!

A slightly more general function might take a third argument that would 
act as a multiplier of the second equality:

In[20]:= combine[a1_ == a2_, b1_ == b2_,
   k_] := (a1 + k b1) == (a2 + k b2)

In[21]:= combine[x + 3 y == 6, x - y == 2, -1]

Out[21]= 4 y == 4

In[23]:= combine[x + 3 y == 6, x - y == 2, 3] // Simplify

Out[23]= x == 3

(You could also include the Simplify as part of your combine function)

David Bailey
http://www.dbaileyconsultancy.co.uk




  • Prev by Date: Re: Differencing two equations
  • Next by Date: Step-By-Step Solutions in Pro V9 Mathematica?
  • Previous by thread: Re: Differencing two equations
  • Next by thread: Re: Differencing two equations