From bf83d25e32c4ee9518802394fb61740c7f306a45 Mon Sep 17 00:00:00 2001 From: "Ryan C. Cooper" Date: Tue, 5 Dec 2017 14:40:40 -0500 Subject: [PATCH] added bvp notes --- 18_initial_value_ode/.tmp.swp | Bin 12288 -> 0 bytes 20_derivatives/20_derivatives.ipynb | 542 +++++++--- ...1_boundary_value_problems-checkpoint.ipynb | 552 ++++++++++ .../21_boundary_value_problems.ipynb | 552 ++++++++++ .../images/beam_bcs.svg | 312 ++++++ .../images/beam_finite.png | Bin 0 -> 13685 bytes .../images/beam_finite.svg | 994 ++++++++++++++++++ .../images/buckling_beam.png | Bin 0 -> 81920 bytes 21_boundary_value_problems/octave-workspace | Bin 0 -> 2454 bytes 9 files changed, 2823 insertions(+), 129 deletions(-) delete mode 100644 18_initial_value_ode/.tmp.swp create mode 100644 21_boundary_value_problems/.ipynb_checkpoints/21_boundary_value_problems-checkpoint.ipynb create mode 100644 21_boundary_value_problems/21_boundary_value_problems.ipynb create mode 100644 21_boundary_value_problems/images/beam_bcs.svg create mode 100644 21_boundary_value_problems/images/beam_finite.png create mode 100644 21_boundary_value_problems/images/beam_finite.svg create mode 100644 21_boundary_value_problems/images/buckling_beam.png create mode 100644 21_boundary_value_problems/octave-workspace diff --git a/18_initial_value_ode/.tmp.swp b/18_initial_value_ode/.tmp.swp deleted file mode 100644 index 17b8a7ee51646d8c7b7e97f484156499a762522f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI%y-ve05C?FVg$aSmz-nM8{h%s4A5xJzmNf+TXbg!R#g{-Akl>}@Y2Zs+Tp?wTJ44!HHEx zN`_r9I=03H!_#i3*9(*_a!27rb9mNiwfjN)DAY!?j*_s9l7d1zrhwDz7Y{-U1RyX+ zU}Mznv|CkSe{WZAH%D`Na0vnsfB*y_009U<00I#BuL7Jk#G^mlT7AIvIyZjgdWi%9 z2tWV=5P$##AOHafKmY;|fWQh0L}MYEn?juXsQ&-YzW?9-`pw6yj~5@$KAwDh_O0MK z@yZZ@00bZa0SG_<0uX=z1Rwx`zY!R)bT%o;Ns3e~S*PTfGI^&tmN$iC$uY?+r&8O( reb\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t7\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tanalytical dy/dx\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tanalytical dy/dx\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tnum dy/dx\n", + "\n", + "\t\n", + "\t\tnum dy/dx\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -155,22 +316,23 @@ ], "source": [ "x=linspace(0,2*pi,11);\n", + "xx=linspace(0,2*pi,100);\n", "% analytical derivatives\n", "y=sin(x);\n", - "dy=cos(x);\n", - "ddy=-sin(x);\n", + "dy=cos(xx);\n", + "ddy=-sin(xx);\n", "\n", "% numerical derivatives\n", "dy_n=(y(2:end)-y(1:end-1))./diff(x);\n", "ddy_n=(y(3:end)-2*y(2:end-1)+y(1:end-2))./diff(x(2:end)).^2;\n", "\n", - "plot(x,dy,x(1:end-1),dy_n,'o')\n", + "plot(xx,dy,x(1:end-1),dy_n,'o')\n", "legend('analytical dy/dx','num dy/dx')" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 22, "metadata": { "collapsed": false, "slideshow": { @@ -180,9 +342,169 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t6\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t7\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\tanalytical d2y/dx2\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\tanalytical d2y/dx2\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\tnum d2y/dx2\n", + "\n", + "\t\n", + "\t\tnum d2y/dx2\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -190,76 +512,8 @@ } ], "source": [ - "plot(x,ddy,x(2:end-1),ddy_n,'o')\n", - "legend('analytical dy/dx','num dy/dx')" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'gradient' is a function from the file /usr/share/octave/4.0.0/m/general/gradient.m\n", - "\n", - " -- Function File: DX = gradient (M)\n", - " -- Function File: [DX, DY, DZ, ...] = gradient (M)\n", - " -- Function File: [...] = gradient (M, S)\n", - " -- Function File: [...] = gradient (M, X, Y, Z, ...)\n", - " -- Function File: [...] = gradient (F, X0)\n", - " -- Function File: [...] = gradient (F, X0, S)\n", - " -- Function File: [...] = gradient (F, X0, X, Y, ...)\n", - "\n", - " Calculate the gradient of sampled data or a function.\n", - "\n", - " If M is a vector, calculate the one-dimensional gradient of M. If\n", - " M is a matrix the gradient is calculated for each dimension.\n", - "\n", - " '[DX, DY] = gradient (M)' calculates the one-dimensional gradient\n", - " for X and Y direction if M is a matrix. Additional return\n", - " arguments can be use for multi-dimensional matrices.\n", - "\n", - " A constant spacing between two points can be provided by the S\n", - " parameter. If S is a scalar, it is assumed to be the spacing for\n", - " all dimensions. Otherwise, separate values of the spacing can be\n", - " supplied by the X, ... arguments. Scalar values specify an\n", - " equidistant spacing. Vector values for the X, ... arguments\n", - " specify the coordinate for that dimension. The length must match\n", - " their respective dimension of M.\n", - "\n", - " At boundary points a linear extrapolation is applied. Interior\n", - " points are calculated with the first approximation of the numerical\n", - " gradient\n", - "\n", - " y'(i) = 1/(x(i+1)-x(i-1)) * (y(i-1)-y(i+1)).\n", - "\n", - " If the first argument F is a function handle, the gradient of the\n", - " function at the points in X0 is approximated using central\n", - " difference. For example, 'gradient (@cos, 0)' approximates the\n", - " gradient of the cosine function in the point x0 = 0. As with\n", - " sampled data, the spacing values between the points from which the\n", - " gradient is estimated can be set via the S or DX, DY, ...\n", - " arguments. By default a spacing of 1 is used.\n", - "\n", - " See also: diff, del2.\n", - "\n", - "Additional help for built-in functions and operators is\n", - "available in the online version of the manual. Use the command\n", - "'doc ' to search the manual index.\n", - "\n", - "Help and information about Octave is also available on the WWW\n", - "at http://www.octave.org and via the help@octave.org\n", - "mailing list.\n" - ] - } - ], - "source": [ - "help gradient" + "plot(xx,ddy,x(2:end-1),ddy_n,'o')\n", + "legend('analytical d2y/dx2','num d2y/dx2')" ] }, { @@ -282,8 +536,17 @@ "\n", "backward:\n", "\n", - "$f(x_{i-1})=f(x_{i})-f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^2-\\frac{f'''(x_{i})}{3!}h^3+...$\n", - "\n", + "$f(x_{i-1})=f(x_{i})-f'(x_{i})h+\\frac{f''(x_{i})}{2!}h^2-\\frac{f'''(x_{i})}{3!}h^3+...$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ "solving for $f'(x_{i})$:\n", "\n", "$f'(x_{i})=\\frac{f(x_{i+1})-f(x_{i-1})}{2h}+O(h^{2})$\n", @@ -293,9 +556,12 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 23, "metadata": { - "collapsed": false + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } }, "outputs": [ { @@ -351,57 +617,72 @@ "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t-0.5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t0.5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", + "\t\t\n", + "\t\t1.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", "\t\t\n", + "\t\t-1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", "\t\t0\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t1\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t2\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t3\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t4\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t5\n", "\t\n", "\n", "\n", - "\t\t\n", + "\t\t\n", "\t\t6\n", "\t\n", "\n", @@ -419,55 +700,55 @@ "\n", "\n", "\n", - "\t\n", + "\t\n", "\tanalytical dy/dx\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\tanalytical dy/dx\n", "\t\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", "\t fwd dy/dx\n", "\n", - "\t\n", + "\t\n", "\t\t fwd dy/dx\n", "\t\n", "\n", "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\tcent dy/dx\n", "\n", - "\t\n", + "\t\n", "\t\tcent dy/dx\n", "\t\n", "\n", "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\t\n", "\n", @@ -493,26 +774,29 @@ "x=linspace(0,2*pi,11);\n", "% analytical derivatives\n", "y=sin(x);\n", - "dy=cos(x);\n", - "ddy=-sin(x);\n", + "dy=cos(xx);\n", + "ddy=-sin(xx);\n", "\n", "% forward difference\n", "dy_f=(y(2:end)-y(1:end-1))./diff(x);\n", "% central difference\n", "dy_c=(y(3:end)-y(1:end-2))./diff(x(2:end))/2;\n", "\n", - "plot(x,dy,x(1:end-1),dy_f,'o',x(2:end-1),dy_c,'s')\n", - "legend('analytical dy/dx',' fwd dy/dx', 'cent dy/dx','North')" + "plot(xx,dy,x(1:end-1),dy_f,'o',x(2:end-1),dy_c,'s')\n", + "legend('analytical dy/dx',' fwd dy/dx', 'cent dy/dx','Location','North')\n", + "axis([-1 7 -1 2])" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": { - "collapsed": true + "slideshow": { + "slide_type": "slide" + } }, - "outputs": [], - "source": [] + "source": [ + "# Thanks\n" + ] } ], "metadata": { diff --git a/21_boundary_value_problems/.ipynb_checkpoints/21_boundary_value_problems-checkpoint.ipynb b/21_boundary_value_problems/.ipynb_checkpoints/21_boundary_value_problems-checkpoint.ipynb new file mode 100644 index 0000000..3b0945f --- /dev/null +++ b/21_boundary_value_problems/.ipynb_checkpoints/21_boundary_value_problems-checkpoint.ipynb @@ -0,0 +1,552 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Boundary Value problems\n", + "\n", + "*ch. 24" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Need to solve for y given $\\frac{d^2 y}{dx^2}$, but only y(0) and y(L) known" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# First finite difference example in ME3255:\n", + "\n", + "## Buckling beam in [HW4 problem 8](https://github.uconn.edu/rcc02007/ME3255F2017/tree/master/HW4)\n", + "\n", + "![beam buckling](./images/buckling_beam.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Differential equation\n", + "\n", + "$\\frac{d^{2}y}{dx^{2}}+p^{2}y=0$\n", + "\n", + "or, substituting the central difference approximation:\n", + "\n", + "$\\frac{y_{i+1}-2y_{i}+y_{i-1}}{\\Delta x^{2}}+p^{2}y_{i}=0$\n", + "\n", + "boundary conditions are that y(0)=y(L)=0\n", + "\n", + "So, given n-discrete points, the solution of $y_{1}-y_{n}$ was solved with an eigenvalue analysis\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "critical buckling load=1192 N\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tdisplacement from neutral axis(m)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tneutral axis\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n=10;\n", + "E=76E9; I=4E-8; L= 5; % constants from HW4\n", + "dx=L/(n+1);\n", + "K=2*diag(ones(n,1))-diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);\n", + "[y,e]=eig(K);\n", + "P=e*E*I/dx^2;\n", + "\n", + "fprintf('critical buckling load=%1.0f N',min(diag(P)))\n", + "\n", + "plot([0:dx:L],[0;y(:,1);0])\n", + "xlabel('neutral axis')\n", + "ylabel('displacement from neutral axis(m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# This approach is the ''Finite Difference Method''" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "![finite difference method](./images/beam_finite.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Differential equations are approximated as finite differences (through cental, forward, or backward difference approximations). \n", + "\n", + "Resulting set of equations are then solved using linear algebra " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Changing boundary conditions\n", + "\n", + "![beam boundaries](./images/beam_bcs.png)\n", + "\n", + "What if the beam is clamped on one end and simply-supported on the other? (derivative is 0 at x=0 $\\frac{dy(0)}{dx}=0$ and y=0 at x=L y(L)=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "$\\frac{y_{i+1}-2y_{i}+y_{i-1}}{\\Delta x^{2}}+p^{2}y_{i}=0$\n", + "\n", + "at y=1, $\\frac{y_{2}-y_{0}}{2\\Delta x}=0$ $\\rightarrow~y_{2}=y_{0}$\n", + "\n", + "so, $\\frac{2y_{2}-2y_{1}}{\\Delta x^{2}}+p^{2}y_{1}=0$" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "critical buckling load=362 N\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tdisplacement from neutral axis(m)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tneutral axis\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n=10;\n", + "E=76E9; I=4E-8; L= 5; % constants from HW4\n", + "dx=L/(n+1);\n", + "K=2*diag(ones(n,1))-diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);\n", + "K(1,2)=-2; %2y2-2y1=-dx^2*p^2\n", + "[y,e]=eig(K);\n", + "P=e*E*I/dx^2;\n", + "[~,i]=min(diag(P));\n", + "fprintf('critical buckling load=%1.0f N',min(diag(P)))\n", + "\n", + "plot([0:dx:L],[y(2,i);y(:,i);0]) % sub in x=0 BC as y(2) b/c y(2)=y(0)\n", + "xlabel('neutral axis')\n", + "ylabel('displacement from neutral axis(m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/21_boundary_value_problems/21_boundary_value_problems.ipynb b/21_boundary_value_problems/21_boundary_value_problems.ipynb new file mode 100644 index 0000000..3b0945f --- /dev/null +++ b/21_boundary_value_problems/21_boundary_value_problems.ipynb @@ -0,0 +1,552 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "setdefaults" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "%plot --format svg" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Boundary Value problems\n", + "\n", + "*ch. 24" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Need to solve for y given $\\frac{d^2 y}{dx^2}$, but only y(0) and y(L) known" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# First finite difference example in ME3255:\n", + "\n", + "## Buckling beam in [HW4 problem 8](https://github.uconn.edu/rcc02007/ME3255F2017/tree/master/HW4)\n", + "\n", + "![beam buckling](./images/buckling_beam.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Differential equation\n", + "\n", + "$\\frac{d^{2}y}{dx^{2}}+p^{2}y=0$\n", + "\n", + "or, substituting the central difference approximation:\n", + "\n", + "$\\frac{y_{i+1}-2y_{i}+y_{i-1}}{\\Delta x^{2}}+p^{2}y_{i}=0$\n", + "\n", + "boundary conditions are that y(0)=y(L)=0\n", + "\n", + "So, given n-discrete points, the solution of $y_{1}-y_{n}$ was solved with an eigenvalue analysis\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "critical buckling load=1192 N\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tdisplacement from neutral axis(m)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tneutral axis\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n=10;\n", + "E=76E9; I=4E-8; L= 5; % constants from HW4\n", + "dx=L/(n+1);\n", + "K=2*diag(ones(n,1))-diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);\n", + "[y,e]=eig(K);\n", + "P=e*E*I/dx^2;\n", + "\n", + "fprintf('critical buckling load=%1.0f N',min(diag(P)))\n", + "\n", + "plot([0:dx:L],[0;y(:,1);0])\n", + "xlabel('neutral axis')\n", + "ylabel('displacement from neutral axis(m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# This approach is the ''Finite Difference Method''" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "![finite difference method](./images/beam_finite.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Differential equations are approximated as finite differences (through cental, forward, or backward difference approximations). \n", + "\n", + "Resulting set of equations are then solved using linear algebra " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Changing boundary conditions\n", + "\n", + "![beam boundaries](./images/beam_bcs.png)\n", + "\n", + "What if the beam is clamped on one end and simply-supported on the other? (derivative is 0 at x=0 $\\frac{dy(0)}{dx}=0$ and y=0 at x=L y(L)=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "$\\frac{y_{i+1}-2y_{i}+y_{i-1}}{\\Delta x^{2}}+p^{2}y_{i}=0$\n", + "\n", + "at y=1, $\\frac{y_{2}-y_{0}}{2\\Delta x}=0$ $\\rightarrow~y_{2}=y_{0}$\n", + "\n", + "so, $\\frac{2y_{2}-2y_{1}}{\\Delta x^{2}}+p^{2}y_{1}=0$" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "critical buckling load=362 N\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "Gnuplot\n", + "Produced by GNUPLOT 5.0 patchlevel 3 \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\t\n", + "\t \n", + "\t \n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.5\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t-0.1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t0\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t1\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t2\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t3\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t4\n", + "\t\n", + "\n", + "\n", + "\t\t\n", + "\t\t5\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\n", + "\t\n", + "\t\tdisplacement from neutral axis(m)\n", + "\t\n", + "\n", + "\n", + "\t\n", + "\t\tneutral axis\n", + "\t\n", + "\n", + "\n", + "\n", + "\tgnuplot_plot_1a\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n=10;\n", + "E=76E9; I=4E-8; L= 5; % constants from HW4\n", + "dx=L/(n+1);\n", + "K=2*diag(ones(n,1))-diag(ones(n-1,1),1)-diag(ones(n-1,1),-1);\n", + "K(1,2)=-2; %2y2-2y1=-dx^2*p^2\n", + "[y,e]=eig(K);\n", + "P=e*E*I/dx^2;\n", + "[~,i]=min(diag(P));\n", + "fprintf('critical buckling load=%1.0f N',min(diag(P)))\n", + "\n", + "plot([0:dx:L],[y(2,i);y(:,i);0]) % sub in x=0 BC as y(2) b/c y(2)=y(0)\n", + "xlabel('neutral axis')\n", + "ylabel('displacement from neutral axis(m)')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Thanks" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Octave", + "language": "octave", + "name": "octave" + }, + "language_info": { + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" + } + ], + "mimetype": "text/x-octave", + "name": "octave", + "version": "0.19.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/21_boundary_value_problems/images/beam_bcs.svg b/21_boundary_value_problems/images/beam_bcs.svg new file mode 100644 index 0000000..f839951 --- /dev/null +++ b/21_boundary_value_problems/images/beam_bcs.svg @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + P + P + + + + + + + + + + + x + y + + + + + + + + + + diff --git a/21_boundary_value_problems/images/beam_finite.png b/21_boundary_value_problems/images/beam_finite.png new file mode 100644 index 0000000000000000000000000000000000000000..d40ce85199752e5bd4966037b84ce672dfa283df GIT binary patch literal 13685 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 + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + P + P + x + + + + + + + + + + + + + + + + + + + diff --git a/21_boundary_value_problems/images/buckling_beam.png b/21_boundary_value_problems/images/buckling_beam.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7ef47f8718d0eb6a224bf7b5781dbbaa583d3b GIT binary patch literal 81920 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