I solved some equation in Mathematica and I obtained something like $$y(t)=\exp \left\lbrace \left[ \text{erf}^{-1} (\text{i}t) \right]^2\right\rbrace, (1)$$ where $\text{i}$ is imaginary unit and $\text{erf}^{-1}(x)$ is the inverse error function (it is not equal to $\frac{1}{\text{erf}(x)}$ !!), which is defined for $x \in [-1,1]$. The problem is that the $t$ is real and the function has to be also real, but I can't plot this function since $\text{erf}^{-1}$ accepts only real arguments in Mathematica. Is there any way how to plot the solution or convert it to some other expression, which can be plotted? I tried to use some approximations of inverse error functions, such as $$ \text{erf}^{-1}(x) = \sum_{k=0}^{N} \frac{c_k}{2k+1}\left(\frac{\sqrt \pi}{2}x\right)^{2k+1}, (2)$$ to finite $N$ (from Wikipedia) which holds if $x \in [-1,1]$ and then I just simply put $t \rightarrow \text{i}t$ in approximated version of (1) and obtained only real part (imaginary part was zero), but I'm not sure wheather it is correct.
1 Answer
Unfortunately Mathematica seems to be a bit silly here, but a little math can give a workaround. In particular, we have $$\text{Erf}^{-1}(iz)=i\text{Erfi}^{-1}(z)$$ which means $$y(t)=\exp\left(-\text{Erfi}^{-1}(t)^2\right)$$ and $\text{Erfi}$ is purely real-valued for real $t$.
Because of this, if you are simply interested in plotting $y(t)$, then one way to do it is to avoid the inverse-map altogether, forward-map the $x$-axis, and then take that into account when constructing the plot:
ListLinePlot[Table[{Erfi[t], Exp[-t^2]}, {t, -2, 2, 0.1}],
PlotMarkers -> Automatic]
From this same approach, you can also define an interpolating function based on the above datapoints using the function Interpolation
, and get reasonably accurate estimates of $y(t)$ at arbitrary $t$. The advantage of this approach is it avoid the use of complicated series approximations, and is still very accurate.
Additional unrelated fun stuff: the $\text{Erf}$ function maps purely imaginary values to purely imaginary values in a 1-to-1 manner, so it makes sense that $\text{Erf}^{-1}(iz)=if(z)$ for some real-valued function $f$. A visual proof of this fact can be obtained by plotting the sign of the imaginary component of $\text{Erf}(z)$ times a function which has peaks when the phase of $\text{Erf}(z)$ is $\pm\pi/2$:
hue = Compile[{{z, _Complex}}, {(1.0 Arg[-z] + π)/(2 π),
Exp[1 - Max[Abs[z], 1]], Min[Abs[z], 1]},
CompilationTarget -> "C", RuntimeAttributes -> {Listable}];
CCompile\[DoubleStruckCapitalC][expr_] :=
Compile[{{z, _Complex}}, Evaluate[expr], CompilationTarget -> "C",
RuntimeAttributes -> {Listable}];
dat = CCompile\[DoubleStruckCapitalC][Erf[z]][
Outer[Complex, Range[-5, 5, 0.015], Range[-5, 5, 0.015]]];
f[c_] := Sign[Im[c]]/(
Abs[Arg[c] - π/2] Abs[π/2 + Arg[c]] + 0.1);
Image[hue[Map[f, dat, {2}]\[Transpose]/7], ColorSpace -> Hue]
The principal branch of the inverse function is the vertical line (which is what we want), and the other lobes are other branches of $\text{Erf}^{-1}$.
-
$\begingroup$ This looks amazing, thank you for help. I found out the problem in Maple, but this is better since everything is in one MAthematica notebook. I also found out that is it okay to put z -> iz in the series above (2) and it fits with result obtained from Maple. $\endgroup$– GeorgeNov 7, 2014 at 15:28
-
$\begingroup$ Any reason why you didn't do
ParametricPlot[{Erfi[t], Exp[-t^2]}, {t, -2, 2}, AspectRatio -> 1/GoldenRatio]
? $\endgroup$ Aug 23, 2015 at 5:01 -
$\begingroup$ Oh~~That's a really smart way of plotting complex Inverse function @J. M. $\endgroup$– HarryAug 23, 2015 at 5:13
y = Exp[(Erf[I t]^(-1))^2]; Plot[y, {t, -1, 1}]
I get this !Mathematica graphics $\endgroup$InverseErf[x]
. The code I use isPlot[{Re[Exp[InverseErf[I x]]^2], Im[Exp[InverseErf[I x]]^2]}, {x, -1, 1}]
$\endgroup$Explicit numerical values are given only for real values of s between -1 and +1.
But you have complex arguments. $\endgroup$InverseErf
is a function $\mathbb{C} \rightarrow \mathbb{C}$. I'm asking how to modify the expression $\text{erf}^{-1}(\text{i}t)$ so it can be plotted. $\endgroup$Erf
and see how close the result is to $iz$. Have you tried that, to see if your approximation is any good? $\endgroup$