# Function to write an algebraic expression in terms of another

So I'm working on a physics problem. I have two functions:

$$\rho = \frac{F}{(\beta F^\alpha+1)^\frac{1}{\alpha}}$$, $$p = - \frac{F}{(\beta F^\alpha+1)^\frac{1}{\alpha}} + \frac{4}{3}\frac{F}{(\beta F^\alpha+1)^{1+\frac{1}{\alpha}}}$$

Just by looking at $$p$$, I can tell it can be algebraically manipulated in order to write it, explicitly, in terms of $$\rho$$. Indeed:

$$p= \frac{\rho}{3}(1-4\beta\rho^\alpha)$$

Every math operation I do by hand on this project, I check it on Mathematica just to make sure I don't screw it up. Sometimes I use functions like Simplify or FullSimplify to make my life easier. For example, if I use Simplify[$$\rho$$], I get a nice reduced expression, and the same for Simplify[$$p$$]. Nevertheless, I'd love for my program to write $$p$$ in terms of $$\rho$$ so I don't have to do it manually as I did above. I'm assuming a way to do this is to tell Mathematica to factor the explicit form of $$\rho$$ out of $$p$$, but I'm not sure. Either way, I haven't been able to do this (the factorizing). So far, I've read about the function FactorTerms and even an specific one shown in this answer, but none of this work as I want them to.

I'm assuming a function like this already exists or one may be defined simply, but I just can't figure it out. Any help is appreciated.

• Please edit your question to include a concrete example of what you are trying to do. Jan 24, 2023 at 2:41
• Hi @Vicente, and welcome to MSE! In addition to what Bob suggested, could you please include Mathematica's code for your functions, so that people don't need to retype it? Jan 24, 2023 at 4:01
• I can tell it can be algebraically manipulated are you sure? I just checked,. Your desired $d$ does not match. When I do it by hand, this is what I get !Mathematica graphics $$\rho \left(\frac{4}{3} \left(\frac{\rho }{F}\right)^{\alpha }-1\right)$$ Jan 24, 2023 at 4:31
• Copy-pasteable input? Without which this is not a viable question for this forum. Jan 24, 2023 at 5:13

ClearAll["Global*"]
ρ = F/(β*F^α + 1)^(1/α)
d = -(F/(β*F^α + 1)^((1/α))) + 4/3 F/(β*F^α + 1)^(1 + 1/α)
d /. (1 + F^α β) :> (F/HoldForm[ρ])^α
PowerExpand[%] // Simplify


Screen shot

V 13.2

# Solution

A more hands off approach, that still requires an guessed substitution, in this case

(β*F^α + 1) -> q


and then we eliminate q.

Also, I choose a somehow more verbose code to avoid lingering definitions and keep a clean kernel.

Surprisingly, not all combinations of Reduce, Eliminate and Solve work as effectively. These two options do work for this case:

## Eliminate (β*F^α + 1) by hand

Block[
{
q,
subs = ( (β*F^α + 1) -> q ), (* Put your intuition here *)
expre1 = ρ == F/(β*F^α + 1)^(1/α),
expre2 = d == (F/(β*F^α + 1)^((1/α))) + 4/3 F/(β*F^α + 1)^(1 + 1/α)
},
Assuming[
{F, β, α, ρ, q} ∈ PositiveReals,
FullSimplify[
expre2 /. subs /. Solve[expre1 /. subs, q]
]
]
]


## Eliminate (β*F^α + 1) using the third argument of Solve

Or also alternatively

Block[
{
q,
subs = ( (β*F^α + 1) -> q ), (* Put your intuition here *)
expre1 = ρ == F/(β*F^α + 1)^(1/α),
expre2 = d ==(F/(β*F^α + 1)^((1/α))) + 4/3 F/(β*F^α + 1)^(1 + 1/α)
},
Assuming[
{F, β, α, ρ, q} ∈ PositiveReals,
Solve[
Reduce[{expre2, expre1}/.subs]
, {d}
, {q} (* Undocumented "Eliminate" feature*)
, InverseFunctions->True
]
]
]
Simplify@%

• I'm asking further clarification about this undocumented way of evaluating Solve` in this other question. Jan 24, 2023 at 12:09