ATOMIC STRING FUNCTIONS and SPACETIME QUANTIZATION MODELS (Python Code)

By Sergei Eremenko, PhD, Dr.Eng., Professor, Honorary Professor

Atomic String (AString) function, with the name relevant to well-known Atomic Functions, is a smooth compactly-supported solitonic kink function by joining of which on a periodic lattice it is possible to build models of flat and curved spacetime and other continua widespread in nature, as well as to introduce the concepts of AString Spacetime Quantum and AString Metriant.

It may lead to novel models of quantized spacetime as a superposition of elementary AStrings kinks which may represent 'spacetime distortions/warps' studied by Stephen Hawking, or 'metriants' by A.Veinik, or 'ripples' of Higgs and other quantum fields permeating the space.

Joining/summation of co-located AStrings represents expansion of space while opposite AStrings form 'solitonic atoms' (Atomic Function) composing the fields holding quanta together.

AStrings, with unique property of derivatives being expressed via AString itself, can be used to create models of quantized gravity and expain general relativity effects where spacetime shape and matter distributions are deeply related to each other being expressed via shifts and stretches of the same AString function.

AStrings and Atomic Functions may also be used to construct models of different quantum fields as fundamental blocks of matter, anti-matter (solitonic atoms, Higgs fields, waves), cosmic strings and contribute to the theories of dark matter, chronal matter and multiverse where quanta can significantly differ from the ones in ordinary universe.

AStrings and Atomic Functions may find some applications in Spacetime Physics, String theory, General and Special Relativity, Theory of Solitons, Lattice Physics, Quantum Gravity, Cosmology, Dark matter and Multiverse theories as well as Finite Element Methods, Nonarchimedean Computers, Atomic regression analysis, Machine Learning and Artificial Intelligence.

