https://www.desmos.com/3d/3divdux6jh
Dropping the absolute value makes a better visualization. The 3D graph for Example 4 Shadow Line has an established name, a hyperbolic paraboloid. The color graph for Example 5 Phi Equation doesn't capture the odd symmetry F(x,y)=-F(-x,y). The color graph for Example 6 Underwater Islands looks far inferior to the 3D surface.
I have a suggestion. Calculate z=left-right without absolute value, and try mapping [negative limit, 0, positive limit] to [black, red, white], or possibly [negative limit, 0, positive limit, outside of limits] to [red, white, blue, black]. And of course, do variations and have fun!
I may have been a little hyperbolic in the opening sentence, and may try to tighten up that language. It's true that I've encountered things like visualizing error gradients (in the ML space) in a non-binary way. And yes, mapping 3D to color (and 3D graphing) is nothing novel.
But, I think that the idea of visualizing equations using the question "How different are both sides?" instead of "Are both sides EXACTLY equal - Yes or No?" is a new way to think about it - I don't know of any other graphing app/calculator (besides https://fuzzygraph.com) that does it.
I think some would say that the "Fuzzy graph" of an equation is not a true graph of that equation because a "visualization transform" is being applied, and that only the conventional/binary graph is a valid graph of the equation. But even conventional graphing apps must apply a "visualization transformation" to the equation - something like: 'black' if Boolean(left(x, y)==right(x, y)) else 'white.
Otherwise ... the plot is obviously engaging, based on the discussion here. For people who haven't seen it before, it's a new way to think about it. It may well be a new "plot type" to most people relying on standard plotting software to visualize equations.
Maybe consider saying it's grounded in "more advanced" math than what others have brought to plotting software. That's still impressive, but it can be made pretty much true. You can cite cool math references about "implicit function theorem" or whatever. Stuff that your target audience really weren't going to just find on their own.
I think your comment is insightful, but it's also a terrible choice of words (and something we probably do too often here). I very much doubt that deception was the intent.
Sometimes, someone just reinvents the wheel (or improves on it). And if it serves to teach several thousand people about a new visualization technique, I think that's a net positive.
So, good for him but some historical perspective is needed when making such sweeping claims.
Intentional or not, the linked article opens with a comically untrue statement, that, because it is verifiably false, doesn't even escape as puffery. When I encounter this sort of grandstanding in framing (generally from junior engineers or fresh-from-school product managers), I spell out just how negatively such misstatements harm the point being made.
It's a turn-off for readers, and it's unnecessary.
"You may be used to seeing graphs like..." or "In grade school, we learned to graph like..."
would probably be more useful than dismissal of the history of visualization of implicit functions. Hopefully, next time, the author will be a bit less grandiose.
1. plotting in this way shows areas that are nearly solutions which is really cool.
2. Not mentioned, but this shows gradient around the solution as well, which helps understand attractor/repulsor a bit intuitively
I mean I have generated these plots before to visualize things like error or sensitivity, but this is clean and very cool. So, credit where credit is due for spreading the idea.
When F has a special structure (say, low-order polynomial), we can actually find the exact solutions. More general structure (e.g. convexity, differentiability) doesn't give us the exact solution, but it lets use use clever numerical algorithms to find them. There are techniques we can use when F has little to no structure, known as "black box" methods, and they work particularly well when we have few variables. In the case of "fuzzy graphs", there are only two variables, so this software takes the approach of computing F(x, y) for every pixel on the screen. In general this doesn't work due to the curse of dimensionality, but it creates good visualizations in low dimensions :)
To answer your question directly, yes we can use differential geometry to speed up optimization. As an example, you've probably heard of gradient descent. Preconditioned gradient descent leverages the geometry of the surface to speed up convergence. In the language of differential geometry, if we're optimizing f(x), then x is "contravariant" but grad(f) is "covariant", so technically we can't just add grad(f) to x since they have different types. We first have to multiply grad(f) by a rank-2 tensor (the "preconditioner") that encodes the local curvature of f around x. This technique is used by the Adam optimizer, with the assumption that the preconditioner is diagonal.
If f(x, y) = 0, wouldn’t using f(x, y) for the height just result in a flat graph?
For example, f might be defined as f(x, y) ≔ x² + y² – 1. Then the points (x, y) for which f(x, y) = 0 are those on the unit circle (those for which x² + y² = 1). The graph will have height 0 only for those points.
f(x,y) = x+y might be better written as f(x,y) := x+y where := means "is defined as". Then f(x,y) = 0 is an equation that expands to x+y = 0, or in familiar intro algebra form, y=-x.
g(x,y) := 0 really is a flat plane.
If "f(x, y) = 0" is actually the definition of f(x, y), then yes, it would be a pretty boring graph.
The graph of y/(x^2+y^2)=(x+1)/(x^2+y^2) by definition contains the points that satisfy this equation. This is exactly the set of points for which y = x + 1.
The "fuzzy" graph is just coloring the difference between the left hand side and right hand side. This is very basic, not new, and it's definitely not "the graph of y/(x^2+y^2)=(x+1)/(x^2+y^2)".
But then I realised they're just plotting
y/(x^2+y^2) - (x+1)/(x^2+y^2) = c
and colouring by c (i.e. a heatmap, as others have mentioned in the thread).
That's why you get a more interesting image than you'd get with y - (x + 1) = c
We'd only need to "apply a filter" to get the line graph if we started with z(x,y), but that's not what you wrote
The simplest definition of a "graph of a function" is that it's a representation of the points satisfying some underlying equality. Your plot isn't that. A more conventional name would be a heatmap: a plot of a function that takes two parameters - x and y coordinates - and then assigns a third value (color) to each.
I don't think the distinction is all that interesting. They're both function plots.
Of course we also have to remember that functions are not the same as equations, and a given function, or more generally relation, can be represented by multiple different equations. For a trivial example, multiply both sides of your slashdot equation by a constant, or add x*y.
Interesting, what's being visualized there is actually a failure mode for an unidentifiable equation - the valley where the error is zero and therefore all solutions are acceptable. Introduce noise into the measurements of error and that valley being too flat causes odd behaviour
https://web.archive.org/web/20120208174423/https://maa.org/p...
Michael Levin has talked about interesting dynamics with the bubble sort algorithm, which is only a few lines of code, that have parallels in biological processes, suggesting there is a more nuanced logic to nature that we are not seeing
I mean, I don’t see why that is special? Correct me if I’m wrong. I like his research and views on biological electric spaces, but this I did not understand.
I fail to see how it’s surprising you don’t end up with a complete sort, yet still with clusters.
That’s exactly what I’d naively expect to happen.
With a signed distance function, instead of looking at the recipe’s mistake, we measure how far the point is from the perfect curve—like pulling out a ruler and measuring the nearest distance to the “correct” line.
It always has units of length and behaves nicely (positive outside, negative inside, zero on the curve).
So the fuzzy graph is about “how wrong is the equation here?”
A signed distance function is “how far away from the exact solution am I?”
They’re related ideas (both start from equations written as something = 0), but they’re not the same thing.
Reasonably, I ask myself: "but isn't dark region far distance and light region close distance?"
Sitting with that:
In the fuzzy graph, we’re coloring by equation error—how badly the equation is satisfied at each point.
In a signed distance field, we color by actual geometric distance to the curve.
Those two numbers aren’t the same unless the equation is written in a very special way. If you multiply an equation by some huge factor (say, multiply everything by 1,000, or divide by something small), the shape of the solution curve doesn’t change—distance hasn’t changed—but the equation’s error suddenly becomes 1,000 times larger (or smaller). That would completely change the shading in the fuzzy graph while leaving the real distances untouched.
Signed distance is measured with a ruler (pure geometry). The fuzzy graph is measuring algebraic error (how close the formula comes to zero). Both can get lighter near the curve and darker away from it, but they’re doing it for different reasons, so they’re not interchangeable.
The dark areas in the plot seem to be the features driving the shape of the plots. That means that these would be the areas the plotter should be most sure about, otherwise the plot would have a different shape. The bright “low error” areas are the areas where the model seems least likely to be correct.
I might be missing an interpretation that makes much more sense, but I think “error” might be the wrong terminology to use here. It doesn’t just mean “difference between A and B”, it includes some idea of being a measure of wrongness.
I can do the VR part - any chance you can share the algo, so I can get the machine to lift it? I can imagine a 3d graphing tool would need spatialisation in order to be properly appreciated.
https://c3d.libretexts.org/CalcPlot3D/index.htmlT
This viewer also has a "2d" mode that produces a colored 2D plot.
the 3d plot is nice but not what i would call "spatialised", since it's still a flat render, and I'm exactly thinking about the meshing of the thing. i am familiar with delaunay and marching cube strategies, at least enough to get a machine to hook them up to a spatial plotter
Some years ago I made an online demo for complex domain coloring, which is related to this idea:
https://anematode.github.io/grapheme-math/demo/domain_colori...
It would be more useful to visually demonstrate linear relationships but of course the errors there would not make for such a punchy blog post.
But I am curious if these plots can/have been empirically validated with real world data.
I feel like this must be missing a "no", but also I'm bad at math, so maybe not.
First create a mesh (Sources -> Plane for 2D, or Sources -> Box if you want to do it in 3D). Set reasonably high values for Resolution on this source. Then use a filter to apply your function, either Filters -> Alphabetical -> Calculator for easy stuff, or Filters -> Alphabetical -> Python Calculator if you want complicated stuff. The "coordsX" etc. are your spatial coordinates on the mesh. Pick whatever color map you want (diverging types are good for this), change the limits on coloring, use a log scale, whatever.
If you do this in 3D on a box, you can then use a slice to scrub through the result on an arbitrarily oriented plane. You could visualize translucent isosurfaces of constant "error" and raytrace them. Or you could take the gradient of your "error" and plot as a vector field. With a bit of leg work you can add a fourth coordinate (time) and make animations. And you can combine all of these. Sky is the limit.
I think your critique would be more effective if you left out the part where you shame the author's lack of knowledge about level sets
I think it hides your valid (if overstated) criticism of the author's exaggeration behind a non-constructive insult, and your comment would be better without that tone
The point about level sets is entirely that the author not only does not have the background to make claims about novelty, they have all the clues they need to figure out that they don't have the background.
> For all the history of computational mathematical visualization, graphing equations has been done in binary mode
These are very concrete, non-mystical claims. But do you really think "mysticism" is better here?
The millions of brightly-colored fractal posters adorning walls in the 80s are a very clear counter-example to your claim.
Your app is cool and the visualization is neat. The hyperbolic claims of originality really detract from that.
"Note that the Shadow Circle is invisible in the conventional graph. In fact, the conventional graph looks identical to a conventional graph of the x=0 equation (as if the denominator was not there)."
Ummm... Yeah, because the equation x / (x^2 + y^2 - 1) = 0 simplifies to x = 0. Your "fuzzy graph" is actually just a plot of the function z(x, y) = |x / (x^2 + y^2 - 1)|, where z is encoded as a color.
It feels like it distracts more than it illuminates. ex. Quasar Equation. I don't know what it capital-M Means that at (X, Y) = 0, there's a region where there's higher differences between y and x/x^2+y^2.
But counterpoint to myself:
I'm looking at a toy example.
I'm sure there's been plenty of times I was genuinely comparing two equations and needed to understand where there'd differ.
Its just harder for me to grok when one of the equations is "y".
It's seriously that good!
Also, related to the idea of visualizing old equations in new ways:
YT Video: "Putting Algebraic Curves in Perspective":
https://www.youtube.com/watch?v=XXzhqStLG-4
>"Ever wonder what happens when you combine graphing algebraic curves with drawing in perspective? The result uncovers some beautiful relationships between seemingly different shapes, and all because of what happens when you
include infinity through projective geometry ."
...and the following might be of interest as well:
https://pointatinfinityblog.wordpress.com/2016/04/11/points-...
I'm impressed.