# Is this Batman equation for real? [closed]

HardOCP has an image with an equation which apparently draws the Batman logo. Is this for real?

Batman Equation in text form: \begin{align} &\left(\left(\frac x7\right)^2\sqrt{\frac{||x|-3|}{|x|-3}}+\left(\frac y3\right)^2\sqrt{\frac{\left|y+\frac{3\sqrt{33}}7\right|}{y+\frac{3\sqrt{33}}7}}-1 \right) \\ &\qquad \qquad \left(\left|\frac x2\right|-\left(\frac{3\sqrt{33}-7}{112}\right)x^2-3+\sqrt{1-(||x|-2|-1)^2}-y \right) \\ &\qquad \qquad \left(3\sqrt{\frac{|(|x|-1)(|x|-.75)|}{(1-|x|)(|x|-.75)}}-8|x|-y\right)\left(3|x|+.75\sqrt{\frac{|(|x|-.75)(|x|-.5)|}{(.75-|x|)(|x|-.5)}}-y \right) \\ &\qquad \qquad \left(2.25\sqrt{\frac{(x-.5)(x+.5)}{(.5-x)(.5+x)}}-y \right) \\ &\qquad \qquad \left(\frac{6\sqrt{10}}7+(1.5-.5|x|)\sqrt{\frac{||x|-1|}{|x|-1}} -\frac{6\sqrt{10}}{14}\sqrt{4-(|x|-1)^2}-y\right)=0 \end{align}

• Why don't you just try it? Jul 29, 2011 at 21:19
• @Jim: If you mouse over the downvote button, you see: "This question does not show any research effort; it is unclear or not useful." I downvoted because the OP was too lazy to type in the equation himself to any plotting program or calculator, which would have immediately shown that the equation is "for real". If the OP were asking for an explanation of how such an equation might be derived, as ShreevatsaR has done, that would be an appropriate question. Jul 30, 2011 at 17:08
• @Zev Chonoles: i do not know of any web-site that can plot that equation. i wouldn't know where to begin. Also i don't understand how any solver could plot such a diagram. (Hence the question). Jul 30, 2011 at 19:35
• I don't understand why this question has so many upvotes. Aug 3, 2011 at 18:36
• Aug 31, 2011 at 14:40

## 10 Answers

As Willie Wong observed, including an expression of the form $\displaystyle \frac{|\alpha|}{\alpha}$ is a way of ensuring that $\alpha > 0$. (As $\sqrt{|\alpha|/\alpha}$ is $1$ if $\alpha > 0$ and non-real if $\alpha < 0$.)

The ellipse $\displaystyle \left( \frac{x}{7} \right)^{2} + \left( \frac{y}{3} \right)^{2} - 1 = 0$ looks like this:

So the curve $\left( \frac{x}{7} \right)^{2}\sqrt{\frac{\left| \left| x \right|-3 \right|}{\left| x \right|-3}} + \left( \frac{y}{3} \right)^{2}\sqrt{\frac{\left| y+3\frac{\sqrt{33}}{7} \right|}{y+3\frac{\sqrt{33}}{7}}} - 1 = 0$ is the above ellipse, in the region where $|x|>3$ and $y > -3\sqrt{33}/7$:

That's the first factor.

The second factor is quite ingeniously done. The curve $\left| \frac{x}{2} \right|\; -\; \frac{\left( 3\sqrt{33}-7 \right)}{112}x^{2}\; -\; 3\; +\; \sqrt{1-\left( \left| \left| x \right|-2 \right|-1 \right)^{2}}-y=0$ looks like:

This is got by adding $y = \left| \frac{x}{2} \right| - \frac{\left( 3\sqrt{33}-7 \right)}{112}x^{2} - 3$, a parabola on the positive-x side, reflected:

and $y = \sqrt{1-\left( \left| \left| x \right|-2 \right|-1 \right)^{2}}$, the upper halves of the four circles $\left( \left| \left| x \right|-2 \right|-1 \right)^2 + y^2 = 1$:

The third factor $9\sqrt{\frac{\left( \left| \left( 1-\left| x \right| \right)\left( \left| x \right|-.75 \right) \right| \right)}{\left( 1-\left| x \right| \right)\left( \left| x \right|-.75 \right)}}\; -\; 8\left| x \right|\; -\; y\; =\; 0$ is just the pair of lines y = 9 - 8|x|:

truncated to the region $0.75 < |x| < 1$.

Similarly, the fourth factor $3\left| x \right|\; +\; .75\sqrt{\left( \frac{\left| \left( .75-\left| x \right| \right)\left( \left| x \right|-.5 \right) \right|}{\left( .75-\left| x \right| \right)\left( \left| x \right|-.5 \right)} \right)}\; -\; y\; =\; 0$ is the pair of lines $y = 3|x| + 0.75$:

truncated to the region $0.5 < |x| < 0.75$.

The fifth factor $2.25\sqrt{\frac{\left| \left( .5-x \right)\left( x+.5 \right) \right|}{\left( .5-x \right)\left( x+.5 \right)}}\; -\; y\; =\; 0$ is the line $y = 2.25$ truncated to $-0.5 < x < 0.5$.

Finally, $\frac{6\sqrt{10}}{7}\; +\; \left( 1.5\; -\; .5\left| x \right| \right)\; -\; \frac{\left( 6\sqrt{10} \right)}{14}\sqrt{4-\left( \left| x \right|-1 \right)^{2}}\; -\; y\; =\; 0$ looks like:

so the sixth factor $\frac{6\sqrt{10}}{7}\; +\; \left( 1.5\; -\; .5\left| x \right| \right)\sqrt{\frac{\left| \left| x \right|-1 \right|}{\left| x \right|-1}}\; -\; \frac{\left( 6\sqrt{10} \right)}{14}\sqrt{4-\left( \left| x \right|-1 \right)^{2}}\; -\; y\; =\; 0$ looks like

As a product of factors is $0$ iff any one of them is $0$, multiplying these six factors puts the curves together, giving: (the software, Grapher.app, chokes a bit on the third factor, and entirely on the fourth)

• I tip my hat to you for this comprehensive dissection. Jul 30, 2011 at 14:06
• If there were only no rep-cap, Shree would be swimming in rep now... ;P Jul 30, 2011 at 19:56
• "I don’t know how ShreevatsaR did it but he sure brought a large luggage when intelligence showered the Earth." yangkidudel.wordpress.com/2011/08/02/love-and-mathematics Aug 3, 2011 at 0:15
• @Jonas Meyer: LOL, that's embarrassing! :P But then again, if Batman is what it takes for someone to appreciate mathematics a little, well good for Batman. :-) Aug 3, 2011 at 10:46
• @Jack: Grapher, which comes by default on Mac OS X. I mentioned it in the answer actually, just before the last figure. Aug 3, 2011 at 17:34

You may be able to see more easily the correspondences between the equations and the graph through the following picture which is from the link I got after a curious search on Google(link broken now):

• Geometer's Sketchpad? Aug 3, 2011 at 18:28
• @Isaac: Probably right. Sep 6, 2011 at 12:27
• to see the graph just google the equation: 2*sqrt(-abs(abs(x)-1)*abs(3-abs(x))/((abs(x)-1)*(3-abs(x))))(1+abs(abs(x)-3)/(abs(x)-3))sqrt(1-(x/7)^2)+(5+0.97(abs(x-.5)+abs(x+.5))-3(abs(x-.75)+abs(x+.75)))(1+abs(1-abs(x))/(1-abs(x))),-3sqrt(1-(x/7)^2)sqrt(abs(abs(x)-4)/(abs(x)-4)),abs(x/2)-0.0913722(x^2)-3+sqrt(1-(abs(abs(x)-2)-1)^2),(2.71052+(1.5-.5abs(x))-1.35526sqrt(4-(abs(x)-1)^2))sqrt(abs(abs(x)-1)/(abs(x)-1))+0.9 Aug 20, 2012 at 18:47
• @HelderVelez 2014: "'abs' (and any subsequent words) was ignored because we limit queries to 32 words." - Google
– Baby
Nov 28, 2014 at 8:11
• x1(y), x2(y) should be 7 * sqrt( 1 - y^2 / 9) and -7 * sqrt( 1 - y^2 / 9), respectively Jun 25, 2017 at 4:39

Here's what I got from the equation using Maple...

• What if Commissioner Gordon uses Mathematica ???? Jul 30, 2011 at 5:25
• @The Chaz: Then Commissioner Gordon should support the Mathematica SE Site Proposal on Area 51. Jul 30, 2011 at 19:22
• touché .... Jul 30, 2011 at 19:24
• Here's Mathematica code. See Heike's post. I tried it on M8 and it works fine. groups.google.com/group/comp.soft-sys.math.mathematica/…
– Sol
Aug 5, 2011 at 22:48
• @Sol: You can do better; see my answer. Aug 9, 2011 at 7:56

