Is there a way, or if not, how could one define a function which takes an equation in any form (for example as given by FullSimplify
):
$$(A+X_0) x+By=3x$$
and rearranges it in the more compact and tidy form:
$$(A+X_0-3) x+By=0$$
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityClearAll[a, b, c, d, x, y]
expr = a x + b y + c x == d x;
You can use any of
Collect[(expr /. Equal -> Subtract) == 0, x]
Collect[Subtract @@ expr == 0, x]
FullSimplify[(expr /. Equal -> Subtract) ] == 0
FullSimplify[Subtract @@ expr] == 0
to get
(* (a + c - d) x + b y == 0 *)
Alternatively, use a custom ComplexityFunction
that makes non-zero expressions on the right-hand-side of ==
more expensive:
cf[e_] := 100 Count[e, Equal[_, Except[0, _]], {0, Infinity}] + LeafCount[e]
FullSimplify[expr, ComplexityFunction -> cf]
(* (a + c - d) x + b y == 0 *)
Update: In versions 11.3+, you can use the function SubtractSides
:
FullSimplify /@ SubtractSides[expr]
(a + c - d) x + b y == 0
FullSimplify / @ SubtractSides[expr]
can not run. Syntax: "FullSimplify cannotbe followedby@SubtractSide $\{$ expr'].
$\endgroup$
Mar 24, 2022 at 1:25