<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>T. R. Velieva);</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>harmonic oscillator using Julia</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tatyana R. Velieva</string-name>
          <email>velieva-tr@rudn.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Arseny V. Fedorov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>6</institution>
          ,
          <addr-line>Miklukho-Maklaya St., Moscow, 117198</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Applied Probability and Informatics, Peoples' Friendship University of Russia, RUDN University</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Plekhanov Russian University of Economics</institution>
          ,
          <addr-line>36, Stremyanny lane, Moscow, 117997</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>In this paper we verified the applicability and usability of Julia programming language in the field of numerical simulation. To research the potential of Julia, the simplest problem of mathematical modeling was considered-the task of a quantum harmonic oscillator, for the solution of which the powerful library DiferentialEquations.jl was used. This library allows to quickly and conveniently find numerical solutions of various diferential equations. During our research graphs and solutions corresponding to theoretical values were obtained.</p>
      </abstract>
      <kwd-group>
        <kwd>language</kwd>
        <kwd>Mathematical modeling</kwd>
        <kwd>ODE</kwd>
        <kwd>quantum harmonic oscillator</kwd>
        <kwd>Schrödinger equation</kwd>
        <kwd>Julia programming</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>equilibrium position.</p>
      <p>An oscillator is a system of bodies or particles that make periodic oscillations around a stable</p>
      <p>The movement of microparticles is an important area of research in modern physics. One of
the classical model problems in this area is the problem of the motion of a harmonic oscillator
— a system capable of performing harmonic oscillations.</p>
      <p>The real beginning of quantum theory comes from Max Karl Ernst Ludwig Planck
