From 0b92fc115e732252950833c2f85acc8904ce8e67 Mon Sep 17 00:00:00 2001 From: Alex Dowling Date: Wed, 1 Nov 2023 06:46:07 -0400 Subject: [PATCH 1/6] Updated problem sets. --- notebooks/assignments/ProblemSet2_F23.ipynb | 384 +++++++-------- notebooks/assignments/ProblemSet3_F23.ipynb | 487 +++++++++++--------- notebooks/assignments/ProblemSet4_F23.ipynb | 321 +++++++++++++ 3 files changed, 765 insertions(+), 427 deletions(-) create mode 100644 notebooks/assignments/ProblemSet4_F23.ipynb diff --git a/notebooks/assignments/ProblemSet2_F23.ipynb b/notebooks/assignments/ProblemSet2_F23.ipynb index 6903a609..4de0748e 100644 --- a/notebooks/assignments/ProblemSet2_F23.ipynb +++ b/notebooks/assignments/ProblemSet2_F23.ipynb @@ -47,7 +47,9 @@ " !wget \"https://raw.githubusercontent.com/IDAES/idaes-pse/main/scripts/colab_helper.py\"\n", " import colab_helper\n", " colab_helper.install_idaes()\n", - " colab_helper.install_ipopt()" + " colab_helper.install_ipopt()\n", + "\n", + "import pyomo.environ as pyo" ] }, { @@ -593,36 +595,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4. Portfolio Data Analysis\n", - "\n", - "Portfolio management is a classic example of quadratic programming (optimization). The idea is to find the optimal blend of investments that achieves a specified rate of return (or better) while minimizing the variance in rate of return. In this problem, you will use your skills in statistical analysis to analyze the stock data.\n", - "\n", - "### Historical Stock Data\n", - "\n", - "Historical daily adjusted closing prices for the last five years (obtained from Yahoo! Finance) are available for the $N=5$ stocks listed in table below. (We are actually considering index funds, but this detail does not change the analysis.) \n", - "\n", - "| Symbol | Name |\n", - "|-|-|\n", - "| GSPC | S&P 500 | \n", - "| DJI | Dow Jones Industrial Average | \n", - "| IXIC | NASDAQ Composite | \n", - "| RUT | Russell 2000 |\n", - "| VIX | CBOE Volatility Index |" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4a. Return Rate\n", - "\n", - "You are given a Stock\\_Data.csv file. Using the stock data, calculate the 1-day return rate:\n", - "\n", - "\\begin{equation}\n", - "\tr_{t,i} = \\frac{p_{t+1,i} - p_{t,i}}{p_{t,i}}\n", - "\\end{equation}\n", - "\n", - "where $p_{t+1,i}$ and $p_{t,i}$ are the *Adjusted Closing Prices* at the end of days $t+1$ and $t$, respectively, for stock $i$. These results are stored in matrix `R`. *Hint*: Use Pandas." + "## 4. Numeric Integration of Partial Differential Equations with Pyomo" ] }, { @@ -631,81 +604,117 @@ "metadata": {}, "outputs": [], "source": [ - "# This is the long path to the folder containg data files on GitHub (for the class website)\n", - "data_folder = 'https://raw.githubusercontent.com/ndcbe/data-and-computing/main/noteboohttps://raw.githubusercontent.com/ndcbe/data-and-computing/main/notebooks/data/'\n", + "%matplotlib inline\n", "\n", - "# Load the data file into Pandas\n", - "df_adj_close = pd.read_csv(data_folder + 'Stock_Data.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Add your solution here" + "# Import plotting libraries\n", + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d.axes3d import Axes3D \n", + "\n", + "# Import Pyomo\n", + "import pyomo.environ as pyo\n", + "\n", + "# Import Pyomo numeric integration features\n", + "from pyomo.dae import DerivativeVar, ContinuousSet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 4b. Visualization\n", + "During your time at Notre Dame, you will likely want (or at least need) to solve a partial differential equation (PDE) system. In this problem, we will practice using Pyomo to numerically integrate a simple and common PDE. (Special thanks to Prof. Kantor for this problem.)\n", "\n", - "Plot the single day return rates for the 5 stocks you obtain in the previous section and check if you obtain the following profiles:\n", + "Transport of heat in a solid is described by the familiar thermal diffusion model:\n", "\n", - "![ad](https://raw.githubusercontent.com/ndcbe/data-and-computing/main/media/stock_return_plots.png)\n", + "$$\n", + "\\begin{align*}\n", + "\\rho C_p\\frac{\\partial T}{\\partial t} & = \\nabla\\cdot(k\\nabla T)\n", + "\\end{align*}\n", + "$$\n", "\n", + "We will assume the thermal conductivity $k$ is a constant, and define thermal diffusivity in the conventional way\n", "\n", - "The first plot is made for you. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Create figure\n", - "plt.figure(figsize=(9,15))\n", + "$$\n", + "\\begin{align*}\n", + "\\alpha & = \\frac{k}{\\rho C_p}\n", + "\\end{align*}\n", + "$$\n", "\n", - "# Create subplot for DJI\n", - "plt.subplot(5,1,1)\n", - "plt.plot(R[\"DJI\"]*100,color=\"blue\",label=\"DJI\")\n", - "plt.legend(loc='best')\n", + "We will further assume symmetry with respect to all spatial coordinates except $x$ where $x$ extends from $-X$ to $+X$. The boundary conditions are\n", "\n", - "# Add your solution here\n", + "$$\n", + "\\begin{align*}\n", + "T(t,X) & = T_{\\infty} & \\forall t > 0 \\\\\n", + "\\nabla T(t,0) & = 0 & \\forall t \\geq 0 \n", + "\\end{align*}\n", + "$$\n", "\n", - "# Show plot\n", - "plt.show()" + "where we have assumed symmetry with respect to $r$ and uniform initial conditions $T(0, x) = T_0$ for all $0 \\leq r \\leq X$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 4c. Covariance and Correlation Matrices\n", + "### 4a. Rescaling and Dimensionless Model\n", + "\n", + "We would like a dimensionless model for two reasons: first, we only need to solve the dimensionless model once, i.e., it becomes independent of input data. Second, the dimensionless models are often scaled better for numerical solutions.\n", + "\n", + "Let's consider the following proposed scaling procedure:\n", + "\n", + "$$\n", + "\\begin{align*}\n", + "T' & = \\frac{T - T_0}{T_\\infty - T_0} \\\\\n", + "x' & = \\frac{r}{X} \\\\\n", + "t' & = t \\frac{\\alpha}{X^2}\n", + "\\end{align*}\n", + "$$\n", + "\n", + "Show this scaling procedure gives the following dimensionless system:\n", "\n", - "Write Python code to:\n", - "1. Calculate $\\bar{r}$, the average 1-day return for each stock. Store this as the variable `R_avg`.\n", - "2. Calculate $\\Sigma_{r}$, the covariance matrix of the 1-day returns. This matrix tells us how returns for each stock vary with each other (which is important because they are correlated!). Hint: pandas has a function `cov`\n", - "3. Calculate the correlation matrix for the 1-day returns. Hint: pandas has a function `corr`.\n", + "$$\n", + "\\begin{align*}\n", + "\\frac{\\partial T'}{\\partial t'} & = \\nabla^2 T'\n", + "\\end{align*}\n", + "$$\n", "\n", - "Looking at the correlation matrix, answer the follwing questions:\n", + "with auxiliary conditions\n", "\n", - "1. Which pair of stocks have the highest **positive** correlation?\n", - "2. Which pair of stocks have the highest **negative** correlation?\n", - "3. Which pair of stocks have the lowest **absolute** correlation?\n", + "$$\n", + "\\begin{align*}\n", + "T'(0, x') & = 0 & \\forall 0 \\leq x' \\leq 1\\\\\n", + "T'(t', 1) & = 1 & \\forall t' > 0\\\\\n", + "\\nabla T'(t', 0) & = 0 & \\forall t' \\geq 0 \\\\\n", + "\\end{align*}\n", + "$$\n", "\n", - "Hint: Read ahead in the class website for more information on [correlation and covariance](../..//notebooks/14/Correlation-Covariance-and-Independence.ipynb)" + "Turn in your work (pencil and paper) via **Gradescope**. *Important:* Here the prime $'$ indicates the scaled variables and coordinates. It does not indicate a derivative. Thus $T'$ is scaled temperature, NOT the derivative of temperature (which begs the question of \"with respect to what?\")." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Please write one or two sentences for each question:" + "### 4b. Numeric Integration via Pyomo\n", + "\n", + "For simplicity, let's consider planar coordinates. For a slab geometry, we want to numerical integrate the following PDE:\n", + "\n", + "$$\n", + "\\begin{align*}\n", + "\\frac{\\partial T'}{\\partial t'} & = \\frac{\\partial^2 T'}{\\partial x'^2}\n", + "\\end{align*}\n", + "$$\n", + "\n", + "with auxiliary conditions\n", + "\n", + "$$\n", + "\\begin{align*}\n", + "T'(0, x') & = 0 & \\forall 0 \\leq x' \\leq 1 \\\\\n", + "T'(t', 1) & = 1 & \\forall t' > 0\\\\\n", + "\\frac{\\partial T'}{\\partial x'} (t', 0) & = 0 & \\forall t' \\geq 0 \\\\\n", + "\\end{align*}\n", + "$$\n", + "\n", + "Complete the following Pyomo code to integrate this PDE." ] }, { @@ -714,188 +723,129 @@ "metadata": {}, "outputs": [], "source": [ - "# Add your solution here" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "nbgrader": { - "grade": true, - "grade_id": "check-R_avg", - "locked": true, - "points": "0.5", - "solution": false - } - }, - "outputs": [], - "source": [ - "# Removed autograder test. You may delete this cell." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4c. Markowitz Mean/Variance Portfolio Model\n", + "# Create Pyomo model\n", + "m = pyo.ConcreteModel()\n", "\n", - "The Markowitz mean/variance model, shown below, computes the optimal allocation of funds in a portfolio:\n", + "# Define sets for spatial and temporal domains\n", + "m.x = ContinuousSet(bounds=(0,1))\n", + "m.t = ContinuousSet(bounds=(0,2))\n", "\n", - "\\begin{align}\n", - "\t\t\\min_{{x} \\geq {0}} \\qquad & z:= {x}^T \\cdot {\\Sigma_r} \\cdot {x} \\\\\n", - "\t\t\\text{s.t.} \\qquad & {\\bar{r}}^T \\cdot {x} \\geq \\rho \\\\\n", - "\t\t & \\sum_{i =1}^N x_i = 1 \n", - "\\end{align} \n", + "# Define scaled temperature indexed by time and space\n", + "m.T = pyo.Var(m.t, m.x)\n", "\n", + "# Define variables for the derivates\n", + "m.dTdt = DerivativeVar(m.T, wrt=m.t)\n", + "m.dTdx = DerivativeVar(m.T, wrt=m.x)\n", + "m.d2Tdx2 = DerivativeVar(m.T, wrt=(m.x, m.x))\n", "\n", - "where $x_i$ is the fraction of funds invested in stock $i$ and $x = [x_1, x_2, ..., x_N]^T$. The objective is to minimize the variance of the return rate. (As practice for the next exam, try deriving this from the error propagation formulas.) This requires the expected return rate to be at least $\\rho$. Finally, the allocation of funds must sum to 100%.\n", + "# Define PDE equation\n", + "def pde(m, t, x):\n", + " if t == 0:\n", + " return pyo.Constraint.Skip\n", + " elif x == 0 or x == 1:\n", + " return pyo.Constraint.Skip\n", + " # Add your solution here\n", "\n", - "Write Python code to solve for $\\rho = 0.08\\%.$ Report both the optimal allocation of funds and the standard deviation of the return rate. \n", - "*Hint*:\n", - "1. Be mindful of units.\n", - "2. You can solve with problem using the Pyomo function given below\n", - "3. $:=$ means ''defined as''\n", + "m.pde = pyo.Constraint(m.t, m.x, rule=pde)\n", "\n", - "Store your answer in `std_dev`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "R_avg_tolist = R_avg.values.tolist()\n", - "Cov_list = Cov.values.tolist()\n", + "# Define first auxilary condition\n", + "def initial_condition(m, x):\n", + " if x == 0 or x == 1:\n", + " return pyo.Constraint.Skip\n", + " # Add your solution here\n", "\n", - "# Optimization Problem\n", - "def create_model(rho,R_avg,Cov):\n", - " \n", - " '''\n", - " This function solves for the optimal allocation of funds in a portfolio \n", - " by minimizing the variance of the return rate\n", - " \n", - " Arguments:\n", - " rho: required portfolio expected return\n", - " Ravg: average return rates (list)\n", - " Cov: covariance matrix\n", - " \n", - " Returns:\n", - " m: Pyomo concrete model\n", - " \n", - " '''\n", - " \n", - " m = pyo.ConcreteModel()\n", - " init_x = {}\n", - " m.idx = pyo.Set(initialize=[0,1,2,3,4])\n", - " for i in m.idx:\n", - " init_x[i] = 0\n", - " m.x = pyo.Var(m.idx,initialize=init_x,bounds=(0,None))\n", - " \n", - " def Obj_func(m):\n", - " b = []\n", - " mult_result = 0\n", - " for i in m.idx:\n", - " a = 0\n", - " for j in m.idx:\n", - " a+= m.x[j]*Cov[j][i]\n", - " b.append(a)\n", - " for i in m.idx:\n", - " mult_result += b[i]*m.x[i]\n", - " \n", - " return mult_result\n", - " m.OBJ = pyo.Objective(rule=Obj_func)\n", - " \n", - " def constraint1(m):\n", - " # Add your solution here\n", + "m.ic = pyo.Constraint(m.x, rule = initial_condition)\n", "\n", - " m.C1 = pyo.Constraint(rule=constraint1)\n", - " \n", - " def constraint2(m):\n", - " # Add your solution here\n", + "# Define second auxilary condition\n", + "def boundary_condition1(m, t):\n", + " # Add your solution here\n", "\n", - " m.C2 = pyo.Constraint(rule=constraint2)\n", - " \n", - " return m\n" + "m.bc1 = pyo.Constraint(m.t, rule = boundary_condition1)\n", + "\n", + "# Define third auxilary condition\n", + "@m.Constraint(m.t)\n", + "def boundary_condition2(m, t):\n", + " # Add your solution here \n", + "\n", + "m.bc2 = pyo.Constraint(m.t, rule=boundary_condition2)\n", + "\n", + "# Define dummy objective\n", + "m.obj = pyo.Objective(expr=1)\n", + "\n", + "# Discretize spatial coordinate with forward finite difference and 50 elements\n", + "pyo.TransformationFactory('dae.finite_difference').apply_to(m, nfe=50, scheme='FORWARD', wrt=m.x)\n", + "\n", + "# Discretize time coordinate with forward finite difference and 50 elements\n", + "pyo.TransformationFactory('dae.finite_difference').apply_to(m, nfe=50, scheme='FORWARD', wrt=m.t)\n", + "pyo.SolverFactory('ipopt').solve(m, tee=True).write()" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "rho = 0.0008\n", - "model1 = create_model(rho,R_avg_tolist,Cov_list)\n", - "\n", - "#Solve Pyomo in the method learned in Class 11\n", - "\n", - "# Add your solution here" + "### 4c. Visualize Solution " ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "nbgrader": { - "grade": true, - "grade_id": "standard-deviation", - "locked": true, - "points": "0.5", - "solution": false - } - }, - "outputs": [], - "source": [ - "# Removed autograder test. You may delete this cell." - ] - }, - { - "cell_type": "markdown", "metadata": {}, + "outputs": [], "source": [ - "### 4e. Volatility and Expected Return Tradeoff\n", + "# Extract indices\n", + "x = sorted(m.x)\n", + "t = sorted(m.t)\n", "\n", - "We will now perform sensitivity analysis of the optimization problem in 3d to characterize the tradeoff between return and risk.\n", + "# Create numpy arrays to hold the solution\n", + "xgrid = np.zeros((len(t), len(x)))\n", + "# Hint: define tgrid and Tgrid the same way\n", + "# Add your solution here\n", + "\n", + "# Loop over time\n", + "for i in range(0, len(t)):\n", + " # Loop over space\n", + " for j in range(0, len(x)):\n", + " # Copy values\n", + " xgrid[i,j] = x[j]\n", + " tgrid[i,j] = t[i]\n", + " # Hint: how to access values from Pyomo variable m.T?\n", + " # Add your solution here\n", "\n", - "Write Python code to:\n", - "1. Solve the optimization problem for many values of $\\rho$ between min($\\bar{r}$) and max($\\bar{r}$) and save the results. Use the Pyomo function created in 3d.\n", - "2. Plot $\\rho$ versus $\\sqrt{z}$ (using the saved results).\n", - "3. Write at least one sentence to interpret and discuss your plot.\n", + "# Create a 3D wireframe plot of the solution\n", + "# Hint: consult the matplotlib documentation\n", + "# https://matplotlib.org/stable/gallery/mplot3d/wire3d.html\n", "\n", - "Submit your plot and discussion via **Gradescope**." + "# Add your solution here" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "rho_vals = np.arange(0.0005,0.0038,0.0001)\n", - "std_dev = []\n", + "Write a few sentences to describe the PDE solution. Is it what you expect based on your prior knowledge of this system? Each person brings different prior knwoledge to this class, you everyone should have a distinct answer. In other words, there is no \"right answer\". Instead, this is helping you practice interpreting results based on your knowledge which is a critical skill in graduate school.\n", "\n", - "# Add your solution here" + "**Discussion:**" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "#Plot\n", + "## Submission Instructions and Tips\n", "\n", - "# Add your solution here" + "1. Answer discussion questions in this notebook.\n", + "2. When asked to store a solution in a specific variable, please also print that variable.\n", + "3. Turn in this notebook via Gradescope.\n", + "4. Also turn in written (pencil and paper) work via Gradescope.\n", + "5. Even if you are not required to turn in pseudocode, you should always write pseudocode. It takes only a few minutes and can save you *hours* of time.\n", + "6. We are not using the autograder for CBE 60258, so please skip those instructions." ] }, { "cell_type": "markdown", "metadata": {}, - "source": [ - "**Discussion**:" - ] + "source": [] } ], "metadata": { diff --git a/notebooks/assignments/ProblemSet3_F23.ipynb b/notebooks/assignments/ProblemSet3_F23.ipynb index 22c5545e..c5f3bcd0 100644 --- a/notebooks/assignments/ProblemSet3_F23.ipynb +++ b/notebooks/assignments/ProblemSet3_F23.ipynb @@ -45,7 +45,16 @@ "import math\n", "import numpy as np\n", "import scipy.stats as stats\n", - "from scipy import optimize" + "from scipy import optimize\n", + "\n", + "import sys\n", + "if \"google.colab\" in sys.modules:\n", + " !wget \"https://raw.githubusercontent.com/IDAES/idaes-pse/main/scripts/colab_helper.py\"\n", + " import colab_helper\n", + " colab_helper.install_idaes()\n", + " colab_helper.install_ipopt()\n", + "\n", + "import pyomo.environ as pyo" ] }, { @@ -1088,310 +1097,363 @@ "# Removed autograder test. You may delete this cell." ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "1y6sHpO5d-fR" - }, - "source": [ - "## 3. Numeric Integration of Partial Differential Equations with Pyomo" - ] - }, { "cell_type": "code", "execution_count": null, "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 357 + }, "executionInfo": { - "elapsed": 404, + "elapsed": 1668, "status": "ok", - "timestamp": 1664677364866, + "timestamp": 1664677559084, "user": { "displayName": "Alexander Dowling", "userId": "00988067626794866502" }, "user_tz": 240 }, - "id": "OyvMIfLdd-fR" + "id": "qLQGM8Urd-fT", + "outputId": "751136c4-d2eb-4edc-c183-e30b80d82128" }, "outputs": [], "source": [ - "%matplotlib inline\n", + "# Extract indices\n", + "x = sorted(m.x)\n", + "t = sorted(m.t)\n", "\n", - "# Import plotting libraries\n", - "import matplotlib.pyplot as plt\n", - "from mpl_toolkits.mplot3d.axes3d import Axes3D \n", + "# Create numpy arrays to hold the solution\n", + "xgrid = np.zeros((len(t), len(x)))\n", + "# Hint: define tgrid and Tgrid the same way\n", + "# Add your solution here\n", "\n", - "import sys\n", - "if \"google.colab\" in sys.modules:\n", - " !wget \"https://raw.githubusercontent.com/IDAES/idaes-pse/main/scripts/colab_helper.py\"\n", - " import colab_helper\n", - " colab_helper.install_idaes()\n", - " colab_helper.install_ipopt()\n", + "# Loop over time\n", + "for i in range(0, len(t)):\n", + " # Loop over space\n", + " for j in range(0, len(x)):\n", + " # Copy values\n", + " xgrid[i,j] = x[j]\n", + " tgrid[i,j] = t[i]\n", + " # Hint: how to access values from Pyomo variable m.T?\n", + " # Add your solution here\n", "\n", - "# Import Pyomo\n", - "import pyomo.environ as pyo\n", + "# Create a 3D wireframe plot of the solution\n", + "# Hint: consult the matplotlib documentation\n", + "# https://matplotlib.org/stable/gallery/mplot3d/wire3d.html\n", "\n", - "# Import Pyomo numeric integration features\n", - "from pyomo.dae import DerivativeVar, ContinuousSet" + "# Add your solution here" ] }, { "cell_type": "markdown", - "metadata": { - "id": "_GdDQNuud-fR" - }, + "metadata": {}, "source": [ - "During your time at Notre Dame, you will likely want (or at least need) to solve a partial differential equation (PDE) system. In this problem, we will practice using Pyomo to numerically integrate a simple and common PDE. (Special thanks to Prof. Kantor for this problem.)\n", + "## 3. Portfolio Data Analysis\n", "\n", - "Transport of heat in a solid is described by the familiar thermal diffusion model:\n", + "Portfolio management is a classic example of quadratic programming (optimization). The idea is to find the optimal blend of investments that achieves a specified rate of return (or better) while minimizing the variance in rate of return. In this problem, you will use your skills in statistical analysis to analyze the stock data.\n", "\n", - "$$\n", - "\\begin{align*}\n", - "\\rho C_p\\frac{\\partial T}{\\partial t} & = \\nabla\\cdot(k\\nabla T)\n", - "\\end{align*}\n", - "$$\n", + "### Historical Stock Data\n", "\n", - "We will assume the thermal conductivity $k$ is a constant, and define thermal diffusivity in the conventional way\n", + "Historical daily adjusted closing prices for the last five years (obtained from Yahoo! Finance) are available for the $N=5$ stocks listed in table below. (We are actually considering index funds, but this detail does not change the analysis.) \n", "\n", - "$$\n", - "\\begin{align*}\n", - "\\alpha & = \\frac{k}{\\rho C_p}\n", - "\\end{align*}\n", - "$$\n", - "\n", - "We will further assume symmetry with respect to all spatial coordinates except $x$ where $x$ extends from $-X$ to $+X$. The boundary conditions are\n", - "\n", - "$$\n", - "\\begin{align*}\n", - "T(t,X) & = T_{\\infty} & \\forall t > 0 \\\\\n", - "\\nabla T(t,0) & = 0 & \\forall t \\geq 0 \n", - "\\end{align*}\n", - "$$\n", - "\n", - "where we have assumed symmetry with respect to $r$ and uniform initial conditions $T(0, x) = T_0$ for all $0 \\leq r \\leq X$. " + "| Symbol | Name |\n", + "|-|-|\n", + "| GSPC | S&P 500 | \n", + "| DJI | Dow Jones Industrial Average | \n", + "| IXIC | NASDAQ Composite | \n", + "| RUT | Russell 2000 |\n", + "| VIX | CBOE Volatility Index |" ] }, { "cell_type": "markdown", - "metadata": { - "id": "S9E0AZB2d-fR" - }, + "metadata": {}, "source": [ - "### 3a. Rescaling and Dimensionless Model\n", + "### 3a. Return Rate\n", "\n", - "We would like a dimensionless model for two reasons: first, we only need to solve the dimensionless model once, i.e., it becomes independent of input data. Second, the dimensionless models are often scaled better for numerical solutions.\n", + "You are given a Stock\\_Data.csv file. Using the stock data, calculate the 1-day return rate:\n", "\n", - "Let's consider the following proposed scaling procedure:\n", - "\n", - "$$\n", - "\\begin{align*}\n", - "T' & = \\frac{T - T_0}{T_\\infty - T_0} \\\\\n", - "x' & = \\frac{r}{X} \\\\\n", - "t' & = t \\frac{\\alpha}{X^2}\n", - "\\end{align*}\n", - "$$\n", - "\n", - "Show this scaling procedure gives the following dimensionless system:\n", - "\n", - "$$\n", - "\\begin{align*}\n", - "\\frac{\\partial T'}{\\partial t'} & = \\nabla^2 T'\n", - "\\end{align*}\n", - "$$\n", - "\n", - "with auxiliary conditions\n", + "\\begin{equation}\n", + "\tr_{t,i} = \\frac{p_{t+1,i} - p_{t,i}}{p_{t,i}}\n", + "\\end{equation}\n", "\n", - "$$\n", - "\\begin{align*}\n", - "T'(0, x') & = 0 & \\forall 0 \\leq x' \\leq 1\\\\\n", - "T'(t', 1) & = 1 & \\forall t' > 0\\\\\n", - "\\nabla T'(t', 0) & = 0 & \\forall t' \\geq 0 \\\\\n", - "\\end{align*}\n", - "$$\n", + "where $p_{t+1,i}$ and $p_{t,i}$ are the *Adjusted Closing Prices* at the end of days $t+1$ and $t$, respectively, for stock $i$. These results are stored in matrix `R`. *Hint*: Use Pandas." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# This is the long path to the folder containg data files on GitHub (for the class website)\n", + "data_folder = 'https://raw.githubusercontent.com/ndcbe/data-and-computing/main/noteboohttps://raw.githubusercontent.com/ndcbe/data-and-computing/main/notebooks/data/'\n", "\n", - "Turn in your work (pencil and paper) via **Gradescope**. *Important:* Here the prime $'$ indicates the scaled variables and coordinates. It does not indicate a derivative. Thus $T'$ is scaled temperature, NOT the derivative of temperature (which begs the question of \"with respect to what?\")." + "# Load the data file into Pandas\n", + "df_adj_close = pd.read_csv(data_folder + 'Stock_Data.csv')" ] }, { - "cell_type": "markdown", - "metadata": { - "id": "vY4nyAGid-fS" - }, + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "### 3b. Numeric Integration via Pyomo" + "# Add your solution here" ] }, { "cell_type": "markdown", - "metadata": { - "id": "y3qGQ6Had-fS" - }, + "metadata": {}, "source": [ - "For simplicity, let's consider planar coordinates. For a slab geometry, we want to numerical integrate the following PDE:\n", + "### 3b. Visualization\n", "\n", - "$$\n", - "\\begin{align*}\n", - "\\frac{\\partial T'}{\\partial t'} & = \\frac{\\partial^2 T'}{\\partial x'^2}\n", - "\\end{align*}\n", - "$$\n", + "Plot the single day return rates for the 5 stocks you obtain in the previous section and check if you obtain the following profiles:\n", "\n", - "with auxiliary conditions\n", + "![ad](https://raw.githubusercontent.com/ndcbe/data-and-computing/main/media/stock_return_plots.png)\n", "\n", - "$$\n", - "\\begin{align*}\n", - "T'(0, x') & = 0 & \\forall 0 \\leq x' \\leq 1 \\\\\n", - "T'(t', 1) & = 1 & \\forall t' > 0\\\\\n", - "\\frac{\\partial T'}{\\partial x'} (t', 0) & = 0 & \\forall t' \\geq 0 \\\\\n", - "\\end{align*}\n", - "$$\n", "\n", - "Complete the following Pyomo code to integrate this PDE." + "The first plot is made for you. " ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "executionInfo": { - "elapsed": 2497, - "status": "ok", - "timestamp": 1664677371426, - "user": { - "displayName": "Alexander Dowling", - "userId": "00988067626794866502" - }, - "user_tz": 240 - }, - "id": "yM3uKVfGd-fS", - "outputId": "4150d75e-328b-4ce3-a77e-7951f7c2a89d" - }, + "metadata": {}, "outputs": [], "source": [ - "# Create Pyomo model\n", - "m = pyo.ConcreteModel()\n", + "# Create figure\n", + "plt.figure(figsize=(9,15))\n", "\n", - "# Define sets for spatial and temporal domains\n", - "m.x = ContinuousSet(bounds=(0,1))\n", - "m.t = ContinuousSet(bounds=(0,2))\n", + "# Create subplot for DJI\n", + "plt.subplot(5,1,1)\n", + "plt.plot(R[\"DJI\"]*100,color=\"blue\",label=\"DJI\")\n", + "plt.legend(loc='best')\n", "\n", - "# Define scaled temperature indexed by time and space\n", - "m.T = pyo.Var(m.t, m.x)\n", + "# Add your solution here\n", "\n", - "# Define variables for the derivates\n", - "m.dTdt = DerivativeVar(m.T, wrt=m.t)\n", - "m.dTdx = DerivativeVar(m.T, wrt=m.x)\n", - "m.d2Tdx2 = DerivativeVar(m.T, wrt=(m.x, m.x))\n", + "# Show plot\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3c. Covariance and Correlation Matrices\n", "\n", - "# Define PDE equation\n", - "def pde(m, t, x):\n", - " if t == 0:\n", - " return pyo.Constraint.Skip\n", - " elif x == 0 or x == 1:\n", - " return pyo.Constraint.Skip\n", - " # Add your solution here\n", + "Write Python code to:\n", + "1. Calculate $\\bar{r}$, the average 1-day return for each stock. Store this as the variable `R_avg`.\n", + "2. Calculate $\\Sigma_{r}$, the covariance matrix of the 1-day returns. This matrix tells us how returns for each stock vary with each other (which is important because they are correlated!). Hint: pandas has a function `cov`\n", + "3. Calculate the correlation matrix for the 1-day returns. Hint: pandas has a function `corr`.\n", "\n", - "m.pde = pyo.Constraint(m.t, m.x, rule=pde)\n", + "Looking at the correlation matrix, answer the follwing questions:\n", "\n", - "# Define first auxilary condition\n", - "def initial_condition(m, x):\n", - " if x == 0 or x == 1:\n", - " return pyo.Constraint.Skip\n", - " # Add your solution here\n", + "1. Which pair of stocks have the highest **positive** correlation?\n", + "2. Which pair of stocks have the highest **negative** correlation?\n", + "3. Which pair of stocks have the lowest **absolute** correlation?\n", "\n", - "m.ic = pyo.Constraint(m.x, rule = initial_condition)\n", + "Hint: Read ahead in the class website for more information on [correlation and covariance](../..//notebooks/14/Correlation-Covariance-and-Independence.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please write one or two sentences for each of the above questions:\n", + "1. Fill in here\n", + "2. Fill in here\n", + "3. Fill in here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3d. Markowitz Mean/Variance Portfolio Model\n", "\n", - "# Define second auxilary condition\n", - "def boundary_condition1(m, t):\n", - " # Add your solution here\n", + "The Markowitz mean/variance model, shown below, computes the optimal allocation of funds in a portfolio:\n", "\n", - "m.bc1 = pyo.Constraint(m.t, rule = boundary_condition1)\n", + "\\begin{align}\n", + "\t\t\\min_{{x} \\geq {0}} \\qquad & z:= {x}^T \\cdot {\\Sigma_r} \\cdot {x} \\\\\n", + "\t\t\\text{s.t.} \\qquad & {\\bar{r}}^T \\cdot {x} \\geq \\rho \\\\\n", + "\t\t & \\sum_{i =1}^N x_i = 1 \n", + "\\end{align} \n", "\n", - "# Define third auxilary condition\n", - "@m.Constraint(m.t)\n", - "def boundary_condition2(m, t):\n", - " # Add your solution here \n", "\n", - "m.bc2 = pyo.Constraint(m.t, rule=boundary_condition2)\n", + "where $x_i$ is the fraction of funds invested in stock $i$ and $x = [x_1, x_2, ..., x_N]^T$. The objective is to minimize the variance of the return rate. (As practice for the next exam, try deriving this from the error propagation formulas.) This requires the expected return rate to be at least $\\rho$. Finally, the allocation of funds must sum to 100%.\n", "\n", - "# Define dummy objective\n", - "m.obj = pyo.Objective(expr=1)\n", + "Write Python code to solve for $\\rho = 0.08\\%.$ Report both the optimal allocation of funds and the standard deviation of the return rate. \n", + "*Hint*:\n", + "1. Be mindful of units.\n", + "2. You can solve with problem using the Pyomo function given below\n", + "3. $:=$ means ''defined as''\n", "\n", - "# Discretize spatial coordinate with forward finite difference and 50 elements\n", - "pyo.TransformationFactory('dae.finite_difference').apply_to(m, nfe=50, scheme='FORWARD', wrt=m.x)\n", + "Store your answer in `std_dev`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "R_avg_tolist = R_avg.values.tolist()\n", + "Cov_list = Cov.values.tolist()\n", "\n", - "# Discretize time coordinate with forward finite difference and 50 elements\n", - "pyo.TransformationFactory('dae.finite_difference').apply_to(m, nfe=50, scheme='FORWARD', wrt=m.t)\n", - "pyo.SolverFactory('ipopt').solve(m, tee=True).write()" + "# Optimization Problem\n", + "def create_model(rho,R_avg,Cov):\n", + " \n", + " '''\n", + " This function solves for the optimal allocation of funds in a portfolio \n", + " by minimizing the variance of the return rate\n", + " \n", + " Arguments:\n", + " rho: required portfolio expected return\n", + " Ravg: average return rates (list)\n", + " Cov: covariance matrix\n", + " \n", + " Returns:\n", + " m: Pyomo concrete model\n", + " \n", + " '''\n", + " \n", + " m = pyo.ConcreteModel()\n", + " init_x = {}\n", + " m.idx = pyo.Set(initialize=[0,1,2,3,4])\n", + " for i in m.idx:\n", + " init_x[i] = 0\n", + " m.x = pyo.Var(m.idx,initialize=init_x,bounds=(0,None))\n", + " \n", + " def Obj_func(m):\n", + " b = []\n", + " mult_result = 0\n", + " for i in m.idx:\n", + " a = 0\n", + " for j in m.idx:\n", + " a+= m.x[j]*Cov[j][i]\n", + " b.append(a)\n", + " for i in m.idx:\n", + " mult_result += b[i]*m.x[i]\n", + " \n", + " return mult_result\n", + " m.OBJ = pyo.Objective(rule=Obj_func)\n", + " \n", + " def constraint1(m):\n", + " # Add your solution here\n", + "\n", + " m.C1 = pyo.Constraint(rule=constraint1)\n", + " \n", + " def constraint2(m):\n", + " # Add your solution here\n", + "\n", + " m.C2 = pyo.Constraint(rule=constraint2)\n", + " \n", + " return m" ] }, { - "cell_type": "markdown", - "metadata": { - "id": "ZuOBPYd5d-fT" - }, + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "### 3c. Visualize Solution " + "rho = 0.0008\n", + "model1 = create_model(rho,R_avg_tolist,Cov_list)\n", + "\n", + "#Solve Pyomo in the method learned in Class 11\n", + "\n", + "# Add your solution here" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 357 - }, - "executionInfo": { - "elapsed": 1668, - "status": "ok", - "timestamp": 1664677559084, - "user": { - "displayName": "Alexander Dowling", - "userId": "00988067626794866502" - }, - "user_tz": 240 - }, - "id": "qLQGM8Urd-fT", - "outputId": "751136c4-d2eb-4edc-c183-e30b80d82128" - }, + "metadata": {}, "outputs": [], "source": [ - "# Extract indices\n", - "x = sorted(m.x)\n", - "t = sorted(m.t)\n", + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3e. Volatility and Expected Return Tradeoff\n", "\n", - "# Create numpy arrays to hold the solution\n", - "xgrid = np.zeros((len(t), len(x)))\n", - "# Hint: define tgrid and Tgrid the same way\n", - "# Add your solution here\n", + "We will now perform sensitivity analysis of the optimization problem in 3d to characterize the tradeoff between return and risk.\n", "\n", - "# Loop over time\n", - "for i in range(0, len(t)):\n", - " # Loop over space\n", - " for j in range(0, len(x)):\n", - " # Copy values\n", - " xgrid[i,j] = x[j]\n", - " tgrid[i,j] = t[i]\n", - " # Hint: how to access values from Pyomo variable m.T?\n", - " # Add your solution here\n", + "Write Python code to:\n", + "1. Solve the optimization problem for many values of $\\rho$ between min($\\bar{r}$) and max($\\bar{r}$) and save the results. Use the Pyomo function created in 3d.\n", + "2. Plot $\\rho$ versus $\\sqrt{z}$ (using the saved results).\n", + "3. Write at least one sentence to interpret and discuss your plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rho_vals = np.arange(0.0005,0.0038,0.0001)\n", + "std_dev = []\n", "\n", - "# Create a 3D wireframe plot of the solution\n", - "# Hint: consult the matplotlib documentation\n", - "# https://matplotlib.org/stable/gallery/mplot3d/wire3d.html\n", + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Plot\n", "\n", "# Add your solution here" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Discussion**:" + ] + }, { "cell_type": "markdown", "metadata": { "id": "X1GR0jYZd-e9" }, "source": [ - "**Submission Instructions and Tips:**\n", + "## Submission Instructions and Tips\n", + "\n", "1. Answer discussion questions in this notebook.\n", "2. When asked to store a solution in a specific variable, please also print that variable.\n", "3. Turn in this notebook via Gradescope.\n", @@ -1399,6 +1461,11 @@ "5. Even if you are not required to turn in pseudocode, you should always write pseudocode. It takes only a few minutes and can save you *hours* of time.\n", "6. For this assignment especially, read the problem statements twice. They contain important information and tips that are easy to miss on the first read." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] } ], "metadata": { diff --git a/notebooks/assignments/ProblemSet4_F23.ipynb b/notebooks/assignments/ProblemSet4_F23.ipynb new file mode 100644 index 00000000..f2330c0c --- /dev/null +++ b/notebooks/assignments/ProblemSet4_F23.ipynb @@ -0,0 +1,321 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Problem Set 4\n", + "\n", + "CBE 60258, University of Notre Dame. © Prof. Alexander Dowling, 2023\n", + "\n", + "You may not distribution the solutions without written permissions from Prof. Alexander Dowling.\n", + "\n", + "**Your Name and Email:**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Measuring Acceleration Two Ways\n", + "\n", + "You and a classmate want to measure the acceleration of a cart rolling down an incline plane, but disagree on the best approach. The cart starts at rest and travels distance $l = 1.0$ m. The location of the finish line is measured with negligible uncertainty. You (student 1) measure the instantaneous velocity $v = 3.2 \\pm 0.1 $ m/s at the finish line. Your classmate (student 2) instead measures the elapsed time $t = 0.63 \\pm 0.01$s." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1a. Approach 1\n", + "\n", + "Calculate the acceleration for approach 1,\n", + "\\begin{equation}\n", + "\ta_1 = \\frac{v^2}{2l} ~,\n", + "\\end{equation}\n", + "\n", + "and estimate the associated uncertainty. Round your answer to the correct number of significant digits and store your answers in variables `A1` for acceleration and `U_A1` for the uncertainty." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbgrader": { + "grade": true, + "grade_id": "acceleration-a", + "locked": true, + "points": "0.4", + "solution": false + } + }, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1b. Approach 2\n", + "\n", + "Calculate the acceleration for approach 2,\n", + "\\begin{equation}\n", + "\ta_2 = \\frac{2 l}{t^2}~,\n", + "\\end{equation}\n", + "\n", + "and estimate the associated uncertainty. Round your answer to the correct number of significant digits and store your answers in variables `A2` for acceleration and `U_A2` for the uncertainty." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbgrader": { + "grade": true, + "grade_id": "acceleration-b", + "locked": true, + "points": "0.4", + "solution": false + } + }, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1c. Weighted Average\n", + "\n", + "A third classmate suggests to use a weighted average of your two calculations:\n", + "\n", + "$$\n", + "\ta_{3} = w a_1 + (1-w) a_2\n", + "$$\n", + "\n", + "where $0 \\leq w \\leq 1$ is the weight you place on the approach 1 calculation calculations. Determine the value of $w$ that minimizes the uncertainty in $a_3$. Do the following steps: \n", + "1. Make a plot to graphically determine this value of $w$ and from the plot, read the minimum value for $w$ and save it as the variable `weight`. Submit your plot via **Gradescope**.\n", + "2. Then calculate the acceleration and uncertainty from the above equation. Round your answer for acceleration and corresponding uncertainty to the correct number of significant digits and store your answers in variables `A3` for acceleration and `U_A3` for the uncertainty. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here\n", + "\n", + "print(\"weight =\",weight)\n", + "print(\"A3 =\",A3)\n", + "print(\"U_A3 =\",U_A3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "nbgrader": { + "grade": true, + "grade_id": "acceleration-c", + "locked": true, + "points": "0.3", + "solution": false + } + }, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1d. Analysis\n", + "\n", + "Write one or two sentences (each) to answer the following questions:\n", + "\n", + "1. If restricted to use only $a_1$ or $a_2$, which would you choose? Why?\n", + "2. How can a weighted average reduce the uncertainty? Why does this make sense?\n", + "3. Why does the uncertainty in $a_3$ depend on $w$?\n", + "\n", + "Record your answers below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Q1:\n", + " \n", + "Q2:\n", + " \n", + "Q3:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Calorimetry for Food Analysis\n", + "\n", + "As an intern at Tasty Foods, Inc., you are asked to estimate the caloric content (kilo-calories per gram) of mayo: You burn a $0.40 \\pm 0.01$ gram sample of mayo in a calorimeter and measure a 2.75 $\\pm$ 0.02 $^\\circ{}$C temperature increase. You then calculate caloric content $C$:\n", + "\n", + "\\begin{equation}\n", + "\tC = \\frac{c ~ H ~ \\Delta T}{m} \n", + "\\end{equation}\n", + "\n", + "where $c = 0.2390$ kcal/kJ is a conversion factor. Assume the calorimeter heat capacity $H = 4.0$ kJ/$^\\circ{}$ C is known with negligible uncertainty." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2b. Relative Uncertainty\n", + "\n", + "Find the relative uncertainty in $C$ by doing the following:\n", + "\n", + "1. Set $\\sigma_m = 0.01 m$ and $\\sigma_{\\Delta T} = 0$ and recalculate $\\sigma_C$. This tells us the impact of 1% uncertainty in $m$. Store your answer as variable `U_C_mass`.\n", + "2. Set $\\sigma_m = 0$ and $\\sigma_{\\Delta T} = 0.01 \\Delta T$ and recalculate $\\sigma_C$. This tells us the impact of 1% uncertainty in $\\Delta T$. Store your answer as variable `U_C_temperature`.\n", + "\n", + "*Hint*: Use the $m$ and $\\Delta T$ data reported above.\n", + "\n", + "Remember to store your answer using the correct number of significant digits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2c. Which is better?\n", + "\n", + "Which would provide a greater reduction in $\\sigma_C$: i) reducing the uncertainty in $m$ to 0.005 g OR ii) reducing the uncertainty in $\\Delta T$ to 0.001 $^\\circ{}$C? Do the following steps:\n", + "1. Calculate the uncertainty for each scenario, storing your variables as i) `Reduce_mass` and ii) `Reduce_temperature`. \n", + "2. After determining which method would provide a greater reduction in $\\sigma_C$, set the variable `method` equal to either 1, for reducing the uncertainty in mass, or 2, for reducing the uncertainty in temperature, to save which method you found would more significantly reduce $\\sigma_C$.\n", + "\n", + "Remember to use the correct number of significant digits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Add your solution here" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Removed autograder test. You may delete this cell." + ] + } + ], + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 7cd37198fe6e4988da2e2ee754ddaf6aa2a8e0f6 Mon Sep 17 00:00:00 2001 From: syeoo <149696518+syeoo@users.noreply.github.com> Date: Fri, 3 Nov 2023 14:40:10 -0400 Subject: [PATCH 2/6] Distillation column diagram (Mccabe thiele) --- media/Distillation Column.png | Bin 0 -> 23079 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/Distillation Column.png diff --git a/media/Distillation Column.png b/media/Distillation Column.png new file mode 100644 index 0000000000000000000000000000000000000000..895bc230d97478c6b3cc2ee36790c640dbabbca2 GIT binary patch literal 23079 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 literal 0 HcmV?d00001 From 9e0ca187ca11dcc2c5cf2ab2c5e56b11ff5c3bfd Mon Sep 17 00:00:00 2001 From: syeoo <149696518+syeoo@users.noreply.github.com> Date: Fri, 8 Dec 2023 15:28:28 -0500 Subject: [PATCH 6/6] Add files via upload --- media/rxn_equation.png | Bin 0 -> 55602 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/rxn_equation.png diff --git a/media/rxn_equation.png b/media/rxn_equation.png new file mode 100644 index 0000000000000000000000000000000000000000..8071c73a11dd3a6a7ba97e23a49826356753cc82 GIT binary patch literal 55602 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 literal 0 HcmV?d00001