File:Arqnemap11.jpg

From TORI
Revision as of 08:30, 1 December 2018 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Original file(1,189 × 1,178 pixels, file size: 284 KB, MIME type: image/jpeg)

Complex map of function ArqNem, which is inverse function of the Nemtsov function Nem. Values of parameters: $p\!=\!1$, $q\!=\!1$.

$x\!+\!\mathrm i y = \mathrm{ArcNem}_{1,1}(x\!+\mathrm i y)$

The branch points are marked with additional grid lines.

The cut lines are optimised for evaluation of AuNem. One cut goes along $y\!=\!0$, $x<0$. Two other cuts go from zero to the complex branch points. These points are marked with additional grid lines. One more additional grid line indicates the boundary of the domain where the special algorithm "cb" is used for evaluation of the appropriate branch.

where $Ni(p,q)$ are complex soludions of equation $\mathrm{Nem}_{p,q}'=0$. The Nemtsov function is 4th order polynomial of special king:

$\mathrm{Nem}_{p,q}(z)=z+pz^3+qz^4$

For the Nemtsov function, none of the algorithms of construction of superfuncitons reported in the preliminary version of book Superfunctions can be applied "as is", even the algorithm for the superfunction of sin [1].

For this reason, this function needs the special name to handle.

Description

Roots of the four–order polynomial can be expressed through elementary function, as some combination of the square roots and cubic roots. However, the careful handling of the cut lines is required to avoid confusions with the non–physical solutions.

Another inverse funciton is called ArkNem; it has two vertical cut lines.

References

  1. http://mizugadro.mydns.jp/PAPERS/2014susinL.pdf
    http://mizugadro.mydns.jp/PAPERS/2014susin.pdf
    http://www.pphmj.com/references/8246.htm D.Kouznetsov. Super sin. Far East Jourmal of Mathematical Science, v.85, No.2, 2014, pages 219-238.

C++ generator of the map

Files ado.cin and conto.cin should be loaded in order to compile the C++ code below.



#include <math.h>
#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 std::complex<double> z_type;
#define Re(x) x.real()
#define Im(x) x.imag()
#define I z_type(0.,1.)
#include "conto.cin"

// global varaibles
DB NEMTSOVp=1.; //will be changed by nemsingu
DB NEMTSOVq=1.; //will be changed by nemsingu
DB ARCNEMVER=-0.2;
DB NEMTSOVR; // Re(s) such that nemtsov'(s)=0
DB NEMTSOVI; // Im(s) such that nemtsov'(s)=0
DB NEMTSOVr; // should be assigned by memsingu
DB NEMTSOVi; // should be assigned by memsingu

z_type nempq(z_type z){ return z*(1.+z*z*(NEMTSOVp+z*NEMTSOVq)); }
z_type nempq1(z_type z){ return 1.+z*z*((NEMTSOVp*3.)+z*(NEMTSOVq*4.)); }

z_type nem(DB p,DB q,z_type z){ return z*(1.+z*z*(p+z*q)); } // will be suppressed

z_type nemsingu(z_type p,z_type q){ z_type a=sqrt(pow(p,3) + 4.*pow(q,2));
z_type s= z_type(1.,-sqrt(3.)) * ( p + pow(-pow(p,3)+4.*(a-2.*q)*q,1./3.) )
* ( -p + pow(pow(p,3) - 4.*a*q + 8.*pow(q,2),1./3.) )
/ ( 8.*q*pow( -pow(p,3) + 4.*(a-2.*q)*q ,1./3.) ) ;
NEMTSOVp=Re(p); // WARNING: NEMTSOVp is global variable.
NEMTSOVq=Re(q); // WARNING: NEMTSOVq is global variable.
z_type t=nempq(s); // mempq does not use NEMTSOVi .
NEMTSOVR=Re(s); // WARNING: NEMTSOVR is global variable.
NEMTSOVI=Im(s); // WARNING: NEMTSOVI is global variable.
NEMTSOVr=Re(t); // WARNING: NEMTSOVr is global variable.
NEMTSOVi=Im(t); // WARNING: NEMTSOVi is global variable.
return s; // Warning: tested only for real p,q.
}

