Puedes leer esto en castellano aquí!!! Tiene cosas más, cosas menos…..
Here is the code: https://github.com/jfforero/QFT
… And well … I am tripping through the jingling territory of quantum mechanics, with the intention of searching from language and technique for sensible connections.
So here I go!!!
Quantum mechanics is a field of physics that allows us to understand and analyze the nature of atoms and subatomic particles. Until the beginning of the 20th century, there were many phenomena that could not be explained from classical mechanics (we mean to classical mechanics, basically to Newtonian mechanics …).
The blackbody radiation problem was one such example. (This problem is interesting, because it is a model that connects, among so many things, the color of a body with its temperature – Wien had already advanced in this relationship …)
The experiment goes as follows: The scientists emit electromagnetic radiation (light per example) through a hole in a body capable of completely absorbing the energy received. Imagine that the black body is made up of a set of springs, which when receiving the light packets are excited and that increase of the energy is transferred in the network. In this “transfer” the body radiates an energy that can be measured.The experiment therefore consists of: Given a known incident wavelength, measuring the radiation emitted from the body.
If we do this for the body at different temperatures (which we assume constant), we obtain:
Until then, in its classical formulation, deduced from Boltzmann’s thermodynamic principles and experiences, the Rayleigh-Jeans black body radiation law predicts that:
As you will see, this means that for small wavelengths ,there would be an unlimited increase in radiation, a phenomenon that is not consistent with the empirical evidence. This is what scientists in the early 20th century called the Ultraviolet Catastrophe.
This “inconsistency”, however, is avoided if we think the black body as a collection of springs that can vibrate only at certain frequencies, with a corresponding associated energy given by the Planck relation E = hv.
This same principle of packets or “quanta” allows to explain; the photoelectric effect, the Compton effect and the emission / absorption bands of gases, among many other phenomena already discussed by then …
But what does this mean?
Until then, light was well describe in a wave model based. Maxwell’s theories masterfully describe the existence and operation of electromagnetic fields.
De Broglie takes this duality further and hypothesizes that material particles are also naturally waves and corpuscles at the same time.
Yes … Famous is the double slit experiment, where a characteristic diffraction pattern of waves is observed.
The experiment consists of emitting atomic particles to a target. On the way, the particles can pass between two small slits separated by a distance comparable to the wavelength of the emitted particle.
What we observed is that somehow the particle is in both places at the same time and interferes with itself …
In addition, the double slit experiment reveals that the observer plays a fundamental role, since we cannot measure without disturbing the system, so whatever we prepare the system, we can never measure with certainty all its properties, at a given moment.
This accumulation of phenomena certainly requires a more solid mathematical support …
Let’s see!!
Under classical terms, a wave satisfies a differential equation of the type;
As you may know, a very popular solution is the simple harmonic motion.
In order to digitize the above, I will use the Unity3D environment and his c # language in order to visualize the results.
To do this, we basically need to update the position of your favorite object.
LEVEL 1: Harmonic Oscillator
private float x = 0;
public float w = 0;
public float A = 0;
void Update()
{
x = A * Mathf.Sin(w * Time.time);
transform.localPosition = new Vector3(x, 0, 0);
}
LEVEL2: WAVE ON A STRING
To visualize this, we will need to be able to count on several witnesses, masses or oscillators …
A straightforward way is to use the properties of Unity3D’s LineRenderer to write each vertex.
Seems smart …
void Onda(Vector3 punto_inicio, float amplitud, float longitud_Onda, float velocidad)
{
float x = 0.f;
float y;
float k = 2 * Mathf.PI / longitud_Onda;
float w = k * velocidad;
RenderLinea1.positionCount = 200;
for (int i = 0; i < RenderLinea1.positionCount; i++){
x += i * 0.001f;
y = amplitud * Mathf.Sin(k * x + w * Time.time);
RenderLinea1.SetPosition(i, new Vector3(x, y, 0) + punto_inicio);
}
}
In this sense, it is also interesting to visualize the superposition of waves.
LEVEL3: WAVES SUPERPOSITION
void Onda(Vector3 punto_inicio, float amplitud, float longitud_Onda, float velocidad)
{
float x = 0f;
float y = 1;
float y1 = 1;
float y2 = 1;
float y3 = 1;
float k = 2 * Mathf.PI / longitud_Onda;
float w = k * velocidad;
RenderLinea1.positionCount = 200;
for (int i = 0; i < RenderLinea1.positionCount; i++)
{
x += i * 0.001f;
y1 = Mathf.Sin(k * x + w * Time.time);
y2 = Mathf.Sin(k * x / 2 + w * Time.time / 2);
y3 = Mathf.Sin(k * x / 3 + w * Time.time / 3);
y = y1 + y2 + y3;
RenderLinea1.SetPosition(i, new Vector3(x, A*y, 0) + punto_inicio);
}
}
By adding waves it is possible to create packets, fact that in quantum mechanics is very important, because it can be interpreted as carriers of the state of the system.
In general, we look for a wave solution (plane waves) of the type:
Yes dude …. Mr. Euler had already enlightened us by then !!! In case you don’t remember this wonderful contribution to knowledge …
We could thus take a packet of these flat waves (lots sinusoidal waves with different frequencies …).
Defining as initial condition (initial waveform) a Gaussian function for example, we can calculate the coefficients A (k) using the Fourier transform of the Function (which is another Gaussian function – arwww *
Thus, the wave function in a non-dispersive medium would be;
LEVEL4: NON DISPERSIVE WAVE PACKET
public float longitud_Onda = 0.1f;
public float velocidad = 1f;
public float amplitud = 1f;
private LineRenderer RenderLinea1;
void Start()
{
RenderLinea1 = gameObject.GetComponent();
}
void Update()
{
Onda(new Vector3(0, 0, 0), 4, longitud_Onda, velocidad);
}
void Onda(Vector3 punto_inicio, float amplitude, float longitud_Onda, float velocidad)
{
float x = 0f;
float k = 2 * Mathf.PI / longitud_Onda;
float w = k * velocidad;
float real;
float imaginario;
float gaussian;
RenderLinea1.positionCount = 200;
for (int i = 0; i < RenderLinea1.positionCount; i++)
{
x += i * 0.001f;
gaussian = Mathf.Exp(-1 * Mathf.Pow((x – longitud_Onda * Time.time), 2));
real = gaussian * Mathf.Cos(k * (x – velocidad * Time.time));
imaginario = gaussian * Mathf.Sin(k * (x – velocidad * Time.time));
RenderLinea1.SetPosition(i, new Vector3(x, amplitud * real, 0) + punto_inicio);
}
}
If we also plot the imaginary component and we see the output with an orthogonal camera we have:
This is pretty ugly…. I will try some 3D game Object in each vertex to see what happens….
public GameObject mi_prefab;
private GameObject[] objeto;
public float amplitud = 1f;
public float longitud_Onda = 1f;
public float velocidad = 1f;
void Start()
{
objeto = new GameObject[1000];
for (int x = 0; x < 1000; x++){
objeto[x] = Instantiate(mi_prefab, transform);
}
}
void Update(){
float k = 2 * Mathf.PI / longitud_Onda;
float w = k * velocidad;
float real;
float imaginario;
float gaussian;
for (int a = 0; a <1000; a++){
float x =+ a * 0.01f;
gaussian = Mathf.Exp(-Mathf.Pow((x – velocidad * Time.time), 2));
real = gaussian * Mathf.Cos( k * (x – velocidad * Time.time));
imaginario = gaussian * Mathf.Sin(k * (x – velocidad * Time.time));
objeto[a].transform.position = new Vector3(x, amplitud * real, amplitud * imaginario);
}
}
Much better!! I did the same for a dispersive wave packets… I don’t know if it is right, but looks awesome!!!
Analogously to the classical wave equation, taking Planck’s arguments E = hf and De Broglie’s hypothesis P = h / λ, we have that the particles satisfies the Schrodinger equation:
Thus for a particle in free space, where the potential energy U of the system is null, we have:
The idea is to search for wave functions that are square integrables, and that their integrals over the square module, in all space, is 1 (that is, we are looking for Hermitian operators). This is very important because in Quantum Mechanics we interpret the module of square of the wave as the probability of find the particle in on a posible state.
So, for example, going back to the case of the harmonic oscillator. Imagine a particle in space subjected to elastic forces (c in the image) that cause the particle to vibrate.
As we said, data tells us that the system does NOT vibrate at any frequency (energy), but rather those values and states are quantized.
The Schrodinger equation for steady states is solved by looking for the eigenvalues and eigenfunctions for those values such that
Let look for solutions that we can separate:
This means that;
So we have to solve the same problem for each degree of freedom..
Where the solution is:
or
where:
with =
Thus, the total energy (which is ultimately what we observe when we measure) of a harmonic oscillator is
As you may see, the ground state is non null!!! That means that particles are never in rest!!!
The energy values can be arranged as an energy spectrum that represents the states available for a given energy value.
At this point i will use the Open Source programe Pure Data to integrate some audio features to our project.
My first approach is to use the energy levels of the quantum oscillator and see what happens.
We first search for the angular frequency:
…and as my first attempt, I will connect each energy level with a different audio oscillator. I used ħ around 1.
Beautiful!! let see what happens if we use a sequence instead of all the oscilators at the same time.
Now, we could also instead of sequencing the sounds according to the energies of the harmonic oscilator, make each of the energies levels to control the parameters of a wave packet.
mmmm,,,,Something like this….
As a variable I choose to use ħ.
What i did next was to send the fourth energy level throw a midi channel to Ableton live.
Using standard beats at 120 bpm:
Given the COVID pandemic and the mismanagement of our authorities, in Chile (where I am now), we have been quarantined for 5 months !!!
Certainly, I have written all this to not go insane …
Flowers arrived at the house! Beautiful flowers.We were all very happy to see their colors and feel their aromas.
My sons began to inquire and ask questions about its origin and structures.
Where do flowers grow from?Why are they the way they are?
I certainly don’t have those answers, I thought, but I think that this flower is in essence just one of the possible states of that flower.All the functions that make the seed a potential flower collapsed into a state to give rise to that being …
So, my next step was to try to create a flower generator that responds to harmonic oscillator energies levels.
For this purpose I will base my shader on Inigo Quilez works.
http://glslsandbox.com/e#66140.0
My idea is to use this code to create some continuum transition between states.
I propose to represent the fourth first levels, each with a different phase of flower growth.
In this sense, the first level will be the seed.
LEVEL1
LEVEL2
LEVEL3
LEVEL4
Combining our approachs we have:
At this point, I want to go back and join our first ideas about wave packets (do you remember?).Well, first of all, i will integrate the states of quantum oscillators that we program with the flower shader generator ,with the wave packets unity3D simulation.
You may think that I am going too far with this, but I encourage you to lose yourself and try to discover that everything is connected.
I will complete my quantum feelings with a VR project and a live coding performance.
The project won’t be complete until the poetry emerges. Who better than the great Richard Feynman to inspire us.
There are the rushing waves
mountains of molecules
each stupidly minding its own business
trillions apart
yet forming white surf in unison.
Ages on ages
before any eyes could see
year after year
thunderously pounding the shore as now.
For whom, for what?
On a dead planet
with no life to entertain.
Never at rest
tortured by energy
wasted prodigiously by the sun
poured into space
A mite makes the sea roar.
Deep in the sea
all molecules repeat
the patterns of one another
till complex new ones are formed.
They make others like themselves
and a new dance starts.
Growing in size and complexity
living things
masses of atoms
DNA, protein
dancing a pattern ever more intricate.
Out of the cradle
onto dry land
here it is
standing:
atoms with consciousness;
matter with curiosity.
Stands at the sea,
wonders at wondering: I
a universe of atoms
an atom in the universe.
Richard P. Feynman
(1918-1988)
So I Took the first paragraph to create a live coding communication between me and the computer.
As Feynman said: I gotta stop somewhere. I leave you something to imagine.
Good luck amigos!
MARICHIWEU!!!!