4
$\begingroup$

I was wondering whether it was possible to solve a linear equation in two unknowns for a specified relation of the two unknowns, meaning that, given $$x+y=\alpha x+\beta y+\gamma$$ I want to have $x+y$ on one side and everything else on the other side. Here, $\alpha,\beta,\gamma$ do not depennd on $x$ and $y$, in fact, they can be treated as constants. I tried using Solve and Collect but it wouldn't give me what I wanted. For example

Collect[x + y == 3 + 2 x + 2 y + 38/a, {x + y}]

and many variations did not work. I also tried

Solve[x + y == 3 + 2 x + 2 y + 38/a, {x,y}]

which somewhat gives me what I want, although I am looking for $x+y$ on one side. I do not know if this would work for harder equations, as I chose the above equation just for simplicity. Does anyone have any idea? Is there a function that achieves this?

$\endgroup$
1
  • 3
    $\begingroup$ You can introduce a new variable $z=x+y$. Next you replace $y$ with $z-x$. Then you can solve for $z$ in terms of $x$. $\endgroup$
    – yarchik
    Feb 8, 2020 at 7:16

3 Answers 3

3
$\begingroup$

This works for the example you posted. If you have a different example, where this does not work, will try to fix it. This checks that the combination of a x + b y can factor out to a common x+y term, otherwise it returns no solution.

solve[x_, y_, eq0_] := Module[{lhs, rhs, eq, cx, cy, sol = {}, z},
   rhs = eq0 /. (lhs_ == rhs_) :> rhs;
   lhs = eq0 /. (lhs_ == rhs_) :> lhs;
   eq = rhs - lhs == 0;
   cx = Last@CoefficientList[rhs - lhs, x];
   cy = Last@CoefficientList[rhs - lhs, y];
   If[cx == cy,
    sol = (x + y) /. (First@Solve[(eq /. (cx x + cy y) -> z), z] /. z -> ( x + y));
    sol = sol/cx
    ];
   x + y == sol
   ];

Now call it as

ClearAll[x, y, a];
eq = x + y == 3 + 2 x + 2 y + 38/a;
solve[x, y, eq]

Mathematica graphics

eq = x + y == 3 + 4 x + 4 y + 38/a;
solve[x, y, eq]

Mathematica graphics

eq = 2 x + y == 3 - 2 x - 3 y + 38/a;
solve[x, y, eq]

Mathematica graphics

This returns no solution, since can't collect x+y into one term

eq = 2 x + y == 3 - 2 x - 1 y + 38/a;
solve[x, y, eq]

Mathematica graphics

$\endgroup$
6
$\begingroup$

To solve for x+y you can simply do:

x + y /. Solve[x + y == 3 + 2 x + 2 y + 38/a, {x, y}][[1]]

-((38 + 3 a)/a)

To get an expression of the form x + y == ... you can use Reduce and post-process the output into desired form:

red = Reduce[{z == 3 + 2 x + 2 y + 38/a, z == x + y, a != 0}, z, {x, y}]

a != 0 && z == (-38 - 3 a)/a

red /. { a != 0 -> True, z -> x + y}

x + y == (-38 - 3 a)/a

$\endgroup$
0
$\begingroup$
Eliminate[z == x + y == 3 + 2 x + 2 y + 38/a, {x, y}]

results in

z == -3 - 38/a && a != 0
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.