File:Besselh0mapT100.png

Complex map of the Hankel function of zero order, id est, BesselH0$=H_0$

$u+\mathrm i v = H_0(x+\mathrm i y)$

The primitive algorithm through BesselJ0$=J_0~$ and $~$BesseY0$\,=Y_0$ is used for the evaluation,
 * $H_0(z)=J_0(z)+\mathrm i Y_0(z)$

this algorithm is good at moderate values of the imaginary part of the argument. For large values, the direct asymptotic expansion should be used instead.

Generator of curves
Files besselj0.cin, bessely0.cin, ado.cin, conto.cin should be loaded to the working directory in order to compile the C++ code below.

using namespace std; typedef complex z_type; main{ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d; int M=801,M1=M+1; int N=401,N1=N+1; DB X[M1],Y[N1], g[M1*N1],f[M1*N1], w[M1*N1]; // w is working array. char v[M1*N1]; // v is working array FILE *o;o=fopen("besselh0map.eps","w");ado(o,162,82); fprintf(o,"81 41 translate\n 10 10 scale\n"); DO(m,400) X[m]=-8.+.02*m; X[400]=-.004; X[401]= .004; for(m=402;m-99. && p<99.      &&     q>-99. && q<99       ) {g[m*N1+n]=p; f[m*N1+n]=q; }                     }} //#include "plodi.cin" fprintf(o,"1 setlinejoin 1 setlinecap\n"); p=1.5;q=.5; for(m=-5;m<6;m++)for(n=2;n<10;n+=2)conto(o,f,w,v,X,Y,M,N,(m+.1*n),-q, q); fprintf(o,".01 W 0 .6 0 RGB S\n"); for(m=0;m<6;m++) for(n=2;n<10;n+=2)conto(o,g,w,v,X,Y,M,N,-(m+.1*n),-q, q); fprintf(o,".01 W .9 0 0 RGB S\n"); for(m=0;m<6;m++) for(n=2;n<10;n+=2)conto(o,g,w,v,X,Y,M,N, (m+.1*n),-q, q); fprintf(o,".01 W 0 0 .9 RGB S\n"); for(m=1;m<25;m++) conto(o,f,w,v,X,Y,M,N, (0.-m),-p,p); fprintf(o,".02 W .9 0 0 RGB S\n"); for(m=1;m<25;m++) conto(o,f,w,v,X,Y,M,N, (0.+m),-p,p); fprintf(o,".02 W 0 0 .9 RGB S\n"); conto(o,f,w,v,X,Y,M,N, (0. ),-2*p,2*p); fprintf(o,".02 W .6 0 .6 RGB S\n"); for(m=-24;m<0;m++) conto(o,g,w,v,X,Y,M,N, (0.+m),-p,p); fprintf(o,".02 W 0 0 0 RGB S\n"); m=0;         conto(o,g,w,v,X,Y,M,N, (0.+m),-2*p,2*p); fprintf(o,".02 W 0 0 0 RGB S\n"); for(m=1;m<25;m++) conto(o,g,w,v,X,Y,M,N, (0.+m),-p,p); fprintf(o,".02 W 0 0 0 RGB S\n"); //#include "plofu.cin" M(0,0)L(-8,0) fprintf(o,"0 setlinecap 0.023 W 1 1 1 RGB S\n"); DO(m,32) { x=-.25*m; M(x-.1,0)L(x-.2,0) } fprintf(o,"0 setlinecap 0.03 W 0 0 0 RGB S\n"); fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o); system("epstopdf besselh0map.eps"); system(   "open besselh0map.pdf"); getchar; system("killall Preview");//for mac }
 * 1) include 
 * 2) include 
 * 3) define DB double
 * 4) define DO(x,y) for(x=0;x<y;x++)
 * 1) include
 * 1) define Re(x) x.real
 * 2) define Im(x) x.imag
 * 3) define I z_type(0.,1.)
 * 4) include "conto.cin"
 * 5) include "besselj0.cin"
 * 6) include "bessely0.cin"

