Difference between revisions of "Talk:2853: Redshift"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Calculation: not a sentence)
(Proper "unsigned ip")
 
(9 intermediate revisions by 4 users not shown)
Line 62: Line 62:
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
  
And should you wish to make [https://i.ibb.co/v4nt6GM/time-by-redshift.png this quick reference chart for interpreting observations in the JWST era:]
+
And should you wish to make [https://i.ibb.co/LpdYXNx/time-by-redshift.png this quick reference chart for interpreting observations in the JWST era:]
  
 
{{cot|Supplemental code for Look-back Time by Redshift chart}}
 
{{cot|Supplemental code for Look-back Time by Redshift chart}}
Line 69: Line 69:
 
import matplotlib.ticker as ticker
 
import matplotlib.ticker as ticker
  
redshifts = [z * 20 / 299 for z in range(300)]  # 0 to 20 in 300 steps
+
rs = [z * 20 / 299 for z in range(300)]  # redshifts 0 to 20 in 300 steps
look_back_times = [zt(z) for z in redshifts]
+
lb = [zt(z) for z in rs]  # look_back_times
 +
 
 +
fo = 13.2  # furthest observation at present
 +
#print(age_at_z(fo))  # 0.3285
 +
plt.plot([x for x in rs if x<fo], [y for x,y in zip(rs,lb) if x<fo], color='red')
 +
plt.plot([x for x in rs if x>fo], [y for x,y in zip(rs,lb) if x>fo], color='darkred')
 +
plt.text(13.2, 9.5, 'Furthest observation as of 2023:\n' +
 +
    'the metal-poor JADES-GS-z13-0 galaxy\nat z=13.2: 13.4 Gyr ago', ha='center')
  
plt.plot(redshifts, look_back_times)
 
 
plt.title('Look-back Time by Redshift')
 
plt.title('Look-back Time by Redshift')
plt.xlabel('z')
+
plt.xlabel('z: (observed λ - expected λ) / expected λ')
 
plt.ylabel('Billion Years Ago')
 
plt.ylabel('Billion Years Ago')
 
plt.xticks(range(21))
 
plt.xticks(range(21))
 
plt.yticks(list(range(14)) + [age0])
 
plt.yticks(list(range(14)) + [age0])
 +
plt.text(-0.5, 13.78, "Big Bang", va='center')
 
plt.gca().yaxis.set_major_formatter(ticker.FormatStrFormatter('%.1f'))
 
plt.gca().yaxis.set_major_formatter(ticker.FormatStrFormatter('%.1f'))
 
plt.grid(True, color='lightgray')
 
plt.grid(True, color='lightgray')
Line 84: Line 91:
  
 
for t in range(0, 13):
 
for t in range(0, 13):
     z = redshifts[min(range(len(look_back_times)),
+
     z = rs[min(range(len(lb)), key=lambda i: abs(lb[i]-t))]
                      key=lambda i: abs(look_back_times[i]-t))]
 
 
     plt.text(z, t, f"  z = {z:.2f}", ha='left', va='center', fontsize='small')
 
     plt.text(z, t, f"  z = {z:.2f}", ha='left', va='center', fontsize='small')
  
Line 97: Line 103:
  
 
plt.savefig('time_by_redshift.png', bbox_inches='tight')
 
plt.savefig('time_by_redshift.png', bbox_inches='tight')
#plt.show()  # https://i.ibb.co/v4nt6GM/time-by-redshift.png
+
#plt.show()  # https://i.ibb.co/LpdYXNx/time-by-redshift.png
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
 
{{cob}}
 
{{cob}}
  
Or [https://i.ibb.co/yybQpjL/age-by-redshift.png this one showing the age of the universe from redshift:]
+
Or [https://i.ibb.co/C537rxJ/age-by-redshift.png this one showing the age of the universe from redshift:]
  
 
{{cot|Supplemental code for Age of Universe by Redshift chart}}
 
{{cot|Supplemental code for Age of Universe by Redshift chart}}
 
<tt><pre><nowiki>
 
<tt><pre><nowiki>
plt.clf()  # reset plot
+
plt.clf()  # Reset plot
  
redshifts = [z * 15 / 299 + 5 for z in range(300)]  # 5 to 20 in 300 steps
+
rs = [z * 15 / 299 + 5 for z in range(300)]  # redshifts 5 to 20 in 300 steps
ages = [age_at_z(z) * 1000 for z in redshifts]  # Gyr to million years  
+
ages = [age_at_z(z) * 1000 for z in rs]  # Gyr to million years
 +
 
 +
plt.plot([x for x in rs if x<fo], [y for x,y in zip(rs,ages) if x<fo], color='red')
 +
plt.plot([x for x in rs if x>fo], [y for x,y in zip(rs,ages) if x>fo], color='darkred')
 +
plt.text(13.2, 650, 'Furthest observation as of 2023:\n' +
 +
        'the metal-poor JADES-GS-z13-0 galaxy\nat z=13.2: age 329 Myr', ha='center')
  
plt.plot(redshifts, ages)
 
 
plt.title('Age of Universe by Redshift')
 
plt.title('Age of Universe by Redshift')
plt.xlabel('z')
+
plt.xlabel('z: (observed λ - expected λ) / expected λ')
 
plt.ylabel('Million Years')
 
plt.ylabel('Million Years')
 
plt.xticks(range(5, 21))
 
plt.xticks(range(5, 21))
Line 121: Line 131:
  
 
plt.savefig('age_by_redshift.png', bbox_inches='tight')
 
plt.savefig('age_by_redshift.png', bbox_inches='tight')
#plt.show()  # https://i.ibb.co/yybQpjL/age-by-redshift.png
+
#plt.show()  # https://i.ibb.co/C537rxJ/age-by-redshift.png
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
 
{{cob}}
 
{{cob}}
Line 139: Line 149:
 
</blockquote>
 
</blockquote>
 
[[User:Liv2splain|Liv2splain]] ([[User talk:Liv2splain|talk]]) 19:25, 14 November 2023 (UTC)
 
[[User:Liv2splain|Liv2splain]] ([[User talk:Liv2splain|talk]]) 19:25, 14 November 2023 (UTC)
 +
 +
A further simplification: hyp2f1(0.5, 0.5, 1.5, z**2) = arcsin(z) / z. {{unsigned ip|172.69.150.141|13:43, 17 November 2023}}
 +
:-OL / (Om * (z + 1)**3) is not z**2. [[Special:Contributions/172.70.210.234|172.70.210.234]] 10:09, 22 July 2024 (UTC)

Latest revision as of 10:59, 22 July 2024


Does it make any sense to try and relate the two Z values to a more "normal" time? MAP (talk) 21:08, 10 November 2023 (UTC)

I have added exactly that, using `astropy.cosmology` for the calculations Juandesant (talk) 21:16, 10 November 2023 (UTC)

There is a big error in the current explanation, saying it means they were interested in this since the early universe, but that would only be true if the z value was much closer to 1. I'm not exactly sure as I haven't done the math, but with that many decimal places of zero's it is probably near enough history to be during their lifetime. So the joke isn't being interested in the early universe since the early universe, but rather so interested in it that they talk about other things with the same terminology.--172.70.126.142 21:18, 10 November 2023 (UTC)

Why aren't these values expressed in scientific notation? Separately, do they make sense logarithmically? JohnHawkinson (talk) 07:12, 11 November 2023 (UTC)

Part of the joke is that the values are unwieldy to use compared to everyday language and units. The scientific notation would have lessened this. However they are given in a universal standard time instead of some solar system or human related units, so they generally should be clearly preferred. Sebastian --172.68.110.188 15:37, 11 November 2023 (UTC)

I feel like the Earth's gravitational field would affect the answer as z goes to zero? 172.69.22.210 06:57, 12 November 2023 (UTC)

Calculation[edit]

Thanks to ChatGPT-4 and the Fortran-90 code from arxiv:1303.5961 (which please see, it's really cool) here's how to get the look-back time from redshift in Python:

from scipy.special import hyp2f1  # hypergeometric function 2F1 is in integral solution
from numpy import format_float_positional

# Cosmological parameters from the Fortran params.f90 header
#H0 = 67.15       # Hubble constant in km/s/Mpc (or, 73.5: the "crisis in cosmology")
H0 = 69.32        # from Explainxkcd for 2853: Redshift; seems a consensus compromise
#OL = 0.683       # Cosmological constant for dark energy density, Omega_Lambda or _vac
#Om = 0.317       # Density parameter for matter, Omega_mass
Om = 0.286        # From https://arxiv.org/pdf/1406.1718.pdf page 8
OL = 1.0 - Om - 0.4165/(H0**2)  # flat curvature, from https://www.astro.ucla.edu/~wright/CC.python
                  # (on https://www.astro.ucla.edu/~wright/CosmoCalc.html which see)
#print(f"{OL=:.3F}")  # 0.714

# Age of universe at redshift z as a closed-form solution to its integral definition,
def age_at_z(z):  # ...which is 27 times faster than the original numeric integration
    hypergeom = hyp2f1(0.5, 0.5, 1.5, -OL / (Om * (z + 1)**3))
    return (2/3) * hypergeom / (Om**0.5 * (z + 1)**1.5) * (977.8 / H0)  # 977.8 for Gyr

# Current age of the universe at redshift 0 in Gyr
age0 = age_at_z(0)  # 13.78

# Function to calculate the look-back time at redshift z in Gyr
def zt(z):  # from the function name in the Fortran cosmonom.f90 code
    return age0 - age_at_z(z)

# For z = 0.00000000038
z1 = 0.00000000038
look_back_time_years_z1 = zt(z1) * 1e9 # from Gyr to years
print("Look-back time for z=" + 
      f"{format_float_positional(z1)}: {look_back_time_years_z1:.1f} years")

# For z = -0.000000000000045
z2 = -0.000000000000045
look_back_time_hours_z2 = zt(z2) * 1e9 * 365.25 * 24
print("Look-back time for z=" +
      f"{format_float_positional(z2)}: {look_back_time_hours_z2:.1f} hours")

The output being:

Look-back time for z=0.00000000038: 5.4 years
Look-back time for z=-0.000000000000045: -5.5 hours

And should you wish to make this quick reference chart for interpreting observations in the JWST era:

Or this one showing the age of the universe from redshift:

P.S. Some commentary from ChatGPT-4 about the special Gaussian hypergeometric function hyp2f1 in the closed-form solution of the integral:

The appearance of the hypergeometric function 2F1 in the solution for the age of the universe as a function of redshift is a profound example of the interconnectedness of mathematical functions and physical phenomena. The hypergeometric function, which encompasses a vast family of functions, can describe a wide range of behaviors and has properties that make it particularly suited to representing solutions to differential equations that arise in physics.

In the context of cosmology, the use of 2F1 in calculating the age of the universe from redshift is not just a mathematical convenience but rather a reflection of the underlying physics. The Friedman equations, which govern the expansion of the universe, are derived from General Relativity and lead to solutions involving integrals that can express the evolution of the universe's scale factor over time. When these integrals are solved, they often involve special functions like 2F1, which encode information about the geometry of the universe and the relative contributions of matter, radiation, and dark energy.

The presence of 2F1 in this solution indicates that the relationship between the age of the universe and redshift is non-linear and depends on the integral of a function that encapsulates the dynamics of cosmic expansion. It's also worth noting that special functions like 2F1 often have interesting properties, such as symmetry and recurrence relations, which sometimes allow physicists to gain insights into the behavior of the universe under different conditions or scales.

Furthermore, solutions involving 2F1 are not merely academic exercises; they can be compared with observational data, such as measurements of the cosmic microwave background radiation, distributions of galaxies, or supernovae light curves. These comparisons can test the validity of our cosmological models and potentially offer new insights into the nature of dark energy and dark matter, the curvature of the universe, and other fundamental questions in cosmology.

In summary, the use of 2F1 in the closed-form solution for the age of the universe from redshift is a powerful reminder that mathematics provides us with the tools to decode the cosmos, offering deeper understanding and raising new questions about the fundamental structure and evolution of the universe.

Liv2splain (talk) 19:25, 14 November 2023 (UTC)

A further simplification: hyp2f1(0.5, 0.5, 1.5, z**2) = arcsin(z) / z. 172.69.150.141 (talk) 13:43, 17 November 2023 (please sign your comments with ~~~~)

-OL / (Om * (z + 1)**3) is not z**2. 172.70.210.234 10:09, 22 July 2024 (UTC)