(1858</p>
      <p>CEUR</p>
      <p>CEUR Workshop Proceedings (CEUR-WS.org)
1.1. Article structure
The following structure is proposed for this article: the section 1 describes general facts and
information about quantum physics; the section 2 introduces the notation that will be used
throughout the article and the agreement, following which the authors get the results; the
section 2 contains graphs obtained by numerically solving the problem of modeling a quantum
oscillator in a well; the section 2 describes the results; the section 3 summarizes the work done
in the course of scientific research.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Harmonic oscillator</title>
      <p>The harmonic oscillator model plays an important role, especially when studying small
oscillations of systems near the position of stable equilibrium. An example of such vibrations
in quantum mechanics is the vibrations of atoms in solids, molecules, etc. Consider a
onedimensional harmonic oscillator oscillating along the x axis under the action of a returning
quasielastic force denoted by  = −</p>
      <p>. The potential energy of such an oscillator has the form:
where  is the eigenfrequency of the classical harmonic oscillator. Thus, the quantum-mechanical
problem of a harmonic oscillator reduces to the problem of the motion of a particle in a parabolic
potential well.</p>
      <p>The total energy of the oscillator (2)  is the sum of kinetic and potential energies:
 () =
 2
2
=

2 2
2</p>
      <p>,
 =
 2
2
+
 2
2</p>
      <p>
        In classical physics, the frequency of oscillations of a harmonic oscillator, where  is the mass
of the oscillator and  is a certain constant (for example, spring stifness), which determines
the scale of the force returning (to the equilibrium position)  = −
( is deviation from the
equilibrium position). The energy of a classical oscillator is proportional to the square of the
amplitude of its oscillations and can change continuously [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>Considering a quantum oscillator, there are a number of diferences between it and an ordinary
oscillator. It’s description is assumed using the Hamiltonian.</p>
      <p>
        The energy levels of the harmonic oscillator (4) and the wave functions (5) are determined
from the Schrödinger equation (3) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]:
(1)
(2)
(3)
(4)
(5)
ℎ2  2  (, )
2
 2
+

2
2 2   (, ) = ℏ
      </p>
      <p>,
  = ℏ( + 1/2),  = 0, 1, 2, …</p>
      <p>Quantum oscillations realized in molecules, atoms, and nuclei can occur only with a fixed set
of individual energies, i.e. the level spectrum of such an oscillator is discrete:
  (, ) = ( 0 ⋅ 2 ! √ )
−1/2 exp (−
 2
 02
) ×   ( 0

) exp (−
   ) ,
ℏ
where the amplitude of the zero-point oscillations is given by (6):
and Hermite polynomials in one of their representations are denoted as   () (7):
  () = (−1)   2  
  ( − 2) .
relation ℏ 2  2
2
=  2</p>
      <p>2
 ≈
ℏ</p>
      <p>.</p>
      <p>The energy levels of the quantum harmonic oscillator are equidistant and are given by the
expression (4)   = ℏ( + 1/2) , with  = 0, 1, 2, … , ℏ = 2ℎ (ℎ is the Planck constant), i.e.
are located at the same energy distance from each other equal to   . The parameter  is also
known as the number of phonons. The lowest energy of quantum oscillations (the energy of its
zero-point vibrations) is  0 = ℏ &gt; 0.</p>
      <p>2</p>
      <p>Thus, the only way to stop a quantum oscillator — is to eliminate it. Variable  , setting
the fundamental tone of a quantum oscillator is related to its potential energy by the classical
. Under the influence of an external perturbation, a quantum oscillator
can go from one level to another. In this case, the minimum energy of absorbed and emitted
quanta (energy of one phonon) is equal to ℏ .</p>
      <p>Applying the Heisenberg uncertainty relation, we set as an estimate of the momentum  :
For large values of  , the potential energy exceeds kinetic, while, for small values of  , kinetic
energy has an inverse relation to potential. For the ground state, where the energy is minimal,
we find the minimum of the function (8). The value of the variable  
corresponding to the
minimum is:
and the corresponding energy value  is of the order:
(6)
(7)
(8)
(9)
(10)
(11)
(12)
 =
 2
 2
=
ℏ</p>
      <p>2
2 2 +
 2
2

Further equation (11) will be reduced to the following form:
Lets define  :</p>
      <p>In quantum mechanics, to solve the harmonic oscillator problem, one needs to solve the
Schrödinger equation (11) with potential energy (1), which has the form:
 2
ℎ
2 +
2
ℎ
2 ( −

2
)  = 0,
−∞ &lt;  &lt; +∞.</p>
      <p>Then, the parameter necessary for further calculations  :
We bring the equation (12) to the following view:
 =
and finite not for all values of the parameter  , but only for:</p>
      <p>= 2 + 1,  = 0, 1, 2, … .</p>
      <p>The analysis shows that the wave functions (the solution of the equation (13)) are continuous
The wave functions (14) are orthonormalized, that is, satisfy the condition:</p>
      <p>We proceed to the analysis of the wave functions of a harmonic oscillator. As shown in the
theory of diferential equations with variable coeficients, wave functions, that are solutions of
the equation (11), have the form:
where   () is the Chebyshev-Hermite polynomial of order  , described by the expression:
where   is the Kronecker symbol:</p>
      <p>Next, we present the form of the wave functions 15 for the first three energy levels of the
quantum harmonic oscillator:

2
  () =  2   (),  = 0, 1, 2, … ,
  () =</p>
      <p>−1
√2 ! √

 2    − 2</p>
      <p>2 .</p>
      <p>+
∫
−
  ()  () =   ,


= {
1,  = ,
0,  ≠ .</p>
      <p>= 0,  0() =
 = 1,  1() =
 = 2,  2() =</p>
      <p>1
√ 0√</p>
      <p>1
√2 0√  0
exp (−
2 exp (−
 2
2 02 ) ,
 2
2 02 ) ,
1
√8 0√
(
4 2
 02 − 2) exp (−
 2
2 02 ) .
(13)
(14)
(15)</p>
      <p>
        To obtain the solution to the described problem, the program code was developed in the Julia
programming language [
        <xref ref-type="bibr" rid="ref3 ref4 ref5 ref6">3, 4, 5, 6</xref>
        ], using the D i f f e r e n t i a l E q u a t i o n s . j l [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] library.
      </p>
      <p>
        Before working with Julia you must install the language, following the recommendations
from the oficial website [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Then, using the ] command in Julia’s environment, the mode of working with packages
is called p k g , after entering it you need to install the libraries used in the presented code:
D i f f e r e n t i a l E q u a t i o n s and P l o t s . This can be done using the command i n s t a l l &lt; l i b r a r y _ n a m e &gt; ,
where l i b r a r y _ n a m e is the name of the library to be installed.</p>
      <p>We set the necessary parameters. Julia is allowed to use Unicode characters, so in the code
below we will denote variables using them:
u s i n g D i f f e r e n t i a l E q u a t i o n s
u s i n g P l o t s
c o n s t ħ = 1 . 0
c o n s t m = 1 . 0
c o n s t o m e g a = 0 . 5
f u n c t i o n H ( x , n )
n = = 0 &amp; &amp; r e t u r n 1
n = = 1 &amp; &amp; r e t u r n 2 x
n = = 2 &amp; &amp; r e t u r n 4 x ^ 2 - 2
n = = 3 &amp; &amp; r e t u r n 8 x ^ 3 - 1 2 x
n = = 4 &amp; &amp; r e t u r n 1 6 x ^ 4 - 4 8 x ^ 2 + 1 2
n = = 5 &amp; &amp; r e t u r n 3 2 x ^ 5 - 1 6 0 x ^ 3 + 1 2 0 x
e n d</p>
      <p>We define a function that describes Chebyshev–Hermite polynomials, where n has a value
from 0 to 5:</p>
      <p>Define the function () , Julia allows you to define functions in mathematical form:
E ( n ) = ħ * o m e g a * ( n + 0 . 5 )</p>
      <p>The function  follows from the analytical solution, this is done in order to correctly derive
the initial conditions; if this step is not performed, the right solution for our problem will not
be obtained:
f u n c t i o n p s i ( x , n )
r e s = 1 / s q r t ( 2 ^ n * f a c t o r i a l ( n ) )
r e s * = ( m * o m e g a / ( p i * ħ ) ) | &gt; s q r t | &gt; s q r t
r e s * = e x p ( - m * o m e g a * x * x / 2 / ħ )
r e s * = H ( s q r t ( m * o m e g a / ħ ) * x , n )
e n d</p>
      <p>
        To get the result from Julia solvers, it is necessary to specify the function that describes
our system of equations, therefore we define the function F u n c ! . An exclamation mark in the
name of the function indicates that the function does not change the input parameters during
operation:
f u n c t i o n F u n c ! ( d u , u , n , x )
d u [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] = ( 2 m / ħ ^ 2 ) * ( 0 . 5 m * o m e g a ^ 2 * x ^ 2 - E ( n ) ) * u [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]
d u [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] = u [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
e n d
      </p>
      <p>
        Set the time interval from −5 to 5 using the tspan vector. We determine the current value of
n and declare the initial condition 0 :
t s p a n = ( - 5 . 0 , 5 . 0 )
n = 0
u _ 0 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 0 ) ]
      </p>
      <p>In the o d e variable we write the solution that the O D E P r o b l e m function returns. The input to
this function is: F u n c ! function describing the ODE; u 0 are the initial conditions; t s p a n is time
period on which you need to find a solution; n is the parameter of the Chebyshev–Hermite
polynomial; and the s a v e a t parameter is a step in the time interval:
o d e = O D E P r o b l e m ( F u n c ! , u 0 , t s p a n , n , s a v e a t = 0 . 1 )</p>
      <p>In the s o l variable we write the solution that the s o l v e function returns. The o d e parameter
is input to this function. Next, in p s i write the result of h c a t for the u array of the s o l structure.
In p 0 we write the prepared graph for the mode of the wave function  = 0 :
s o l = s o l v e ( o d e )
p s i = h c a t ( s o l . u . . . ) [ 2 , : ]
p l o t ( s o l . t , p s i , l a b e l = ” p s i _ 0 ( x ) ” )</p>
      <p>
        For  = 1 , we perform the same algorithm to obtain the graph:
n = 1
u _ 0 1 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 1 ) ]
o d e 1 = O D E P r o b l e m ( F u n c ! , u _ 0 1 , t s p a n , n , s a v e a t = 0 . 1 )
s o l 1 = s o l v e ( o d e 1 )
p s i 1 = h c a t ( s o l 1 . u . . . ) [ 2 , : ]
      </p>
      <p>To build two graphs in one figure, we use the plot command, in the parameters we set 0 ,
