Difference between revisions of "File:Besselh0mapT100.png"

From TORI
Jump to navigation Jump to search
(Importing image file)
 
Line 1: Line 1:
  +
[[Complex map]] of the [[Hankel function]] of zero order, id est, [[BesselH0]]$=H_0$
Importing image file
 
  +
  +
$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.
  +
  +
#include <stdio.h>
  +
#include <stdlib.h>
  +
#define DB double
  +
#define DO(x,y) for(x=0;x<y;x++)
  +
using namespace std;
  +
#include <complex>
  +
typedef complex<double> z_type;
  +
#define Re(x) x.real()
  +
#define Im(x) x.imag()
  +
#define I z_type(0.,1.)
  +
#include "conto.cin"
  +
#include "besselj0.cin"
  +
#include "bessely0.cin"
  +
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<M1;m++) X[m]=-8.+.02*(m-1.);
  +
DO(n,200)Y[n]=-4.+.02*n;
  +
Y[200]=-.001;
  +
Y[201]= .001;
  +
for(n=202;n<N1;n++) Y[n]=-4.+.02*(n-1.);
  +
//DO(m,M1)X[m]=Y[m];
  +
for(m=-8;m<9;m++){if(m==0){M(m,-4.1)L(m,4.1)} else{M(m,-4)L(m,4)}}
  +
for(n=-4;n<5;n++){ M( -8,n)L(8,n)}
  +
fprintf(o,".01 W 0 0 0 RGB S\n");
  +
DO(m,M1)DO(n,N1){g[m*N1+n]=9999; f[m*N1+n]=9999;}
  +
DO(m,M1){x=X[m]; //printf("%5.2f\n",x);
  +
DO(n,N1){y=Y[n]; z=z_type(x,y);
  +
c=BesselJ0(z)+ I*BesselY0(z);
  +
p=Re(c); q=Im(c);
  +
if(p>-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
  +
}
  +
  +
==Latex generator of lables]]==
  +
  +
%<nowiki>%<br>
  +
\documentclass[12pt]{article} %<br>
  +
\paperheight 838px %<br>
  +
\paperwidth 1644px %<br>
  +
\textwidth 2094px %<br>
  +
\textheight 1200px %<br>
  +
\topmargin -80px %<br>
  +
\oddsidemargin -80px %<br>
  +
\usepackage{graphics} %<br>
  +
\usepackage{rotating} %<br>
  +
\usepackage{color}%<br>
  +
\newcommand \sx {\scalebox} %<br>
  +
\newcommand \rot {\begin{rotate}} %<br>
  +
\newcommand \ero {\end{rotate}} %<br>
  +
\newcommand \ing {\includegraphics} %<br>
  +
\newcommand \rmi {\mathrm{i}} %<br>
  +
\begin{document} %<br>
  +
\newcommand \zoomax { %<br>
  +
\put(16,820){\sx{4.4}{$y$}} %<br>
  +
%\put(16,830){\sx{4}{$4$}} %<br>
  +
\put(16,730){\sx{4}{$3$}} %<br>
  +
\put(16,630){\sx{4}{$2$}} %<br>
  +
\put(16,530){\sx{4}{$1$}} %<br>
  +
\put(16,430){\sx{4}{$0$}} %<br>
  +
\put(-4, 330){\sx{4}{$-\!1$}} %<br>
  +
\put(-4, 230){\sx{4}{$-\!2$}} %<br>
  +
\put(-4, 130){\sx{4}{$-\!3$}} %<br>
  +
%\put(-4, 130){\sx{4}{$-\!4$}} %<br>
  +
%<br>
  +
\put(220, 5){\sx{4}{$-\!6$}} %<br>
  +
\put(420, 5){\sx{4}{$-\!4$}} %<br>
  +
\put(620, 5){\sx{4}{$-\!2$}} %<br>
  +
\put(843, 5){\sx{4}{$0$}} %<br>
  +
\put(1043, 5){\sx{4}{$2$}} %<br>
  +
\put(1243, 5){\sx{4}{$4$}} %<br>
  +
\put(1443, 5){\sx{4}{$6$}} %<br>
  +
\put(1631,6){\sx{4}{$x$}} %<br>
  +
%<br>
  +
} %<br>
  +
\parindent 0pt %<br>
  +
\begin{picture}(1616,816) %<br>
  +
%\put(40,30){\sx{10}{\ing{besselj1o}}} %<br>
  +
%\put(40,30){\sx{10}{\ing{besselY0mapWide}}} %<br>
  +
\put(40,30){\sx{10}{\ing{besselh0map}}} %<br>
  +
\zoomax %<br>
  +
%<br>
  +
\put( 100,426){\sx{6}{\bf cut}} %<br>
  +
%<br>
  +
%\put(1210,584){\sx{5}{$u\!=\!0$}} %<br>
  +
%\put(1210,470){\sx{5}{$u\!=\!0$}} %<br>
  +
  +
\put(390,498){\sx{4}{\rot{0.}$u\!=\!0.2$\ero}} %<br>
  +
\put(540,516){\sx{4}{\rot{0.}$v\!=\!0.2$\ero}} %<br>
  +
  +
\put(166,386){\sx{5}{\rot{1}$v\!=\!0$\ero}} %<br>
  +
\put(260,300){\sx{5}{\rot{1}$v\!=\!1$\ero}} %<br>
  +
  +
\put(570,390){\sx{5}{\rot{1}$v\!=\!0$\ero}} %<br>
  +
\put(590,334){\sx{5}{\rot{1}$v\!=\!-1$\ero}} %<br>
  +
\put(590,280){\sx{5}{\rot{1}$v\!=\!-2$\ero}} %<br>
  +
  +
\put(870,490){\rot{33}\sx{4}{$u\!=\!0.2$}\ero} %<br>
  +
\put(874,438){\rot{-30}\sx{5}{$u\!=\!1$}\ero} %<br>
  +
\put(840,389){\rot{-37}\sx{5}{$u\!=\!2$}\ero} %<br>
  +
\put(814,308){\rot{-20}\sx{5}{$u\!=\!3$}\ero} %<br>
  +
\put(790,248){\rot{-8}\sx{5}{$u\!=\!4$}\ero} %<br>
  +
  +
\put(1024,518){\sx{4}{$v\!=\!0.2$}} %<br>
  +
\put(1018,446){\sx{4}{$v\!=\!0.4$}} %<br>
  +
\put(994,364){\sx{5}{$v\!=\!1$}} %<br>
  +
\put(984,292){\sx{5}{$v\!=\!2$}} %<br>
  +
\put(982,246){\sx{5}{$v\!=\!3$}} %<br>
  +
  +
\put(1174,504){\sx{4}{$u\!=\!-0.2$}} %<br>
  +
\put(1144,336){\sx{5}{$u\!=\!-1$}} %<br>
  +
  +
\put(1312,318){\sx{5}{$v\!=\!-1$}} %<br>
  +
  +
\put(1333,480){\sx{4}{$v\!=\!-0.2$}} %<br>
  +
  +
\put(137,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
\put(292,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br>
  +
\put(442,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
\put(590,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br>
  +
\put(732,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
  +
\put(868,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br>
  +
\put(1002,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
\put(1144,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} %<br>
  +
\put(1290,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
\put(1440,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} %<br>
  +
\put(1596,660){\rot{88}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
%\put(2932,480){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br>
  +
% %<br>
  +
\end{picture} % %<br>
  +
\end{document} % %<br>
  +
  +
%</nowiki>
  +
% Copyleft 2012 by Dmitrii Kouznetsov
  +
  +
  +
[[Category:BesselH0]]
  +
[[Category:Complex map]]
  +
[[Category:Bessel function]]
  +
[[Category:C++]]
  +
[[Category:Latex]]

Revision as of 09:42, 21 June 2013

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.

#include <stdio.h>
#include <stdlib.h>
#define DB double
#define DO(x,y) for(x=0;x<y;x++)
using namespace std;
#include <complex>
typedef complex<double> z_type;
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
#include "conto.cin"
#include "besselj0.cin"
#include "bessely0.cin"
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<M1;m++) X[m]=-8.+.02*(m-1.);
DO(n,200)Y[n]=-4.+.02*n;
      Y[200]=-.001;
      Y[201]= .001;
for(n=202;n<N1;n++) Y[n]=-4.+.02*(n-1.);
//DO(m,M1)X[m]=Y[m];
for(m=-8;m<9;m++){if(m==0){M(m,-4.1)L(m,4.1)} else{M(m,-4)L(m,4)}}
for(n=-4;n<5;n++){     M(  -8,n)L(8,n)}
fprintf(o,".01 W 0 0 0 RGB S\n");
DO(m,M1)DO(n,N1){g[m*N1+n]=9999; f[m*N1+n]=9999;}
DO(m,M1){x=X[m]; //printf("%5.2f\n",x);
DO(n,N1){y=Y[n]; z=z_type(x,y);
      c=BesselJ0(z)+ I*BesselY0(z);
     p=Re(c);    q=Im(c);        
     if(p>-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
}

Latex generator of lables]]

%%<br> \documentclass[12pt]{article} %<br> \paperheight 838px %<br> \paperwidth 1644px %<br> \textwidth 2094px %<br> \textheight 1200px %<br> \topmargin -80px %<br> \oddsidemargin -80px %<br> \usepackage{graphics} %<br> \usepackage{rotating} %<br> \usepackage{color}%<br> \newcommand \sx {\scalebox} %<br> \newcommand \rot {\begin{rotate}} %<br> \newcommand \ero {\end{rotate}} %<br> \newcommand \ing {\includegraphics} %<br> \newcommand \rmi {\mathrm{i}} %<br> \begin{document} %<br> \newcommand \zoomax { %<br> \put(16,820){\sx{4.4}{$y$}} %<br> %\put(16,830){\sx{4}{$4$}} %<br> \put(16,730){\sx{4}{$3$}} %<br> \put(16,630){\sx{4}{$2$}} %<br> \put(16,530){\sx{4}{$1$}} %<br> \put(16,430){\sx{4}{$0$}} %<br> \put(-4, 330){\sx{4}{$-\!1$}} %<br> \put(-4, 230){\sx{4}{$-\!2$}} %<br> \put(-4, 130){\sx{4}{$-\!3$}} %<br> %\put(-4, 130){\sx{4}{$-\!4$}} %<br> %<br> \put(220, 5){\sx{4}{$-\!6$}} %<br> \put(420, 5){\sx{4}{$-\!4$}} %<br> \put(620, 5){\sx{4}{$-\!2$}} %<br> \put(843, 5){\sx{4}{$0$}} %<br> \put(1043, 5){\sx{4}{$2$}} %<br> \put(1243, 5){\sx{4}{$4$}} %<br> \put(1443, 5){\sx{4}{$6$}} %<br> \put(1631,6){\sx{4}{$x$}} %<br> %<br> } %<br> \parindent 0pt %<br> \begin{picture}(1616,816) %<br> %\put(40,30){\sx{10}{\ing{besselj1o}}} %<br> %\put(40,30){\sx{10}{\ing{besselY0mapWide}}} %<br> \put(40,30){\sx{10}{\ing{besselh0map}}} %<br> \zoomax %<br> %<br> \put( 100,426){\sx{6}{\bf cut}} %<br> %<br> %\put(1210,584){\sx{5}{$u\!=\!0$}} %<br> %\put(1210,470){\sx{5}{$u\!=\!0$}} %<br> \put(390,498){\sx{4}{\rot{0.}$u\!=\!0.2$\ero}} %<br> \put(540,516){\sx{4}{\rot{0.}$v\!=\!0.2$\ero}} %<br> \put(166,386){\sx{5}{\rot{1}$v\!=\!0$\ero}} %<br> \put(260,300){\sx{5}{\rot{1}$v\!=\!1$\ero}} %<br> \put(570,390){\sx{5}{\rot{1}$v\!=\!0$\ero}} %<br> \put(590,334){\sx{5}{\rot{1}$v\!=\!-1$\ero}} %<br> \put(590,280){\sx{5}{\rot{1}$v\!=\!-2$\ero}} %<br> \put(870,490){\rot{33}\sx{4}{$u\!=\!0.2$}\ero} %<br> \put(874,438){\rot{-30}\sx{5}{$u\!=\!1$}\ero} %<br> \put(840,389){\rot{-37}\sx{5}{$u\!=\!2$}\ero} %<br> \put(814,308){\rot{-20}\sx{5}{$u\!=\!3$}\ero} %<br> \put(790,248){\rot{-8}\sx{5}{$u\!=\!4$}\ero} %<br> \put(1024,518){\sx{4}{$v\!=\!0.2$}} %<br> \put(1018,446){\sx{4}{$v\!=\!0.4$}} %<br> \put(994,364){\sx{5}{$v\!=\!1$}} %<br> \put(984,292){\sx{5}{$v\!=\!2$}} %<br> \put(982,246){\sx{5}{$v\!=\!3$}} %<br> \put(1174,504){\sx{4}{$u\!=\!-0.2$}} %<br> \put(1144,336){\sx{5}{$u\!=\!-1$}} %<br> \put(1312,318){\sx{5}{$v\!=\!-1$}} %<br> \put(1333,480){\sx{4}{$v\!=\!-0.2$}} %<br> \put(137,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br> \put(292,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br> \put(442,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br> \put(590,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br> \put(732,664){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br> \put(868,664){\rot{90}\sx{5}{$u\!=\!0$}\ero} %<br> \put(1002,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} %<br> \put(1144,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} %<br> \put(1290,660){\rot{87}\sx{5}{$v\!=\!0$}\ero} %<br> \put(1440,660){\rot{87}\sx{5}{$u\!=\!0$}\ero} %<br> \put(1596,660){\rot{88}\sx{5}{$v\!=\!0$}\ero} %<br> %\put(2932,480){\rot{90}\sx{5}{$v\!=\!0$}\ero} %<br> % %<br> \end{picture} % %<br> \end{document} % %<br> % % Copyleft 2012 by Dmitrii Kouznetsov

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current17:50, 20 June 2013Thumbnail for version as of 17:50, 20 June 20132,284 × 1,164 (1.65 MB)Maintenance script (talk | contribs)Importing image file

The following page uses this file:

Metadata