z_type arcnemaa(z_type z){
z_type p=NEMTSOVp; // WARNING: global variable
z_type q=NEMTSOVq; // WARNING: global variable
z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P;
z_type Q=q-p*p*z; z_type QQ=Q*Q;
z_type r=729.*QQ + 108.*PPP;
        z_type R=sqrt(r);
// z_type R=-I*sqrt(-r);
z_type s3=27.*q - 27.*p*p*z + R;
z_type s=pow(s3,1./3.);
z_type B0=pow(2.,1./3.)*P/(q*s);
z_type B1=pow(54.,-1./3.)*s/q ;
z_type B=B1-B0;
z_type c=0.25*p*p/(q*q)+B;
        z_type C=sqrt(c);
// z_type C=I*sqrt(-c);
return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ;
}

z_type arcnemba(z_type z){
z_type p=NEMTSOVp; // WARNING: global variable
z_type q=NEMTSOVq; // WARNING: global variable
z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P;
z_type Q=q-p*p*z; z_type QQ=Q*Q;
z_type r=729.*QQ + 108.*PPP;
// z_type R=-sqrt(r);
        z_type R=-I*sqrt(-r);
z_type s3=27.*q - 27.*p*p*z + R;
z_type s=pow(s3,1./3.);
z_type B0=pow(2.,1./3.)*P/(q*s);
z_type B1=pow(54.,-1./3.)*s/q ;
z_type B=B1-B0;
z_type c=0.25*p*p/(q*q)+B;
        z_type C=sqrt(c);
// z_type C=I*sqrt(-c);
return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ;
}

z_type arcnemcb(z_type z){
z_type p=NEMTSOVp; // WARNING: global variable
z_type q=NEMTSOVq; // WARNING: global variable
z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P;
z_type Q=q-p*p*z; z_type QQ=Q*Q;
z_type r=729.*QQ + 108.*PPP;
// z_type R=-sqrt(r);
        z_type R=-I*sqrt(-r);
z_type s3=27.*q - 27.*p*p*z + R;
z_type s=pow(s3,1./3.);
z_type B0=pow(2.,1./3.)*P/(q*s);
z_type B1=pow(54.,-1./3.)*s/q ;
z_type B=B1-B0;
z_type c=0.25*p*p/(q*q)+B;
// z_type C=sqrt(c);
        z_type C=I*sqrt(-c);
return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ;
}

z_type arcnemda(z_type z){
z_type p=NEMTSOVp; // WARNING: global variable
z_type q=NEMTSOVq; // WARNING: global variable
z_type P=p+4.*q*z; z_type PP=P*P; z_type PPP=PP*P;
z_type Q=q-p*p*z; z_type QQ=Q*Q;
z_type r=729.*QQ + 108.*PPP;
        z_type R=-sqrt(r);
// z_type R=-I*sqrt(-r);
z_type s3=27.*q - 27.*p*p*z + R;
z_type s=pow(s3,1./3.);
z_type B0=pow(2.,1./3.)*P/(q*s);
z_type B1=pow(54.,-1./3.)*s/q ;
z_type B=B1-B0;
z_type c=0.25*p*p/(q*q)+B;
        z_type C=sqrt(c);
// z_type C=I*sqrt(-c);
return -.25*p/q - .5*C + .5*sqrt( 0.5*p*p/(q*q) - B + (.25*p*p*p+2.*q*q)/(q*q*q*C) ) ;
}

z_type arqnem(z_type z){ DB x=Re(z), y=Im(z);
if(x<ARCNEMVER){if(y>0) return arcnemcb(z); else return conj(arcnemcb(conj(z))); }
if(y>NEMTSOVi) return conj(arcnemba(conj(z)));
if(y<-NEMTSOVi) return arcnemba(z);
if(x> (NEMTSOVr/NEMTSOVi) * fabs(y)) return arcnemaa(z);
return arcnemda(z);
}

z_type ARQNEM(z_type z){z_type s,t,u; s=arqnem(z); // singe Newton iterate
t=z-nempq(s); u=nempq1(s); if(abs(t)>1.e-20 && abs(u)>.001 ) s+=t/u;
return s;}

int main(){ int Max; int j,k,m,n; DB x,y, p,q,P,Q, t, sr,si,tr,ti; z_type z,c,d,s;
P=1; // WARNING: here p,q are already in use in two different meanings for graphics.
Q=1; // WARNING: in this routine, the capital letters are used to denote coefficents
s=nemsingu(P,Q); //WARNING: it assign valies to global variables DB NEMTSOV@
tr=NEMTSOVr;
ti=NEMTSOVi;

printf("P,Q : %6.2lf RI: %6.2lf %20.16lf %20.16lf\n", P, Q,NEMTSOVR,NEMTSOVI);
printf("GLOBAL: %6.2lf ri: %6.2lf %20.16lf %20.16lf\n",NEMTSOVp,NEMTSOVq,NEMTSOVr,NEMTSOVi);

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("arqne114.eps","w");ado(o,402,402);
fprintf(o,"201 201 translate\n 100 100 scale 2 setlinecap\n");
DO(m,M1) X[m]=-2.+.005*(m-.5);
DO(n,N1) Y[n]=-2.+.01*(n-.5);
for(m=-2;m<4;m++){ M(m,-2)L(m,2)}
for(n=-2;n<4;n++){ M(-2,n)L(2,n)}
fprintf(o,".003 W 0 0 0 RGB 2 setlinecap S\n");

M(tr, -2) L(tr, 2)
M(-2, ti) L(2, ti)
M(-2,-ti) L(2,-ti)
fprintf(o,".001 W 0 0 0 RGB S\n");
M(ARCNEMVER, -2) L(ARCNEMVER, 2)
fprintf(o,".0004 W 0 0 0 RGB S\n");


DO(m,M1){x=X[m]; printf("run at x=%6.3f\n",x);
DO(n,N1){y=Y[n]; z=z_type(x,y);

//c=arqnem(z);
c=ARQNEM(z);
//c=nem(P,Q,c);
//p=abs(c-z)/(abs(c)+abs(z)); p=-log(p)/log(10.); if(p>-85 && p<85) g[m*N1+n]=p;
p=Re(c); q=Im(c);
        if(p>-40 && p<40 &&
          q >-40 && q<40 ) { g[m*N1+n]=p; f[m*N1+n]=q; }
        }}

fprintf(o,"1 setlinejoin 1 setlinecap\n");
//p=40.;q=.5;
//#include"plofu.cin"

p=.2;q=.2;

for(m=-9;m<9;m++)for(n=1;n<10;n+=1)conto(o,f,w,v,X,Y,M,N, (m+.1*n),-q,q);
                                                fprintf(o,".002 W 0 .6 0 RGB S\n");
for(m=0;m<19;m++) for(n=1;n<10;n+=1)conto(o,g,w,v,X,Y,M,N,-(m+.1*n),-q,q);
                                                fprintf(o,".002 W .9 0 0 RGB S\n");
for(m=0;m<19;m++) for(n=1;n<10;n+=1)conto(o,g,w,v,X,Y,M,N, (m+.1*n),-q,q);
                                                fprintf(o,".002 W 0 0 .9 RGB S\n");

for(m= 1;m<20;m++) conto(o,f,w,v,X,Y,M,N,(0.-m),-p,p);fprintf(o,".005 W .8 0 0 RGB S\n");
for(m= 1;m<20;m++) conto(o,f,w,v,X,Y,M,N,(0.+m),-p,p);fprintf(o,".005 W 0 0 .8 RGB S\n");
                   conto(o,f,w,v,X,Y,M,N,(0. ),-p,p);fprintf(o,".005 W .5 0 .5 RGB S\n");
for(m=-21;m<22;m++)conto(o,g,w,v,X,Y,M,N,(0.+m),-p,p);fprintf(o,".005 W 0 0 0 RGB S\n");

/*
conto(o,g,w,v,X,Y,M,N,15.8,-p,p);fprintf(o,".004 W .3 0 .3 RGB S\n");
conto(o,g,w,v,X,Y,M,N,15.,-p,p);fprintf(o,".004 W .9 0 .9 RGB S\n");
conto(o,g,w,v,X,Y,M,N,14.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,13.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,12.,-p,p);fprintf(o,".004 W 0 0 .8 RGB S\n");
conto(o,g,w,v,X,Y,M,N,11.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,10.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,9.,-p,p);fprintf(o,".004 W 0 .6 .8 RGB S\n");
conto(o,g,w,v,X,Y,M,N,8.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,7.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,6.,-p,p);fprintf(o,".004 W 0 .7 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,5.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,4.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,3.,-p,p);fprintf(o,".004 W 1 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,2.,-p,p);fprintf(o,".001 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,1.,-p,p);fprintf(o,".006 W .5 0 0 RGB S\n");
*/

/*
fprintf(o,"0 setlinecap\n");
M(M_E,0)L(-10,0) fprintf(o,".08 W 1 1 1 RGB S\n");
DO(m,36){M(M_E-.4*(m),0)L(M_E-.4*(m+.5),0)} fprintf(o,".09 W 1 0 1 RGB S\n");
*/

M(-2,0) L(0,0)
M(tr,ti)L(0,0)L(tr,-ti)
fprintf(o,".01 W 1 1 0 RGB 0 setlinecap S\n");

DO(m,M1)DO(n,N1){g[m*N1+n]=9999; f[m*N1+n]=9999;}

fprintf(o,"showpage\n%cTrailer",'%'); fclose(o);
        system("epstopdf arqne114.eps");
        system( "open arqne114.pdf"); //mac

getchar(); system("killall Preview");// mac
}