1 are two graphs of wave functions for  = 0 and  = 1 , in the layout parameter we set the
dimension 1 by 2:
p l o t ( s o l 1 . t , p s i 1 , l a b e l = ” p s i _ 1 ( x ) ” )
s a v e f i g ( ” n 1 _ . p d f ” )</p>
      <p>
        To obtain solutions and graphs for subsequent wave functions, the similar algorithm is used:
n = 2
u _ 0 2 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 2 ) ]
o d e 2 = O D E P r o b l e m ( F u n c ! , u _ 0 2 , t s p a n , n , s a v e a t = 0 . 1 )
s o l 2 = s o l v e ( o d e 2 )
p s i 2 = h c a t ( s o l 2 . u . . . ) [ 2 , : ]
p l o t ( s o l 2 . t , p s i 2 , l a b e l = ” p s i _ 2 ( x ) ” )
s a v e f i g ( ” n 2 _ . p d f ” )
n = 3
u _ 0 3 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 3 ) ]
o d e 3 = O D E P r o b l e m ( F u n c ! , u _ 0 3 , t s p a n , n , s a v e a t = 0 . 1 )
s o l 3 = s o l v e ( o d e 3 )
p s i 3 = h c a t ( s o l 3 . u . . . ) [ 2 , : ]
p l o t ( s o l 3 . t , p s i 3 , l a b e l = ” p s i _ 3 ( x ) ” )
s a v e f i g ( ” n 3 _ . p d f ” )
n = 4
u _ 0 4 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 4 ) ]
o d e 4 = O D E P r o b l e m ( F u n c ! , u _ 0 4 , t s p a n , n , s a v e a t = 0 . 1 )
s o l 4 = s o l v e ( o d e 4 )
p s i 4 = h c a t ( s o l 4 . u . . . ) [ 2 , : ]
p l o t ( s o l 4 . t , p s i 4 , l a b e l = ” p s i _ 4 ( x ) ” )
s a v e f i g ( ” n 4 _ . p d f ” )
n = 5
u _ 0 5 = [ 0 , p s i ( t s p a n [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] , 5 ) ]
o d e 5 = O D E P r o b l e m ( F u n c ! , u _ 0 5 , t s p a n , n , s a v e a t = 0 . 1 )
s o l 5 = s o l v e ( o d e 5 )
p s i 5 = h c a t ( s o l 5 . u . . . ) [ 2 , : ]
p l o t ( s o l 5 . t , p s i 5 , l a b e l = ” p s i _ 5 ( x ) ” )
s a v e f i g ( ” n 5 _ . p d f ” )
      </p>
      <p>The article showed the applicability, capabilities of the programming language Julia and the