Latex generator of lables]]
% % \documentclass[12pt]{article} % \paperheight 838px % \paperwidth 1644px % \textwidth 2094px % \textheight 1200px % \topmargin -80px % \oddsidemargin -80px % \usepackage{graphics} % \usepackage{rotating} % \usepackage{color}% \newcommand \sx {\scalebox} % \newcommand \rot {\begin{rotate}} % \newcommand \ero {\end{rotate}} % \newcommand \ing {\includegraphics} % \newcommand \rmi {\mathrm{i}} % \begin{document} % \newcommand \zoomax { % \put(16,820){\sx{4.4}{$y$}} % %\put(16,830){\sx{4}{$4$}} % \put(16,730){\sx{4}{$3$}} % \put(16,630){\sx{4}{$2$}} % \put(16,530){\sx{4}{$1$}} % \put(16,430){\sx{4}{$0$}} % \put(-4, 330){\sx{4}{$-\!1$}} % \put(-4, 230){\sx{4}{$-\!2$}} % \put(-4, 130){\sx{4}{$-\!3$}} % %\put(-4, 130){\sx{4}{$-\!4$}} % % \put(220, 5){\sx{4}{$-\!6$}} % \put(420, 5){\sx{4}{$-\!4$}} % \put(620, 5){\sx{4}{$-\!2$}} % \put(843, 5){\sx{4}{$0$}} % \put(1043, 5){\sx{4}{$2$}} % \put(1243, 5){\sx{4}{$4$}} % \put(1443, 5){\sx{4}{$6$}} % \put(1631,6){\sx{4}{$x$}} % % } % \parindent 0pt % \begin{picture}(1616,816) % %\put(40,30){\sx{10}{\ing{besselj1o}}} % %\put(40,30){\sx{10}{\ing{besselY0mapWide}}} % \put(40,30){\sx{10}{\ing{besselh0map}}} % \zoomax % % \put( 100,426){\sx{6}{\bf cut}} % % %\put(1210,584){\sx{5}{$u\!=\!0$}} % %\put(1210,470){\sx{5}{$u\!=\!0$}} %

\put(390,498){\sx{4}{\rot{0.}$u\!=\!0.2$\ero}} % \put(540,516){\sx{4}{\rot{0.}$v\!=\!0.2$\ero}} %

\put(166,386){\sx{5}{\rot{1}$v\!=\!0$\ero}} % \put(260,300){\sx{5}{\rot{1}$v\!=\!1$\ero}} %

\put(570,390){\sx{5}{\rot{1}$v\!=\!0$\ero}} % \put(590,334){\sx{5}{\rot{1}$v\!=\!-1$\ero}} % \put(590,280){\sx{5}{\rot{1}$v\!=\!-2$\ero}} %

\put(870,490){\rot{33}\sx{4}{$u\!=\!0.2$}\ero} % \put(874,438){\rot{-30}\sx{5}{$u\!=\!1$}\ero} % \put(840,389){\rot{-37}\sx{5}{$u\!=\!2$}\ero} % \put(814,308){\rot{-20}\sx{5}{$u\!=\!3$}\ero} % \put(790,248){\rot{-8}\sx{5}{$u\!=\!4$}\ero} %

\put(1024,518){\sx{4}{$v\!=\!0.2$}} % \put(1018,446){\sx{4}{$v\!=\!0.4$}} % \put(994,364){\sx{5}{$v\!=\!1$}} % \put(984,292){\sx{5}{$v\!=\!2$}} % \put(982,246){\sx{5}{$v\!=\!3$}} %

\put(1174,504){\sx{4}{$u\!=\!-0.2$}} % \put(1144,336){\sx{5}{$u\!=\!-1$}} %

\put(1312,318){\sx{5}{$v\!=\!-1$}} %

\put(1333,480){\sx{4}{$v\!=\!-0.2$}} %

\put(137,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} % \put(292,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} % \put(442,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} % \put(590,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} % \put(732,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %

\put(868,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} % \put(1002,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} % \put(1144,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} % \put(1290,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} % \put(1440,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} % \put(1596,660){\rot{88}\sx{5}{$v\!=\!0$}\ero} % %\put(2932,480){\rot{90}\sx{5}{$v\!=\!0$}\ero} % % % \end{picture} % % \end{document} % %

% % Copyleft 2012 by Dmitrii Kouznetsov