Monograph:Experiments with vectors

From HandWiki
Jump to: navigation, search


HandWiki datascience encyclopedia Experiments with vectors
Wolfhard Hövel (Wolfhard.Hoevel@th-nuernberg.de)

A digital computer is a wonderful tool for performing mathematical experiments. I would like to introduce an algorithm that spontaneously generates particles that move and interact in Euclidean space. This only happens with the help of position and displacement vectors. First of all I have to define some rules according to which the algorithm should run. These rules are not entirely random and when experimenting quickly show whether the rules produce something interesting. I believe that the proposed algorithm actually gives amazing results. The program describes a discrete dynamical system. In a loop calculation, the states of the system change in equidistant time steps. With each iteration, the states are always recalculated according to specified procedures. A general rule is introduced that a quantity [math]G[/math] is made up of the integer multiples of a constant base quantity [math]G_0[/math] ([math]G = n \cdot G_0[/math], n is a natural number). All quantities are finite.

Now I can define an important quantity in this way: time. Each cycle in the calculation loop specifies the shortest time step [math]dt_0[/math]. The time is then granular and corresponds to the number n of iterations [math]t = n \cdot dt_0[/math]. You also need objects with which something happens. Let's start with a point. The point has a certain position in space, which is determined by the position vector [math]\mathbf{r}[/math] (vectors are printed in bold). This position vector points from a freely chosen zero vector to the specified point. The point is by definition always in motion, I achieve this with a displacement vector [math]\mathbf{dr}[/math], which is added to the position of the point with every iteration in the calculation loop. Since [math]\mathbf{dr}[/math] has by definition a constant length, the step width of the point is constant and is equal to the magnitude of the displacement vector [math]|\mathbf{dr}| = dr_0[/math]. The point now moves straight ahead and has the constant speed [math]\mathbf{v} = \mathbf{dr} / dt_0[/math]. According to Newton's laws, this is a physical statement.

After a while the point disappears from the screen and that would be a boring event. I have to constrain the movement of the point to a defined area. I achieve this by providing the point with a second point as a partner. These two points are supposed to dance around each other. For this, the dancers need certain rules. The first rule is: move with the velocities [math]\mathbf{v}[/math] and [math]\mathbf{-v}[/math] respectively exactly in opposite direction on two parallel lines with the distance [math]s[/math]. The second rule is: If your distance becomes longer than the elongation [math]e[/math], turn around and run on two new parallel lines with the distance [math]s[/math]. This distance s and the direction of rotation remaining always the same. A third rule should take into account the principle that all quantities can only change step by step, including the parameters [math]s[/math] and [math]e[/math]. They are integer multiples of the step width [math]dr_0[/math]. The two points form a system whose center of mass remains constant. The angular momentum of the points is constant and given by [math]v[/math] and [math]s[/math]. In addition, a maximum distance is set, which the dancing points should not exceed if possible. They don't quite succeed because they move step by step. The limit is not sharp, it can be exceeded by a maximum of [math]dr_0[/math].


There is still something missing to make the algorithm physical: it is the mass. So I assign a smallest possible mass [math]m_0[/math] to each point. This assumption must not appear artificial or forced. A common center of mass can also be specified for a point cloud. Now the constant momentum for a point is given by [math]\mathbf{p} = m_0 \cdot \mathbf{v}[/math] and the kinetic energy by [math]E = ½ m_0 v²[/math]. The described pair of points ("bivector") is the most important basic building block of the calculation model. It is the smallest possible particle of the simulation. From a geometric point of view, a parallelogram is spanned in space by the distance vector [math]\mathbf{r_{12} = r_2 - r_1}[/math] between the two points and the displacement vector [math]\mathbf{dr}[/math], whose area is equal to [math]s · dr_0[/math]. The parallelogram is an oriented plane and has a sense of rotation. The bivector exists in every dimension > 1. The bouncing points describe a circular disc, the edge of which is not very sharp. For example, if [math]e \gt \gt s[/math] the points are oscillating in an almost star shape around the circle with the diameter [math]s[/math] and for the special case [math]e = s[/math] the points are moving unsharp on a circle with the diameter [math]e[/math]. The bivector contains two points and therefore its mass is [math]2\cdot m_0[/math].

How can the bivector be represented in a program? At the beginning of each iteration, it is checked whether the distance between the points exeeds [math]e[/math]. If this is not the case, the points can continue to move freely in a straight line. If the permitted limit is exceeded, the points must be reflected so that their distance is reduced again. The rules given above must be observed. From a geometric point of view, this is easy to illustrate. The distance between the points is halved and a circle with the diameter [math]s[/math] is drawn around the center found, which is also the center of mass of the bivector. Then, starting from the two points, tangents are placed on the circle, whereby the sense of rotation must be the same as before. The points continue to move on these newly found tangents. One can imagine that the two points are connected by a chain with the length [math]e[/math]. As long as the chain is still loose, the points can move freely. However, if the chain is suddenly tensioned after a step, the points must reverse abruptly. The chain can be spanned by a maximum of one chain link. This methode of reflection has the advantage that only internal quantities of the bivector are used and no impulse is exchanged to the outside. The bivectors can be moved freely in the space. This fact will become important later.

Now we add more points. Each point must be at least a member of one bivector to give it a momentum. However, one point can be a partner of several bivectors and then the situation quickly becomes confusing. Therefore, it makes sense to represent the relationship between the points using a graph of graph theory. The points are the vertices and the bivectors are the edges of the graph. If the point cloud consists of [math]N[/math] points, a maximum of [math]N(N-1)/2[/math] bivectors can be inserted between the points. If a point is involved in several bivectors, there is a strong coupling between these linked bivectors. This should be illustrated using a simple example. Suppose we connect three points [math]\mathbf{P_1}[/math],[math]\mathbf{P_2}[/math] and [math]\mathbf{P_3}[/math] with two bivectors with the pairing (1-2) and (2-3). With each iteration, each bivector is treated as before, regardless of the others. The associated displacement vectors [math]\mathbf{dr_{12}}[/math] and [math]\mathbf{dr_{23}}[/math] result from this. Finally, the displacements are superposed. Point [math]\mathbf{P_1}[/math] shifts by [math]\mathbf{dr_{12}}[/math], point [math]\mathbf{P_2}[/math] by [math]\mathbf{(-dr_{12}+dr_{23})}[/math] and point [math]\mathbf{P_3}[/math] by [math]\mathbf{-dr_{23}}[/math]. Imagine that dancer [math]\mathbf{P_2}[/math] has to perform the steps of two dance pairs at the same time! The two dance couples will have to dance completely new figures, they are closely linked. This example describes another possible particle. Since it contains three points, its mass is [math]3\cdot m_0[/math]. If you look at the energy situation, it gets a little more complicated. Two displacement vectors [math]\mathbf{-dr_{12}}[/math] and [math]\mathbf{dr_{23}}[/math] are added to point [math]\mathbf{P_2}[/math]. In the case that both vectors have the same direction, the point [math]\mathbf{P_2}[/math] has the speed [math]2\cdot v[/math]. Its kinetic energy is therefore [math]2 m_0 v²[/math]. On the other hand, if the two displacement vectors are exactly opposite, the kinetic energy is zero. So that the theorem of energy conservation remains valid for the simulation model, the energy of point [math]\mathbf{P_2}[/math] could now be interpreted as potential energy. As the directions of the displacement vectors will change, the potential energy is converted back into kinetic energy. Nothing is lost, the number of displacement vectors is constant. This interplay is also known from a tensioned and relaxed metal spring.

If you experiment with the calculation model described, you will experience a surprise. Under certain conditions, self-organization creates stable structures in the space. These attractors can change spontaneously, they can attract and repel, they behave like particles with mass and obey the momentum conservation law. To do this, however, the algorithm still needs to be expanded. A weak interaction must be added. Let's start again with a point cloud. The points are linked by bivectors. When points are members of several bivectors, there are strongly coupled sets of points, these are our particles. Several isolated graphs and thus particles can be defined. The particles do not yet interact, their graphs are isolated networks in space. How can I couple the isolated particles? To do this, I assign a plus or minus sign to some points. The additional rule is: if the points have opposite signs, the points move iteratively radially towards each other with the step size [math]dr_L[/math], if they are like-signed, they repel each other. These shifts are added to the other displacements. The momentum conservation law is still observed, the sum of the momentum vectors remains equal to zero. With [math]dr_L[/math] you can control the weak coupling between the particles, often I set [math]dr_L = dr_0 / 150[/math]. The algorithm can be programmed on the basis of real or integer numbers.

External links:

https://opus4.kobv.de/opus4-ohm/frontdoor/index/index/docId/253

https://opus4.kobv.de/opus4-ohm/frontdoor/index/index/docId/126

https://opus4.kobv.de/opus4-ohm/frontdoor/index/index/docId/34

https://drive.google.com/file/d/1u3lOz7ydiSStSIm_FsuUGXNnbtSUUWay/view?usp=sharing

https://drive.google.com/file/d/1JjF1Z4kmJaEV5BU2P9j0m9IP-BtaosOo/view?usp=sharing

https://drive.google.com/open?id=1I82uduHWlwbVNCdFygdsM_B6TqtEwKSM

https://opus4.kobv.de/opus4-ohm/frontdoor/index/index/docId/481

https://drive.google.com/file/d/1pSUXVzf1uNchKwMq1tk1P-_TclCDjSs8/view?usp=sharing

https://opus4.kobv.de/opus4-ohm/files/253/Particle.jar


Attachment

You can make a bivector geometrically clear with a drawing. Draw two points [math]P_1[/math] and [math]P_2[/math] 16 cm apart. Connect the two points with a straight line and halve them. The point M found in this way is the center of mass of the pair of points. Draw two circles around M with the radius s/2 = 2 cm and e/2 = 4 cm. Place two parallel tangent lines starting from points [math]P_1[/math] and [math]P_2[/math] to the s-circle. Starting from point [math]P_1[/math], move [math]P_1[/math] step by step with the step width [math]dr_0[/math] = 2 cm along the tangent line. The point now jumps to the e-circle and runs through it. As soon as [math]P_1[/math] has left the e-circle, a new tangent line from [math]P_1[/math] is placed to the s-circle, keeping the direction of rotation, and the game is repeated. The point [math]P_1[/math] is now captured and circles the s-circle. Point [math]P_2[/math] is always moved in the opposite direction at the same time. This system is a bivector, it is characterized by a constant angular momentum (~ s) and an elongation e. The bivector can be moved freely in space, its position is only determined by the two points [math]P_1[/math] and [math]P_2[/math].