Nd level sets


I want to compute the level sets of a Nd scalar function. Furthermore, I would like to be able to access the list of values on the level set. I am looking for suggestions.

I know of the following possibilities:

  • contour in Plots.jl
  • contour in Makie.jl
  • Contour.jl but 2d
  • Meshing.jl but 3d

At first, I thought it would be possible to make such method using RegionTrees.jl .

Thank you for your help,


In general this is, of course, hard problem.

Given an initial Nd box X, IntervalConstraintProgramming.jl can give you a set of small boxes that rigorously enclose the part of a level set lying inside X.

I believe this can also be solved by a version of the “parameterization method” used to find stable ame unstable manifolds, in which you stitch together pieces of Taylor polynomials. Cc @lbenet

Thank you for the pointers!
Can you tell how to plot the box in 3d please, the semantic has changed?

Oh good question, will have to check that.

I referenced your package in my docs. If you can do better than what is linked, I am all ears!

1 Like

Those are some pretty amazing and beautiful figures!

1 Like

What is the exact mathematical problem that you want to solve?

Intersect polynomial submanifolds. As of now, it just remains to adapt the 3d part of your docs/code to the new syntax of Makie .

Can you provide an explicit example?

Can you for example update one of those so the 3d plot works please?

Wow, those are super out of date – they were apparently made for Julia 0.5 or 0.6…

I’m trying to update them to use Makie, but it seems to be broken right now. Hopefully will be working soon!

1 Like

Here is an updated example:

1 Like

Please do let me know if I can help more. I am interested in playing with difficult examples that you have.

Here’s my attempt at drawing what I understand to be the set in your docs:

Unfortunately currently the mechanism for creating separators from functions is broken

But actually I’m not sure this is the right tool for the job, since as far as I can see this is just a union of 1D curves (?). @Xing_Shi_Cai pointed me towards Cylindrical Algebraic Decomposition the other day. This can give you all the “pieces” of the solution.


This is great !!

1 Like