{ "cells": [ { "cell_type": "markdown", "id": "80a36ee9-2b28-488f-aed2-e6b4377702b9", "metadata": {}, "source": [ "# PHYS 310 HW 3 Solutions" ] }, { "cell_type": "code", "execution_count": 1, "id": "a8a1b626-b7b1-4e6c-899e-ff926a2c491b", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy import stats" ] }, { "cell_type": "markdown", "id": "f38dcc7a-fd9d-4479-88af-dad1d360c077", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "## Calculus Approach \n", "H & H : Table 4.2\n", "\n", "$$Z(A,B) = k \\frac{A^n}{B^m}$$\n", "\n", "We will find the partial derivatives due to the two vairables, and combine in quadrature.\n", "\n", "**For A:** \n", "$$\\alpha_{Z,A} = \\alpha_A \\frac{\\partial Z}{\\partial A}$$\n", "$$\\frac{\\partial Z}{\\partial A} = nk\\frac{A^{n-1}}{B^m}$$\n", "$$\\alpha_{Z,A} = \\alpha_Ank\\frac{A^{n-1}}{B^m}$$\n", "**For B:**\n", "$$\\alpha_{Z,B} = \\alpha_B \\frac{\\partial Z}{\\partial B}$$\n", "$$\\frac{\\partial Z}{\\partial B} = -mkA^{n}B^{-m-1}$$\n", "$$\\alpha_{Z,B} = -\\alpha_B mk\\frac{A^{n}}{B^{m+1}}$$\n", "**Combine** (squaring the negative number doesn't matter, and we can take out the equation Z)\n", "$$\\alpha_z = \\sqrt{\\left(\\alpha_Ank\\frac{A^{n-1}}{B^m}\\right)^2 + \\left(-\\alpha_B mk\\frac{A^{n}}{B^{m+1}}\\right)^2} $$\n", "$$\\alpha_z= k\\frac{A^{n}}{B^m}\\sqrt{\\left(\\alpha_An\\frac{1}{A}\\right)^2 + \\left(\\alpha_B m\\frac{1}{B}\\right)^2}$$\n", "$$\\frac{\\alpha_z}{Z} = \\sqrt{\\left(n\\frac{\\alpha_A}{A}\\right)^2 + \\left(m\\frac{\\alpha_B}{B}\\right)^2}$$" ] }, { "cell_type": "markdown", "id": "f232aec1-28d0-4fa6-9888-0836a00a0575", "metadata": {}, "source": [ "# Functional Approach to Pendulum\n", "When does it matter if we use the functional approach with $T +\\Delta T$ or $T- \\Delta T$?" ] }, { "cell_type": "code", "execution_count": 2, "id": "207a043d-eede-46fa-a8fe-84f935a0b831", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The best value of g: 9.765590687774262\n", "Δg(L,T+ΔT): -0.03953676381878424\n", "Δg(L,T-ΔT): 0.03977833230749894\n" ] } ], "source": [ "def g(L,T):\n", " return 4*np.pi**2 *L/T**2\n", "\n", "L = 0.96\n", "T = 1.970\n", "DeltaT = 0.004\n", "\n", "print('The best value of g:',g(L,T))\n", "print('Δg(L,T+ΔT):',g(L,T+DeltaT) - g(L,T))\n", "print('Δg(L,T-ΔT):',g(L,T-DeltaT) - g(L,T))\n", "\n" ] }, { "cell_type": "markdown", "id": "2f7381dc-7e3c-4ec8-b620-22046d8ce276", "metadata": {}, "source": [ "It doesn't matter to one significant digit." ] }, { "cell_type": "code", "execution_count": 3, "id": "cc79d71e-681c-41e1-b4bf-59ce3ce9f85e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Δg(L,T+ΔT): -1.3330344177085962\n", "Δg(L,T-ΔT): 1.6760470673830667\n" ] } ], "source": [ "DeltaT2 = 0.15\n", "\n", "print('Δg(L,T+ΔT):',g(L,T+DeltaT2) - g(L,T))\n", "print('Δg(L,T-ΔT):',g(L,T-DeltaT2) - g(L,T))\n" ] }, { "cell_type": "markdown", "id": "783a3f7b-aa45-440d-98fa-9088e58b1dab", "metadata": {}, "source": [ "If the uncertainty is much bigger, then the first significant digit would be different in each case.\n", "\n", "We can be a little more quantitative about this by considering higher order terms in our \n", "Taylor series expansions of $g(L,T)$:\n", "\n", "\\begin{eqnarray*}\n", "g(L,T+\\Delta T) &\\simeq& g(L,T) + \\frac{\\partial g}{\\partial T} \\, \\Delta T\n", " + \\frac{1}{2}\\frac{\\partial^2 g}{\\partial T^2} \\Delta T^2\\\\\n", "g(L,T-\\Delta T) &\\simeq& g(L,T) - \\frac{\\partial g}{\\partial T}\\, \\Delta T \n", " + \\frac{1}{2}\\frac{\\partial^2 g}{\\partial T^2}\\, \\Delta T^2.\n", "\\end{eqnarray*}\n", "These expressions will have the same magnitude when the terms quadratic in $\\Delta T$ \n", "are small compared to the linear terms, i.e.,\n", "\n", "$$ \n", "\\frac{1}{2}\\frac{\\partial^2 g}{\\partial T^2} \\Delta T^2 \n", " \\ll \\frac{\\partial g}{\\partial T} \\, \\Delta T. \n", "$$\n", "\n", "Rearranging this gives the condition on $\\Delta T$:\n", "\n", "$$\n", "\\Delta T \\ll 2\\frac{\\frac{\\partial g}{\\partial T}}{\\frac{\\partial^2 g}{\\partial T^2}}\n", "$$\n", "\n", "In this problem we have \n", "\n", "$$ \n", "\\frac{\\partial g}{\\partial T} = -\\frac{8\\pi^2 L}{T^3}\\quad\\mbox{and}{\\quad}\n", " \\frac{\\partial^2 g}{\\partial T^2} = \\frac{24\\pi^2L}{T^4}\n", "$$\n", "\n", "so our condition on the size of $\\Delta T$ becomes\n", "\n", "$$ \n", "\\Delta T \\ll \\frac{2}{3}T. \n", "$$\n", "\n", "This means that in this problem the two uncertainties will be the same when $\\Delta T\\ll \\frac{2}{3}T$, \n", "or when $\\Delta T$ is, say, less than a tenth of $\\frac{2}{3}T \\sim 0.13$. Guesses around 0.1 are close." ] }, { "cell_type": "markdown", "id": "c10842e0-73f9-463f-afca-e197cc4e708d", "metadata": {}, "source": [ "## Functional Approach to van der Waals\n", "H & H : Example 4.2.2" ] }, { "cell_type": "code", "execution_count": 4, "id": "d25b1af2-0674-400b-966c-8e88cdb6eebf", "metadata": {}, "outputs": [], "source": [ "def P(Vm,T):\n", " '''Returns pressure a function of measured volume and temperature'''\n", " return R*T/(Vm - b) - a/Vm**2" ] }, { "cell_type": "code", "execution_count": 5, "id": "1eb5a448-95b1-4fe6-a793-1fba708ba449", "metadata": {}, "outputs": [], "source": [ "R = 8.3145\n", "Tbest = 298.0\n", "alpha_T = 0.2\n", "Vmbest = 2.000e-4\n", "alpha_V = 0.003e-4\n", "a = 1.408e-1\n", "b = 3.913e-5" ] }, { "cell_type": "code", "execution_count": 6, "id": "323a3007-ad67-424f-9324-0f2fd540cb80", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P [MPa]: 11.882007832411261 /n\n", "uncertainties in P due to uncertainties in V and T: [-0.01813283 0.01033692] \n", "\n", "fractional uncertainties in P due to uncertainties in V and T: [-0.00152607 0.00086996] \n", "\n", "total uncertainty [MPa]: 0.020872267575327286\n" ] } ], "source": [ "Pbest = P(Vmbest,Tbest)\n", "\n", "#we can turn all the uncertainties due to each parameter into a vector u\n", "u = np.zeros(2)\n", "u[0] = P(Vmbest + alpha_V, Tbest)\n", "u[1] = P(Vmbest, Tbest + alpha_T)\n", "u = u - Pbest\n", "print('P [MPa]:', Pbest/1e6,'/n')\n", "print('uncertainties in P due to uncertainties in V and T:',u/1e6,'\\n')\n", "print('fractional uncertainties in P due to uncertainties in V and T:',u/Pbest,'\\n')\n", "unc = np.sqrt(np.sum(u**2))\n", "print('total uncertainty [MPa]:', unc/1.e6)" ] }, { "cell_type": "markdown", "id": "b1c9b56b-e1da-4bfc-888c-25df2e4256fc", "metadata": {}, "source": [ "Thus: \n", "$\\alpha_P^T \\sim 0.010$ MPa, \n", "$\\alpha_P^V \\sim 0.018$ MPa, \n", "$P(\\overline V_{in}, \\overline T) \\pm \\alpha_P = 11.88 \\pm 0.02$ MPa \n", "**As expected!**" ] }, { "cell_type": "markdown", "id": "20717b33-34f0-42a3-8180-474b260de59a", "metadata": {}, "source": [ "## Calculus Approximation to van der Waals\n", "\n", "$$\n", "P(V_m,T) = \\frac{RT}{V_m-b} - \\frac{a}{V_m^2}\n", "$$\n", "\n", "$$\n", "\\alpha_P = \\sqrt{\\left(\\alpha_P^T\\right)^2+\\left(\\alpha_P^V\\right)^2}\n", "$$\n", "\n", "$$\n", "\\alpha_P^T = \\left(\\frac{\\partial P}{\\partial T}\\right)\\alpha_T = \\frac{R}{V_m-b}\\alpha_T\n", "$$\n", "\n", "$$\n", "\\alpha_P^V = \\left(\\frac{\\partial P}{\\partial V}\\right)\\alpha_V \n", "= \\left[RT\\left(\\frac{-1}{(V_m-b)^2}\\right) - \\frac{a(-2)}{V_m^3}\\right]\\alpha_V \n", "= \\left[\\frac{-RT}{(V_m-b)^2} + \\frac{2a}{V_m^3}\\right]\\alpha_V\n", "$$\n", "\n", "$$\\alpha_P = \\sqrt{\\left(\\frac{R}{V_m-b}\\alpha_T\\right)^2 + \\left(\\left[\\frac{-RT}{(V_m-b)^2} + \\frac{2a}{V_m^3}\\right]\\alpha_V\\right)^2}$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "f5b5046b-135d-4c2c-b157-6529b53885cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P [MPa]: 11.882007832411261 /n\n", "uncertainties in P due to uncertainties in V and T: -0.018162585626427412 0.010336918008329707 \n", "\n", "total uncertainty [MPa]: 0.020898119306488768\n" ] } ], "source": [ "# Using the information stored above \n", "print('P [MPa]:', P(Vmbest,Tbest)/1e6,'/n')\n", "alphaPV = (-R*Tbest/((Vmbest - b)**2) + 2*a/Vmbest**3)*alpha_V\n", "alphaPT = (R/(Vmbest - b))*alpha_T\n", "\n", "print('uncertainties in P due to uncertainties in V and T:',alphaPV/1e6,alphaPT/1e6,'\\n')\n", "unc = np.sqrt(alphaPV**2+alphaPT**2)\n", "print('total uncertainty [MPa]:', unc/1.e6)" ] }, { "cell_type": "markdown", "id": "3648ed3c-fdf8-4bc3-8737-bc9ff48af5d5", "metadata": {}, "source": [ "Thus: \n", "$\\alpha_P^T \\sim 0.010$ MPa, \n", "$\\alpha_P^V \\sim 0.018$ MPa, \n", "$P(\\overline V_{in}, \\overline T) \\pm \\alpha_P = 11.88 \\pm 0.02$ MPa \n", "**As expected!**" ] }, { "cell_type": "markdown", "id": "38c57505-3713-4159-867e-9781dd77bf08", "metadata": {}, "source": [ "## Monte Carlo Simulation of van der Waals" ] }, { "cell_type": "code", "execution_count": 8, "id": "6bf003f9-7ba6-4b1d-8587-fec23f86fe87", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(np.float64(11.881505136113706), np.float64(0.020050128301167494))" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numExp = 1000 # Number of Monte Carlo \"experiments\"\n", "Tvalues = stats.norm.rvs(Tbest, alpha_T, size=numExp)\n", "Vvalues = stats.norm.rvs(Vmbest, alpha_V, size=numExp)\n", "simData = P(Vvalues,Tvalues) # simulate a bunch of pressures\n", "Pbest = np.mean(simData)\n", "alphaP = np.std(simData, ddof = 1)\n", "Pbest/1e6, alphaP/1e6" ] }, { "cell_type": "markdown", "id": "9e116dcc-3309-424f-bd6b-0500fed0fea4", "metadata": {}, "source": [ "Thus: \n", "$P(\\overline V_{in}, \\overline T) \\pm \\alpha_P = 11.88 \\pm 0.02$ MPa \n", "**As expected!** \n", "**Note:** We don't get information about how much $T$ and $V_{in}$ affect the pressure individually." ] }, { "cell_type": "markdown", "id": "888da02d-3a44-4ffb-a6c2-4d4501195d1a", "metadata": {}, "source": [ "## H & H : 4.8 \n", "\n", "The volume flow rate is given by \n", "\n", "$$\n", "\\frac{dV}{dt} = \\frac{\\pi\\rho ghr^4}{8\\eta L},\n", "$$ \n", "\n", "First, we need to rewrite this relation in terms that will enable us to calculate the viscosity $\\eta$ from the\n", "length $L$, the radius $r$ and the slope of a plot of flow rate $F = dV/dt$ versus $h$. Let’s call that \n", "slope $m$ to simplify the notation.\n", "\n", "The slope of the flow rate vs. $h$ graph $dV/dt = m h$ is\n", "\n", "$$\n", "m = \\frac{\\pi\\rho gr^4}{8\\eta L},\n", "$$\n", "\n", "and solving for the viscosity gives\n", "\n", "$$\n", "\\eta = \\frac{\\pi\\rho gr^4}{8ml}.\n", "$$\n", "\n", "Since we know the fractional uncertainties and the equation, we are using the calculus approximation. The uncertainty in the viscosity is therefore given by\n", "\n", "\\begin{eqnarray*}\n", "\\alpha_\\eta^2 &=& \\left(\\frac{\\partial \\eta}{\\partial m}\\right)^2\\alpha_m^2 \n", " + \\left(\\frac{\\partial \\eta}{\\partial L}\\right)^2\\alpha_L^2 \n", " + \\left(\\frac{\\partial \\eta}{\\partial r}\\right)^2\\alpha_r^2 \\\\\n", " &=& \\left(\\frac{-\\eta}{m}\\right)^2\\alpha_m^2 + \\left(\\frac{-\\eta}{L}\\right)^2\\alpha_L^2 \n", " + \\left(\\frac{4\\eta}{r}\\right)^2\\alpha_r^2,\n", "\\end{eqnarray*}\n", "\n", "and the fractional uncertainty is given by\n", "\n", "$$\n", "\\left(\\frac{\\alpha_\\eta}{\\eta}\\right)^2 \n", " = \\left(\\frac{\\alpha_m}{m}\\right)^2 + \\left(\\frac{\\alpha_L}{L}\\right)^2 \n", " + \\left(4\\frac{\\alpha_r}{r}\\right)^2\n", "$$" ] }, { "cell_type": "code", "execution_count": 9, "id": "2e606ba9-f7da-4fd6-bb40-8e3ec9437898", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.32760494501762333\n" ] } ], "source": [ "Frac_alpha_m = 0.07 # Fractional uncertainty in slope \n", "Frac_alpha_L = 0.005 # Fractional uncertainy in L\n", "Frac_alpha_r = 0.08 # Fractional uncertainty in r\n", "Frac_alpha_eta = np.sqrt(Frac_alpha_m**2+Frac_alpha_L**2+(4*Frac_alpha_r)**2)\n", "print(Frac_alpha_eta)" ] }, { "cell_type": "markdown", "id": "bded2b53-2215-4c8d-b9f8-09d44f496958", "metadata": {}, "source": [ "So, the fractional precision to which the viscosity is known is 33%. Note that this is dominated by the\n", "error in the radius measurement. If the fractional error were zero for both the slope and the length L measurement, we’d get a fractional uncertainty of 32% with the radius measurement alone because of\n", "the factor of 4 that comes in from the fact that we take the 4th power of $r$ in the relation.\n", "\n", "So, clearly if we want to improve the measurement, the radius of the tube (iii) is the thing that we need to\n", "work on -- that dominates the error." ] }, { "cell_type": "markdown", "id": "551835f8-c118-438f-a40a-8578d5553242", "metadata": {}, "source": [ "## H & H : 4.10\n", "\n", "To combine the students' data best, we need a weighted mean.\n", "$$w_i = \\frac{1}{\\alpha_i^2}$$\n", "$$\\overline x = \\frac{\\sum_i w_i x_i}{\\sum_i x_i^2 }$$\n", "$$\\frac{1}{\\alpha_x^2} = \\sum_i w_i$$" ] }, { "cell_type": "code", "execution_count": 10, "id": "68ea0c33-1daf-49e4-8f10-bce2e4d563e1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.9921259842519685 0.011351102608219766\n" ] } ], "source": [ "speeds = np.array([3.03, 2.99, 2.99, 3.00, 3.05, 2.97])\n", "uncertainties = np.array([0.04, 0.03, 0.02, 0.05, 0.04, 0.02])\n", "weights = 1/uncertainties**2\n", "weightedAvg = np.dot(speeds,weights)/np.sum(weights)\n", "\n", "alpha_speeds = np.sqrt(1/np.sum(weights))\n", "print(weightedAvg, alpha_speeds)\n" ] }, { "cell_type": "markdown", "id": "2e786ce7-e994-4d08-83ae-dc0951bf3d57", "metadata": {}, "source": [ "An average of $(2.99 \\pm 0.01) \\times 10^8$ m/s is pretty good. Adding $(3.0 \\pm 0.3)$ is not going to be doing much because the large uncertainty causes it to be weighted lower, and it's close to the average. $(4.01 \\pm 0.01)$ is going to affect it more because the claimed small uncertainty will cause it to be weighted more, and it's very far from the current average." ] }, { "cell_type": "code", "execution_count": 11, "id": "8906276b-4e4f-4c5f-ac98-dc2e5808780b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.992137240886347 0.011342985980361566\n" ] } ], "source": [ "speeds = np.array([3.03, 2.99, 2.99, 3.00, 3.05, 2.97, 3.0])\n", "uncertainties = np.array([0.04, 0.03, 0.02, 0.05, 0.04, 0.02, 0.3])\n", "weights = 1/uncertainties**2\n", "weightedAvg = np.dot(speeds,weights)/np.sum(weights)\n", "\n", "alpha_speeds = np.sqrt(1/np.sum(weights))\n", "print(weightedAvg, alpha_speeds)" ] }, { "cell_type": "markdown", "id": "30045756-048a-43e2-9463-516779bd5770", "metadata": {}, "source": [ "$(2.99 \\pm 0.01) \\times 10^8$ m/s is no change." ] }, { "cell_type": "code", "execution_count": 12, "id": "9301e6cd-1468-4de2-9b52-98edcbaeedee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.564864020006252 0.007501172149729748\n" ] } ], "source": [ "speeds = np.array([3.03, 2.99, 2.99, 3.00, 3.05, 2.97, 3.0, 4.01])\n", "uncertainties = np.array([0.04, 0.03, 0.02, 0.05, 0.04, 0.02, 0.3, 0.01])\n", "weights = 1/uncertainties**2\n", "weightedAvg = np.dot(speeds,weights)/np.sum(weights)\n", "\n", "alpha_speeds = np.sqrt(1/np.sum(weights))\n", "print(weightedAvg, alpha_speeds)" ] }, { "cell_type": "markdown", "id": "83e8c2e9-705e-4a42-8f17-615cc0bf5d5e", "metadata": {}, "source": [ "This really changed things $(3.565 \\pm 0.008) \\times 10^8$ m/s" ] }, { "cell_type": "markdown", "id": "8609b3c2-3689-41b0-8e3c-17235dfa3abd", "metadata": {}, "source": [ "## M & M - 200 sections\n", "\n", "We're building on last week's simulation, and extending it to 200 lab sections." ] }, { "cell_type": "code", "execution_count": 13, "id": "ed9a2cfc-452d-44aa-9afd-9e140fc25a09", "metadata": {}, "outputs": [], "source": [ "nmms = 60 # number of M&Ms per bag\n", "nb = 24 # number of bags (students) per section\n", "nsections = 200 # number of sections\n", "\n", "#initialize arrays to write data:\n", "mm_means = np.zeros(nsections)\n", "mm_uncs = np.zeros(nsections)\n", "\n", "\n", "for s in range(nsections):\n", " #For nb bags per section, of the nmms per bag that come in six random colors, count color [0] = brown M&Ms\n", " data_section = np.array([np.bincount(stats.randint.rvs(0,6,size=nmms))[0] for i in range(nb)])\n", " mm_means[s] = np.mean(data_section)\n", " mm_uncs[s] = np.std(data_section,ddof = 1)/np.sqrt(nb)" ] }, { "cell_type": "code", "execution_count": 14, "id": "26912e83-e254-47ed-b94d-d1997b3f81b5", "metadata": {}, "outputs": [ { "data": { "image/png": "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Q0OvSFAAAICKXPJN8yIiIvT5558rPz9fe/bskSS1bNlSjRs3rvZwAAAAlXHp6wyks3f9veWWW6ozCwAAwCW7pBOAAQAAPA1lBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWBplBgAAWJpby0xCQoJ+85vfyM/PT02bNtU999yj3bt3O61jjFFcXJxCQkLk4+Ojvn37ateuXW5KDAAAPI1by0xycrLGjx+vzZs3KykpSWfOnNGAAQN04sQJxzpz5szRvHnzNH/+fKWkpCgoKEj9+/dXQUGBG5MDAABPUcedO//iiy+cni9ZskRNmzZVamqqevfuLWOMEhMTFRsbq6FDh0qSli1bpsDAQK1YsUJPPPGEO2IDAAAP4lHnzBw9elSS1LhxY0lSRkaGcnJyNGDAAMc6drtdffr00aZNmyrcRlFRkY4dO+b0AAAAtZfHlBljjCZNmqSePXuqXbt2kqScnBxJUmBgoNO6gYGBjmXnS0hIUIMGDRyP0NDQKxscAAC4lceUmaeeeko7duzQ+++/X26ZzWZzem6MKTdWZsqUKTp69KjjkZWVdUXyAgAAz+DWc2bKPP300/r444+1fv163XDDDY7xoKAgSWdnaIKDgx3jubm55WZrytjtdtnt9isbGAAAeAy3zswYY/TUU0/po48+0tdff62IiAin5REREQoKClJSUpJjrLi4WMnJyerevXtNxwUAAB7IrTMz48eP14oVK/SPf/xDfn5+jvNgGjRoIB8fH9lsNsXExCg+Pl6RkZGKjIxUfHy8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jvW7detmnnvuOWOMMXv37jU2m838/PPPTtu87bbbzJQpU4wxxvF/sOf+33VFzpw5Y/z8/Mw///lPY4wxn3/+ualTp47Jzs52rHP+zMyiRYtM69atnf7PvKioyPj4+Jgvv/yywv2Uzcz4+PiYevXqmbp16xpJ5vHHH3daLzo62gQGBpqioiLH2MKFC02jRo3M8ePHHWOffvqpueaaa0xOTo4xxpihQ4eap556yhhjTExMjHn22WdNQECA2bVrlzl9+rS57rrrzOeff26McZ6ZOXd7kszJkycveKzKjkFiYqLp16+fMcaY6dOnm3vvvdfk5+c7zcyUlJSY2267zdx5553m7rvvNsOHD3d6TW3btjV/+tOfnPLk5+ebe+65xzFL169fP/N///d/ZtWqVU4zM+3btzdxcXEXzHm+8PBwM3DgQKex4cOHmzvuuMMYY8zatWtN/fr1zalTp5zWadGihVmwYIEx5uzMTN26dU1ubu5F9/XLL7+YW2+91UgyrVq1MtHR0WblypWmpKTEsU5oaKhZsWKF08+9/PLLplu3bsYYYxYsWGD8/PzMr7/+WuE+ymaJznfue7Qq75no6GgTHh5uzpw541jn/vvvN8OHD7/oawQqwswMrjq7d+/Wli1bNGLECElSnTp1NHz4cMe5I02aNFH//v313nvvSZIyMjL03XffadSoUZKkrVu3yhijVq1a6brrrnM8kpOTtW/fPsd+vL29ddNNNzntOzc3V08++aRatWqlBg0aqEGDBjp+/LhjNmD37t0KDQ1VUFCQ42duueUWp22kpqZq79698vPzc+y7cePGOnXqlNP+K7Jy5UqlpaVp+/btWrlypf7xj3/ohRdecFqnffv28vb2djxPT093nFBapkePHiotLdXu3bslSX379nWcfJucnKx+/fqpd+/eSk5OVkpKik6ePKkePXo47efcYxMcHOw4PpUZPXq0vvvuO+3fv19Lly6tcEbniy++0MaNG7V06VKtXLlSv/76q+68806dOHHCcZx69uxZ7ufGjh2rpUuXav/+/U6/83NNmDBBM2fOVI8ePTRt2jTt2LGj0szdunUr9zw9PV3S2d/n8ePH5e/v7/R+ysjIcPp9hoeHX/ScH+nscfzuu++0c+dOTZgwQadPn1Z0dLQGDhyo0tJSHTp0SFlZWXrkkUec9jVz5kzHvtLS0tSxY0c1bty40td1IVV5z0hS27Zt5eXl5ZS/Ku8B4Hx13B0AqGmLFi3SmTNndP311zvGjDGqW7eu8vPz1ahRI40aNUoTJ07U66+/rhUrVqht27bq0KGDpLMfBXl5eSk1NdXpP8SSnD5u8PHxKXcVzEMPPaRDhw4pMTFR4eHhstvt6tatm+PjIWNMpVfOlJaWqnPnzo6yda7K/tiFhoaqZcuWkqSoqCjt379fU6dOVVxcnK699lpJcvoDVFmmsvG+fftq4sSJ2rt3r/7973+rV69e2rdvn5KTk3XkyBF17txZfn5+Tj9bt27dctupysdB/v7+GjJkiB555BGdOnVKd9xxh+NjujI7duxQWFiY4w/y6tWrNWDAAN12222655571Lx583IlUZIGDRqkJ554Qo888ojuvPNO+fv7l1vn0Ucf1e9+9zt9+umn+uqrr5SQkKC5c+fq6aefrjT7uc59zcHBweWuxJKkhg0bOv59/u/lYtq1a6d27dpp/Pjx2rBhg3r16qXk5GTdeOONks5+1HT+x4tl72UfH59Leh0Vqcp7RnJ+D5Qt84QT5WE9zMzgqnLmzBn95S9/0dy5c5WWluZ4bN++XeHh4Y6CcM899+jUqVP64osvtGLFCo0ePdqxjY4dO6qkpES5ublq2bKl0+PcGZWKfPvtt5owYYIGDRqktm3bym63Ky8vz7G8TZs2yszM1H//+1/HWEpKitM2OnXqpD179qhp06bl9t+gQYNLOh5eXl46c+bMRc+1ufHGG5WWlqYTJ044xjZu3KhrrrlGrVq1kvS/82ZmzpypDh06qH79+urTp4+Sk5MrPF/mco0dO1br1q3Tgw8+WK5QStL111+vjIwM/fTTT5LOFoHPPvtMxcXFmjJlimbOnFnhH1svLy+NGTNG69atu+g5PKGhoXryySf10Ucf6dlnn9Xbb7990bznX06+efNmtWnTRtLZ32dOTo7q1KlT7vcZEBBQ6bGoTFmBOXHihAIDA3X99ddr//795fYVEREh6eyMWVpamtP5Oufy9vZWSUlJpfus7D0DVCu3fsgF1LBVq1YZb29vc+TIkXLL/vjHP5qbb77Z8XzkyJGmQ4cOxmazmYMHDzqtO2rUKNOsWTPz4YcfOq5SeuWVVxxXtZRdzXS+m2++2fTv39/88MMPZvPmzaZXr17Gx8fHvPbaa8aYs+fQtG7d2vzud78z27dvNxs2bDBdu3Y1kszq1auNMcacOHHCREZGmr59+5r169eb/fv3m3Xr1pkJEyaYrKysCl932Tkza9asMdnZ2SYrK8t89tln5vrrr3ecf2LM/64wOdeJEydMcHCwue+++8zOnTvN119/bZo3b26io6Od1hs6dKjx8vIyf/jDH4wxxpSWlprGjRsbLy8vp6t9zj1Hpcy2bduMpItekaVzzskoLS01hw4dcpwHc/45MydOnDAtWrQwN910k0lKSjJ79uwx7777rgkKCjL16tUzQ4YMcZxHcn6eoqIic+jQIcc5SeefMzNx4kTzxRdfmP3795vU1FRzyy23mGHDhl0wd3h4uKlfv76ZPXu22b17t5k/f77x8vIyX3zxheO19OzZ03To0MF88cUXJiMjw2zcuNHExsaalJQUY8yFz1M535NPPmlmzJhhNmzYYA4cOGC+++47M3jwYNOkSROTl5dnjDHm7bffNj4+PiYxMdHs3r3b7NixwyxevNjMnTvX8fpbtWplevXqZTZs2GD27dtn/v73v5tNmzYZY4x57733TL169cy2bdvMoUOHHOf6nPv7qcp7pqL32sSJE02fPn0qfZ3A+SgzuKoMGTLEDBo0qMJlqampRpLjUumyk1J79+5dbt3i4mLz0ksvmWbNmpm6deuaoKAgc++995odO3YYYy5cZrZu3Wq6dOli7Ha7iYyMNB988IEJDw93lBlj/ndptre3t2nTpo355z//aSQ5/vgZY0x2drZ58MEHTUBAgLHb7aZ58+bmscceM0ePHq3wtZWVmbKHl5eXueGGG8xjjz3mdFJpRX9gjKn8MltjjHn99deNJPPJJ584xu6++27j5eXllKs6ysz5zi8zxhjz3//+14wdO9bccMMNxm63m06dOpm//OUv5ocffjB+fn7m6aefvmCec51fZp566inTokULY7fbTZMmTcyYMWMcRaEi4eHhZvr06WbYsGHG19fXBAYGOk4+L3Ps2DHz9NNPm5CQEFO3bl0TGhpqRo0aZTIzM40xVS8zf//7382gQYNMcHCw8fb2NiEhIea+++5zvC/LvPfee+bmm2823t7eplGjRqZ3797mo48+ciw/cOCAue+++0z9+vWNr6+v6dKli/n++++NMcacOnXK3HfffaZhw4bVcmn2uSgzcJXNGIvc/hO4Sm3cuFE9e/bU3r171aJFC3fHwSVq1qyZYmJiFBMT4+4oQK3FCcCAhym7o21kZKT27t2riRMnqkePHhQZALgAygzgYQoKCjR58mRlZWUpICBAt99+u+bOnevuWADgsfiYCQAAWBqXZgMAAEujzAAAAEujzAAAAEujzAAAAEujzAAAAEujzAAAAEujzAAAAEujzAAAAEv7/2FXO7pEpyA5AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "binned = np.linspace(7,13,10) #define the bin edges to make it look nice\n", "\n", "plt.hist(mm_means,bins = binned,histtype = 'step', color = 'black')\n", "plt.xlabel('Average Brown M&Ms per Section')\n", "plt.ylabel('Occurances')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "dfb740e0-39f1-4cbd-a993-6c5d3df61e03", "metadata": {}, "source": [ "**Check the Central Limit Theorem** \n", "\n", "The standard deviation $\\sigma$ of the means should be equivalend to the standard error of the mean $\\alpha$ of one section:\n", "\n", "$$\n", "\\sigma_{\\rm averages} = \\frac{\\sigma}{\\sqrt{N}} \n", "$$\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "b42b947b-7472-409f-9c99-822428c39f80", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6010061807496443 0.5831440892769958\n", "The standard deviation of the means is: 0.6 brown M&Ms\n", "The typical standard error of the mean for the sections is: 0.6 brown M&Ms\n" ] } ], "source": [ "print(np.std(mm_means,ddof=1), np.mean(mm_uncs))\n", "print('The standard deviation of the means is: %.1f brown M&Ms' %(np.std(mm_means,ddof=1)))\n", "print('The typical standard error of the mean for the sections is: %.1f brown M&Ms' %(np.mean(mm_uncs)))\n" ] }, { "cell_type": "markdown", "id": "fa521af6-0595-4203-bbf4-6915ce0a4cd2", "metadata": {}, "source": [ "The equivalence is supported.\n", "\n", "We can also check the shape of the distribution of the means by comparing the results to \n", "the histrogram predicted by the Central Limit Theorem with a normal distribution using the mean and standard deviation." ] }, { "cell_type": "code", "execution_count": 16, "id": "9204b7b6-c1cc-4c2c-a2b0-bdc910358eff", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(mm_means,bins = binned, density = True, histtype = 'step', color = 'black', label = 'simulation') # density = True to compare to stats.norm.pdf\n", "\n", "xs = (binned[1:] + binned[:-1])/2 #Get x locations in the middle of the bins\n", "plt.plot(xs, stats.norm.pdf(xs,np.mean(mm_means),np.std(mm_means, ddof = 1)),linestyle = ' ',marker = 'o', color = 'firebrick', label ='CLT') # Where the CLT shows up with the bins\n", "plt.plot(np.linspace(7,13,100), stats.norm.pdf(np.linspace(7,13,100),np.mean(mm_means),np.std(mm_means, ddof = 1)), color = 'firebrick') # The underlying distribution\n", "\n", "plt.xlabel('Average Brown M&Ms per Section')\n", "plt.ylabel('Occurances')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "id": "f4384a00-12af-4a63-945a-29201b243982", "metadata": {}, "outputs": [], "source": [ "%load_ext version_information" ] }, { "cell_type": "code", "execution_count": 18, "id": "1a7053d7-31c8-4231-8147-ead56caaf5d8", "metadata": {}, "outputs": [ { "data": { "application/json": { "Software versions": [ { "module": "Python", "version": "3.12.8 64bit [Clang 14.0.6 ]" }, { "module": "IPython", "version": "8.30.0" }, { "module": "OS", "version": "macOS 15.3 arm64 arm 64bit" }, { "module": "numpy", "version": "2.2.2" }, { "module": "scipy", "version": "1.15.1" }, { "module": "matplotlib", "version": "3.10.0" } ] }, "text/html": [ "
SoftwareVersion
Python3.12.8 64bit [Clang 14.0.6 ]
IPython8.30.0
OSmacOS 15.3 arm64 arm 64bit
numpy2.2.2
scipy1.15.1
matplotlib3.10.0
Wed Feb 12 18:26:27 2025 EST
" ], "text/latex": [ "\\begin{tabular}{|l|l|}\\hline\n", "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n", "Python & 3.12.8 64bit [Clang 14.0.6 ] \\\\ \\hline\n", "IPython & 8.30.0 \\\\ \\hline\n", "OS & macOS 15.3 arm64 arm 64bit \\\\ \\hline\n", "numpy & 2.2.2 \\\\ \\hline\n", "scipy & 1.15.1 \\\\ \\hline\n", "matplotlib & 3.10.0 \\\\ \\hline\n", "\\hline \\multicolumn{2}{|l|}{Wed Feb 12 18:26:27 2025 EST} \\\\ \\hline\n", "\\end{tabular}\n" ], "text/plain": [ "Software versions\n", "Python 3.12.8 64bit [Clang 14.0.6 ]\n", "IPython 8.30.0\n", "OS macOS 15.3 arm64 arm 64bit\n", "numpy 2.2.2\n", "scipy 1.15.1\n", "matplotlib 3.10.0\n", "Wed Feb 12 18:26:27 2025 EST" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "version_information numpy, scipy, matplotlib" ] }, { "cell_type": "code", "execution_count": null, "id": "82e000ff-7716-4fbb-87c8-5255d6557ab6", "metadata": {}, "outputs": [], "source": [] } ], "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.12.8" } }, "nbformat": 4, "nbformat_minor": 5 }