File:Koriplot.jpg

Explicit plot of function kori.

$y=\mathrm{kori}(x)$

For $x\!\ne \!1$, the representation through the Bessel function BesselJ0 is valid,

$\mathrm{kori}(x)=\displaystyle \frac{J_0\big(L\, \sqrt{x}\big)}{1-x}$

However, the implementation through the built–in C++ function double j0(double) happen to be not so good for argument in vicinity of unity, and even worse for negative values of the argument. For this reason, the double and long double implantations of kori is suggested for the range, roughly, from -6 to 6. The long double version is mainly for the testing, because the double version already provides of order of 15 decimal digits of $\mathrm{kori}(z)$ while $|z|<6$, and still of order of 10 significant figures in the range of the figure, that is sufficient to generate the camera ready copy. As a verification, the direct implementation through the C++ function j0 is shown with thin black curve, that can be seen at the zooming–in; however, at the graphical resolution, it looks to be just at the centre of the thick red line, generated through the expansion.

C++ generator of curves
// File ado.cin should be loaded in order of compile the code below: //using namespace std; typedef std::complex z_type;
 * 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) define M(x,y) fprintf(o,"%6.4lf %6.4lf M\n",0.+x,0.+y);
 * 5) define L(x,y) fprintf(o,"%6.4lf %6.4lf L\n",0.+x,0.+y);

%#include "korifit76.cin"
 * 1) include "ado.cin"

long double L= 2.4048255576957727686216318793265 ;

DB LN[9]={ 0.,     2.404825557695773, 5.5200781102863115, 8.653727912911013,11.791534439014281,14.930917708487787, 18.071063967910924,21.21163662987926, 24.352471530749302};

double korid(double x){ int n,m; double s; double c[16]={1, -0.256005011219941993570670508019, 0.0281978125768042007057113441199, -0.00181258393780241662780680613867, 0.0000775822332475845672943781286224, -2.38609544935449493722623606533e-6, 5.5465254159392191445565645766e-8, -1.01054597146460752951273870914e-9, 1.48348772753372628782330712313e-11, -1.79332434839872451210764178471e-13, 1.81697031752603393402790223753e-15, -1.56569115453044785387543614077e-17, 1.16170076283001586118141461154e-19, -7.50065787627627390138399503073e-22, 4.25298321710799220467323756624e-24, -2.13477668517290665487301104539e-26}; m=15; s=c[m]*x; for(n=m-1;n>0;n--) {s+=c[n]; s*=x;} return (1+s)*(1-0.189791479516754136723328431595*x); }

int main{int m,n,i; double x,y,z,t,u; FILE *o; long double X,Y,Z,T,U;

o=fopen("koriplo.eps","w"); ado(o,1420,480); fprintf(o,"410 10 translate 100 100 scale 2 setlinecap 1 setlinejoin\n");

for(m=-4;m<11;m+=1) {M(m,0)L(m,4)} for(n=0;n<5;n+=1){M(-4,n)L(10,n)} fprintf(o,"0.01 W S\n");

for(m=2;m<4;m++){ x=LN[m]/LN[1]; x*=x; M(x,0)L(x,1) } fprintf(o,"0.004 W 1 0 1 RGB S\n");

for(n=0;n<1430;n+=10){ x=-4.1+.01*n; y=korid(x); if(n==0) M(x,y) else L(x,y);} fprintf(o,"1 0 0 RGB .03 W S\n"); for(n=0;n<1030;n+=10){x=.01*(n+.1);y=j0(L*sqrt(x))/(1.-x);if(n==0) M(x,y) else L(x,y);} fprintf(o,"0 0 0 RGB .0008 W S\n");// i0 is not built-in function! //for(n=0;n<720;n+=1){ x=.01*(n+.5); y=korid(x)-j0(L*sqrt(x))/(1.-x); y*=1.e15; if(n==0) M(x,y) else L(x,y);} //fprintf(o,"0 0 0 RGB .0008 W S\n");

fprintf(o,"showpage\n%c%cTrailer\n",'%','%'); fclose(o); system("epstopdf koriplo.eps"); system(   "open koriplo.pdf"); return 0;}

Latex generator of labels
\documentclass[12pt]{article} \usepackage{geometry} \usepackage{graphics} \usepackage{rotating} %\paperwidth 570pt \paperwidth 1420pt %\paperheight 138pt \paperheight 500pt \textwidth 420pt \textheight 600pt \topmargin -108pt \oddsidemargin -76pt \newcommand \ds {\displaystyle} \newcommand \sx {\scalebox} \newcommand \rme {\mathrm{e}} \newcommand \rot {\begin{rotate}} \newcommand \ero {\end{rotate}} \newcommand \ing {\includegraphics} \pagestyle{empty} \parindent 0pt \begin{document} \begin{picture}(1420,498) \put(0,20){\ing{koriplo}} \put(384,468){\sx{2.8}{$y\!=\!\mathrm{kori}(x)$}} \put(384,418){\sx{2.8}{$4$}} \put(384,318){\sx{2.8}{$3$}} \put(384,218){\sx{2.8}{$2$}} \put(384,118){\sx{2.8}{$1$}} \put(88,0){\sx{2.8}{$-3$}} \put(188,0){\sx{2.8}{$-2$}} \put(288,0){\sx{2.8}{$-1$}} \put(406,0){\sx{2.8}{$0$}} \put(506,0){\sx{2.8}{$1$}} \put(606,0){\sx{2.8}{$2$}} \put(706,0){\sx{2.8}{$3$}} \put(806,0){\sx{2.8}{$4$}} \put(906,0){\sx{2.8}{$5$}} \put(1006,0){\sx{2.8}{$6$}} \put(1106,0){\sx{2.8}{$7$}} \put(1206,0){\sx{2.8}{$8$}} \put(1306,0){\sx{2.8}{$9$}} \put(1400,0){\sx{2.9}{$x$}} %\put(112,58){\rot{-33}\sx{1.4}{$y\!=\! \mathrm{mori}(x)$}\ero} \end{picture}\end{document}