Skip to content
Permalink
fc79e44b77
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
1428 lines (1428 sloc) 180 KB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Computational Mechanics Project #01 - Heat Transfer in Forensic Science\n",
"\n",
"We can use our current skillset for a macabre application. We can predict the time of death based upon the current temperature and change in temperature of a corpse. \n",
"\n",
"Forensic scientists use Newton's law of cooling to determine the time elapsed since the loss of life, \n",
"\n",
"$\\frac{dT}{dt} = -K(T-T_a)$,\n",
"\n",
"where $T$ is the current temperature, $T_a$ is the ambient temperature, $t$ is the elapsed time in hours, and $K$ is an empirical constant. \n",
"\n",
"Suppose the temperature of the corpse is 85$^o$F at 11:00 am. Then, 2 hours later the temperature is 74$^{o}$F. \n",
"\n",
"Assume ambient temperature is a constant 65$^{o}$F.\n",
"\n",
"1. Use Python to calculate $K$ using a finite difference approximation, $\\frac{dT}{dt} \\approx \\frac{T(t+\\Delta t)-T(t)}{\\Delta t}$. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Problem 1 :Using a finite difference approximation, K was calculated to be 0.61111\n"
]
}
],
"source": [
"#This is a change\n",
"\n",
"Ta = 65 #ambient temperature is 65 degrees F\n",
"dT = (74 - 85) #degrees F\n",
"dt = 2 #hours\n",
"T = 74 #current temperature in deg. F\n",
"K = (dT/dt)/-(T-Ta)\n",
"print('Problem 1 :Using a finite difference approximation, K was calculated to be', round(K, 5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. Change your work from problem 1 to create a function that accepts the temperature at two times, ambient temperature, and the time elapsed to return $K$. "
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"def measure_K(Temp_t1,Temp_t2,Temp_ambient,delta_t):\n",
" ''' Determine the value of K based upon temperature of corpse \n",
" when discovered, Temp_t1\n",
" after time, delta_t, Temp_t2\n",
" with ambient temperature, Temp_ambient\n",
" Arguments\n",
" \n",
" Temp_t1 is the initial temperature in degrees F\n",
" Temp_t2 is the temperature in degrees F after elapsed time, delta_t\n",
" delta_t is the elapsed time\n",
" Temp_ambient is the ambient temperature\n",
" \n",
" \n",
" \n",
" Returns\n",
" Value of K satisfying the equation dT/dt = -K(T - T_ambient) using a finite difference approximation for dT/dt\n",
" '''\n",
" Ta = Temp_ambient #ambient temperature is 65 degrees F\n",
" dT = Temp_t2 - Temp_t1 #Temperature difference in degrees F\n",
" dt = delta_t #hours difference\n",
" T = Temp_t2 #current temperature in deg. F\n",
" K = (dT/dt)/-(T-Ta) #Calculating K\n",
" \n",
" return round(K,5)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.61111"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"##Test for functionality on the given inputs from part one. Output should be 0.61111\n",
"measure_K(85,74,65,2)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#Function appears to be working correctly."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. A first-order thermal system has the following analytical solution, \n",
"\n",
" $T(t) =T_a+(T(0)-T_a)e^{-Kt}$\n",
"\n",
" where $T(0)$ is the temperature of the corpse at t=0 hours i.e. at the time of discovery and $T_a$ is a constant ambient temperature. \n",
"\n",
" a. Show that an Euler integration converges to the analytical solution as the time step is decreased. Use the constant $K$ derived above and the initial temperature, T(0) = 85$^o$F. \n",
"\n",
" b. What is the final temperature as t$\\rightarrow\\infty$?\n",
" \n",
" c. At what time was the corpse 98.6$^{o}$F? i.e. what was the time of death?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Part a.)__"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np; #importing numpy\n",
"import matplotlib.pyplot as plt #importing plot functionality\n",
"def fot_analytical(T_a, T_init, K, t): #Helper function for analytical solution\n",
" '''Analytical solution for a first order thermal system. This function takes in a set of parameters\n",
" included in the equation to return the temperature of the body at time t.\n",
" \n",
" Arguments:\n",
" T_a = the ambient temperature in degreress F\n",
" T_init = the initial temperature of the body (at t = 0)\n",
" K = the integration constant for the given solution\n",
" t = the time in hours that has passed since the original temperature measurement.\n",
" \n",
" Returns the temperature of the corpse in degrees F at time t.'''\n",
" \n",
" Toft = T_a + (T_init-T_a)*np.exp(-K*t) #Analytical Solution given\n",
" \n",
" return Toft\n",
"\n",
"def fot_numerical(t1,t2, steps, T_init, T_ambient, K): #Helper function for numerical solution\n",
" '''Numerical solution for first order thermal system. Function takes in a set of parameters in order to numerically\n",
" predict the corpse temperature over time. This function returns an array object of temperatures aacross the input\n",
" time interval.\n",
" \n",
" \n",
" Arguments:\n",
" t1,t2 = time interval that is being observed. t1 is the start of this interval, t2 is the end. In hours.\n",
" T_init = initial temperature in degrees F\n",
" K = constant of proportionality\n",
" steps = number of time steps used\n",
" T_ambient = ambient temperature in deg F\n",
" \n",
" Returns an array of values for the temperature associated to a time difference in timespan.'''\n",
" \n",
" t = np.linspace(t1,t2,(steps+1));\n",
" numerical = np.zeros(len(t));\n",
" numerical[0] = T_init;\n",
" interval = (t2 - t1)/steps;\n",
" for i in range(1, len(t)):\n",
" numerical[i] = numerical[i-1] + ((-K*(numerical[i-1]-T_ambient))*interval)\n",
" \n",
" return numerical"
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {},
"outputs": [],
"source": [
"#This analytical solution will be the same one used for each of the comparison charts below to show convergence. \n",
"#Analytical\n",
"t1 = np.linspace(0,24,100)\n",
"analytical_array = np.zeros(len(t1))\n",
"T_a = 65 #degrees F, using from problem 1\n",
"T_init = 85 #degrees F\n",
"K = 0.61111 #derrived previously \n",
"for i in range(0, len(t1)):\n",
" analytical_array[i] = fot_analytical(T_a, T_init, K, t1[i])\n"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Euler Numerical, largest time steps\n",
"t2 = np.linspace(0,24,25)\n",
"numerical_array_coarse = fot_numerical(0,48,24,T_init,T_a,K)\n",
"plt.plot(t1, analytical_array, label = 'Analytical Solution')\n",
"plt.plot(t2, numerical_array_coarse, label = 'Coarse Euler Numerical Solution')\n",
"plt.title('Analytical vs. Coarse Numerical Solution')\n",
"plt.xlabel('Hours after Initial Temperature Reading')\n",
"plt.ylabel('Temperature of Corpse')\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Euler Numerical, medium time steps\n",
"t3 = np.linspace(0,24,49)\n",
"numerical_array_medium = fot_numerical(0,24,48,T_init,T_a,K)\n",
"plt.plot(t1, analytical_array, label = 'Analytical Solution')\n",
"plt.plot(t3, numerical_array_medium, label = 'Medium Euler Numerical Solution')\n",
"plt.title('Analytical vs. Medium Numerical Solution')\n",
"plt.xlabel('Hours after Initial Temperature Reading')\n",
"plt.ylabel('Temperature of Corpse')\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ufpq5yK1q6++munTp5c+169fP9q3b09YWBgpKSmlH5SfffYZp59+Or169eLTTz9lxYojXwIRYfTo0bz++uvs3buXb775huHDh1cYx8cff8yNN95ITEwMAC1btgRg+fLlnH322fTq1YupU6ceVVdZN954I6tWreKKK65g/vz5nHHGGeTn57NgwQJGjx4NQI8ePejUqZPnhFGRivY7ZMgQmjdvTlRUFImJiWzc6HksN2PqlKDeuKeq9wP3l1k9upxttwIj/JbnAkddchsMvtgEwjcXs217Jh06dQ1qXZWdCQTD7t27+fTTT1m+fDkiQlFRESLCpEmTAGjUqFHptj6fj8LCQvLy8rjttttIS0ujQ4cOTJw4MeA13CVnFFFRUVxxxRWEh1f8llLVgJf33XDDDcyZM4fevXszZcoU5s+fX+lxJSQkMHbsWMaOHUtSUhLLly8/qtkskPDwcIqLi0uXvVybXtF+A/39jKmPbCwpILql0xaevSMjtIEEyaxZs7j++uvZuHEjGRkZbN68mS5durBgwYJyy5R8iLZq1YqDBw+W2/mbkJBAQkICf/vb37jhhhtK10dERFBQUHDU9kOHDuXll18u7aMoaZI6cOAAbdu2paCggKlTp1Z6TB988EHp/rdv387u3btp164d55xzTmn5tWvXsmnTJrp3735E2c6dO/P9998D8P333/PTTz8B0LRpUw4cOBCwPi/7Naa+s4QBNGvdCYCcrMwQRxIc06dPP6JzGuCyyy5j2rTyp+2OjY3l5ptvplevXlx88cX07du33G1HjRpFhw4dSEz8+d7KcePGkZycXNrpXWLYsGGMHDmS1NRUUlJSSjuf//rXv3L66adz3nnn0aNHj0qPad68eSQlJdG7d2/OP/98/vnPf3LCCSdw2223UVRURK9evbjqqquYMmXKEWcAJceenZ1NSkoKzz33HCeffDIAcXFxnHXWWSQlJXH33XcfUcbLfo2p7+rVnN6pqal6LBMo5WVvIerJROafdA8Dr/tTtce1atUqTjnllGrfb21xxx130KdPH371q1+FOhRjTAUCfRaJyGJVTfVS3gYfBKJiT6CQMHR/0K7crbdOO+00GjduzL/+Feh2GmNMfWIJAyDMx56wlkTkbA91JHXO4sWLQx2CMaaGWB+Ga39EPNH5VR9axBhjGgpLGK68qNY0L9wV6jCMMabWsoThKmrSltaaTU6+XUNvjDGBWMJw+Zq1pZnksn3X7lCHYowxtZIlDFeUe/Penu31c1gHn89HSkpK6SMjI4O0tDTuuuuuatn/wIED6d69e+n+KxsW3H9gv2PVuXNnLrvsstLlWbNmHXHzYE04niHQyxsmfuHChZx++umlQ7dPnDixwv1MmTKFO+64o8JtMjIyjrjvpjpf+4qsXbuWESNGcNJJJ3HKKadw5ZVXsmNH3RwZeuDAgQS6bP+9996jT58+9O7dm8TERJ5//vkK91PekP3+0tPTmTv354Eu3n33XR555JFjC7wa2VVSrqatOwJwYOdmAg+gW7dFR0cfNRhg586dSU31dPm1J1OnTq3W/fkrKirC5/MdtT4tLY0VK1bQs2fND7lSWFgYlCHQx4wZw8yZM+nduzdFRUWsWbPmuPdZkjCuvdYZwzM1NTVor1WJvLw8LrjgAh577LHSQSs/++wzsrKyaNOmTVDrLqu898/xKigoYNy4cXz33Xe0b9+e/Pz8IwatPFbp6emkpaUxYoQzWtLIkSMZOXLkce/3eNkZhiv2BOdu7/w9myvZsv7wn1Ro4sSJjB07loEDB9K1a1eefPLJ0u1ef/11+vXrR0pKCrfccgtFRUWe6yj7Ldp/mPMSRUVF3H333fTt25fk5OTSb2jz589n0KBBXHvttaXDl5f1+9///qi5N0qOJ9AQ5hkZGfTo0YObbrqJpKQkRo0axccff8xZZ51Ft27d+O677wDIyclh7Nix9O3blz59+vDOO+8Azrf5K664gosuuoihQ4cecaZUVFTE73//e3r16kVycjJPPfUUUPkw8WXt3LmTtm3bAs6ZYckd9NnZ2Vx88cUkJydzxhlnsHTpUs9/7wkTJvDll1+SkpLC448/fsRrX95+K3pPeDFt2jTOPPPMI0Y4HjRoEElJSVUeLv655547Yuj4KVOmlI5mXN77s0mTJtx3332cfvrpfPPNN8ydO5cePXowYMAA7rrrrtLjL++1PnToEFdffTXJyclcddVVHDp06KhjPHDgAIWFhcTFxQGUjlgMsHHjRoYMGUJycjJDhgxh06ZNR5X3P2vZtWsXnTt35vDhw9x3333MmDGDlJQUZsyYccRZZHn7veGGG7jrrrvo378/Xbt2DcpcLnaG4YqMdSb0K963rZItj9P/JsD2ZdW7zxN6wfCKT1dL5qcA6NKlC7Nnzz5qm9WrV/PZZ59x4MABunfvzq233sr69euZMWMGX331FREREdx2221MnTqV66+//qjyo0aNIjo6GoDzzjuPf/7zn57Cf+mll2jevDmLFi0iPz+fs846i6FDhwLw3XffsXz5crp06RKw7JVXXsmzzz7L+vXrPdUFsH79et58800mT55M3759mTZtGgsWLODdd9/loYceYs6cOfz9739n8ODBvPzyy+zdu5d+/fpx7rnnAvDNN9+wdOlSWrZsecS3ycmTJ/PTTz+xZMkSwsPDS8fJqmyY+LLGjx9P9+7dGThwIMOGDWPMmDFERUVx//3306dPH+bMmcOnn37K9ddfH3AI+UAeeeQRHn30Ud577z2AIwZ3rGi/gd4TERERnupcvnw5p512WsDnqjpc/OWXX86ZZ55ZOmDmjBkzuPfee1m1alW578+cnBySkpJ48MEHycvLo1u3bnzxxRd06dKFa665pjSW8l7r559/npiYGJYuXcrSpUtLpwPw17JlS0aOHEmnTp0YMmQIF154Iddccw1hYWHccccdXH/99YwZM4aXX36Zu+66izlz5lT6d4uMjOTBBx8kLS2Np59+GnASZImK9rtt2zYWLFjA6tWrGTlyZLXPGGkJo0SjJuRIDOE5QU4YIRKoSaqsCy64gEaNGtGoUSNat27Njh07+OSTT1i8eHHpWFKHDh2idevWAcsfa5PUvHnzWLp0aek3on379rFu3ToiIyPp169fuckCnG/gd999Nw8//HClQ6uX6NKlS+kZS8+ePRkyZAgiQq9evUoTwLx583j33XdLz1Ly8vJKv8mdd955pcOy+/v444/59a9/XTpib8k2n332GZMmTSI3N5fs7Gx69uxZYcK47777GDVqFPPmzWPatGlMnz6d+fPns2DBAt56y5l7fvDgwezevZt9+/Z5OuaKVLTfQO8J/4mrjqfOkjOE8oaLB0qHix8wYABdu3Zl4cKFdOvWjTVr1nDWWWfxzDPPlPv+9Pl8pX1cq1evpmvXrqXvpWuuuYbJkycD5b/WX3zxRWk/T3JyMsnJyQGP5cUXX2TZsmV8/PHHPProo3z00UdMmTKFb775hrfffhtwvihU1+RaFe334osvJiwsjMTExKD0FVnC8LM3og0xeUHukKvkTCCUAg3TraqMGTOGhx9++Jj26T+UuKpy+PDRc46oKk899RTnn3/+Eevnz59P48aNK61j9OjRPPzww0f0Y1Q0hLn/cYaFhZUuh4WFlQ5Nrqq89dZbR41I++2335YbU6Ch270OE1/WiSeeyK233srNN99MfHw8u3fvDtiUVbY+L3/vQHGXt9/Khm6fPXs2DzzwAOB8cPp/YejZsyeff/655zpLlFfnVVddxcyZM+nRoweXXHIJIlLh+zMqKqq036Ki+sp7reHov295evXqRa9evRg9ejRdunQ54oygon35v15e3heB+O/X/28XjHECrQ/DT27UCbQo2BGUP3RdNWTIEGbNmsXOnc4UttnZ2VWaIKhz586lw4e88847AYc8P//883nuuedKn1u7di05OTme64iIiGD8+PH83//93xH1BhrC3Kvzzz+fp556qvS9sGTJkkrLDB06lH//+9+lH3DZ2dmeh4n39/7775fWu27dOnw+H7GxsUcMsT5//nxatWpFs2bNjihb3t/b69Dt5e23PJdccgnp6emkp6cfdXZ57bXX8vXXX/P++++Xrvvggw9YtmzZMQ0Xf+mllzJnzhymT5/OVVddBXh/f/bo0YMNGzaUnkHOmDGj9LnyXmv/GJcvXx6wz+jgwYNHNO+lp6fTqZPTH9q/f//S6ZCnTp3KgAEDjirv/3r5vzcqer287DdYgpowRGS8iKwQkeUiMl1EokTknyKyWkSWishsEYktp2yGOzNfuohUfQjaY1DYJIE27GZ/nt28VyIxMZG//e1vDB06lOTkZM477zy2bQvcbDdq1KjSy2pL2vtvvvlmPv/8c/r161fut/ObbrqJxMRETj31VJKSkrjllluqPAnRr371qyPKlDeEuVd/+ctfKCgoIDk5maSkJP7yl79UWuamm26iY8eOJCcn07t3b6ZNm1alYeJLvPbaa6WXKI8ePZqpU6fi8/mYOHEiaWlpJCcnM2HCBF599dWjypb3905OTiY8PJzevXvz+OOPH1HGy36PRXR0NO+99x5PPfUU3bp1IzExkSlTptC6detjGi6+RYsWpU1U/fo5VzJ6fX9GR0fz7LPPMmzYMAYMGECbNm1Km73Ke61vvfVWDh48SHJyMpMmTSqt05+qMmnSpNLX6/777y89u3jyySd55ZVXSE5O5rXXXuOJJ544qvzvf/97nnvuOfr378+uXT+PNDFo0CBWrlxZ2untz8t+gyVow5uLSDtgAZCo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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Euler Numerical, Fine time steps\n",
"#Convergence observed\n",
"t4 = np.linspace(0,24,151)\n",
"numerical_array_fine = fot_numerical(0,24,150,T_init,T_a,K)\n",
"plt.plot(t1, analytical_array, label = 'Analytical Solution')\n",
"plt.plot(t4, numerical_array_fine, label = 'Fine Euler Numerical Solution - Converged Solution')\n",
"plt.title('Analytical vs. Fine Numerical Solution')\n",
"plt.xlabel('Hours after Initial Temperature Reading')\n",
"plt.ylabel('Temperature of Corpse')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solutions are observed to converge."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Part b.)__:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As the time t goes to inifinity, the final temperature is equal to that of the ambient temperature of the system. In this case, we have used 65 degreres F as that ambient temperature. This asymptotic behaviour is observed in all iterations of the numerical solution as well as the analytical solution. Further, this solution physically makes sense as one woould expect the heat transfer situation to occur continuously up until both mediums that are in contact (the body and the surrounding air) are equal in temperature."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Part c.)__:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To determine the time of death, we will increase the span of the analytical solution to include negative values. In this case, we can see when the temperature was 98.6 degrees F in hours before the body was discovered (11:00 a.m.) and from there complete the algebraic problem to determine the time of death. This is equivalent to solving the analytical equation for t. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we must derive the equation for t, given the Temperature of the body, T(t), the 'initial temperature' (body temperature when the body was discovered), T_init, the ambient temperature, T_ambient, and the derived K value for the proportionality constant. \n",
"Rearranging the given analytical solution, we get:\n",
"\n",
"$\\frac{ln(\\frac{T(t)-T_a}{T(0)-T_a})}{-K} = t$"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The time of death for the Corpse was -0.848937 hours before 11:00 a.m.\n",
"at which point the body was 98.6 degrees Fahrenheit.\n",
"\n",
"-50.93621051023554 minutes\n",
"\n",
"Changing this to minutes, we can see that the body was this temperature approximately 51 minutes before 11:00 a.m.\n",
"Thus, the time of death would be recorded as: 10:09 a.m.\n"
]
}
],
"source": [
"T_0 = 85 #deg F\n",
"T_a = 65 #deg F\n",
"K = 0.61111 #Predefined\n",
"T_t = 98.6 #deg F\n",
"\n",
"t = (np.log((T_t - T_a)/(T_0 - T_a)))/-K\n",
"\n",
"print('The time of death for the Corpse was', round(t,6), 'hours before 11:00 a.m.')\n",
"print('at which point the body was 98.6 degrees Fahrenheit.')\n",
"print()\n",
"time_in_mins = t*60\n",
"print(time_in_mins, 'minutes')\n",
"print()\n",
"print('Changing this to minutes, we can see that the body was this temperature approximately 51 minutes before 11:00 a.m.')\n",
"print('Thus, the time of death would be recorded as: 10:09 a.m.')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. Now that we have a working numerical model, we can look at the results if the\n",
"ambient temperature is not constant i.e. T_a=f(t). We can use the weather to improve our estimate for time of death. Consider the following Temperature for the day in question. \n",
"\n",
" |time| Temp ($^o$F)|\n",
" |---|---|\n",
" |8am|55|\n",
" |9am|58|\n",
" |10am|60|\n",
" |11am|65|\n",
" |noon|66|\n",
" |1pm|67|\n",
"\n",
" a. Create a function that returns the current temperature based upon the time (0 hours=11am, 65$^{o}$F) \n",
" *Plot the function $T_a$ vs time. Does it look correct? Is there a better way to get $T_a(t)$?\n",
"\n",
" b. Modify the Euler approximation solution to account for changes in temperature at each hour. \n",
" Compare the new nonlinear Euler approximation to the linear analytical model. \n",
" At what time was the corpse 98.6$^{o}$F? i.e. what was the time of death? \n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Part a.)__"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Temperature data not valid for this range. Please try again.\n",
"None\n",
"55\n",
"58\n",
"60\n",
"65\n",
"66\n",
"67\n",
"Temperature data not valid for this range. Please try again.\n",
"None\n"
]
}
],
"source": [
"ambient_temperature = [55, 58, 60, 65, 66, 67] #degrees F\n",
"time_after_11 = [-3, -2, -1, 0, 1, 2] #hours after 11:00 a.m.\n",
"def get_T_ambient(i):\n",
" '''Function is meant to retrieve the ambient temperature at discrete number of hours after 11:00 a.m. specifically for\n",
" the date of the crime. The range for this data set is between -3 and 2 hours after 11:00 a.m.\n",
" \n",
" Input Arguments:\n",
" i = hours after 11:00 a.m.\n",
" \n",
" Returns:\n",
" ambient temperature in degrees Fahrenheit at this time'''\n",
" if i<-3 or i>2:\n",
" print('Temperature data not valid for this range. Please try again.')\n",
" else:\n",
" return ambient_temperature[3+i]\n",
"##Testing functionality\n",
"for i in range(-4,4):\n",
" print(get_T_ambient(i))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot for T_a versus time using the given data:"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Ambient Temperature as a Function of Time After Discovery')"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(time_after_11, ambient_temperature)\n",
"plt.xlabel('Time after 11:00 a.m. (Hours)')\n",
"plt.ylabel('Ambient Temperature (Deg F)')\n",
"plt.title('Ambient Temperature as a Function of Time After Discovery')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This plot does indeed look correct considering the values given. That being said, through experience it is known that the temperature does not vary linearly as this plot would suggest. Rather, a more realistic representation would be a smoother curve fit between these data points given as opposed to simple linear ones. This would be a better way to represent the ambient temperature as a function of time. To do so, we would require more continuos data points rather than just 6 distinct values to base this plot and function off of for this investigation here. \n",
"However, working with the available data, we may be able to manipulate the slope of each section to use linear interpolation and obtain a better approximation for the ambient temperature values in between those associated to the discreet points given. This will be explored in the next section as a better solution is sought after. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Part b.)__"
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([224.2091188 , 222.60784076, 221.0218198 , 219.45090261,\n",
" 217.8949374 , 216.35377391, 214.8272634 , 213.31525861,\n",
" 211.81761377, 210.33418458, 208.86482818, 207.40940314,\n",
" 205.96776946, 204.53978855, 203.12532322, 201.72423763,\n",
" 200.33639733, 198.96166921, 197.59992151, 196.25102378,\n",
" 194.91484689, 193.591263 , 192.28014555, 190.98136929,\n",
" 189.69481017, 188.42034543, 187.15785352, 185.90721414,\n",
" 184.66830816, 183.44101768, 182.22522597, 181.02081746,\n",
" 179.82767778, 178.64569368, 177.47475304, 176.3147449 ,\n",
" 175.16555938, 174.02708773, 172.89922228, 171.78185644,\n",
" 170.6748847 , 169.57820261, 168.49170677, 167.4152948 ,\n",
" 166.34886537, 165.29231817, 164.24555388, 163.2084742 ,\n",
" 162.1809818 , 161.16298033, 160.15437441, 159.15506964,\n",
" 158.16497253, 157.18399056, 156.21203213, 155.24900655,\n",
" 154.29482406, 153.34939578, 152.41263376, 151.48445089,\n",
" 150.56496128, 149.65437804, 148.75261168, 147.85957359,\n",
" 146.97517606, 146.09933225, 145.23195621, 144.37296283,\n",
" 143.52226789, 142.67978799, 141.84544057, 141.0191439 ,\n",
" 140.20081709, 139.39038003, 138.58775345, 137.79285885,\n",
" 137.00561853, 136.22595557, 135.45379383, 134.68905792,\n",
" 133.93167322, 133.18156585, 132.43866268, 131.70289132,\n",
" 130.97418009, 130.25245804, 129.53765495, 128.82970127,\n",
" 128.12852817, 127.43406752, 126.74625186, 126.06501441,\n",
" 125.39028907, 124.72201039, 124.06011359, 123.40453453,\n",
" 122.75520973, 122.11207634, 121.47507213, 120.84413551,\n",
" 120.21920551, 119.60022176, 118.98712451, 118.37985461,\n",
" 117.77835349, 117.18256317, 116.59242628, 116.00788599,\n",
" 115.42888607, 114.85537084, 114.28728518, 113.72457453,\n",
" 113.16718487, 112.61506272, 112.06815517, 111.52640979,\n",
" 110.98977472, 110.45819861, 109.9316306 , 109.41002038,\n",
" 108.89328473, 108.38124112, 107.87384241, 107.37104191,\n",
" 106.87279341, 106.37905117, 105.88976991, 105.40490479,\n",
" 104.92441144, 104.44824592, 103.97636474, 103.50872485,\n",
" 103.04528362, 102.58599887, 102.13082881, 101.6797321 ,\n",
" 101.23266782, 100.78959542, 100.3504748 , 99.91526625,\n",
" 99.48393045, 99.05642848, 98.63272181, 98.21277232,\n",
" 97.79654223, 97.38399417, 96.97509114, 96.56979651,\n",
" 96.16807401, 95.76988776, 95.37520221, 94.98398218,\n",
" 94.59619285, 94.21179973, 93.83076871, 93.453066 ,\n",
" 93.07865814, 92.70751203, 92.33959488, 91.97487426,\n",
" 91.61331803, 91.25489439, 90.89957187, 90.54731931,\n",
" 90.19810584, 89.85190093, 89.50867435, 89.16839617,\n",
" 88.83103675, 88.49656676, 88.16495718, 87.83617924,\n",
" 87.51020451, 87.1870048 , 86.86655222, 86.54881919,\n",
" 86.23377835, 85.92140266, 85.61166534, 85.30453987,\n",
" 85. , 84.79697342, 84.59617646, 84.39758648,\n",
" 84.20118108, 84.00693808, 83.81483554, 83.62485171,\n",
" 83.43696511, 83.25115442, 83.06739859, 82.88567675,\n",
" 82.70596826, 82.52825267, 82.35250976, 82.1787195 ,\n",
" 82.00686207, 81.83691785, 81.66886741, 81.50269154,\n",
" 81.3383712 , 81.17588755, 81.01522196, 80.85635596,\n",
" 80.69927129, 80.54394986, 80.39037379, 80.23852533,\n",
" 80.08838697, 79.93994134, 79.79317126, 79.64805971,\n",
" 79.50458987, 79.36274506, 79.2225088 , 79.08386474,\n",
" 78.94679673, 78.81128877, 78.67732503, 78.54488982,\n",
" 78.41396763, 78.2845431 , 78.15660103, 78.03012637,\n",
" 77.90510422, 77.78151984, 77.65935863, 77.53860615,\n",
" 77.41924809, 77.3012703 , 77.18465877, 77.06939962,\n",
" 76.95547914, 76.84288373, 76.73159994, 76.62161445,\n",
" 76.51291409, 76.40548581, 76.2993167 , 76.19439397,\n",
" 76.09070497, 75.98823718, 75.8869782 , 75.78691576,\n",
" 75.68803771, 75.59033204, 75.49378683, 75.39839031,\n",
" 75.30413082, 75.21099682, 75.11897688, 75.02805969,\n",
" 74.93823405, 74.84948889, 74.76181324, 74.67519624,\n",
" 74.58962715, 74.50509532, 74.42159023, 74.33910145,\n",
" 74.25761867, 74.17713168, 74.09763036, 74.01910472,\n",
" 73.94154484, 73.86494092, 73.78928326, 73.71456225,\n",
" 73.64076839, 73.56789226, 73.49592455, 73.42485603,\n",
" 73.35467757, 73.28538015, 73.21695482, 73.14939272,\n",
" 73.08268509, 73.01682326, 72.95179865, 72.88760274,\n",
" 72.82422714, 72.76166351, 72.69990361, 72.63893928,\n",
" 72.57876245, 72.51936512, 72.46073938, 72.40287739,\n",
" 72.34577141, 72.28941375, 72.23379683, 72.17891312,\n",
" 72.12475517, 72.07131563, 72.0185872 , 71.96656266,\n",
" 71.91523487, 71.86459674, 71.81464129, 71.76536158,\n",
" 71.71675075])"
]
},
"execution_count": 244,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import math as m;\n",
"def get_T_ambient_linear_int(i):\n",
" '''Function acts as get_T_ambient, but in a continuous manner. Values are linearly interpolated from the T_ambient vs.\n",
" Hour input.\n",
" \n",
" Arguments:\n",
" \n",
" i = time in hours. Values can be non-integers. Inputs must range between -3 and 2, inclusive. \n",
" \n",
" returns T_ambient at time described. '''\n",
" if (i==0):\n",
" return get_T_ambient(i)\n",
" elif not((i/m.ceil(i))==1):\n",
" ambient_T = get_T_ambient(m.floor(i)) + (i - m.floor(i))*((get_T_ambient(m.ceil(i))-get_T_ambient(m.floor(i)))/(m.ceil(i)-m.floor(i)))\n",
" return ambient_T\n",
" else:\n",
" return get_T_ambient(m.floor(i))\n",
" \n",
"def fot_numerical2(t1,t2, steps, T_init, K): #Helper function for numerical solution\n",
" '''Numerical solution for first order thermal system. Function takes in a set of parameters in order to numerically\n",
" predict the corpse temperature over time. This function returns an array object of temperatures aacross the input\n",
" time interval. This function now takes into account varying ambient temperature. \n",
" \n",
" Arguments:\n",
" t1,t2 = time interval that is being observed. t1 is the start of this interval, t2 is the end. In hours.\n",
" T_init = initial temperature in degrees F\n",
" K = constant of proportionality\n",
" steps = number of time steps used\n",
" \n",
" Returns an array of values for the temperature associated to a time difference in timespan.'''\n",
" interval = (t2-t1)/steps;\n",
" num_neg_steps = abs(t1)/interval;\n",
" num_pos_steps = abs(t2)/interval;\n",
" if t2<t1:\n",
" print('Please enter valid time range where t2 > t1')\n",
" elif (t1<0) and (t2<0):\n",
" print('Please eneter a time range that intersects with the initial temperature')\n",
" elif (t1<0):\n",
" t_before_init = np.linspace(t1,0,(num_neg_steps+1))\n",
" t_after_init = np.linspace(0,t2,(num_pos_steps+1))\n",
" numerical_bf_zero = np.zeros(len(t_before_init))\n",
" numerical_aft_zero = np.zeros(len(t_after_init))\n",
" numerical_bf_zero[0] = T_init;\n",
" numerical_aft_zero[0] = T_init;\n",
" for i in range(1, len(t_before_init)):\n",
" numerical_bf_zero[i] = numerical_bf_zero[i-1] -((-K*(numerical_bf_zero[i-1]-np.interp((t1+interval*(i-1)),time_after_11, ambient_temperature, left = m.floor((t1+interval*(i-1))), right = m.ceil((t1+interval*(i-1)))))))*interval;\n",
" for i in range(1, len(t_after_init)):\n",
" numerical_aft_zero[i] = numerical_aft_zero[i-1] + ((-K*(numerical_aft_zero[i-1]-np.interp((0+interval*(i-1)),time_after_11, ambient_temperature, left = m.floor((0+interval*(i-1))), right = m.ceil((0+interval*(i-1)))))))*interval;\n",
" ordered_before = np.flip(numerical_bf_zero);\n",
" numerical = np.zeros(len(numerical_bf_zero)+len(numerical_aft_zero)-1);\n",
" for i in range((len(ordered_before))):\n",
" numerical[i] = ordered_before[i];\n",
" for j in range((len(numerical_aft_zero) - 1)):\n",
" numerical[j+len(ordered_before)] = numerical_aft_zero[j+1]\n",
" return numerical\n",
" else: \n",
" t = np.linspace(t1,t2,(steps+1));\n",
" numerical = np.zeros(len(t));\n",
" numerical[0] = T_init;\n",
" interval = (t2 - t1)/steps;\n",
" for i in range(1, len(t)):\n",
" numerical[i] = numerical[i-1] + ((-K*(numerical[i-1]-np.interp((t1+interval*(i-1)),time_after_11, ambient_temperature, left = m.floor((t1+interval*(i-1))), right = m.ceil((t1+interval*(i-1)))))))*interval\n",
" \n",
" return numerical\n",
" \n",
"##Checking Functionality\n",
"fot_numerical2(-3,2,301,85, 0.61111)"
]
},
{
"cell_type": "code",
"execution_count": 245,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Euler Numerical with varying ambient temperature compared to analyitcal solution before zero\n",
"t5 = np.linspace(-3,2,301)\n",
"analytical_array2 = np.zeros(len(t5))\n",
"T_a = 65 #degrees F, using from problem 1\n",
"T_init = 85 #degrees F\n",
"K = 0.61111 #derrived previously \n",
"for i in range(0, len(t5)):\n",
" analytical_array2[i] = fot_analytical(T_a, T_init, K, t5[i])\n",
"numerical_array_fine2 = fot_numerical2(-3,2,300,T_init,K)\n",
"plt.plot(t5, analytical_array2, label = 'Analytical Solution')\n",
"plt.plot(t5, numerical_array_fine2, label = 'Non-Linear Euler Numerical Solution')\n",
"plt.title('Analytical vs. Fine Numerical Solution')\n",
"plt.xlabel('Hours after Initial Temperature Reading')\n",
"plt.ylabel('Temperature of Corpse')\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From this comparison of the new nonlinear euler numerical solution with the analytical solution, we see that there is a more aggressive slope associated to times where the ambient temperature is a lower value, which makes sense as one would expect the heat transfer to be greater at these locations. The unity of both solutions at time t = 0 also makes sense analytically since both of the solutions are based upon the same initial temperature condition of 85 degrees fahrenheit initially. By simple observation, we can tell that the time of death will be closer to the initial time of temperature measurement with this solution than with the original analytical solution. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we may utilize this new model to determine the time of death considering varying ambient temperature by observing when the plot is equal to 98.6 degrees fahrenheit. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As was determined in the previous section, both the analytical and converged linear euler approximation yielded 10:09 a.m. as the time of death."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With a fine meshing and observing the output of the numerical solution, we may determine the time of this corpse temperature."
]
},
{
"cell_type": "code",
"execution_count": 246,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"At time t = -3.0 the body temperature is 225.17255978092413 deg F\n",
"\n",
"At time t = -2.9833333333333334 the body temperature is 223.55678374842688 deg F\n",
"\n",
"At time t = -2.966666666666667 the body temperature is 221.95645853110008 deg F\n",
"\n",
"At time t = -2.95 the body temperature is 220.3714283464864 deg F\n",
"\n",
"At time t = -2.933333333333333 the body temperature is 218.8015389828012 deg F\n",
"\n",
"At time t = -2.9166666666666665 the body temperature is 217.24663778309628 deg F\n",
"\n",
"At time t = -2.9 the body temperature is 215.70657362958337 deg F\n",
"\n",
"At time t = -2.8833333333333333 the body temperature is 214.18119692811547 deg F\n",
"\n",
"At time t = -2.8666666666666667 the body temperature is 212.67035959282484 deg F\n",
"\n",
"At time t = -2.85 the body temperature is 211.1739150309158 deg F\n",
"\n",
"At time t = -2.8333333333333335 the body temperature is 209.69171812761084 deg F\n",
"\n",
"At time t = -2.816666666666667 the body temperature is 208.2236252312486 deg F\n",
"\n",
"At time t = -2.8 the body temperature is 206.76949413853197 deg F\n",
"\n",
"At time t = -2.783333333333333 the body temperature is 205.32918407992503 deg F\n",
"\n",
"At time t = -2.7666666666666666 the body temperature is 203.9025557051972 deg F\n",
"\n",
"At time t = -2.75 the body temperature is 202.48947106911308 deg F\n",
"\n",
"At time t = -2.7333333333333334 the body temperature is 201.08979361726674 deg F\n",
"\n",
"At time t = -2.716666666666667 the body temperature is 199.7033881720585 deg F\n",
"\n",
"At time t = -2.7 the body temperature is 198.33012091881358 deg F\n",
"\n",
"At time t = -2.6833333333333336 the body temperature is 196.9698593920402 deg F\n",
"\n",
"At time t = -2.6666666666666665 the body temperature is 195.62247246182665 deg F\n",
"\n",
"At time t = -2.65 the body temperature is 194.28783032037524 deg F\n",
"\n",
"At time t = -2.6333333333333333 the body temperature is 192.9658044686722 deg F\n",
"\n",
"At time t = -2.6166666666666667 the body temperature is 191.65626770329177 deg F\n",
"\n",
"At time t = -2.6 the body temperature is 190.35909410333363 deg F\n",
"\n",
"At time t = -2.5833333333333335 the body temperature is 189.07415901749175 deg F\n",
"\n",
"At time t = -2.5666666666666664 the body temperature is 187.8013390512538 deg F\n",
"\n",
"At time t = -2.55 the body temperature is 186.54051205422945 deg F\n",
"\n",
"At time t = -2.533333333333333 the body temperature is 185.29155710760674 deg F\n",
"\n",
"At time t = -2.5166666666666666 the body temperature is 184.05435451173452 deg F\n",
"\n",
"At time t = -2.5 the body temperature is 182.82878577383042 deg F\n",
"\n",
"At time t = -2.4833333333333334 the body temperature is 181.61473359581257 deg F\n",
"\n",
"At time t = -2.466666666666667 the body temperature is 180.4120818622541 deg F\n",
"\n",
"At time t = -2.45 the body temperature is 179.22071562845898 deg F\n",
"\n",
"At time t = -2.4333333333333336 the body temperature is 178.04052110865823 deg F\n",
"\n",
"At time t = -2.4166666666666665 the body temperature is 176.87138566432503 deg F\n",
"\n",
"At time t = -2.4 the body temperature is 175.7131977926077 deg F\n",
"\n",
"At time t = -2.3833333333333333 the body temperature is 174.56584711487926 deg F\n",
"\n",
"At time t = -2.3666666666666667 the body temperature is 173.42922436540246 deg F\n",
"\n",
"At time t = -2.35 the body temperature is 172.30322138010916 deg F\n",
"\n",
"At time t = -2.3333333333333335 the body temperature is 171.1877310854927 deg F\n",
"\n",
"At time t = -2.3166666666666664 the body temperature is 170.08264748761232 deg F\n",
"\n",
"At time t = -2.3 the body temperature is 168.98786566120864 deg F\n",
"\n",
"At time t = -2.283333333333333 the body temperature is 167.90328173892848 deg F\n",
"\n",
"At time t = -2.2666666666666666 the body temperature is 166.82879290065867 deg F\n",
"\n",
"At time t = -2.25 the body temperature is 165.76429736296728 deg F\n",
"\n",
"At time t = -2.2333333333333334 the body temperature is 164.7096943686513 deg F\n",
"\n",
"At time t = -2.216666666666667 the body temperature is 163.66488417638962 deg F\n",
"\n",
"At time t = -2.2 the body temperature is 162.6297680505006 deg F\n",
"\n",
"At time t = -2.1833333333333336 the body temperature is 161.60424825080256 deg F\n",
"\n",
"At time t = -2.1666666666666665 the body temperature is 160.58822802257683 deg F\n",
"\n",
"At time t = -2.15 the body temperature is 159.5816115866317 deg F\n",
"\n",
"At time t = -2.1333333333333333 the body temperature is 158.58430412946686 deg F\n",
"\n",
"At time t = -2.1166666666666667 the body temperature is 157.5962117935366 deg F\n",
"\n",
"At time t = -2.1 the body temperature is 156.6172416676117 deg F\n",
"\n",
"At time t = -2.0833333333333335 the body temperature is 155.647301777238 deg F\n",
"\n",
"At time t = -2.0666666666666664 the body temperature is 154.68630107529154 deg F\n",
"\n",
"At time t = -2.05 the body temperature is 153.73414943262864 deg F\n",
"\n",
"At time t = -2.033333333333333 the body temperature is 152.7907576288305 deg F\n",
"\n",
"At time t = -2.0166666666666666 the body temperature is 151.85603734304095 deg F\n",
"\n",
"At time t = -2.0 the body temperature is 150.92990114489666 deg F\n",
"\n",
"At time t = -1.9833333333333334 the body temperature is 150.01276660929764 deg F\n",
"\n",
"At time t = -1.9666666666666668 the body temperature is 149.1045429772065 deg F\n",
"\n",
"At time t = -1.95 the body temperature is 148.20514040466162 deg F\n",
"\n",
"At time t = -1.9333333333333333 the body temperature is 147.31446995355083 deg F\n",
"\n",
"At time t = -1.9166666666666667 the body temperature is 146.43244358247824 deg F\n",
"\n",
"At time t = -1.9 the body temperature is 145.55897413772317 deg F\n",
"\n",
"At time t = -1.8833333333333333 the body temperature is 144.69397534429012 deg F\n",
"\n",
"At time t = -1.8666666666666667 the body temperature is 143.8373617970491 deg F\n",
"\n",
"At time t = -1.85 the body temperature is 142.9890489519652 deg F\n",
"\n",
"At time t = -1.8333333333333333 the body temperature is 142.14895311741657 deg F\n",
"\n",
"At time t = -1.8166666666666667 the body temperature is 141.3169914456001 deg F\n",
"\n",
"At time t = -1.8 the body temperature is 140.4930819240236 deg F\n",
"\n",
"At time t = -1.7833333333333334 the body temperature is 139.67714336708374 deg F\n",
"\n",
"At time t = -1.7666666666666666 the body temperature is 138.86909540772902 deg F\n",
"\n",
"At time t = -1.75 the body temperature is 138.0688584892067 deg F\n",
"\n",
"At time t = -1.7333333333333334 the body temperature is 137.27635385689302 deg F\n",
"\n",
"At time t = -1.7166666666666668 the body temperature is 136.4915035502058 deg F\n",
"\n",
"At time t = -1.7 the body temperature is 135.71423039459842 deg F\n",
"\n",
"At time t = -1.6833333333333333 the body temperature is 134.9444579936347 deg F\n",
"\n",
"At time t = -1.6666666666666667 the body temperature is 134.18211072114363 deg F\n",
"\n",
"At time t = -1.65 the body temperature is 133.42711371345317 deg F\n",
"\n",
"At time t = -1.6333333333333333 the body temperature is 132.67939286170235 deg F\n",
"\n",
"At time t = -1.6166666666666667 the body temperature is 131.938874804231 deg F\n",
"\n",
"At time t = -1.6 the body temperature is 131.20548691904602 deg F\n",
"\n",
"At time t = -1.5833333333333333 the body temperature is 130.47915731636374 deg F\n",
"\n",
"At time t = -1.5666666666666667 the body temperature is 129.75981483122743 deg F\n",
"\n",
"At time t = -1.55 the body temperature is 129.04738901619928 deg F\n",
"\n",
"At time t = -1.5333333333333334 the body temperature is 128.34181013412595 deg F\n",
"\n",
"At time t = -1.5166666666666666 the body temperature is 127.64300915097726 deg F\n",
"\n",
"At time t = -1.5 the body temperature is 126.95091772875692 deg F\n",
"\n",
"At time t = -1.4833333333333334 the body temperature is 126.26546821848473 deg F\n",
"\n",
"At time t = -1.4666666666666668 the body temperature is 125.58659365324966 deg F\n",
"\n",
"At time t = -1.45 the body temperature is 124.9142277413329 deg F\n",
"\n",
"At time t = -1.4333333333333333 the body temperature is 124.2483048594002 deg F\n",
"\n",
"At time t = -1.4166666666666667 the body temperature is 123.588760045763 deg F\n",
"\n",
"At time t = -1.4 the body temperature is 122.93552899370725 deg F\n",
"\n",
"At time t = -1.3833333333333333 the body temperature is 122.28854804488982 deg F\n",
"\n",
"At time t = -1.3666666666666667 the body temperature is 121.64775418280118 deg F\n",
"\n",
"At time t = -1.35 the body temperature is 121.0130850262942 deg F\n",
"\n",
"At time t = -1.3333333333333333 the body temperature is 120.38447882317811 deg F\n",
"\n",
"At time t = -1.3166666666666667 the body temperature is 119.76187444387705 deg F\n",
"\n",
"At time t = -1.3 the body temperature is 119.14521137515256 deg F\n",
"\n",
"At time t = -1.2833333333333334 the body temperature is 118.53442971388942 deg F\n",
"\n",
"At time t = -1.2666666666666666 the body temperature is 117.92947016094406 deg F\n",
"\n",
"At time t = -1.25 the body temperature is 117.33027401505505 deg F\n",
"\n",
"At time t = -1.2333333333333334 the body temperature is 116.73678316681496 deg F\n",
"\n",
"At time t = -1.2166666666666668 the body temperature is 116.14894009270299 deg F\n",
"\n",
"At time t = -1.2 the body temperature is 115.5666878491778 deg F\n",
"\n",
"At time t = -1.1833333333333333 the body temperature is 114.9899700668299 deg F\n",
"\n",
"At time t = -1.1666666666666667 the body temperature is 114.41873094459295 deg F\n",
"\n",
"At time t = -1.1500000000000001 the body temperature is 113.85291524401347 deg F\n",
"\n",
"At time t = -1.1333333333333333 the body temperature is 113.29246828357829 deg F\n",
"\n",
"At time t = -1.1166666666666667 the body temperature is 112.73733593309923 deg F\n",
"\n",
"At time t = -1.1 the body temperature is 112.18746460815441 deg F\n",
"\n",
"At time t = -1.0833333333333333 the body temperature is 111.64280126458551 deg F\n",
"\n",
"At time t = -1.0666666666666667 the body temperature is 111.10329339305062 deg F\n",
"\n",
"At time t = -1.05 the body temperature is 110.56888901363195 deg F\n",
"\n",
"At time t = -1.0333333333333334 the body temperature is 110.03953667049792 deg F\n",
"\n",
"At time t = -1.0166666666666666 the body temperature is 109.51518542661913 deg F\n",
"\n",
"At time t = -1.0 the body temperature is 108.99578485853745 deg F\n",
"\n",
"At time t = -0.9833333333333334 the body temperature is 108.48111700993839 deg F\n",
"\n",
"At time t = -0.9666666666666668 the body temperature is 107.97113416329618 deg F\n",
"\n",
"At time t = -0.9500000000000002 the body temperature is 107.46578908219584 deg F\n",
"\n",
"At time t = -0.9333333333333336 the body temperature is 106.96503500648231 deg F\n",
"\n",
"At time t = -0.9166666666666665 the body temperature is 106.46882564745867 deg F\n",
"\n",
"At time t = -0.8999999999999999 the body temperature is 105.9771151831326 deg F\n",
"\n",
"At time t = -0.8833333333333333 the body temperature is 105.48985825351087 deg F\n",
"\n",
"At time t = -0.8666666666666667 the body temperature is 105.00700995594129 deg F\n",
"\n",
"At time t = -0.8500000000000001 the body temperature is 104.52852584050147 deg F\n",
"\n",
"At time t = -0.8333333333333335 the body temperature is 104.0543619054343 deg F\n",
"\n",
"At time t = -0.8166666666666669 the body temperature is 103.58447459262928 deg F\n",
"\n",
"At time t = -0.7999999999999998 the body temperature is 103.11882078314943 deg F\n",
"\n",
"At time t = -0.7833333333333332 the body temperature is 102.65735779280342 deg F\n",
"\n",
"At time t = -0.7666666666666666 the body temperature is 102.2000433677622 deg F\n",
"\n",
"At time t = -0.75 the body temperature is 101.74683568021989 deg F\n",
"\n",
"At time t = -0.7333333333333334 the body temperature is 101.29769332409839 deg F\n",
"\n",
"At time t = -0.7166666666666668 the body temperature is 100.85257531079539 deg F\n",
"\n",
"At time t = -0.7000000000000002 the body temperature is 100.41144106497511 deg F\n",
"\n",
"At time t = -0.6833333333333336 the body temperature is 99.97425042040157 deg F\n",
"\n",
"At time t = -0.6666666666666665 the body temperature is 99.54096361581391 deg F\n",
"\n",
"At time t = -0.6499999999999999 the body temperature is 99.11154129084312 deg F\n",
"\n",
"At time t = -0.6333333333333333 the body temperature is 98.68594448197017 deg F\n",
"\n",
"At time t = -0.6166666666666667 the body temperature is 98.26413461852472 deg F\n",
"\n",
"At time t = -0.6000000000000001 the body temperature is 97.84607351872427 deg F\n",
"\n",
"At time t = -0.5833333333333335 the body temperature is 97.43172338575314 deg F\n",
"\n",
"At time t = -0.5666666666666669 the body temperature is 97.02104680388115 deg F\n",
"\n",
"At time t = -0.5499999999999998 the body temperature is 96.61400673462124 deg F\n",
"\n",
"At time t = -0.5333333333333332 the body temperature is 96.21056651292601 deg F\n",
"\n",
"At time t = -0.5166666666666666 the body temperature is 95.81068984342244 deg F\n",
"\n",
"At time t = -0.5 the body temperature is 95.41434079668474 deg F\n",
"\n",
"At time t = -0.4833333333333334 the body temperature is 95.02148380554463 deg F\n",
"\n",
"At time t = -0.4666666666666668 the body temperature is 94.63208366143894 deg F\n",
"\n",
"At time t = -0.4500000000000002 the body temperature is 94.24610551079392 deg F\n",
"\n",
"At time t = -0.43333333333333357 the body temperature is 93.86351485144614 deg F\n",
"\n",
"At time t = -0.4166666666666665 the body temperature is 93.48427752909934 deg F\n",
"\n",
"At time t = -0.3999999999999999 the body temperature is 93.10835973381712 deg F\n",
"\n",
"At time t = -0.3833333333333333 the body temperature is 92.73572799655092 deg F\n",
"\n",
"At time t = -0.3666666666666667 the body temperature is 92.366349185703 deg F\n",
"\n",
"At time t = -0.3500000000000001 the body temperature is 92.00019050372416 deg F\n",
"\n",
"At time t = -0.3333333333333335 the body temperature is 91.63721948374562 deg F\n",
"\n",
"At time t = -0.3166666666666669 the body temperature is 91.27740398624505 deg F\n",
"\n",
"At time t = -0.2999999999999998 the body temperature is 90.920712195746 deg F\n",
"\n",
"At time t = -0.2833333333333332 the body temperature is 90.56711261755082 deg F\n",
"\n",
"At time t = -0.2666666666666666 the body temperature is 90.2165740745063 deg F\n",
"\n",
"At time t = -0.25 the body temperature is 89.86906570380212 deg F\n",
"\n",
"At time t = -0.2333333333333334 the body temperature is 89.5245569538015 deg F\n",
"\n",
"At time t = -0.21666666666666679 the body temperature is 89.18301758090372 deg F\n",
"\n",
"At time t = -0.20000000000000018 the body temperature is 88.84441764643847 deg F\n",
"\n",
"At time t = -0.18333333333333357 the body temperature is 88.5087275135913 deg F\n",
"\n",
"At time t = -0.16666666666666652 the body temperature is 88.17591784436019 deg F\n",
"\n",
"At time t = -0.1499999999999999 the body temperature is 87.8459595965428 deg F\n",
"\n",
"At time t = -0.1333333333333333 the body temperature is 87.51882402075408 deg F\n",
"\n",
"At time t = -0.1166666666666667 the body temperature is 87.19448265747393 deg F\n",
"\n",
"At time t = -0.10000000000000009 the body temperature is 86.87290733412465 deg F\n",
"\n",
"At time t = -0.08333333333333348 the body temperature is 86.55407016217784 deg F\n",
"\n",
"At time t = -0.06666666666666687 the body temperature is 86.2379435342905 deg F\n",
"\n",
"At time t = -0.04999999999999982 the body temperature is 85.92450012146998 deg F\n",
"\n",
"At time t = -0.033333333333333215 the body temperature is 85.61371287026749 deg F\n",
"\n",
"At time t = -0.016666666666666607 the body temperature is 85.305555 deg F\n",
"\n",
"At time t = 0.0 the body temperature is 85.0 deg F\n",
"\n",
"At time t = 0.016666666666666607 the body temperature is 84.79629666666666 deg F\n",
"\n",
"At time t = 0.033333333333333215 the body temperature is 84.59483783851167 deg F\n",
"\n",
"At time t = 0.04999999999999982 the body temperature is 84.39560065487568 deg F\n",
"\n",
"At time t = 0.06666666666666643 the body temperature is 84.198562487939 deg F\n",
"\n",
"At time t = 0.08333333333333348 the body temperature is 84.00370094035004 deg F\n",
"\n",
"At time t = 0.10000000000000009 the body temperature is 83.81099384287798 deg F\n",
"\n",
"At time t = 0.1166666666666667 the body temperature is 83.62041925208929 deg F\n",
"\n",
"At time t = 0.1333333333333333 the body temperature is 83.431955448048 deg F\n",
"\n",
"At time t = 0.1499999999999999 the body temperature is 83.24558093203927 deg F\n",
"\n",
"At time t = 0.16666666666666652 the body temperature is 83.0612744243163 deg F\n",
"\n",
"At time t = 0.18333333333333313 the body temperature is 82.87901486187 deg F\n",
"\n",
"At time t = 0.20000000000000018 the body temperature is 82.6987813962216 deg F\n",
"\n",
"At time t = 0.21666666666666679 the body temperature is 82.52055339123753 deg F\n",
"\n",
"At time t = 0.2333333333333334 the body temperature is 82.34431042096665 deg F\n",
"\n",
"At time t = 0.25 the body temperature is 82.1700322674996 deg F\n",
"\n",
"At time t = 0.2666666666666666 the body temperature is 81.99769891884974 deg F\n",
"\n",
"At time t = 0.2833333333333332 the body temperature is 81.82729056685588 deg F\n",
"\n",
"At time t = 0.2999999999999998 the body temperature is 81.65878760510624 deg F\n",
"\n",
"At time t = 0.31666666666666643 the body temperature is 81.49217062688363 deg F\n",
"\n",
"At time t = 0.3333333333333335 the body temperature is 81.3274204231315 deg F\n",
"\n",
"At time t = 0.3500000000000001 the body temperature is 81.16451798044072 deg F\n",
"\n",
"At time t = 0.3666666666666667 the body temperature is 81.00344447905694 deg F\n",
"\n",
"At time t = 0.3833333333333333 the body temperature is 80.84418129090811 deg F\n",
"\n",
"At time t = 0.3999999999999999 the body temperature is 80.68670997765221 deg F\n",
"\n",
"At time t = 0.4166666666666665 the body temperature is 80.53101228874483 deg F\n",
"\n",
"At time t = 0.4333333333333331 the body temperature is 80.37707015952637 deg F\n",
"\n",
"At time t = 0.44999999999999973 the body temperature is 80.22486570932878 deg F\n",
"\n",
"At time t = 0.4666666666666668 the body temperature is 80.07438123960165 deg F\n",
"\n",
"At time t = 0.4833333333333334 the body temperature is 79.92559923205721 deg F\n",
"\n",
"At time t = 0.5 the body temperature is 79.77850234683439 deg F\n",
"\n",
"At time t = 0.5166666666666666 the body temperature is 79.63307342068148 deg F\n",
"\n",
"At time t = 0.5333333333333332 the body temperature is 79.48929546515738 deg F\n",
"\n",
"At time t = 0.5499999999999998 the body temperature is 79.34715166485107 deg F\n",
"\n",
"At time t = 0.5666666666666664 the body temperature is 79.20662537561928 deg F\n",
"\n",
"At time t = 0.5833333333333335 the body temperature is 79.06770012284215 deg F\n",
"\n",
"At time t = 0.6000000000000001 the body temperature is 78.93035959969654 deg F\n",
"\n",
"At time t = 0.6166666666666667 the body temperature is 78.79458766544704 deg F\n",
"\n",
"At time t = 0.6333333333333333 the body temperature is 78.6603683437543 deg F\n",
"\n",
"At time t = 0.6499999999999999 the body temperature is 78.52768582100066 deg F\n",
"\n",
"At time t = 0.6666666666666665 the body temperature is 78.3965244446328 deg F\n",
"\n",
"At time t = 0.6833333333333331 the body temperature is 78.26686872152125 deg F\n",
"\n",
"At time t = 0.6999999999999997 the body temperature is 78.13870331633666 deg F\n",
"\n",
"At time t = 0.7166666666666668 the body temperature is 78.01201304994255 deg F\n",
"\n",
"At time t = 0.7333333333333334 the body temperature is 77.8867828978045 deg F\n",
"\n",
"At time t = 0.75 the body temperature is 77.76299798841542 deg F\n",
"\n",
"At time t = 0.7666666666666666 the body temperature is 77.64064360173708 deg F\n",
"\n",
"At time t = 0.7833333333333332 the body temperature is 77.51970516765724 deg F\n",
"\n",
"At time t = 0.7999999999999998 the body temperature is 77.40016826446268 deg F\n",
"\n",
"At time t = 0.8166666666666664 the body temperature is 77.28201861732775 deg F\n",
"\n",
"At time t = 0.8333333333333335 the body temperature is 77.16524209681828 deg F\n",
"\n",
"At time t = 0.8500000000000001 the body temperature is 77.04982471741071 deg F\n",
"\n",
"At time t = 0.8666666666666667 the body temperature is 76.93575263602644 deg F\n",
"\n",
"At time t = 0.8833333333333333 the body temperature is 76.82301215058085 deg F\n",
"\n",
"At time t = 0.8999999999999999 the body temperature is 76.71158969854739 deg F\n",
"\n",
"At time t = 0.9166666666666665 the body temperature is 76.60147185553606 deg F\n",
"\n",
"At time t = 0.9333333333333331 the body temperature is 76.49264533388656 deg F\n",
"\n",
"At time t = 0.9499999999999997 the body temperature is 76.3850969812756 deg F\n",
"\n",
"At time t = 0.9666666666666668 the body temperature is 76.27881377933848 deg F\n",
"\n",
"At time t = 0.9833333333333334 the body temperature is 76.17378284230473 deg F\n",
"\n",
"At time t = 1.0 the body temperature is 76.0699914156476 deg F\n",
"\n",
"At time t = 1.0166666666666666 the body temperature is 75.96742687474733 deg F\n",
"\n",
"At time t = 1.0333333333333332 the body temperature is 75.866076723568 deg F\n",
"\n",
"At time t = 1.0499999999999998 the body temperature is 75.7659285933479 deg F\n",
"\n",
"At time t = 1.0666666666666664 the body temperature is 75.66697024130322 deg F\n",
"\n",
"At time t = 1.083333333333333 the body temperature is 75.56918954934496 deg F\n",
"\n",
"At time t = 1.0999999999999996 the body temperature is 75.47257452280884 deg F\n",
"\n",
"At time t = 1.1166666666666663 the body temperature is 75.37711328919828 deg F\n",
"\n",
"At time t = 1.1333333333333329 the body temperature is 75.28279409694002 deg F\n",
"\n",
"At time t = 1.1500000000000004 the body temperature is 75.18960531415256 deg F\n",
"\n",
"At time t = 1.166666666666667 the body temperature is 75.09753542742703 deg F\n",
"\n",
"At time t = 1.1833333333333336 the body temperature is 75.00657304062057 deg F\n",
"\n",
"At time t = 1.2000000000000002 the body temperature is 74.9167068736619 deg F\n",
"\n",
"At time t = 1.2166666666666668 the body temperature is 74.82792576136917 deg F\n",
"\n",
"At time t = 1.2333333333333334 the body temperature is 74.74021865227978 deg F\n",
"\n",
"At time t = 1.25 the body temperature is 74.65357460749209 deg F\n",
"\n",
"At time t = 1.2666666666666666 the body temperature is 74.56798279951902 deg F\n",
"\n",
"At time t = 1.2833333333333332 the body temperature is 74.48343251115323 deg F\n",
"\n",
"At time t = 1.2999999999999998 the body temperature is 74.39991313434393 deg F\n",
"\n",
"At time t = 1.3166666666666664 the body temperature is 74.31741416908511 deg F\n",
"\n",
"At time t = 1.333333333333333 the body temperature is 74.23592522231506 deg F\n",
"\n",
"At time t = 1.3499999999999996 the body temperature is 74.15543600682713 deg F\n",
"\n",
"At time t = 1.3666666666666663 the body temperature is 74.07593634019159 deg F\n",
"\n",
"At time t = 1.3833333333333329 the body temperature is 73.99741614368845 deg F\n",
"\n",
"At time t = 1.4000000000000004 the body temperature is 73.91986544125119 deg F\n",
"\n",
"At time t = 1.416666666666667 the body temperature is 73.84327435842114 deg F\n",
"\n",
"At time t = 1.4333333333333336 the body temperature is 73.76763312131267 deg F\n",
"\n",
"At time t = 1.4500000000000002 the body temperature is 73.6929320555888 deg F\n",
"\n",
"At time t = 1.4666666666666668 the body temperature is 73.61916158544729 deg F\n",
"\n",
"At time t = 1.4833333333333334 the body temperature is 73.54631223261703 deg F\n",
"\n",
"At time t = 1.5 the body temperature is 73.47437461536467 deg F\n",
"\n",
"At time t = 1.5166666666666666 the body temperature is 73.40333944751141 deg F\n",
"\n",
"At time t = 1.5333333333333332 the body temperature is 73.33319753745971 deg F\n",
"\n",
"At time t = 1.5499999999999998 the body temperature is 73.26393978722999 deg F\n",
"\n",
"At time t = 1.5666666666666664 the body temperature is 73.19555719150708 deg F\n",
"\n",
"At time t = 1.583333333333333 the body temperature is 73.12804083669648 deg F\n",
"\n",
"At time t = 1.5999999999999996 the body temperature is 73.06138189999015 deg F\n",
"\n",
"At time t = 1.6166666666666663 the body temperature is 72.99557164844177 deg F\n",
"\n",
"At time t = 1.6333333333333329 the body temperature is 72.93060143805155 deg F\n",
"\n",
"At time t = 1.6500000000000004 the body temperature is 72.86646271286031 deg F\n",
"\n",
"At time t = 1.666666666666667 the body temperature is 72.8031470040527 deg F\n",
"\n",
"At time t = 1.6833333333333336 the body temperature is 72.7406459290697 deg F\n",
"\n",
"At time t = 1.7000000000000002 the body temperature is 72.67895119073003 deg F\n",
"\n",
"At time t = 1.7166666666666668 the body temperature is 72.61805457636058 deg F\n",
"\n",
"At time t = 1.7333333333333334 the body temperature is 72.55794795693569 deg F\n",
"\n",
"At time t = 1.75 the body temperature is 72.4986232862252 deg F\n",
"\n",
"At time t = 1.7666666666666666 the body temperature is 72.44007259995111 deg F\n",
"\n",
"At time t = 1.7833333333333332 the body temperature is 72.38228801495295 deg F\n",
"\n",
"At time t = 1.7999999999999998 the body temperature is 72.32526172836154 deg F\n",
"\n",
"At time t = 1.8166666666666664 the body temperature is 72.26898601678123 deg F\n",
"\n",
"At time t = 1.833333333333333 the body temperature is 72.21345323548042 deg F\n",
"\n",
"At time t = 1.8499999999999996 the body temperature is 72.1586558175904 deg F\n",
"\n",
"At time t = 1.8666666666666663 the body temperature is 72.10458627331228 deg F\n",
"\n",
"At time t = 1.8833333333333329 the body temperature is 72.051237189132 deg F\n",
"\n",
"At time t = 1.9000000000000004 the body temperature is 71.99860122704338 deg F\n",
"\n",
"At time t = 1.916666666666667 the body temperature is 71.94667112377907 deg F\n",
"\n",
"At time t = 1.9333333333333336 the body temperature is 71.8954396900493 deg F\n",
"\n",
"At time t = 1.9500000000000002 the body temperature is 71.84489980978842 deg F\n",
"\n",
"At time t = 1.9666666666666668 the body temperature is 71.79504443940908 deg F\n",
"\n",
"At time t = 1.9833333333333334 the body temperature is 71.74586660706407 deg F\n",
"\n",
"At time t = 2.0 the body temperature is 71.69735941191558 deg F\n",
"\n"
]
}
],
"source": [
"for i in range(len(numerical_array_fine2)):\n",
" print('At time t = ', t5[i], 'the body temperature is', numerical_array_fine2[i],'deg F')\n",
" print()\n"
]
},
{
"cell_type": "code",
"execution_count": 247,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.629937471460555"
]
},
"execution_count": 247,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.interp(98.6, [98.26413461852472, 98.68594448197017, ], [0.6166666666666667, 0.6333333333333333])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By observation, we can tell that the body is at 98.6 degrees F between t = -0.63333 and t = -0.6166666 hours. Using a simple linear interpolation, with the associated temperature values, this results in a value of t = -0.629937471460555 hours. In the below, we will turn this into an hour/minutes value. For reference, the linewar analytical model yielded a time of t = -0.848937 hours. "
]
},
{
"cell_type": "code",
"execution_count": 248,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Using this nonlinear method, a later time of death is estimated at 37.796248287633304 minutes before 11:00 a.m.\n",
"or approximately 10:22 a.m.\n"
]
}
],
"source": [
"in_minutes = 0.629937471460555*60;\n",
"\n",
"print('Using this nonlinear method, a later time of death is estimated at', in_minutes, 'minutes before 11:00 a.m.')\n",
"print('or approximately 10:22 a.m.')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}