2
$\begingroup$

I would like to take the result of a Reduce function call and eliminate any solutions that depend on the value of a particular variable (call it $y$). For instance, I am trying to get the parameters for a linear representation of the expression $\frac{y\beta}{\alpha+\beta}$ (linear in $y$), where $\alpha,\beta>0$. (Related: Force expression in certain form).

I do:

Reduce[y*β/(α + β) == a*y + b && α > 0 && β > 0, {y}, Reals] // FullSimplify

However, the command yields both the solution I'm looking for ($a=\frac{\beta}{\alpha+\beta},b=0$) and another, very specialized solution, where if $y$ happens to equal a specific combination of $a$ and $b$, then it does not matter what $a$ or $b$ are. While that is correct (and I applaud MMA for its completeness), I only want solutions that hold for any value of $y$. Also, the presence of that solution adds unwanted complexity to the Reduce output.

To reduce the cognitive load of determining exactly what to ignore in the output, I would like to get a further-reduced expression that eliminates any solution that depends on the value of $y$. Is there an easy way to do this?

$\endgroup$

2 Answers 2

3
$\begingroup$

If I understand you correctly, you just need to use ForAll, which requires that the equations in the second argument be true for all values of the first argument:

Reduce[
  ForAll[y, y*β/(α + β) == a*y + b] 
  && α > 0 && β > 0, {y}, Reals] // FullSimplify

(* β > 0 && α > 0 && b == 0 && a == β/(α + β) *)
$\endgroup$
1
$\begingroup$

Due to @Michael Seifert's answer introducing ForAll, I found a simpler way to accomplish the task I had in mind, using Solve rather than Reduce:

Solve[ForAll[y, y*β/(α + β) == a*y + b], {a, b}, Reals]
$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.