convenience of its use in solving mathematical modeling problems.</p>
      <p>The authors demonstrated the technique of researching the model of a quantum harmonic
oscillator, and graphs of wave functions were obtained. The capabilities of the Julia programming
language for modeling the described systems were also explorated. A numerical simulation
of the process of finding a particle of a quantum harmonic oscillator is carried out, graphs are
obtained that demonstrate the behavior of the wave functions of the system.</p>
      <p>As the results of the work, we obtained graphs of wave functions that describe the
corresponding vibration modes for the quantum number  from 0 to 5. The obtained graphs are
presented in Figures 1, 2, 3, 4, 5, 6.</p>
      <p>As a result of the scientific work the graphs and solutions were successfully obtained that
correspond to the theoretical values of the behavior of the wave functions of a quantum harmonic
oscillator. The developed program code turned out to be very compact, the development process
was quick and convenient. The programming language Julia took upon itself libraries to solve
the main problems considered during this research.</p>
      <p>In summary, everything that has been said above, we have concluded that the language of
Julia is fully applicable, and is very convenient in case of use as a tool for solving numerical
modeling.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Conclusion</title>
      <p>The research was executed to test the capabilities of the programming language Julia when it
is used as a tool for experiments allowing to solve modern numerical problems in the field of
numerical modeling.</p>
      <p>As part of the task, the authors decided to consider the simplest problem of a quantum
