{ "cells": [ { "cell_type": "markdown", "id": "638028bf", "metadata": {}, "source": [ "# HW_03 - Nonlinear solutions\n", "\n", "![hanging chain variational solution](https://campuspro-uploads.s3.us-west-2.amazonaws.com/2f97aca3-fc59-4d60-903d-2957cdab1812/aec6660b-716d-4530-ac9a-ee080b56d7c3/08_hanging.png)\n", "\n", "Creating a solution for the hanging chain, we reached a point where the constants required a nonlinear solution to an algebraic equation, " ] }, { "cell_type": "code", "execution_count": 46, "id": "8159e361", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n" ] }, { "cell_type": "markdown", "id": "6d8fb218", "metadata": {}, "source": [ "1. $y(x) = \\cosh \\frac{\\rho g a}{2c} - \\cosh\\frac{\\rho g x}{c}$\n", "2. $L = \\int_{-a/2}^{a/2}\\cosh\\frac{\\rho g x}{c}dx \\rightarrow L = \\frac{c}{\\rho g} \\sinh\\frac{\\rho g a}{c}$\n", "\n", "The second equation does not have an \"analytical\" solution. Where \"analytical\" refers to an equation with seperable input/output. What you need is a \"numerical\" solution to equation 2:\n", "\n", "what $c$ will satisfy this equation?\n", "\n", "$f(c)=L - \\frac{c}{\\rho g} \\sinh\\frac{\\rho g a}{c}=0$" ] }, { "cell_type": "markdown", "id": "3017d14c", "metadata": {}, "source": [ "These problems often come up when engineering systems have large displacements or large rotations that cannot be ignored. One way to approach this problem is to _guess_ the solution. You could try:\n", "\n", "|c=|f(c)|\n", "|---|---|\n", "|c=0|$-\\infty$|\n", "|c=50|-0.022|\n", "|c=100|0.07|\n", "|c=200|0.09|\n", "\n", "If you happen to guess numbers that change the sign of $f(c)$, then you know one interval where $f(c_{solution})=0$ must have been true. I find it helps to plot the function to see where the solution may exist" ] }, { "cell_type": "code", "execution_count": 47, "id": "c201b857", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'f(c)')" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = 9.81\n", "L = 1\n", "a = 0.9\n", "rho = 5\n", "F = lambda c: L-c/rho/g*np.sinh(rho*g*a/c)\n", "c = np.linspace(40,200)\n", "plt.plot(c,F(c), label='f(c)')\n", "plt.plot(c,np.zeros(c.shape), label='f(c)=0')\n", "plt.legend()\n", "plt.xlabel('c')\n", "plt.ylabel('f(c)')" ] }, { "cell_type": "markdown", "id": "7e84861e", "metadata": {}, "source": [ "## Numerical solution\n", "We can use [`fsolve`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fsolve.html) to automate the guess-and-check method. You need 2 things:\n", "\n", "1. a function `f(c)` that returns the result $f(c)=L - \\frac{c}{\\rho g} \\sinh\\frac{\\rho g a}{c}=0$\n", "2. an initial guess, `c_0`\n", "\n", "Numerical solutions always require an initial guess for the solution and they will iterate until your function `f(c_sol)` $\\approx0$. \n", "\n", "> __Note__: `fsolve` has more advanced features than 'guess-and-check', but at its core it uses algorithms to reduce the number of guesses and checks. " ] }, { "cell_type": "markdown", "id": "d5a4fe01", "metadata": {}, "source": [ "### Define `f(c)` with `lambda`\n", "\n", "In Python, you can use the [`lambda`](https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions) function to create functions in one line. The other way to create a function is using [`def`](https://docs.python.org/3/tutorial/controlflow.html#defining-functions). \n", "\n", "> __Note__: `def` is a much richer way to create functions in Python. We will use it later when we want more involved functions. \n", "\n", "Here, you define the function `f(c)` with `lambda`:" ] }, { "cell_type": "code", "execution_count": 60, "id": "9d48a7ad", "metadata": {}, "outputs": [], "source": [ "g = 9.81\n", "L = 1\n", "a = 0.7\n", "rho = 5\n", "\n", "f = lambda c: L-c/rho/g*np.sinh(rho*g*a/c)" ] }, { "cell_type": "code", "execution_count": 61, "id": "50703b30", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.21081614830202033" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(40)" ] }, { "cell_type": "markdown", "id": "780cdff3", "metadata": {}, "source": [ "### Solve `f(c_sol)=0` with `fsolve`\n", "\n", "The numerical solver, `fsolve`, is part of the [`scipy.optimize`](https://docs.scipy.org/doc/scipy/reference/optimize.html) library. Import the function with the `from`...`import`-command. " ] }, { "cell_type": "code", "execution_count": 62, "id": "08d7d2b2", "metadata": {}, "outputs": [], "source": [ "from scipy.optimize import fsolve" ] }, { "cell_type": "markdown", "id": "2f617ae3", "metadata": {}, "source": [ "Now, you can solve for the value of `c_sol` that creates a solution to `f(c_sol)=0`. Use the function, `f` and an initial guess, `c0=40`. " ] }, { "cell_type": "code", "execution_count": 63, "id": "87bf0892", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c_sol = 22.671522641015084 and f(c_sol) = [1.62092562e-14]\n" ] } ], "source": [ "c0 = 40\n", "c_sol = fsolve(f, c0)\n", "\n", "print('c_sol = {} and f(c_sol) = {}'.format(c_sol[0], f(c_sol)))" ] }, { "cell_type": "markdown", "id": "bcc19e23", "metadata": {}, "source": [ "## Plug into catenary equation\n", "\n", "Now, you have a solution for $c$ that describes the hanging chain. Plug it into the original equation \n", "\n", "1. $y(x) = \\cosh \\frac{\\rho g a}{2c} - \\cosh\\frac{\\rho g x}{c}$\n", "\n", "and plot the final shape. " ] }, { "cell_type": "code", "execution_count": 64, "id": "57765b74", "metadata": {}, "outputs": [], "source": [ "x = np.linspace(-0.9/2,0.9/2)\n", "y = np.cosh(9.81*5*0.9/2/c_sol[0])-np.cosh(9.81*5*x/c_sol[0])" ] }, { "cell_type": "code", "execution_count": 65, "id": "13efa038", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'y(x) - chain location (m)')" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(x,-y)\n", "plt.xlabel('x-axis (m)')\n", "plt.ylabel('y(x) - chain location (m)')" ] }, { "cell_type": "markdown", "id": "178b46f0", "metadata": {}, "source": [ "## Problem 1\n", "\n", "Plot the solution for two hanging chains, the same as we did above:\n", "\n", "$g = 9.81~m/s/s$\n", "$L = 1~m$\n", "$rho = 5~kg/m$\n", "\n", "1. $a = 0.9~m$\n", "2. $a = 0.7~m$" ] }, { "cell_type": "code", "execution_count": null, "id": "6162da32", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "f6c7322c", "metadata": {}, "source": [ "## Problem 2\n", "\n", "![four-bar linkage design](../images/4bar.svg)\n", "\n", "In the four-bar linkage show above there are 3 bodies moving in 2D (9 DOF) and 4 pins (8 constraints). The linkage configuration is constrained by the two nonlinear equations" ] }, { "cell_type": "markdown", "id": "4563dc4a", "metadata": {}, "source": [ "1. $l_1\\sin\\theta_1+l_2\\sin\\theta_2-l_3\\sin\\theta_3 -d_y = 0$\n", "2. $l_1\\cos\\theta_1+l_2\\cos\\theta_2-l_3\\cos\\theta_3 -d_x = 0$\n", "\n", "If you have one of the angles,$\\theta_1$, you can use equations 1 and 2 to solve for the other two angles, $\\theta_2~and\\theta_3$ using `fsolve` only now the input is a vector with two values and the output is a vector with two values. \n", "\n", "$\\bar{f}(\\bar{x})= \\left[\\begin{array}{c}\n", "f_1(\\theta_2,~\\theta_3) \\\\ \n", "f_2(\\theta_2,~\\theta_3)\\end{array}\\right]=\\left[\\begin{array}{c}\n", "l_1\\sin\\theta_1+l_2\\sin\\theta_2-l_3\\sin\\theta_3 -d_y\\\\\n", "l_1\\cos\\theta_1+l_2\\cos\\theta_2-l_3\\cos\\theta_3 -d_x\n", "\\end{array}\\right]$\n", "\n", "The linkage system has the following properties:\n", "\n", "- link 1: $l_1 = 0.5~m$\n", "- link 2: $l_2 = 1~m$\n", "- link 3: $l_3 = 1~m$\n", "\n", "when $\\theta_1=90^o$, $\\theta_2=0^o$, and $\\theta_3=90^o$. So the two grounded pins have a fixed relative position, $r_{3/1} = d_x\\hat{i}+d_y\\hat{j} = 1\\hat{i}-0.5\\hat{j}$. \n", "\n", "Below, the definition of `Fbar` is defined for $\\bar{f}(\\bar{x})$ and the function is satisfied for $\\theta_1=\\theta_3=90^o$ and $\\theta_2=0^o$. Then, the links are plotted with `rx` and `ry`, where\n", "\n", "* $rx = \\left[\\begin{array}~0\\\\l_1\\cos(\\theta_1)\\\\l_1\\cos(\\theta_1)+l_2\\cos(\\theta_2)\\\\ l_1\\cos(\\theta_1) + l_2\\cos(\\theta_2)-l_3\\cos(\\theta_3)\\end{array}\\right]$\n", "* $ry = \\left[\\begin{array}~0\\\\l_1\\sin(\\theta_1)\\\\l_1\\sin(\\theta_1)+l_2\\sin(\\theta_2)\\\\ l_1\\sin(\\theta_1)+l_2\\sin(\\theta_2)-l_3\\sin(\\theta_3)\\end{array}\\right]$" ] }, { "cell_type": "code", "execution_count": 66, "id": "bb79fd55", "metadata": {}, "outputs": [], "source": [ "l1 = 0.5\n", "l2 = 1\n", "l3 = 1\n", "a1 = np.pi/2\n", "dy = -0.5\n", "dx = 1\n", "Fbar = lambda x: np.array([l1*np.sin(a1)+l2*np.sin(x[0])-l3*np.sin(x[1])-dy,\n", " l1*np.cos(a1)+l2*np.cos(x[0])-l3*np.cos(x[1])-dx])" ] }, { "cell_type": "code", "execution_count": 67, "id": "5e59a9ba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.00000000e+00, -1.11022302e-16])" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x90 = np.array([0,np.pi/2]) \n", "Fbar(x90)" ] }, { "cell_type": "code", "execution_count": 68, "id": "7f4424ee", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 1.5, -0.6, 0.6)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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7LPKyMioNXffvn0Oa9y3b99mzX7Z3/72N4dcw4cPtz/WUtd95syZtf493n333frFL34hb29vh7muXvfz58+rf//+WrZsmTp16nTN+S3pfG9o9pZ0vjc0+2WuOt8NfZ/d9Tp79qz69eun1atX218Qc/LkSQ0YMEBvvfVWnW9KnzNnTp1XUZGRkQoKCtLKlSvtY3feeafGjBmjRYsWNVv2K9XU1CggIECzZs3Sk08+KemH35K3bNlS64qvsRq6FmvXrtUf/vAHffnll/aTNiEhQevWrdPRo0fl5uamRYsWaevWrfr888/t+82cOVP/+te/9NFHHxmSuzHZnXnsscdUXV1t/413165devDBB3Xs2DGXPkfc0OzHjx/XwIEDlZ2drUGDBjk9ZmtZ95MnTyo4OFjJycn25/Obat1/qlevXnr55Zf16KOPXnVOSzrfG5rdmeY633+qPtldfb63qA+CzsvLU1VVlSIiIuxjvr6+CggI0P79++vc97vvvtPPf/5z9e/fXxMmTNDBgwftj1VWViovL8/huJIUERFxzeM2RfafqqysVEVFhTw9PR3GCwsLFRgYqODgYE2bNk2FhYWNytmYtThw4ICGDh3q8NtZZGSkTp8+rePHj9vnXHnMyMhIffHFF6qqqmpUViOyO3Pu3Lla6ytJI0eOVEBAgKKiopSTk3PdeX/qerJPmTJF/fr1069+9atav8G2lnVPTU2Vh4eHoqKiaj3mynVvjJZyvhulOc736+Gq871FlV1j35Tu7++vVatWKS0tTSkpKbrxxht133332W8FlpWVqbq6utbtk2sdtymyXyk+Pl5dunTR6NGj7WODBw/WmjVrlJGRoZUrV6q4uFj33nuvysvLG5yzMWtRUlLidP7lx+qa8/3336usrKzBOY3KfqUPPvhAO3fu1GOPPWYf6969u1599VWlpqYqNTVV/v7+GjNmjPbs2WNI7sZm79KlixYvXqw333xTGRkZGj58uKKjo7V582b7nNaw7pcuXdKmTZs0ceJEh8+7bYp1b4yWcr4bobnO98Zw9flu+AdBO+PqN6WHhYUpLCzMvh0eHq577rlHycnJevnll+3jVx7jWsdtiuw/lZSUpPXr1+udd97RzTffbB//5S9/6TBv8ODBCgkJUVpamp5++ul6HftKDV0LZ/OvHK/PHCM05r+j9MNzFI8//riWL1+u0NBQ+7i/v7/8/f3t22FhYfrPf/6jxMRE3X333cYFV8Oye3l5aebMmfbtQYMGqby8XH/84x81YcKEOo/pbPx6NXbdP/roI508eVK/+c1vHMabct0bqiWd743VEs73hnD1+d4kZefqN6Vf6fKnsPz73/+W9MMiWiyWWr+FlpaW1votobmyJyUl6aWXXlJGRobDielMly5ddMcdd9h/voZozFp069bN6Xzp///Ge7U57dq1089+9rMG5zQq+2W5ubkaP3685s+fr+nTp1/ze4WGhiozM/O68v7U9WS/MtdPX9XW0tddktavX6/w8HAFBgZec67R694YLeV8vx7Nfb4bxcjzvUluY3p5een222+v86tz584Ob0q/rD5vSr9STU2Njhw5Ih8fH0lShw4dFBIS4nBcScrOzr7mcZsi+6pVqxQfH6/Nmzdr6NCh1/z5KioqZLPZ7D9fQzRmLcLCwpSbm+vwVo7s7Gz16NHD/tcpwsLCtGPHjlrHHDRokGEf5t3Y/4579uyR1WrVnDlzNGPGjHp9r8OHDzdqfa/mes7BunK15HWXpNOnT+vDDz+sdVV3NUave2O0lPO9sVrC+W4UI8/3FvWcXWPflL5s2TJt375dhYWFOnTokJ5++mkdOXJE06ZNs8+JjY1VWlqaNm7cqPz8fM2dO1dFRUWKjo5u1uwrV65UXFycVq1apX79+qm4uFjFxcU6e/asfc4LL7yg3bt3q7CwUP/4xz80depUXbhwQZMmTWpU1mutRVxcnMMLCR555BF16tRJM2bM0NGjR7Vlyxa99tprmjFjhv3WQXR0tL7++mvNmzdP+fn52rhx43XdZjUq+65du2S1WhUdHa3x48fb1/fyb+qStGbNGv3973/XsWPH9M9//lNxcXF677339Pjjjzdr9rS0NGVkZCg/P182m02JiYlKSUnRE088YZ/TUtf9sj//+c9yd3fX2LFjaz3WVOv+v//9T4cOHdKhQ4d06dIlnTx5UocOHbK/baIln+8Nzd6SzveGZnf1+d4ktzEbYsmSJbJYLIqOjlZFRYWGDx+u119/vdab0nv16mXfPnv2rJ555hmVlJTo5ptvVnBwsLKyshxuB44bN07l5eVKSEhQcXGxAgMDlZ6eLj8/v2bN/sYbb6iqqqpW6U6aNMn+XsSvv/5aMTEx9lukgwcP1kcffdTo7Ndai6KiIhUUFNjne3h46O2339Zzzz2nUaNGydPTU7GxsQ4nWJ8+fZSenq7nn39e69atU/fu3bV8+XKNGTOmURmNyp6WlqYLFy4oMTFRiYmJ9vHevXvr8OHDkn7448G///3vdfr0aXXs2NF+zHvvvbdZs0vSihUrdOLECVksFvXt21erVq1yeP6ipa679MMdltTUVFmtVnXu3LnWMZtq3b/44gs9+OCD9u2lS5dq6dKl9n9jLfl8b2j2lnS+NzS75NrzvUW9zw4AAFdoUbcxAQBwBcoOAGB6lB0AwPQoOwCA6VF2AADTo+wAAKZH2QEATI+yAwCYHgFrioEAAAALSURBVGUHADC9/wfQRJnj9boLlAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rx = np.array([0,\n", " l1*np.cos(a1),\n", " l1*np.cos(a1)+l2*np.cos(x90[0]), \n", " l1*np.cos(a1)+l2*np.cos(x90[0])-l3*np.cos(x90[1])])\n", "ry = np.array([0,\n", " l1*np.sin(a1),\n", " l1*np.sin(a1)+l2*np.sin(x90[0]), \n", " l1*np.sin(a1)+l2*np.sin(x90[0])-l3*np.sin(x90[1])])\n", "\n", "plt.plot(rx,ry,'o-')\n", "plt.axis([-0.5, 1.5, -0.6, 0.6])" ] }, { "cell_type": "markdown", "id": "baf7cc43", "metadata": {}, "source": [ "### __Your goal:__ \n", "\n", "Change the angle to $\\theta_1=45^o,~135^o,~and~180^o$. Plot the three configurations like above. Use `fsolve` to find $\\theta_2~and~\\theta_3$. " ] }, { "cell_type": "code", "execution_count": null, "id": "6f173216", "metadata": {}, "outputs": [], "source": [ "# your work here" ] } ], "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.9.0" } }, "nbformat": 4, "nbformat_minor": 5 }