Looking at the equation, it looks like it contains terms of the form $$\sqrt{\frac{| |x| - 1 |}{|x| - 1}}$$ which evaluates to $$\begin{cases} 1 & |x| > 1\\ i & |x| < 1\end{cases}$$

Since any non-zero real number $y$ cannot be equal to a purely imaginary non-zero number, the presence of that term is a way of writing a piece-wise defined function as a single expression. My guess is that if you try to plot this in $\mathbb{C}^2$ instead of $\mathbb{R}^2$ you will get all kinds of awful.

• Yeah, the equation looks too contrived to me. :) A parametric form (it's just quadratic and linear arcs sewn together, it looks) would still be messy, but not as messy. (Probably a good job for splines...) Jul 30, 2011 at 2:43
• +1 i was wondering how they split it up into sections. Jul 30, 2011 at 19:38
• " My guess is that if you try to plot this in C2 instead of R2 you will get all kinds of awful." What did you expect? The analytic continuation of the Batman symbol??
– jwg
Aug 1, 2013 at 8:43

Since people (not from this site, but still...) keep bugging me, and I am unable to edit my previous answer, here's Mathematica code for plotting this monster:

Plot[{With[{w = 3 Sqrt[1 - (x/7)^2],
l = 6/7 Sqrt[10] + (3 + x)/2 - 3/7 Sqrt[10] Sqrt[4 - (x + 1)^2],
h = (3 (Abs[x - 1/2] + Abs[x + 1/2] + 6) -
11 (Abs[x - 3/4] + Abs[x + 3/4]))/2,
r = 6/7 Sqrt[10] + (3 - x)/2 - 3/7 Sqrt[10] Sqrt[4 - (x - 1)^2]},
w + (l - w) UnitStep[x + 3] + (h - l) UnitStep[x + 1] +
(r - h) UnitStep[x - 1] + (w - r) UnitStep[x - 3]],
1/2 (3 Sqrt[1 - (x/7)^2] + Sqrt[1 - (Abs[Abs[x] - 2] - 1)^2] + Abs[x/2] -
((3 Sqrt[33] - 7)/112) x^2 - 3) (Sign[x + 4] - Sign[x - 4]) - 3*Sqrt[1 - (x/7)^2]},
{x, -7, 7}, AspectRatio -> Automatic,  Axes -> None, Frame -> True,
PlotStyle -> Black]


This should work even for versions that do not have the Piecewise[] construct. Enjoy. :P

In fact, the five linear pieces that consist the "head" (corresponding to the third, fourth, and fifth pieces in Shreevatsa's answer) can be expressed in a less complicated manner, like so:

$$y=\frac{\sqrt{\mathrm{sign}(1-|x|)}}{2}\left(3\left(\left|x-\frac12\right|+\left|x+\frac12\right|+6\right)-11\left(\left|x-\frac34\right|+\left|x+\frac34\right|\right)\right)$$

This can be derived by noting that the functions

$$\begin{cases}f(x)&\text{if }x<c\\g(x)&\text{if }c<x\end{cases}$$

and $f(x)+(g(x)-f(x))U(x-c)$ (where $U(x)$ is the unit step function) are equivalent, and using the "relation"

$$U(x)=\frac{x+|x|}{2x}$$

Note that the elliptic sections (both ends of the "wings", corresponding to the first piece in Shreevatsa's answer) were cut along the lines $y=-\frac37\left((2\sqrt{10}+\sqrt{33})|x|-8\sqrt{10}-3\sqrt{33}\right)$, so the elliptic potion can alternatively be expressed as

$$\left(\left(\frac{x}{7}\right)^2+\left(\frac{y}{3}\right)^2-1\right)\sqrt{\mathrm{sign}\left(y+\frac37\left((2\sqrt{10}+\sqrt{33})|x|-8\sqrt{10}-3\sqrt{33}\right)\right)}=0$$

Theoretically, since all you have are arcs of linear and quadratic curves, the chimera can be expressed parametrically using rational B-splines, but I'll leave that for someone else to explore...

• Okay, make that an hour. Sheesh. *facepalm* Jul 30, 2011 at 19:56
• Great, this would be much clearer. BTW, I think it's safer to leave it at "can be expressed using B-splines" than to actually try it out: who knows how many hours that will waste, right? :-) Jul 31, 2011 at 3:20

The following is what I got from the equations using MATLAB:

Here is the M-File (thanks to this link):

clf; clc; clear all;
syms x y

eq1 = ((x/7)^2*sqrt(abs(abs(x)-3)/(abs(x)-3))+(y/3)^2*sqrt(abs(y+3/7*sqrt(33))/(y+3/7*sqrt(33)))-1);
eq2 = (abs(x/2)-((3*sqrt(33)-7)/112)*x^2-3+sqrt(1-(abs(abs(x)-2)-1)^2)-y);
eq3 = (9*sqrt(abs((abs(x)-1)*(abs(x)-.75))/((1-abs(x))*(abs(x)-.75)))-8*abs(x)-y);
eq4 = (3*abs(x)+.75*sqrt(abs((abs(x)-.75)*(abs(x)-.5))/((.75-abs(x))*(abs(x)-.5)))-y);
eq5 = (2.25*sqrt(abs((x-.5)*(x+.5))/((.5-x)*(.5+x)))-y);
eq6 = (6*sqrt(10)/7+(1.5-.5*abs(x))*sqrt(abs(abs(x)-1)/(abs(x)-1))-(6*sqrt(10)/14)*sqrt(4-(abs(x)-1)^2)-y);

axes('Xlim', [-7.25 7.25], 'Ylim', [-5 5]);
hold on

ezplot(eq1,[-8 8 -3*sqrt(33)/7 6-4*sqrt(33)/7]);
ezplot(eq2,[-4 4]);
ezplot(eq3,[-1 -0.75 -5 5]);
ezplot(eq3,[0.75 1 -5 5]);
ezplot(eq4,[-0.75 0.75 2.25 5]);
ezplot(eq5,[-0.5 0.5 -5 5]);
ezplot(eq6,[-3 -1 -5 5]);
ezplot(eq6,[1 3 -5 5]);
colormap([0 0 1])

title('Batman');
xlabel('');
ylabel('');
hold off


The 'Batman equation' above relies on an artifact of the plotting software used which blithely ignores the fact that the value $\sqrt{\frac{|x|}{x}}$ is undefined when $x=0$. Indeed, since we’re dealing with real numbers, this value is really only defined when $x>0$. It seems a little ‘sneaky’ to rely on the solver to ignore complex values and also to conveniently ignore undefined values.

A nicer solution would be one that is unequivocally defined everywhere (in the real, as opposed to complex, world). Furthermore, a nice solution would be ‘robust’ in that small variations (such as those arising from, say, roundoff) would perturb the solution slightly (as opposed to eliminating large chunks).

Try the following in Maxima (actually wxmaxima) which is free. The resulting plot is not quite as nice as the plot above (the lines around the head don’t have that nice ‘straight line’ look), but seems more ‘legitimate’ to me (in that any reasonable solver should plot a similar shape). Please excuse the code mess.

/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
/* [ Created with wxMaxima version 0.8.5 ] */

/* [wxMaxima: input   start ] */
load(draw);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
f(a,b,x,y):=a*x^2+b*y^2;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
c1:sqrt(26);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
draw2d(implicit(
f(1/36,1/9,x,y)
+max(0,2-f(1.5,1,x+3,y+2.7))
+max(0,2-f(1.5,1,x-3,y+2.7))
+max(0,2-f(1.9,1/1.7,(5*(x+1)+(y+3.5))/c1,(-(x+1)+5*(y+3.5))/c1))
+max(0,2-f(1.9,1/1.7,(5*(x-1)-(y+3.5))/c1,((x-1)+5*(y+3.5))/c1))
+max(0,2-((1.1*(x-2))^4-(y-2.1)))
+max(0,2-((1.1*(x+2))^4-(y-2.1)))
+max(0,2-((1.5*x)^8-(y-3.5)))
-1,
x,-6,6,y,-4,4));
/* [wxMaxima: input   end   ] */

/* Maxima can't load/batch files which end with a comment! */
"Created with wxMaxima"$ The resulting plot is: (Note that this is, more or less, a copy of the entry I made on http://blog.makezine.com.) • I really think that an indeterminate value multiplied by zero equals zero, so it seems to be legit. Is there any reason 0 * 0/0 should not be defined to be zero? Jun 15, 2015 at 19:45 • @dbanet: What are you referring to? The issue above is that the original equations rely on the plotting software ignoring undefined values, which is peculiar, to say the least. The expression$\sqrt{\frac{|x|}{x}}$(with$x$being replaced by some expression) is what I referred to and it appears without being multiplied by$x$. Jun 15, 2015 at 19:54 • @copper-hat: The function$f(x)=\sqrt{\frac{|x|}{x}}$appears only in boolean expressions$F:x\to \{\text{True},\text{False}\}$of form$f(x)g(x)=0$, so if$g(x)$is defined as$g:x\in\mathbb{C}\to{0}$, I would rather evaluate$F(0)$to$\text{True}$than to$\text{False}$, as$\forall{x}:f(x)g(x)=0\Longleftrightarrow \Big(f(x)=0\lor g(x)=0\Big)$. Jun 15, 2015 at 21:57 • @dbanet: I'm really not sure what you are getting at. Look at the expressions in the question. They rely on the expression$\sqrt{\frac{|x|}{x}}$returning zero for$x \le 0$, which is strange (look at Willie's answer math.stackexchange.com/a/54521/27978). My answer plots level sets, which avoids this whole issue. Jun 15, 2015 at 22:10 • @dbanet: I don't really get your point. In the formula in the question there are lots of expressions of the above form that are multiplied by quantities that do not evaluate to zero when$x<0\$. If they did, there would be no need to have the strange expression in the first place. Jun 15, 2015 at 22:21

Here's the equations typed out if you want save time with writing it yourself.

(x/7)^2*SQRT(ABS(ABS(x)-3)/(ABS(x)-3))+(y/3)^2\*SQRT(ABS(y+3*SQRT(33)/7)/(y+3*SQRT(33)/7))-1=0
ABS(x/2)-((3*SQRT(33)-7)/112)*x^2-3+SQRT(1-(ABS(ABS(x)-2)-1)^2)-y=0
9*SQRT(ABS((ABS(x)-1)*(ABS(x)-0.75))/((1-ABS(x))*(ABS(x)-0.75)))-8*ABS(x)-y=0
3*ABS(x)+0.75*SQRT(ABS((ABS(x)-0.75)*(ABS(x)-0.5))/((0.75-ABS(x))*(ABS(x)-0.5)))-y=0
2.25*SQRT(ABS((x-0.5)*(x+0.5))/((0.5-x)*(0.5+x)))-y=0
(6*SQRT(10))/7+(1.5-0.5*ABS(x))*SQRT(ABS(ABS(x)-1)/(ABS(x)-1))-((6*SQRT(10))/14)*SQRT(4-(ABS(x)-1)^2)-y=0

• The multiple "=0" lines are different than the mulitiplications in the original, there are some backslashes in there that throw things off, and the formatting is hard to read. The pastebin is better. Jul 30, 2011 at 16:42
• I've made a meta post about this answer. Jul 30, 2011 at 19:21
• I would have commented it but I don't have enough rep to comment :P Jul 31, 2011 at 4:45

Sorry but this is not the answer but too long for a comment: Probably the easiest verification is to type the equation on Google you'l be surprised : The easiest way is to Google :2 sqrt(-abs(abs(x)-1)abs(3-abs(x))/((abs(x)-1)(3-abs(x))))(1+abs(abs(x)-3)/(abs(x)-3))sqrt(1-(x/7)^2)+(5+0.97(abs(x-.5)+abs(x+.5))-3(abs(x-.75)+abs(x+.75)))(1+abs(1-abs(x))/(1-abs(x))),-3sqrt(1-(x/7)^2)sqrt(abs(abs(x)-4)/(abs(x)-4)),abs(x/2)-0.0913722(x^2)-3+sqrt(1-(abs(abs(x)-2)-1)^2),(2.71052+(1.5-.5abs(x))-1.35526sqrt(4-(abs(x)-1)^2))sqrt(abs(abs(x)-1)/(abs(x)-1))+0.9

• @copper, it is just because of the algorithm that draw uses for drawing implicit functions. You need to setup the variables ip_grid and ip_grid_in, that are the sampling values in your region. For example draw2d(ip_grid=[60,60], ip_grid_in=[20,20], implicit(y^2=x^3-2*x+1, x, -4,4, y, -4,4) ); Oct 16, 2014 at 19:21