harmonic oscillator, using the most powerful library for solving ODEs of various kinds –
D i f f e r e n t i a l E q u a t i o n s . As a result of the scientific work, graphs and solutions corresponding
to theoretical values were successfully obtained.</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgments</title>
      <p>This work is supported by the Russian Science Foundation under grant 19-71-30008.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L. D.</given-names>
            <surname>Landau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Lifshitz</surname>
          </string-name>
          , Mechanics,
          <source>Course of Theoretical Physics</source>
          . Vol.
          <volume>1</volume>
          , 3rd ed.,
          <source>Butterworth-Heinemann</source>
          ,
          <year>1976</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L. D.</given-names>
            <surname>Landau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. M.</given-names>
            <surname>Lifshitz</surname>
          </string-name>
          , Quantum Mechanics:
          <string-name>
            <surname>Non-Relativistic</surname>
            <given-names>Theory</given-names>
          </string-name>
          , volume
          <volume>3</volume>
          , 3rd ed., Pergamon Press,
          <year>1977</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bezanson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Karpinski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. B.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Edelman</surname>
          </string-name>
          , Julia:
          <string-name>
            <given-names>A Fast</given-names>
            <surname>Dynamic Language for Technical Computing</surname>
          </string-name>
          (
          <year>2012</year>
          )
          <fpage>1</fpage>
          -
          <lpage>27</lpage>
          .
          <article-title>a r X i v : 1 2 0 9 . 5 1 4 5</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bezanson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Edelman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Karpinski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. B.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <article-title>Julia: A fresh approach to numerical computing</article-title>
          ,
          <source>SIAM Review 59</source>
          (
          <year>2017</year>
          )
          <fpage>65</fpage>
          -
          <lpage>98</lpage>
          .
          <source>doi:1 0 . 1 1</source>
          <volume>3 7 / 1 4 1 0 0 0 6 7 1</volume>
          .
          <article-title>a r X i v : 1 4 1 1 . 1 6 0 7</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bezanson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Chung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Karpinski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. B.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Vitek</surname>
          </string-name>
          , L. Zoubritzky,
          <article-title>Julia: dynamism and performance reconciled by design</article-title>
          ,
          <source>Proceedings of the ACM on Programming Languages</source>
          <volume>2</volume>
          (
          <year>2018</year>
          )
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          .
          <source>doi:1 0 . 1 1</source>
          <volume>4 5 / 3 2 7 6 4 9 0 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M. N.</given-names>
            <surname>Gevorkyan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Demidova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. V.</given-names>
            <surname>Korolkova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kulyabov</surname>
          </string-name>
          ,
          <article-title>Statistically significant performance testing of Julia scientific programming language</article-title>
          ,
          <source>Journal of Physics: Conference Series</source>
          <volume>1205</volume>
          (
          <year>2019</year>
          )
          <volume>012017</volume>
          .
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          .
          <source>doi:1 0 . 1 0</source>
          <volume>8 8 / 1 7 4 2 - 6 5 9 6 / 1 2 0 5 / 1 / 0 1 2 0 1 7 .</volume>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>C.</given-names>
            <surname>Rackauckas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Nie</surname>
          </string-name>
          , DiferentialEquations.jl
          <article-title>- A Performant and Feature-Rich Ecosystem for Solving Diferential Equations in Julia</article-title>
          ,
          <source>Journal of Open Research Software</source>
          <volume>5</volume>
          (
          <year>2017</year>
          ).
          <source>doi:1 0 . 5 3 3 4 / j o r s . 1 5 1 .</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>The</given-names>
            <surname>Julia Language</surname>
          </string-name>
          ,
          <year>2020</year>
          . URL: https://julialang.org/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>