Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Differencing two equations
Replies: 8   Last Post: Aug 5, 2013 11:07 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
David Park

Posts: 1,557
Registered: 5/19/07
Re: Differencing two equations
Posted: Aug 5, 2013 10:53 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Inner is also sometimes a useful construct for this.

eqn1 = a1 == a2;
eqn2 = b1 == b2;

Inner[Plus, eqn1, eqn2, Equal]

a1 + b1 == a2 + b2

Inner[Plus, eqn1, Minus /@ eqn2, Equal]

a1 - b1 == a2 - b2

Inner[Plus, eqn1, 3 # & /@ eqn2, Equal]

a1 + 3 b1 == a2 + 3 b2


David Park
djmpark@comcast.net
http://home.comcast.net/~djmpark/index.html


From: David Bailey [mailto:dave@removedbailey.co.uk]
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






Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.