Editing Talk:2853: Redshift

Jump to: navigation, search
Ambox notice.png Please sign your posts with ~~~~

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 17: Line 17:
  
 
<tt><pre><nowiki>
 
<tt><pre><nowiki>
from scipy.special import hyp2f1  # hypergeometric function 2F1 is in integral solution
+
from scipy.special import hyp2f1  # hypergeometric 2F1 function is in integral solution
 
from numpy import format_float_positional
 
from numpy import format_float_positional
  
Line 26: Line 26:
 
#Om = 0.317      # Density parameter for matter, Omega_mass
 
#Om = 0.317      # Density parameter for matter, Omega_mass
 
Om = 0.286        # From https://arxiv.org/pdf/1406.1718.pdf page 8
 
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
+
OL = 1.0 - Om - 0.4165/(H0**2)  # from https://www.astro.ucla.edu/~wright/CosmoCalc.html
                  # (on https://www.astro.ucla.edu/~wright/CosmoCalc.html which see)
 
 
#print(f"{OL=:.3F}")  # 0.714
 
#print(f"{OL=:.3F}")  # 0.714
  
# Age of universe at redshift z as a closed-form solution to its integral definition,
+
# 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
+
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))
 
     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
 
     return (2/3) * hypergeom / (Om**0.5 * (z + 1)**1.5) * (977.8 / H0)  # 977.8 for Gyr
Line 62: Line 61:
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
  
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:]
+
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:]
  
 
{{cot|Supplemental code for Look-back Time by Redshift chart}}
 
{{cot|Supplemental code for Look-back Time by Redshift chart}}
Line 69: Line 68:
 
import matplotlib.ticker as ticker
 
import matplotlib.ticker as ticker
  
rs = [z * 20 / 299 for z in range(300)]  # redshifts 0 to 20 in 300 steps
+
redshifts = [z * 20 / 299 for z in range(300)]  # 0 to 20 in 300 steps
lb = [zt(z) for z in rs] # look_back_times
+
look_back_times = [zt(z) for z in redshifts]
 
 
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: (observed λ - expected λ) / expected λ')
+
plt.xlabel('z')
 
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 91: Line 83:
  
 
for t in range(0, 13):
 
for t in range(0, 13):
     z = rs[min(range(len(lb)), key=lambda i: abs(lb[i]-t))]
+
     z = redshifts[min(range(len(look_back_times)),
 +
                      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 103: Line 96:
  
 
plt.savefig('time_by_redshift.png', bbox_inches='tight')
 
plt.savefig('time_by_redshift.png', bbox_inches='tight')
#plt.show()  # https://i.ibb.co/LpdYXNx/time-by-redshift.png
+
#plt.show()  # https://i.ibb.co/v4nt6GM/time-by-redshift.png
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
 
{{cob}}
 
{{cob}}
  
Or [https://i.ibb.co/C537rxJ/age-by-redshift.png this one showing the age of the universe from redshift:]
+
Or [https://i.ibb.co/yybQpjL/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
 
 
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 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')
+
redshifts = [z * 15 / 299 + 5 for z in range(300)] # 5 to 20 in 300 steps
plt.plot([x for x in rs if x>fo], [y for x,y in zip(rs,ages) if x>fo], color='darkred')
+
ages = [age_at_z(z) * 1000 for z in redshifts]
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: (observed λ - expected λ) / expected λ')
+
plt.xlabel('z')
 
plt.ylabel('Million Years')
 
plt.ylabel('Million Years')
 
plt.xticks(range(5, 21))
 
plt.xticks(range(5, 21))
Line 131: Line 120:
  
 
plt.savefig('age_by_redshift.png', bbox_inches='tight')
 
plt.savefig('age_by_redshift.png', bbox_inches='tight')
#plt.show()  # https://i.ibb.co/C537rxJ/age-by-redshift.png
+
#plt.show()  # https://i.ibb.co/yybQpjL/age-by-redshift.png
 
</nowiki></pre></tt>
 
</nowiki></pre></tt>
 
{{cob}}
 
{{cob}}
  
P.S. Some commentary from ChatGPT-4 about the special Gaussian {{w|hypergeometric function}} <tt>hyp2f1</tt> in the [[:File:LookBackFromRedshiftEqns.png|closed-form solution of the integral:]]
+
Enjoy! [[Special:Contributions/172.69.22.12|172.69.22.12]] 08:50, 12 November 2023 (UTC)
 
 
<blockquote>
 
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.
 
</blockquote>
 
[[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
 

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)

Templates used on this page: