155 lines
4.6 KiB
Plaintext
155 lines
4.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"%matplotlib inline\n",
|
|
"\n",
|
|
"from scipy.integrate import quad\n",
|
|
"\n",
|
|
"import numpy as np\n",
|
|
"\n",
|
|
"import PyCosmo"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'0.4.3'"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"PyCosmo.__version__"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 1. Age of the Universe\n",
|
|
"\n",
|
|
"We recall the Friedmann equation, which describes the evolution of the scale factor $a(t)$:\n",
|
|
"\\begin{equation}\n",
|
|
"H^2(t) = \\frac{8\\pi G}{3}\\left[ \\rho(t) + \\frac{\\rho_\\mathrm{crit} - \\rho_0}{a^2(t)} \\right],\n",
|
|
"\\end{equation}\n",
|
|
"where $H(t)\\equiv\\dot{a}/a$ is the Hubble rate, $G$ is Newton's constant, $\\rho(t)$ is the energy density in the unverse as a function of time with $\\rho_0$ being its value today. The critical density $\\rho_\\mathrm{crit}\\equiv\\frac{3H_0^2}{8\\pi G}$.\n",
|
|
"1. Assume that the Universe is flat with matter and a cosmological constant, whose energy density remains constant with time. Re-write the Friedmann equation as\n",
|
|
"\t\\begin{equation}\n",
|
|
"\t\\mathrm{d}t = H_0^{-1}\\frac{\\mathrm{d}a}{a}\\left[ \\Omega_\\Lambda + \\frac{1 - \\Omega_\\Lambda}{a^3} \\right]^{-1/2},\n",
|
|
"\t\\end{equation}\n",
|
|
"\twhere $\\Omega_\\Lambda$ is the ratio of the energy density in the cosmological constant to the critical density.\n",
|
|
"2. We can integrate this equation from $a=0$ (when $t=0$) until today ($a=1$) to get the age of the universe today. Compute the integral for the following cases:\n",
|
|
"\t- a universe with only matter $\\Omega_\\Lambda = 0$ (analytically).\n",
|
|
"\t- a universe dominated by dark energy $\\Omega_\\Lambda = 0.7$ (numerically).\n",
|
|
"\t- For a fixed $H_0$, which universe is older?\n",
|
|
"\t"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Integral: 0.50000\n",
|
|
"Estimated Error: 0.00000\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Example on how to define functions and intergrate numerically\n",
|
|
"\n",
|
|
"# define a function\n",
|
|
"f = lambda x: x\n",
|
|
"\n",
|
|
"# integrate from 0 to 1\n",
|
|
"i, e = quad(f, 0, 1)\n",
|
|
"\n",
|
|
"# i contains the numerically integrated value\n",
|
|
"# e contains the estimated error\n",
|
|
"print(\"Integral: %.5f\" %(i))\n",
|
|
"print(\"Estimated Error: %.5f\" %(e))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# TODO: calculate the age of the universe numerically\n",
|
|
"# by following the example above.\n",
|
|
"# Define the proper function and integrate it numerically"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 2. Angular diameter distance\n",
|
|
"\n",
|
|
"Consider a galaxy of physical (visible) size of 5 kpc (1 pc $\\approx$ 3.26 light-years). What angle would the galaxy subtend if situated at redshift 0.1? Redshift 1.0?\n",
|
|
"\n",
|
|
"1. Do the calculation analytically in a flat universe, that contains only matter $\\Omega_M = 1.0$.\n",
|
|
"\n",
|
|
"2. Use PyCosmo and do the calculation numercally for a universe with the following parameters $\\Omega_M = 0.25$, $\\Omega_\\Lambda=0.7$ and $\\Omega_b=0.05$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Define the Cosmology\n",
|
|
"Cosmo = PyCosmo.build()\n",
|
|
"#TODO: Set the parameters accordingle\n",
|
|
"Cosmo.set(h=0.7, omega_b=, omega_m=, omega_l_in=\"flat\")\n",
|
|
"\n",
|
|
"# Function to calculate the angular diameter distance (returns result in Mpc)\n",
|
|
"# uses the scaling parameter as input\n",
|
|
"# dist_ang = Cosmo.background.dist_ang_a(a=...)\n",
|
|
"\n",
|
|
"# TODO: calculate the angle of the galaxy"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|