Latex generator of labels


 \documentclass[12pt]{article}
 \usepackage{graphics}
 \paperwidth 430pt
 \paperheight 426pt
 \usepackage{geometry}
 \usepackage{rotating}
 \textwidth 1260pt
 \textheight 1260pt
 \topmargin -108pt
 \oddsidemargin -72pt
 \parindent 0pt
 \pagestyle{empty}
\newcommand \ing {\includegraphics}
\newcommand \sx {\scalebox}
\newcommand \rot {\begin{rotate}}
\newcommand \ero {\end{rotate}}
\begin{document}
\begin{picture}(424,424)
%\put(24,20){\ing{arknemmap1010}}
%\put(24,20){\ing{arcnep10q10m4}}
\put(24,20){\ing{arqne114}}
%\put(50,40){\ing{sunem10q10ma6a}}
%\put(50,40){\ing{sunem10q10ma6s}}
\put(11,415){\sx{1.8}{$y$}}
\put(10,314){\sx{1.8}{$1$}}
\put(10,214){\sx{1.8}{$0$}}
\put(-5,114){\sx{1.8}{$-1$}}
\put(-5, 14){\sx{1.8}{$-2$}}
\put( 5, 1){\sx{1.8}{$-2$}}
\put(105, 1){\sx{1.8}{$-1$}}
\put(221, 1){\sx{1.8}{$0$}}
\put(321, 1){\sx{1.8}{$1$}}
\put(418,1){\sx{1.8}{$x$}}
%\put(32,154){\sx{1.9}{\rot{40} $u\!=\!-1$\ero}}
%\put(58,116){\sx{1.8}{\rot{57} $u\!=\!-0.9$\ero}}
%\put(94,100){\sx{1.8}{\rot{70} $u\!=\!-0.8$\ero}}
%\put(130,100){\sx{1.8}{\rot{80} $u\!=\!-0.7$\ero}}
%
%\put(159,260){\sx{1.8}{\rot{87} $u\!=\!-0.6$\ero}}
%\put(172,258){\sx{1.8}{\rot{74} $u\!=\!-0.5$\ero}}
%\put(186,256){\sx{1.8}{\rot{65} $u\!=\!-0.4$\ero}}
%
%\put(211,190){\sx{1.8}{\rot{86} $u\!=\!-0.2$\ero}}
%\put(230,196){\sx{1.8}{\rot{86} $u\!=\!0$\ero}}
\put(250,188){\sx{1.8}{\rot{88} $u\!=\!0.2$\ero}}
\put(276,188){\sx{1.8}{\rot{86} $u\!=\!0.4$\ero}}
\put(298,188){\sx{1.8}{\rot{86} $u\!=\!0.5$\ero}}
\put(324,188){\sx{1.8}{\rot{86} $u\!=\!0.6$\ero}}
\put(358,188){\sx{1.8}{\rot{86} $u\!=\!0.7$\ero}}
\put(402,188){\sx{1.8}{\rot{86} $u\!=\!0.8$\ero}}
%
%\put(60,398){\sx{1.8}{\rot{3} $v\!=\!0.8$\ero}}
%\put(60,350){\sx{1.8}{\rot{6} $v\!=\!0.7$\ero}}
%\put(68,308){\sx{1.8}{\rot{12} $v\!=\!0.6$\ero}}
%\put(88,280){\sx{1.8}{\rot{18} $v\!=\!0.5$\ero}}
%
\put(190,360){\sx{1.8}{\rot{89} $v\!=\!0.6$\ero}}
\put(238,360){\sx{1.8}{\rot{75} $v\!=\!0.5$\ero}}
%
\put(288,364){\sx{1.8}{\rot{56} $v\!=\!0.4$\ero}}
\put(324,334){\sx{1.8}{\rot{43} $v\!=\!0.3$\ero}}
\put(350,298){\sx{1.8}{\rot{30} $v\!=\!0.2$\ero}}
\put(362,258){\sx{1.8}{\rot{15} $v\!=\!0.1$\ero}}
\put(350,178){\sx{1.8}{\rot{-16} $v\!=\!-0.1$\ero}}
\put(334,140){\sx{1.8}{\rot{-29} $v\!=\!-0.2$\ero}}
\put(306,112){\sx{1.8}{\rot{-46} $v\!=\!-0.3$\ero}}
\put(272,86){\sx{1.8}{\rot{-60} $v\!=\!-0.4$\ero}}
%
%\put(46,89){\sx{1.8}{\rot{-11} $v\!=\!-0.7$\ero}}
%\put(44,36){\sx{1.8}{\rot{-2} $v\!=\!-0.8$\ero}}

