File:Arqnemap11.jpg
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
- ↑
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/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 06:10, 1 December 2018 | 1,189 × 1,178 (284 KB) | Maintenance script (talk | contribs) | Importing image file |
You cannot overwrite this file.
File usage
There are no pages that use this file.