# Plotting an implicitly defined function

I am at a loss how to transform the following function:

$\qquad \Bigg[\Bigg(\omega^{2}-\alpha+\beta*z^{4}\Bigg)^{2}+ (\delta*\omega)^{2}\Bigg]*z^{2} = \gamma$

into an explicit dependance of $z$ on $\omega$, i.e., $z = f(\omega)$. I have tried solving the equation using Matlab and Mathematica, but both programs return odd complex equations.

Is there any way to get a plot using this implicit function?

P.S. FYI this is the frequency response of a quintic Duffing oscillator.

Are you looking for something like this?

{α0, β0, γ0, δ0} = RandomReal[{0, 1}, 4];
Manipulate[
ContourPlot[
((ω^2 - α + β z^4)^2 + (δ ω)^2) z^2 == γ,
{z, -2, 2}, {ω, -2, 2}
],
{{α, α0}, 0, 1},
{{β, β0}, 0, 1},
{{γ, γ0}, 0, 1},
{{δ, δ0}, 0, 1}
]

• Heh, exactly the same idea. – KraZug May 17 '18 at 9:08
• Yeah, and at exactly the same time... -.- – Henrik Schumacher May 17 '18 at 9:10
• Yes, thanks so much! – Sander Goudriaan May 17 '18 at 10:34

Yes, ContourPlot is exactly the function you need. Here wrapped in a Manipulate command to show how the function varies as you change the parameters.

Manipulate[ContourPlot[((ω^2 - α + β z^4)^2 + (δ ω)^2) z^2 == γ, {ω, -5, 5}, {z, -2, 2},
FrameLabel -> {"ω","z"}], {{α, 1}, 0, 5}, {{β, 1}, 0, 5}, {{γ, 1}, 0, 5}, {{δ, 1}, 0, 5}]

• Yes! Thanks so much – Sander Goudriaan May 17 '18 at 10:34
• You're very welcome! – Henrik Schumacher May 17 '18 at 10:44