File:Arknemmap11.jpg

From TORI
Jump to: navigation, search
Original file(892 × 884 pixels, file size: 248 KB, MIME type: image/jpeg)

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

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

The branch points are marked with additional grid lines.

The cut lines are drawn with yellow.

The Nemtsov function is 4th order polynomial of special king:

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

For this 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.

The preliminary version of this function is called ArcNem; it has all the cut lines horizontal. It happened to be not so good for evaluation of AuNem, which is Abelfunction of the Nemtsov function $\mathrm{Nem}(z)=z+pz^3+qz^4$

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



#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 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*(3.*NEMTSOVp+z*(4*NEMTSOVq)); }

z_type arcnem0pq(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 arcnemRpq(z_type z){
//#include"arcnem2.txt"
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 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 arknempq(z_type z){ DB x=Re(z); DB y=Im(z);
if(x>NEMTSOVr){ if(y> NEMTSOVi) return arcnemRpq(z);
                if(y<-NEMTSOVi) return conj(arcnemRpq(conj(z))); }
// if(x*x+y*y<.25*(NEMTSOVr*NEMTSOVr+NEMTSOVi*NEMTSOVi)) return arcnemo(z);
return arcnem0pq(z);}

z_type arknem(z_type z){z_type s,t,u; s=arknempq(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;}

//#include "arknem.cin"

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);
// arcnemogen(P,Q); DO(n,42) printf("nemins[%2d]= %30.14lf\n",n,ARCNEMo42[n]);
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("arknemmap1010.eps","w");ado(o,402,402);
fprintf(o,"201 201 translate\n 100 100 scale\n");
DO(m,M1) X[m]=-2.+.005*(m-.5);
DO(n,N1) Y[n]=-2.+.01*(n-.5);
for(m=-2;m<3;m++){ M(m,-2)L(m,2)}
for(n=-2;n<3;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");
DO(m,M1)DO(n,N1){g[m*N1+n]=9999; f[m*N1+n]=9999;}
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=arknem(z);
//c=nempq(c);
//d=z;
//p=abs(c-d)/(abs(c)+abs(d)); 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");
//#include"plofu.cin"
p=.1;q=.1;
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,".003 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,".003 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,".003 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,".008 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,".008 W 0 0 .8 RGB S\n");
                   conto(o,f,w,v,X,Y,M,N,(0. ),-p,p);fprintf(o,".008 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,".008 W 0 0 0 RGB S\n");

/*
p=2; // Why does not it draw the circle "16" ?
conto(o,g,w,v,X,Y,M,N,16.,-4,4);fprintf(o,".002 W .3 0 .3 RGB S\n");
conto(o,g,w,v,X,Y,M,N,15.,-p,p);fprintf(o,".004 W 0 0 1 RGB S\n");
conto(o,g,w,v,X,Y,M,N,14.,-p,p);fprintf(o,".002 W 0 1 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,13.,-p,p);fprintf(o,".002 W 1 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,12.,-p,p);fprintf(o,".004 W 0 0 .6 RGB S\n");
conto(o,g,w,v,X,Y,M,N,11.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,10.,-p,p);fprintf(o,".002 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 .6 RGB S\n");
conto(o,g,w,v,X,Y,M,N,8.,-p,p);fprintf(o,".002 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,7.,-p,p);fprintf(o,".002 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,".002 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,4.,-p,p);fprintf(o,".002 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,".01 W 0 0 0 RGB S\n");
conto(o,g,w,v,X,Y,M,N,1.,-p,p);fprintf(o,".03 W .5 0 0 RGB S\n");
*/

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

fprintf(o,"showpage\n%cTrailer",'%'); fclose(o);
        system("epstopdf arknemmap1010.eps");
        system( "open arknemmap1010.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(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(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(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(58,217){\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}}
\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 2018892 × 884 (248 KB)Maintenance script (talk | contribs)Importing image file
  • You cannot overwrite this file.

There are no pages that link to this file.

Metadata