Atomic Strings was introduced in 2017-2020 by the author, Professor Sergei Yu. Eremenko (https://www.researchgate.net/profile/Sergei_Eremenko), in papers "Atomic Strings and Fabric of Spacetime", "Atomic Solitons as a New Class of Solitons", "Atomic Machine Learning", and book "Soliton Nature" [1-8]. AStrings are deeply rooted into the theory of Atomic Functions (https://ru.wikipedia.org/w/index.php?oldid=82669103) developed since 1970s by author's teacher Academician NAS of Ukraine Rvachev V.L. (https://ru.wikipedia.org/w/index.php?oldid=83948367), professor Rvachev V.A. and advanced by many followers, notably professor Kravchenko V.F. (https://ru.wikipedia.org/w/index.php?oldid=84521570).

1. Atomic Function up(x) (introduced in 1971 by V.L.Rvachev and V.A.Rvachev)

In [17]:
import numpy as np
import pylab as pl
pl.rcParams["figure.figsize"] = 9,6
In [18]:
###################################################################
##This script calculates the values of Atomic Function up(x) (1971)
###################################################################

################### One Pulse of atomic function
def up1(x: float) -> float:
    #Atomic function table
    up_y = [0.5, 0.48, 0.460000017,0.440000421,0.420003478,0.400016184, 0.380053256, 0.360139056, 
           0.340308139, 0.320605107,0.301083436, 0.281802850, 0.262826445, 0.244218000, 0.226041554, 
           0.208361009, 0.191239338, 0.174736305, 0.158905389, 0.143991189, 0.129427260, 0.115840866, 
           0.103044024, 0.9110444278e-01, 0.798444445e-01, 0.694444445e-01, 0.598444445e-01, 
           0.510444877e-01, 0.430440239e-01, 0.358409663e-01, 0.294282603e-01, 0.237911889e-01, 
           0.189053889e-01, 0.147363055e-01, 0.112393379e-01, 0.836100883e-02, 0.604155412e-02, 
           0.421800000e-02, 0.282644445e-02, 0.180999032e-02, 0.108343562e-02, 0.605106267e-03, 
           0.308138660e-03, 0.139055523e-03, 0.532555251e-04, 0.161841328e-04, 0.347816874e-05, 
           0.420576116e-05, 0.167693347e-07, 0.354008603e-10, 0]
    up_x = np.arange(0.5, 1.01, 0.01)

    res = 0.
    if ((x>=0.5) and (x<=1)):
        for i in range(len(up_x) - 1):
            if (up_x[i] >= x) and (x < up_x[i+1]):
                N1 = 1 - (x - up_x[i])/0.01
                res = N1 * up_y[i] + (1 - N1) * up_y[i+1]
                return res
    return res

############### Atomic Function Pulse with width, shift and scale #############
def upulse(t: float, a = 1., b = 0., c = 1., d = 0.) -> float:
    x = (t - b)/a
    res = 0.
    if (x >= 0.5) and (x <= 1):
        res = up1(x)
    elif (x >= 0.0) and (x < 0.5):
        res = 1 - up1(1 - x)
    elif (x >= -1 and x <= -0.5):
        res = up1(-x)
    elif (x > -0.5) and (x < 0):
        res = 1 - up1(1 + x)
    res = d + res * c
    return res

############### Atomic Function Applied to list with width, shift and scale #############
def up(x: list, a = 1., b = 0., c = 1., d = 0.) -> list:
    res = []
    for i in range(len(x)):
        res.append(upulse(x[i], a, b, c, d))
    return res
In [19]:
x = np.arange(-2.0, 2.0, 0.01)
pl.title('Atomic Function up(x)')
pl.plot(x, up(x), label='Atomic Function')
pl.grid(True)
pl.show()

2. Atomic String Function (AString) is an Integral and Composing Branch of Atomic Function up(x) (introduced in 2017 by S. Yu. Eremenko)

AString function is solitary kink function which simultaneously is integral and composing branch of atomic function up(x)

AString'(x) = AString(2x+1) - AString(2x-1) = up(x)

In [20]:
############### Atomic String #############
def AString1(x: float) -> float:
    res = 1 * (upulse(x/2.0 - 0.5) - 0.5)
    return res

############### Atomic String Pulse with width, shift and scale #############
def AStringPulse(t: float, a = 1., b = 0., c = 1., d = 0.) -> float:
    x = (t - b)/a
    if (x < -1):
        res = -0.5
    elif (x > 1):
        res = 0.5
    else:
        res = AString1(x)
    res = d + res * c
    return res

###### Atomic String Applied to list with width, shift and scale #############
def AString(x: list, a = 1., b = 0., c = 1., d = 0.) -> list:
    res = []
    for i in range(len(x)):
        res.append(AStringPulse(x[i], a, b, c, d))
        #res[i] = AStringPulse(x[i], a, b, c)
    return res

###### Summation of two lists #############
def Sum(x1: list, x2: list) -> list:
    res = []
    for i in range(len(x1)):
       res.append(x1[i] + x2[i])
    return res
In [21]:
x = np.arange(-2.0, 2.0, 0.01)
pl.title('Atomic String Function')
pl.plot(x, AString(x, 1.0, 0, 1, 0), label='Atomic String')
pl.grid(True)
pl.show()

Atomic String, Atomic Function (AF) and AF Derivative plotted together

In [22]:
x = np.arange(-2.0, 2.0, 0.01)

#This Calculates Derivative
dx = x[1] - x[0]
dydx = np.gradient(up(x), dx)

pl.plot(x, up(x), label='Atomic Function')
pl.plot(x, AString(x, 1.0, 0, 1, 0), linewidth=2, label='Atomic String Function')
pl.plot(x, dydx, '--', label='A-Function Derivative')

pl.title('Atomic and AString Functions')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

3. Properties of Atomic Function Up(x)

3.1. Atomic Function Derivative expressed via Atomic Function itself

Atomic Function Derivative can be exressed via Atomic Function itself - up'(x)= 2up(2x+1)-2up(2x-1) meaning the shape of pulses for derivative function can be represented by shifted and stratched Atomic Function itself - remarkable property

up'(x)= 2up(2x+1)-2up(2x-1)

Atomic Function and its Derivative plotted together

In [23]:
x = np.arange(-2.0, 2.0, 0.01)
pl.plot(x, up(x), label='Atomic Function', linewidth=2)
pl.plot(x, dydx, '--', label='Atomic Function Derivative', linewidth=1, color="Green")

pl.title('Atomic Function and Its Derivative')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

3.2. Partition of Unity

The Atomic Function pulses superposition set at points -2, -1, 0, +1, +2... can exactly represent a Unity (number 1): 1 = ... up(x-3) + up(x-2) + up(x-1) + up(x-0) + up(x+1) + up(x+2) + up(x+3) + ...

1 = ... up(x-3) + up(x-2) + up(x-1) + up(x-0) + up(x+1) + up(x+2) + up(x+3) + ...

In [24]:
x = np.arange(-2.0, 2.0, 0.01)
pl.plot(x, up(x, 1, -1), '--', linewidth=1, label='Atomic Function at x=-1')
pl.plot(x, up(x, 1, +0), '--', linewidth=1, label='Atomic Function at x=0')
pl.plot(x, up(x, 1, -1), '--', linewidth=1, label='Atomic Function at x=-1')
pl.plot(x, Sum(up(x, 1, -1), Sum(up(x), up(x, 1, 1))), linewidth=2, label='Atomic Function Compounding')
pl.title('Atomic Function Compounding represent 1')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

3.3. Atomic Function (AF) is a 'finite', 'compactly supported', or 'solitary' function

Like a Spline, Atomic Function (AF) 'compactly supported' not equal to zero only on section |x|<=1

In [25]:
x = np.arange(-5.0, 5.0, 0.01)
pl.plot(x, up(x), label='Atomic Function', linewidth=2)
#pl.plot(x, dydx, '--', label='Atomic Function Derivative', linewidth=1, color="Green")

pl.title('Atomic Function is compactly supported')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

3.4 Atomic Function is a non-analytical function (can not be represented by Taylor's series), but with known Fourier Transformation allowing to exactly calculate AF in certain points, with tabular representation provided in script above.

4. Properties of Atomic String Function

4.1. AString is not only Integral but also Composing Branch of Atomic Function

AString'(x) = AString(2x+1) - AString(2x-1) = up(x)

Astring is a swing-like function - Integral of Atomic Function (AF) which can be expressed via AF itself: AString(x) = Integral(0,x)(Up(x)) = Up(x/2 - 1/2) - 1/2

AString(x) = Integral(0,x)(Up(x)) = Up(x/2 - 1/2) - 1/2

4.2. Atomic Function is a 'solitonic atom' composed from two opposite AStrings

The concept of 'Solitonic Atoms' (bions) composed from opposite kinks is known in soliton theory [3,5].

up(x) = AString(2x + 1) - AString(2x - 1)

In [26]:
#########   Presentation of Atomic Function via Atomic Strings ##########
x = np.arange(-2.0, 2.0, 0.01)

pl.plot(x, AString(x, 1, 0, 1, 0),  '--', linewidth=1,  label='AString(x)')
pl.plot(x, AString(x, 0.5, -0.5, +1, 0), '--', linewidth=2, label='+AString(2x+1)')
pl.plot(x, AString(x, 0.5, +0.5, -1, 0), '--', linewidth=2, label='-AString(2x-1)')
#pl.plot(x, up(x, 1.0, 0, 1, 0),     '--', linewidth=1, label='Atomic Function')
AS2 = Sum(AString(x, 0.5, -0.5, +1, 0), AString(x, 0.5, +0.5, -1, 0))
pl.plot(x, AS2, linewidth=3, label='Up(x) via Strings')
pl.title('Atomic Function as a Combination of AStrings')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

4.3. AStrings and Atomic Solitons

Solitonic mathematical properties of AString and Atomic Functions have been explored in author's paper [2,3] (Eremenko, S.Yu. Atomic solitons as a new class of solitons; 2018; https://www.researchgate.net/publication/329465767). They both satisfy differential equations with shifted arguments which introduce special kind of nonlinearity typical for all mathematical solitons.

AString belong to the class of Solitonic Kinks similar to sine-Gordon, Frenkel-Kontorova, tanh and others. Unlike other kinks, AStrings are truly solitary (compactly-supported) and also have a unique property of composing of both straight-line and solitonic atoms on lattice resembling particle-like properties of solitons.

Atomic Function up(x) is not actually a mathematical soliton, but a complex object composed from summation of two opposite AString kinks, and in solitonic terminology, is called 'solitonic atoms' (like bions).

4.4. All derivatives of AString can be represented via AString itself

AString'(x) = AString(2x + 1) - AString(2x - 1)

It means AString is a smooth (infinitely divisible) function, with fractalic properties.

4.5. AString and Fabius Function

Fabius Function https://en.wikipedia.org/wiki/Fabius_function, with unique property f'(x) = 2f(2x), published in 1966 but was probably known since 1935, is shifted and stretched AString function. Fabius function is not directly an integral of atomic function up(x). Properties of partition of line and representing other functions have not been explored as much as it is done in the theory of atomic functions for 50 years in hundreds of papers.

Fabius(x) = AString(2x - 1) + 0.5

In [27]:
x = np.arange(-2, 2.0, 0.01)
pl.title('AString and Fabius Functions')
pl.plot(x, AString(x, 0.5, 0.5, 1, 0.5), label='Fabius Function')
pl.plot(x, AString(x, 1, 0, 1, 0), label='AString Function')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

4.6. Partition of Line from Atomic String functions

Combination/summation of Atomic Strings can exactly represent a straight line: x = ...Astring(x-2) + Astring(x-1) + AString(x) + Astring(x+1) + Astring(x+2)...

x = ...Astring(x-2) + Astring(x-1) + AString(x) + Astring(x+1) + Astring(x+2)...

Partition based on AString function with width 1 and height 1

In [28]:
x = np.arange(-3, 3, 0.01)

pl.plot(x, AString(x, 1, -1.0, 1, 0),   '--',  linewidth=1, label='AString 1')
pl.plot(x, AString(x, 1, +0.0, 1, 0),   '--',  linewidth=1, label='AString 2')
pl.plot(x, AString(x, 1, +1.0, 1, 0),   '--',  linewidth=1, label='AString 3')

AS2 = Sum(AString(x, 1, -1.0, 1, 0), AString(x, 1, +0.0, 1, 0))
AS3 = Sum(AS2, AString(x, 1, +1.0, 1, 0))
pl.plot(x, AS3,  label='AStrings Sum', linewidth=2)

pl.title('Atomic Strings compose Line')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

Partition based on AString with certain width and height depending on a size of 'quanta'

In [29]:
x = np.arange(-40.0, 40.0, 0.01)

width  = 10.0
height = 10.0

#pl.plot(x, ABline (x, 1, 0),            label='ABLine 1*x')
pl.plot(x, AString(x, width, -3*width/2, height, -3*width/2), '--',  linewidth=1, label='AString 1')
pl.plot(x, AString(x, width, -1*width/2, height, -1*width/2), '--',  linewidth=1, label='AString 2')
pl.plot(x, AString(x, width, +1*width/2, height, +1*width/2), '--',  linewidth=1, label='AString 3')
pl.plot(x, AString(x, width, +3*width/2, height, +3*width/2), '--',  linewidth=1, label='AString 4')

AS2 = Sum(AString(x, width, -3*width/2, height, -3*width/2), AString(x, width, -1*width/2, height, -1*width/2))
AS3 = Sum(AS2, AString(x, width,+1*width/2, height, +1*width/2))
AS4 = Sum(AS3, AString(x, width,+3*width/2, height, +3*width/2))
pl.plot(x, AS4,  label='AStrings Joins', linewidth=2)

pl.title('Atomic Strings Combinations')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

5. Model of Spacetime composed from AStrings Quanta (AString Metriants)

5.1. This is an abstract of paper "Atomic Strings and Fabric of Spacetime"

Based on a generalization of well-known atomic function this paper introduces an atomic string (AString) as a swing-like function by joining of which on a periodic lattice it is possible to build one model for absolutely flat and curved spacetime and explain gravitational warping effects due to a unique property of all derivatives being expressed via AString itself. Physically AString may represent a soliton-like elementary string as a spacetime warp/distortion composing atomic quanta in multiple dimensions which can grow, shrink, group into atoms and compose smooth continua, solid and biological matter widespread in nature. This makes AString a good candidate for an elementary string as a fundamental block of matter and spacetime fabric. AString can also be used as a generating axiom for a new non-Archimedean atomic calculus to describe nonlinear metric within cosmic strings and build never overflowing atomic computer with the super fast calculation of derivatives. The AString along with closely related atomic function may find new areas of applications in lattice physics, string theory, relativity, quantum gravity, cosmic strings, multiverse, dark matter, solitons, dislocations, computing, evolution of solid and biological matter, finite element methods, new regression analysis and artificial intelligence classification models.

5.2. Representing spacetime expansion via summation of AStrings quanta

In [30]:
x = np.arange(-30.0, 30.0, 0.01)
#pl.plot(x, ABline (x, 1, 0),            label='ABLine 1*x')
pl.plot(x, AString(x, 10.0,-15, 10, -15),   '--',  linewidth=1, label='AString Quantum 1')
pl.plot(x, AString(x, 10.0, -5, 10, -5),    '--',  linewidth=1, label='AString Quantum 2')
pl.plot(x, AString(x, 10.0, +5, 10, +5),    '--',  linewidth=1, label='AString Quantum 3')
pl.plot(x, AString(x, 10.0,+15, 10, +15),   '--',  linewidth=1, label='AString Quantum 4')

AS2 = Sum(AString(x, 10.0, -15, 10, -15), AString(x, 10., -5, 10, -5))
AS3 = Sum(AS2, AString(x, 10, +5, 10, +5))
AS4 = Sum(AS3, AString(x, 10,+15, 10, +15))
pl.plot(x, AS4,  label='Spacetime Dimension', linewidth=2)

pl.title('Representing Spacetime by joining of Atomic Strings')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

5.3. Model of Spacetime curvature and gravity based on AStrings

Schematic model of Gravitation explaining General Relativity effects where spacetime Shape, Density and Curvature are deeply related to each other being expressed via shifts and stretches of the same AString Atomic Function

In [31]:
x = np.arange(-50.0, 50.0, 0.1)
dx = x[1] - x[0]

CS6 = Sum(up(x, 5, -30, 5, 5), up(x, 15, 0, 15, 5))
CS6 = Sum(CS6, up(x, 10, +30, 10, 5))
pl.plot(x, CS6,  label='Spacetime Density')

IntC6 = np.cumsum(CS6)*dx/50
pl.plot(x, IntC6, label='Spacetime Shape (Geodesics)')

DerC6 = np.gradient(CS6, dx)
pl.plot(x, DerC6, label='Spacetime Curvature')

LightTrajectory = -10 -IntC6/5
pl.plot(x, LightTrajectory, label='Light Trajectory')

pl.title('Shape of Curved Spacetime model')
pl.legend(loc='best', numpoints=1)
pl.grid(True)
pl.show()

6. 'Soliton Nature' book

6.1. The theory is also described in a book 'Soliton Nature'

Soliton Nature book is easy-to-read, pictorial, interactive book which uses beautiful photography, video channel, and computer scripts in R and Python to demonstrate existing and explore new solitons – the magnificent and versatile energy concentration phenomenon of nature. New class of atomic solitons can be used to describe Higgs boson (‘the god particle’) fields, spacetime quanta and other fundamental building blocks of nature.

In [32]:
#pl.rcParams["figure.figsize"] = 16,12
book = pl.imread('BookSpread_small.png')
pl.imshow(book)
Out[32]:
<matplotlib.image.AxesImage at 0x21770e64ec8>

6.2. 'Soliton Nature' Video Channel, Book Trailer and Web Site

Video channel https://www.youtube.com/channel/UCexT5iyczZH2HY1-jSafFeQ features amazing solitonic phenomena in nature - welcome to subscribe

Book web site www.solitonnature.com contains book chapters and amazing video-gallery

6.3. 'Soliton Nature' book in major bookstores around the globe

7. Online Source Code Repositories

References

  1. Eremenko, S.Yu. Atomic Strings and Fabric of Spacetime. Journal Achievements of Modern Radioelectronics, 2018. No.6. https://www.researchgate.net/publication/329455498
  1. Eremenko, S.Yu. Atomic solitons as a new class of solitons. Journal Nonlinear World, No.6, Vol.16, 2018, p.39-63. DOI: 10.18127/j20700970-201806-06. https://www.researchgate.net/publication/329455498
  1. Eremenko, S.Yu. Atomic solitons as a new class of solitons (English, with Russian Abstract). Journal Nonlinear World, No.6, Vol.16, 2018, p.39-63. DOI: 10.18127/j20700970-201806-06. https://www.researchgate.net/publication/329465767
  1. Eremenko, S.Yu. Soliton Nature: Discover Beautiful Nature with 200 Images and Video Channel. ISBN: 978-1-951630-77-5. https://www.amazon.com/gp/product/1951630777; https://www.researchgate.net/publication/321228263;
  1. Eremenko, S.Yu. Atomic Machine Learning. Journal Neurocomputers. 2018, No.3. https://www.researchgate.net/publication/322520539_Atomic_Machine_Learning
By Sergei Eremenko, PhD, Dr.Eng., Professor, Honorary Professor
https://www.researchgate.net/profile/Sergei_Eremenko
https://www.amazon.com/Sergei-Eremenko/e/B082F3MQ4L
https://www.linkedin.com/in/sergei-eremenko-3862079
https://www.facebook.com/SergeiEremenko.Author/