%\put(148,216){\sx{1.8}{\rot{0.} $v\!=\!0$ \ero}}
%\put(26,250){\sx{1.8}{\rot{0.} \bf cut \ero}}
\put(26,217){\sx{1.8}{\rot{0.} \bf cut \ero}}
%\put(26,183){\sx{1.8}{\rot{0.} \bf cut \ero}}
%\put(238,280){\sx{1.8}{\rot{90} \bf cut \ero}}
%\put(238,140){\sx{1.8}{\rot{90} \bf cut \ero}}

%\put(64,245){\sx{1.8}{\rot{-31} $u\!=\!1$\ero}}
%\put(66,187){\sx{1.8}{\rot{31} $u\!=\!1$\ero}}

\put(118,380){\sx{1.8}{\rot{-69} $v\!=\!0.7$\ero}}%
\put(54,358){\sx{1.8}{\rot{-62} $v\!=\!0.8$\ero}}
\put(54,62){\sx{1.8}{\rot{62} $v\!=\!-0.8$\ero}}
\put(124,50){\sx{1.8}{\rot{69} $v\!=\!-0.7$\ero}}
\put(188,34){\sx{1.8}{\rot{86} $v\!=\!-0.6$\ero}}
\end{picture}
\end{document}

File history

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

Date/TimeThumbnailDimensionsUserComment
current06:10, 1 December 2018Thumbnail for version as of 06:10, 1 December 20181,189 × 1,178 (284 KB)Maintenance script (talk | contribs)Importing image file

There are no pages that use this file.

Metadata