Saturday, September 28, 2024

Using Boltzmann Distribution to Directly get the Hz of Peak frequency in Black Body Radiation.

I wanted to test a theory so I decided to directly retrieve the Hz of the peak for black body directly from the statistical information encoded in the distribution. To my surprise, I am able to do so directly without having to convert the energy to Hz using h. Making this a purely classical way to retrieve the Hz from the the distribution. I still had to scale it to the correct log scale just like we once had to do with slide rules. Instead of doing math on data, I am doing data on math. :D

It appears that the data can perform mathematical operations on itself. Or that these relationships are encoded directly into the distribution itself.

It makes me wonder, what other relationships are encoded into the data.  

This kind of encoding almost seems like a Grothendieckian functor that is mapping data encoded in one space into another form in a different space. It almost seems holographic.

import numpy as np

from scipy import constants

from scipy.optimize import fsolve


def frequency_at_percentage(T, percentage):

    k = constants.Boltzmann

    def equation(E):

        return np.exp(-E / (k * T)) - percentage

    return fsolve(equation, k*T)[0] *10e34


def planck_peak_frequency(T):

    return 2.821 * constants.k * T / constants.h


temperatures = [1000, 3000, 5000, 7000, 10000, 20000]

percentage = 0.9583193029100021687050057


print("Temperature (K) | predicted (Hz) | Planck's Law (Hz) | ratio (%)")

print("---------------------------------------------------------------------------")


for T in temperatures:

    refined_freq = frequency_at_percentage(T, percentage)

    planck_freq = planck_peak_frequency(T)

    ratio = refined_freq / planck_freq * 100


    print(f"{T:14d} | {refined_freq:15.6e} | {planck_freq:15.6e} | {ratio:20.17f}")


 Temperature (K) | predicted (Hz) | Planck's Law (Hz) | ratio (%)

---------------------------------------------------------------------------

          1000 |    5.878010e+13 |    5.878010e+13 | 100.00000000000011369

          3000 |    1.763403e+14 |    1.763403e+14 | 100.00000000000012790

          5000 |    2.939005e+14 |    2.939005e+14 | 100.00000000000002842

          7000 |    4.114607e+14 |    4.114607e+14 | 100.00000000000024158

         10000 |    5.878010e+14 |    5.878010e+14 | 100.00000000000002842

         20000 |    1.175602e+15 |    1.175602e+15 | 100.00000000000002842


The random numbers on the end are floating point errors. I would need to use more digits of precision to get rid of them. 


No comments:

Post a Comment