Difference between revisions of "File:AfacmapT800.png"
(add description ; refs ; pre ; keywords) |
|||
| Line 1: | Line 1: | ||
| + | {{oq|AfacmapT800.png|Original file (2,355 × 2,334 pixels, file size: 1.03 MB, MIME type: image/png)}} |
||
| ⚫ | |||
| + | |||
| ⚫ | |||
| + | |||
| + | \[ |
||
| + | u+\mathrm iv = \mathrm{ArcFactorial}(x\!+\!\mathrm i y) |
||
| + | \] |
||
| + | |||
| + | This map is used as Fig.8.4 at page 93 of book |
||
| + | «[[Superfunctions]]»<ref> |
||
| + | https://www.amazon.co.jp/Superfunctions-Non-integer-holomorphic-functions-superfunctions/dp/6202672862 Dmitrii Kouznetsov. [[Superfunctions]]: Non-integer iterates of holomorphic functions. [[Tetration]] and other [[superfunction]]s. Formulas,algorithms,tables,graphics - 2020/7/28 |
||
| + | </ref><ref>https://mizugadro.mydns.jp/BOOK/468.pdf Dmitrii Kouznetsov (2020). [[Superfunctions]]: Non-integer iterates of holomorphic functions. [[Tetration]] and other [[superfunction]]s. Formulas, algorithms, tables, graphics. Publisher: [[Lambert Academic Publishing]]. |
||
| + | </ref> |
||
| + | <br> |
||
| + | in order to remind the well-known special function; |
||
| + | but also as a test for the complex double numeric implementation of [[ArcFactorial]]. |
||
| + | |||
| + | The similar map appears also in article about [[Square root of factorial]] |
||
| + | <ref> |
||
| + | https://link.springer.com/article/10.3103/S0027134910010029 <br> |
||
| + | http://mizugadro.mydns.jp/PAPERS/2010superfae.pdf |
||
| + | D.Kouznetsov, H.Trappmann. Superfunctions and square root of factorial. Moscow University Physics Bulletin, 2010, v.65, No.1, p.6-12. (Russian version: p.8-14) |
||
| + | </ref>.<br> |
||
| + | No precedent complex double implementation of [[ArcFactorial]] is found at the free access sites. |
||
| + | |||
| + | In publications mentioned, [[Factorial]] is considered as the |
||
| + | [[Transfer function]]. For this function, the |
||
| + | [[Superfunction]] ([[SuFac]]) and the |
||
| + | [[Abelfunction]] ([[AuFac]]) are constructed with [[Regular iteration]] |
||
| + | at the [[Fixed point]] \(L=2\). Then the \(n\)th iterate of [[Factorial]] |
||
| + | is expressed as follows: |
||
| + | |||
| + | \[ \mathrm{Factorial}^n(z)=\mathrm{SuFac}\big( n + \mathrm{AuFac}(z)\big) |
||
| + | \] |
||
| + | |||
| + | For the imlementation of [[SuFac]] and [[AuFac]], the [[ArcFactorial]] (shown in the map) needs to be implemented. Plotting the [[complex map]] is important part of testing |
||
| + | of the numerical implementation of a holomorphic function. |
||
==C++ generator of curves== |
==C++ generator of curves== |
||
| Line 90: | Line 126: | ||
} |
} |
||
| − | === |
+ | ===Main=== |
Files [[fac.cin]], [[afacc.cin]] above and [[ado.cin]] and [[conto.cin]] should be loaded in the working directory for compillation of the [[C++]] code below: |
Files [[fac.cin]], [[afacc.cin]] above and [[ado.cin]] and [[conto.cin]] should be loaded in the working directory for compillation of the [[C++]] code below: |
||
| Line 167: | Line 203: | ||
% File [[afacmap.pdf]] should be generated with the code above in order to compile the [[Latex]] document below: |
% File [[afacmap.pdf]] should be generated with the code above in order to compile the [[Latex]] document below: |
||
| − | %< |
+ | %<pre> %<br> |
\documentclass[12pt]{article} %<br> |
\documentclass[12pt]{article} %<br> |
||
\usepackage{geometry} %<br> |
\usepackage{geometry} %<br> |
||
| Line 243: | Line 279: | ||
\end{picture} %<br> |
\end{picture} %<br> |
||
\end{document} %<br> |
\end{document} %<br> |
||
| − | %</ |
+ | %</pre> |
| + | |||
| + | ==References== |
||
| + | {{ref}} |
||
| + | |||
| + | {{fer}} |
||
| + | ==Keywords== |
||
| + | |||
| + | <b>«[[ArcFactorial]]»</b>, |
||
| + | «[[Factorial]]», |
||
| + | «[[Gamma function]]», |
||
| + | «[[Table of superfunctions]]», |
||
| + | «[[Transfer function]]», |
||
| + | «[[Superfunctions]]», |
||
[[Category:ArcFactorial]] |
[[Category:ArcFactorial]] |
||
| ⚫ | |||
| + | [[Category:Book]] |
||
| + | [[Category:BookPlot]] |
||
| + | [[Category:C++]] |
||
[[Category:Complex map]] |
[[Category:Complex map]] |
||
| + | [[Category:Gamma function]] |
||
[[Category:Inverse function]] |
[[Category:Inverse function]] |
||
| ⚫ | |||
[[Category:Latex]] |
[[Category:Latex]] |
||
| + | [[Category:Test]] |
||
| + | [[Category:Superfunctions]] |
||
| + | [[Category:Transferfunction]] |
||
Revision as of 14:15, 22 August 2025
\[ u+\mathrm iv = \mathrm{ArcFactorial}(x\!+\!\mathrm i y) \]
This map is used as Fig.8.4 at page 93 of book
«Superfunctions»[1][2]
in order to remind the well-known special function;
but also as a test for the complex double numeric implementation of ArcFactorial.
The similar map appears also in article about Square root of factorial
[3].
No precedent complex double implementation of ArcFactorial is found at the free access sites.
In publications mentioned, Factorial is considered as the Transfer function. For this function, the Superfunction (SuFac) and the Abelfunction (AuFac) are constructed with Regular iteration at the Fixed point \(L=2\). Then the \(n\)th iterate of Factorial is expressed as follows:
\[ \mathrm{Factorial}^n(z)=\mathrm{SuFac}\big( n + \mathrm{AuFac}(z)\big) \]
For the imlementation of SuFac and AuFac, the ArcFactorial (shown in the map) needs to be implemented. Plotting the complex map is important part of testing of the numerical implementation of a holomorphic function.
C++ generator of curves
fac.cin
// The code below should be stored as fac.cin
z_type fracti(z_type z){ z_type s; int n; DB a[17]=
{0.0833333333333333333, 0.0333333333333333333, .252380952380952381, .525606469002695418,
1.01152306812684171, 1.51747364915328740, 2.26948897420495996, 3.00991738325939817,
4.02688719234390123, 5.00276808075403005, 6.28391137081578218, 7.49591912238403393,
9.04066023436772670, 10.4893036545094823, 12.2971936103862059, 13.9828769539924302,
16.0535514167049355 };
s=a[16]/(z+19./(z+25./(z))); for(n=15;n>=0;n--) s=a[n]/(z+s);
return s + log(2.*M_PI)/2. - z + (z+.5)*log(z);
} // logfactorial for large values of argument except vicinity of negative part of real axis)
z_type infac0(z_type z){ z_type s; int n; DB c[28]={ 1.,
0.57721566490153286061, -0.65587807152025388108,
-0.042002635034095235529, 0.16653861138229148950,
-0.042197734555544336748, -0.0096219715278769735621,
0.0072189432466630995424, -0.0011651675918590651121,
-0.00021524167411495097282, 0.00012805028238811618615,
-0.000020134854780788238656, -0.0000012504934821426706573,
0.0000011330272319816958824, -2.0563384169776071035e-7,
6.1160951044814158179e-9, 5.0020076444692229301e-9,
-1.1812745704870201446e-9, 1.0434267116911005105e-10,
7.7822634399050712540e-12, -3.6968056186422057082e-12,
5.1003702874544759790e-13, -2.0583260535665067832e-14,
-5.3481225394230179824e-15, 1.2267786282382607902e-15,
-1.1812593016974587695e-16, 1.1866922547516003326e-18,
1.4123806553180317816e-18};
s=c[27]*z; for(n=26;n>0;n--) {s+=c[n]; s*=z;}
s+=c[0]; return s;}
z_type fac0(z_type z){ return 1./infac0(z);}
z_type expaun(z_type z) {int n,m; DB x,y;
x=Re(z);if(x<-.5) return expaun(z+1.)-log(z+1.);
if(x>.6) return expaun(z-1.)+log(z);
y=Im(z); if(fabs(y)>1.4)return expaun(z/2.)+expaun(z/2.-.5)+z*log(2.)-log(sqrt(M_PI));
return -log(infac0(z)); }
z_type lof(z_type z){DB x,y; x=Re(z); y=Im(z);
if(fabs(y)>5. ) return fracti(z);
if(x>0 && x*x+y*y>25.) return fracti(z);
return expaun(z); } // lof(z) returns 16 digits of complex logfactorial.
z_type infac1(z_type z){return infac0(z/2.)*infac0((z-1.)/2.)*sqrt(M_PI)/exp(log(2.)*z);}
z_type infac2(z_type z){return infac1(z/2.)*infac1((z-1.)/2.)*sqrt(M_PI)/exp(log(2.)*z);}
z_type infac3(z_type z){return infac2(z/2.)*infac2((z-1.)/2.)*sqrt(M_PI)/exp(log(2.)*z);}
z_type inhalf(z_type z){DB x=Re(z); DB y=Im(z); DB r=x*x+y*y;
if(r<2.) return infac0(z);
if(r<5.) return infac1(z);
return infac2(z); }
z_type infacmi(z_type z){ if(Re(z)> 1.) return infacmi(z-1.)/z; return inhalf(z);}
z_type infaclu(z_type z){ if(Re(z)<-.5) return infaclu(z+1.)*(z+1.);return inhalf(z);}
z_type infac(z_type z){DB x=Re(z),y=Im(z),t=x*x+y*y; if(t<1.)return infac0(z);
if( fabs(y)> 5. || (x>0 && t>25) ) return exp(-fracti(z));
if( x>0 ) return infacmi(z);
return infaclu(z);}
z_type fac(z_type z){ DB x=Re(z),y=Im(z),t=x*x+y*y; if(t<2.)return 1./infac0(z);
if( (x>0. && t>25.) || fabs(y)>5.) return exp(fracti(z));
if(x>0) return 1./infacmi(z);
return 1./infaclu(z);}
afacc.cin
// The code below should be stored as afacc.cin
z_type afacb(z_type z){
DB z0=0.461632144968362341262659542325721328468196204;
DB F0=-0.12148629053584960809551455717769158215135617313;
DB c2=.483836122723810585213722380854825370205628608;
DB p=0.2090973242496979633924701135209125815611056;
DB q=0.0565790271828431799463572817754001404669620;
DB A=0.0008685913050832152753870514845664790993724;
DB B=0.0002046727298252365296379380008904113017495;
z_type t=(log(z)-F0)/c2; z_type v=sqrt(t);
z_type u=v*(1.+v*(p+A*t))
/(1.+v*(q+B*t)) + z0; return u;}
z_type afacc(z_type z){ z_type a,c,d; a=afacb(z);
d=facp(a); c=z-fac(a); a+=c/d; if(abs(c)<1.e-12) return a;
d=facp(a); c=z-fac(a); a+=c/d; if(abs(c)<1.e-12) return a;
d=facp(a); c=z-fac(a); a+=c/d; if(abs(c)<1.e-12) return a;
d=facp(a); c=z-fac(a); a+=c/d; if(abs(c)<1.e-12) return a;
d=facp(a); c=z-fac(a); a+=c/d; return a;
}
Main
Files fac.cin, afacc.cin above and ado.cin and conto.cin should be loaded in the working directory for compillation of 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 complex<double> z_type; #define Re(x) x.real() #define Im(x) x.imag() #define I z_type(0.,1.) #include "fac.cin" //#include "sinc.cin" #include "facp.cin" #include "afacc.cin" //#include "superfac.cin" #include "conto.cin"
main(){ int j,k,m,n; DB x,y, p,q, t; z_type z,c,d;
int M=400,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("fig2b.eps","w");ado(o,402,402);
FILE *o;o=fopen("afacmap.eps","w");ado(o,402,402);
fprintf(o,"201 201 translate\n 20 20 scale\n");
DO(m,M1) X[m]=-8.+.04*(m);
DO(n,200)Y[n]=-8.+.04*n;
Y[200]=-.01;
Y[201]= .01;
for(n=202;n<N1;n++) Y[n]=-8.+.04*(n-1.);
for(m=-8;m<9;m++){if(m==0){M(m,-8.5)L(m,8.5)} else{M(m,-8)L(m,8)}}
for(n=-8;n<9;n++){ M( -8,n)L(8,n)}
fprintf(o,".008 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=afacc(z);
// c=fac(z);
// c=superfac(z);
// p=abs(c-d)/(abs(c)+abs(d)); p=-log(p)/log(10.)-1.;
p=Re(c);q=Im(c);
if(p>-6.9 && p<6.9 &&
// (fabs(y)>.034 ||x>-.9 ||fabs(x-int(x))>1.e-3) &&
q>-6.9 && q<6.9 //&& fabs(q)> 1.e-19
)
{g[m*N1+n]=p;f[m*N1+n]=q;}
}}
//fprintf(o,"1 setlinejoin 2 setlinecap\n"); p=1.8;q=.7;
fprintf(o,"1 setlinejoin 1 setlinecap\n"); p=.4;q=.4;
for(m=-4;m<4;m++)for(n=2;n<10;n+=2)conto(o,f,w,v,X,Y,M,N,(m+.1*n),-q, q); fprintf(o,".025 W 0 .6 0 RGB S\n");
for(m=0;m<2;m++) for(n=2;n<10;n+=2)conto(o,g,w,v,X,Y,M,N,-(m+.1*n),-q, q); fprintf(o,".025 W .9 0 0 RGB S\n");
for(m=0;m<4;m++) for(n=2;n<10;n+=2)conto(o,g,w,v,X,Y,M,N, (m+.1*n),-q, q); fprintf(o,".025 W 0 0 .9 RGB S\n");
for(m=1;m<5;m++) conto(o,f,w,v,X,Y,M,N, (0.-m),-p,p); fprintf(o,".07 W .9 0 0 RGB S\n");
for(m=1;m<5;m++) conto(o,f,w,v,X,Y,M,N, (0.+m),-p,p); fprintf(o,".07 W 0 0 .9 RGB S\n");
conto(o,f,w,v,X,Y,M,N, (0. ),-p,p); fprintf(o,".07 W .6 0 .6 RGB S\n");
for(m=-4;m<7;m++) conto(o,g,w,v,X,Y,M,N, (0.+m),-p,p); fprintf(o,".07 W 0 0 0 RGB S\n");
//#include"plofu.cin"
x=0.8856031944;
M(x,-8)L(x,8) fprintf(o,"0 setlinejoin 0 setlinecap 0.004 W 0 0 0 RGB S\n");
M(x,0)L(-8.1,0) fprintf(o," .05 W 1 1 1 RGB S\n");
DO(m,23){ M(x-.4*m,0)L(x-.4*(m+.5),0);} fprintf(o,".09 W .3 .3 0 RGB S\n");
//M(x,0)L(-8.1,0) fprintf(o,"[.19 .21]0 setdash .05 W 0 0 0 RGB S\n");
// May it be, that, some printers do not interpret well the dashing ?
fprintf(o,"showpage\n%c%cTrailer",'%','%'); fclose(o);
system("epstopdf afacmap.eps");
system( "open afacmap.pdf"); //for LINUX
// getchar(); system("killall Preview");//for mac
}
Latex generator of labels
% File afacmap.pdf should be generated with the code above in order to compile the Latex document below:
% %<br>
\documentclass[12pt]{article} %<br>
\usepackage{geometry} %<br>
\usepackage{graphicx} %<br>
\usepackage{rotating} %<br>
\usepackage{hyperref} %<br>
\paperwidth 339px %<br>
\paperheight 336px %<br>
\textwidth 165mm %<br>
\textheight 240mm %<br>
\topmargin -96pt %<br>
\oddsidemargin -76pt %<br>
\parindent 0pt %<br>
\begin {document} %<br>
\newcommand \sx {\scalebox} %<br>
\newcommand \rme {{e}} %<br>
\newcommand \rmi {{\rm i}} %imaginary unity is always roman font %<br>
\newcommand \ds {\displaystyle} %<br>
\newcommand \bN {\mathbb{N}} %<br>
\newcommand \bC {\mathbb{C}} %<br>
\newcommand \bR {\mathbb{R}} %<br>
\newcommand \cO {\mathcal{O}} %<br>
\newcommand \cF {\mathcal{F}} %<br>
\newcommand \rot {\begin{rotate}} %<br>
\newcommand \ero {\end{rotate}} %<br>
\newcommand \nS {\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!\!} %<br>
\newcommand \pS {{~}~{~}} %<br>
\newcommand \fac {\mathrm{Factorial}} %<br>
\newcommand \ax { %<br>
\put( 10,342){\sx{1.4}{$y$}} %<br>
\put( 10,307){\sx{1.3}{$6$}} %<br>
\put( 10,267){\sx{1.3}{$4$}} %<br>
\put( 10,227){\sx{1.3}{$2$}} %<br>
\put( 10,187){\sx{1.3}{$0$}} %<br>
\put( 0,147){\sx{1.3}{$-2$}} %<br>
\put( 0,107){\sx{1.3}{$-4$}} %<br>
\put( 0, 67){\sx{1.3}{$-6$}} %<br>
\put( 0, 27){\sx{1.3}{$-8$}} %<br>
\put( 50, 18){\sx{1.3}{$-6$}} %<br>
\put( 90, 18){\sx{1.3}{$-4$}} %<br>
\put(130, 18){\sx{1.3}{$-2$}} %<br>
\put(178, 18){\sx{1.3}{$0$}} %<br>
\put(218, 18){\sx{1.3}{$2$}} %<br>
\put(258, 18){\sx{1.3}{$4$}} %<br>
\put(298, 18){\sx{1.3}{$6$}} %<br>
\put(334, 19){\sx{1.4}{$x$}} %<br>
} %<br>
\begin{picture}(340,340) \ax %<br>
\put(-20,-10){\includegraphics{afacmap}} %<br>
\put(158,348){\rot{-73}\sx{1.5}{$q\!=\!1.2$}\ero} %<br>
\put(102,346){\rot{-51}\sx{1.5}{$q\!=\!1.4$}\ero} %<br>
\put( 61,313){\rot{-34}\sx{1.5}{$q\!=\!1.6$}\ero} %<br>
\put( 38,268){\rot{-16}\sx{1.5}{$q\!=\!1.8$}\ero} %<br>
\put( 32,236){\rot{ -2}\sx{1.5}{$q\!=\!2$}\ero} %<br>
\put( 32,188){\sx{1.8}{\bf cut}} %<br>
\put( 33,152){\sx{1.5}{$q\!=\!-2$}} %<br>
\put( 36,106){\rot{15}\sx{1.5}{$q\!=\!-1.8$}\ero} %<br>
\put( 64, 60){\rot{35}\sx{1.5}{$q\!=\!-1.6$}\ero} %<br>
\put(112, 33){\rot{53}\sx{1.5}{$q\!=\!-1.4$}\ero} %<br>
\put(166, 27){\rot{74}\sx{1.5}{$q\!=\!-1.2$}\ero} %<br>
% %<br>
\put(225,308){\rot{82}\sx{1.5}{$q\!=\!1$}\ero} %<br>
\put(219, 83){\rot{-87}\sx{1.5}{$q\!=\!-1$}\ero} %<br>
\put(244, 89){\rot{-68}\sx{1.5}{$q\!=\!-0.8$}\ero} %<br>
\put(253,293){\rot{62}\sx{1.5}{$q\!=\!0.8$}\ero} %<br>
\put(280,276){\rot{45}\sx{1.5}{$q\!=\!0.6$}\ero} %<br>
\put(300,250){\rot{30}\sx{1.5}{$q\!=\!0.4$}\ero} %<br>
\put(298,226){\rot{15}\sx{1.5}{$q\!=\!0.2$}\ero} %<br>
\put(304,187){\sx{1.6}{$q$=0}} %<br>
%\put(300,162){\rot{-15}\sx{1.5}{$q\!=\!-0.2$}\ero} %<br>
\put(264,132){\rot{54}\sx{1.5}{$p$=2.8}\ero} %<br>
\put(280,110){\rot{50}\sx{1.5}{$p$=3}\ero} %<br>
\put(290, 70){\rot{44}\sx{1.5}{$p$=3.2}\ero} %<br>
\put(300, 42){\rot{39}\sx{1.5}{$p$=3.4}\ero} %<br>
\end{picture} %<br>
\end{document} %<br>
%
References
- ↑ https://www.amazon.co.jp/Superfunctions-Non-integer-holomorphic-functions-superfunctions/dp/6202672862 Dmitrii Kouznetsov. Superfunctions: Non-integer iterates of holomorphic functions. Tetration and other superfunctions. Formulas,algorithms,tables,graphics - 2020/7/28
- ↑ https://mizugadro.mydns.jp/BOOK/468.pdf Dmitrii Kouznetsov (2020). Superfunctions: Non-integer iterates of holomorphic functions. Tetration and other superfunctions. Formulas, algorithms, tables, graphics. Publisher: Lambert Academic Publishing.
- ↑
https://link.springer.com/article/10.3103/S0027134910010029
http://mizugadro.mydns.jp/PAPERS/2010superfae.pdf D.Kouznetsov, H.Trappmann. Superfunctions and square root of factorial. Moscow University Physics Bulletin, 2010, v.65, No.1, p.6-12. (Russian version: p.8-14)
Keywords
«ArcFactorial», «Factorial», «Gamma function», «Table of superfunctions», «Transfer function», «Superfunctions»,
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Thumbnail | Dimensions | User | Comment | |
|---|---|---|---|---|---|
| current | 17:50, 20 June 2013 | 2,355 × 2,334 (1.03 MB) | Maintenance script (talk | contribs) | Importing image file |
You cannot overwrite this file.
File usage
The following 2 pages use this file: