{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "7. Multi-variable Calculus\n", "===\n", "[13.1 Functions of Several Variables](6%20Multi-variable%20Calculus-Differentiation-1.ipynb#Functions-of-Several-Variables)
\n", "[13.2 Limits and Continuuity](6%20Multi-variable%20Calculus-Differentiation-1.ipynb#Limit-and-Continuity)
\n", "[13.3 Partial Differentiation](#Partial-Differentiation)
\n", "[13.4 Chain Rule](#Chain-Rule)
\n", "[13.5 Tangent Plane](#Tangent-Plane)
\n", "[13.6 Relative Extrema](6%20Multi-variable%20Calculus-Differentiation-3.ipynb#Relative-Maxima-and-Minima)
\n", "[13.7 Lagrange Multiplier](6%20Multi-variable%20Calculus-Differentiation-3.ipynb#Optimization-Problem-with-Constraints)
\n", "[13.8 Method of Least Squares](6%20Multi-variable%20Calculus-Differentiation-3.ipynb#The-Method-of-Least-Squares)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.core.display import HTML\n", "css_file = 'css/ngcmstyle.css'\n", "HTML(open(css_file, \"r\").read())" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "#rcParams['figure.figsize'] = (10,3) #wide graphs by default\n", "import scipy\n", "import numpy as np\n", "import time\n", "from sympy import symbols,diff,pprint,sqrt,exp,sin,cos,log,Matrix,Function,solve\n", "\n", "\n", "from mpl_toolkits.mplot3d import Axes3D\n", "from IPython.display import clear_output,display,Math\n", "import matplotlib.pylab as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Partial Differentiation\n", "---\n", "Definition\n", "---\n", " Suppose that $(x_0, y_0)$ is in the domain of $z = f (x, y)$\n", "**1.** the partial derivative with respect to $x$ at $(x_0, y_0)$ is the\n", " limit\n", "\n", "$$ \\mathbf{\\frac{\\partial f}{\\partial x} (x_0, y_0) = \\lim_{h \\rightarrow 0}\n", " \\frac{f (x_0 + h, y_0) - f (x_0, y_0)}{h} }$$\n", "\n", "Geometrically, the value of this limit is the slope of the tangent line of\n", " $z = f (x, y)$ in the plane $y = y_0$. And this quantity is the rate of\n", " change of $f (x, y)$ at $(x_0, y_0)$ along the $x$-direction.\n", "\n", "**2.** the partial derivative with respect to $y$ at $(x_0, y_0)$ is the\n", " limit\n", "\n", "$$\\mathbf{ \\frac{\\partial f}{\\partial y} (x_0, y_0) = \\lim_{k \\rightarrow 0}\n", " \\frac{f (x_0, y_0 + k) - f (x_0, y_0)}{k} }$$\n", "\n", "Geometrically, the value of this limit is the slope of the tangent line of\n", " $z = f (x, y)$ in the plane $x = x_0$. And this quantity is the rate of\n", " change of $f (x, y)$ at $(x_0, y_0)$ along the $y$-direction. \n", "\n", "Here is a geometric meaning about partial derivative:\n", "\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import plotly.graph_objs as go\n", "\n", "import plotly\n", "from plotly.offline import init_notebook_mode,iplot\n", "init_notebook_mode()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": 0.5, "type": "surface", "x": [ [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ], [ 0.2, 0.22, 0.24, 0.26, 0.27999999999999997, 0.29999999999999993, 0.31999999999999995, 0.33999999999999997, 0.35999999999999993, 0.3799999999999999, 0.3999999999999999, 0.41999999999999993, 0.4399999999999999, 0.4599999999999999, 0.47999999999999987, 0.49999999999999983, 0.5199999999999998, 0.5399999999999998, 0.5599999999999998, 0.5799999999999998, 0.5999999999999999, 0.6199999999999999, 0.6399999999999998, 0.6599999999999997, 0.6799999999999997, 0.6999999999999997, 0.7199999999999998, 0.7399999999999998, 0.7599999999999998, 0.7799999999999998, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999997, 0.8799999999999997, 0.8999999999999997, 0.9199999999999997, 0.9399999999999997, 0.9599999999999995, 0.9799999999999995 ] ], "y": [ [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], [ 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22, 0.22 ], [ 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24 ], [ 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26, 0.26 ], [ 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997, 0.27999999999999997 ], [ 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993, 0.29999999999999993 ], [ 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995, 0.31999999999999995 ], [ 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997, 0.33999999999999997 ], [ 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993, 0.35999999999999993 ], [ 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999, 0.3799999999999999 ], [ 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999, 0.3999999999999999 ], [ 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993, 0.41999999999999993 ], [ 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999, 0.4399999999999999 ], [ 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999, 0.4599999999999999 ], [ 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987, 0.47999999999999987 ], [ 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983, 0.49999999999999983 ], [ 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998, 0.5199999999999998 ], [ 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998, 0.5399999999999998 ], [ 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998, 0.5599999999999998 ], [ 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998, 0.5799999999999998 ], [ 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999, 0.5999999999999999 ], [ 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999, 0.6199999999999999 ], [ 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998, 0.6399999999999998 ], [ 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997, 0.6599999999999997 ], [ 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997, 0.6799999999999997 ], [ 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997, 0.6999999999999997 ], [ 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998, 0.7199999999999998 ], [ 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998, 0.7399999999999998 ], [ 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998, 0.7599999999999998 ], [ 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998, 0.7799999999999998 ], [ 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996, 0.7999999999999996 ], [ 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996, 0.8199999999999996 ], [ 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996, 0.8399999999999996 ], [ 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997, 0.8599999999999997 ], [ 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997, 0.8799999999999997 ], [ 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997, 0.8999999999999997 ], [ 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997, 0.9199999999999997 ], [ 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997, 0.9399999999999997 ], [ 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995, 0.9599999999999995 ], [ 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995, 0.9799999999999995 ] ], "z": [ [ 0.28284271247461906, 0.2973213749463701, 0.3124099870362662, 0.3280243893371345, 0.34409301068170506, 0.36055512754639885, 0.3773592452822641, 0.39446165846632036, 0.41182520563947994, 0.42941821107167766, 0.44721359549995787, 0.46518813398452025, 0.4833218389437828, 0.501597448159378, 0.5199999999999999, 0.5385164807134503, 0.5571355310873646, 0.5758472019555185, 0.59464274989274, 0.6135144660071186, 0.6324555320336757, 0.6514598989960931, 0.6705221845696082, 0.6896375859826664, 0.7088018058667738, 0.7280109889280515, 0.747261667690776, 0.7665507158694718, 0.7858753081755399, 0.8052328855678956, 0.8246211251235317, 0.8440379138403673, 0.8634813257969157, 0.8829496021857642, 0.9024411338142779, 0.9219544457292884, 0.9414881836751854, 0.9610411021387169, 0.9806120537705005, 1.0001999800039985 ], [ 0.2973213749463701, 0.3111269837220809, 0.3255764119219941, 0.34058772731852804, 0.3560898762952971, 0.3720215047547654, 0.38832975677895193, 0.4049691346263317, 0.42190046219457966, 0.4390899680020029, 0.456508488420533, 0.47413078364518785, 0.49193495504995366, 0.5099019513592784, 0.5280151512977633, 0.5462600113499063, 0.564623768539724, 0.5830951894845299, 0.6016643582596528, 0.6203224967708327, 0.6390618123468181, 0.6578753681359409, 0.6767569726275451, 0.6957010852370432, 0.7147027354082253, 0.7337574531137654, 0.7528612089887482, 0.7720103626247511, 0.7912016177940991, 0.8104319835741922, 0.8296987405076612, 0.8489994110716446, 0.868331733843696, 0.8876936408468855, 0.907083237635885, 0.9264987857520373, 0.9459386872308371, 0.9654014708917733, 0.98488578017961, 1.004390362359177 ], [ 0.3124099870362662, 0.3255764119219941, 0.33941125496954283, 0.3538361202590827, 0.3687817782917155, 0.38418745424597084, 0.39999999999999997, 0.41617304093369617, 0.4326661530556786, 0.44944410108488453, 0.46647615158762396, 0.4837354648979129, 0.5011985634456666, 0.5188448708429139, 0.5366563145999494, 0.5546169849544818, 0.5727128425310539, 0.5909314681077661, 0.6092618484691125, 0.6276941930590084, 0.6462197768561403, 0.6648308055437864, 0.6835202996254023, 0.7022819946431772, 0.7211102550927976, 0.7399999999999998, 0.7589466384404108, 0.7779460135510687, 0.7969943538068508, 0.8160882305241264, 0.8352245207128436, 0.8544003745317528, 0.8736131867136618, 0.8928605714219883, 0.9121403400793101, 0.9314504817756011, 0.9507891459203768, 0.970154626850792, 0.9895453501482381, 1.0089598604503547 ], [ 0.3280243893371345, 0.34058772731852804, 0.3538361202590827, 0.36769552621700474, 0.382099463490856, 0.3969886648255841, 0.412310562561766, 0.4280186911806539, 0.44407206622349027, 0.46043457732885346, 0.4770744176750624, 0.4939635614091387, 0.5110772935672254, 0.5283937925449163, 0.5458937625582471, 0.5635601121442146, 0.5813776741499451, 0.5993329625508678, 0.6174139616173251, 0.6356099432828279, 0.6539113089708725, 0.6723094525588643, 0.6907966415668215, 0.7093659140387277, 0.7280109889280515, 0.7467261881037786, 0.7655063683601853, 0.7843468620451028, 0.8032434251209278, 0.8221921916437784, 0.8411896337925232, 0.8602325267042623, 0.8793179174792239, 0.8984430978086477, 0.9176055797563567, 0.9368030742904292, 0.9560334722173693, 0.9752948272189285, 0.994585340732508, 1.0139033484509257 ], [ 0.34409301068170506, 0.3560898762952971, 0.3687817782917155, 0.382099463490856, 0.3959797974644666, 0.41036569057366373, 0.42520583250938593, 0.44045431091090476, 0.4560701700396551, 0.47201694884823775, 0.488262224629348, 0.5047771785649584, 0.5215361924162119, 0.5385164807134504, 0.5556977595779921, 0.573061951275776, 0.5905929224093358, 0.6082762530298218, 0.6260990336999409, 0.6440496875241846, 0.6621178142898738, 0.6802940540677979, 0.698569967862919, 0.7169379331573965, 0.7353910524340092, 0.7539230729988303, 0.7725283166331184, 0.7912016177940991, 0.8099382692526633, 0.8287339742040263, 0.8475848040166832, 0.8664871608973784, 0.8854377448471459, 0.9044335243676007, 0.9234717104492154, 0.942549733435854, 0.9616652224137043, 0.9808159868191381, 0.9999999999999996, 1.0192153844992722 ], [ 0.36055512754639885, 0.3720215047547654, 0.38418745424597084, 0.3969886648255841, 0.41036569057366373, 0.4242640687119284, 0.43863424398922607, 0.4534313619501853, 0.46861498055439915, 0.4841487374764081, 0.4999999999999999, 0.5161395160225575, 0.5325410782277737, 0.5491812087098391, 0.5660388679233961, 0.5830951894845299, 0.6003332407921452, 0.6177378084592199, 0.6352952069707435, 0.6529931086925801, 0.6708203932499367, 0.6887670143089024, 0.7068238818828915, 0.724982758415674, 0.7432361670424815, 0.7615773105863906, 0.7799999999999997, 0.7984985911070849, 0.8170679286326197, 0.8357032966310469, 0.8544003745317528, 0.8731551981177226, 0.8919641248391099, 0.9108238029388557, 0.9297311439335564, 0.9486832980505134, 0.9676776322722354, 0.9867117106835205, 1.0057832768544122, 1.024890238025516 ], [ 0.3773592452822641, 0.38832975677895193, 0.39999999999999997, 0.412310562561766, 0.42520583250938593, 0.43863424398922607, 0.4525483399593903, 0.46690470119715, 0.4816637831516917, 0.4967896939349687, 0.5122499389946278, 0.5280151512977633, 0.5440588203494177, 0.5603570290448759, 0.5768882040742381, 0.5936328831862331, 0.6105735008989498, 0.6276941930590084, 0.6449806198638838, 0.6624198064671676, 0.6799999999999998, 0.6977105417004962, 0.7155417527999325, 0.7334848328356897, 0.7515317691222371, 0.769675256195754, 0.7879086241436881, 0.8062257748298547, 0.8246211251235319, 0.8430895563343195, 0.8616263691415202, 0.8802272433866151, 0.8988882021697688, 0.9176055797563566, 0.9363759928575697, 0.955196314900764, 0.9740636529508734, 0.9929753269845124, 1.0119288512538809, 1.0309219175087894 ], [ 0.39446165846632036, 0.4049691346263317, 0.41617304093369617, 0.4280186911806539, 0.44045431091090476, 0.4534313619501853, 0.46690470119715, 0.4808326112068523, 0.4951767361255978, 0.5099019513592784, 0.5249761899362674, 0.5403702434442518, 0.5560575509783137, 0.5720139858430036, 0.5882176467941096, 0.6046486583132388, 0.6212889826803625, 0.6381222453417525, 0.6551335741663679, 0.6723094525588643, 0.6896375859826666, 0.7071067811865475, 0.7247068372797373, 0.7424284477308232, 0.7602631123499283, 0.7782030583337485, 0.7962411694957752, 0.814370922860093, 0.8325863318599457, 0.8508818954473057, 0.8692525524840289, 0.8876936408468855, 0.9062008607367349, 0.924770241735751, 0.9433981132056601, 0.9620810776644552, 0.9808159868191381, 0.9995999199679837, 1.0184301645179208, 1.0373041983911948 ], [ 0.41182520563947994, 0.42190046219457966, 0.4326661530556786, 0.44407206622349027, 0.4560701700396551, 0.46861498055439915, 0.4816637831516917, 0.4951767361255978, 0.5091168824543141, 0.5234500931320959, 0.5381449618829482, 0.5531726674375731, 0.5685068161420757, 0.5841232746604091, 0.5999999999999999, 0.6161168720299743, 0.6324555320336757, 0.6489992295835179, 0.6657326790837294, 0.6826419266350403, 0.6997142273814358, 0.7169379331573967, 0.7343023900274326, 0.7517978451684997, 0.7694153624668535, 0.7871467461661767, 0.8049844718999241, 0.8229216244576391, 0.8409518416651452, 0.859069263796581, 0.8772684879784519, 0.895544527089524, 0.9138927727036686, 0.9323089616645328, 0.9507891459203767, 0.9693296652842104, 0.9879271228182772, 1.0065783625729292, 1.0252804494381034, 1.0440306508910546 ], [ 0.42941821107167766, 0.4390899680020029, 0.44944410108488453, 0.46043457732885346, 0.47201694884823775, 0.4841487374764081, 0.4967896939349687, 0.5099019513592784, 0.5234500931320959, 0.537401153701776, 0.5517245689653487, 0.5663920903402517, 0.5813776741499452, 0.5966573556070518, 0.6122091146005585, 0.6280127387243031, 0.6440496875241846, 0.6603029607687669, 0.6767569726275451, 0.6933974329343885, 0.710211236182588, 0.7271863585079135, 0.7443117626371355, 0.7615773105863906, 0.7789736837660176, 0.7964923100695948, 0.8141252974819045, 0.8318653737234165, 0.8497058314499198, 0.8676404785393543, 0.8856635930193808, 0.9037698822155998, 0.9219544457292883, 0.9402127418834523, 0.9585405573057404, 0.9769339793455847, 0.995389371050344, 1.0139033484509257, 1.032472759931224, 1.0510946674776727 ], [ 0.44721359549995787, 0.456508488420533, 0.46647615158762396, 0.4770744176750624, 0.488262224629348, 0.4999999999999999, 0.5122499389946278, 0.5249761899362674, 0.5381449618829482, 0.5517245689653487, 0.5656854249492379, 0.5799999999999998, 0.59464274989274, 0.6095900261651267, 0.6248199740725322, 0.6403124237432847, 0.6560487786742688, 0.6720119046564575, 0.68818602136341, 0.7045565981523413, 0.7211102550927977, 0.7378346698278685, 0.7547184905645281, 0.7717512552629892, 0.7889233169326405, 0.8062257748298546, 0.8236504112789598, 0.8411896337925233, 0.8588364221433553, 0.8765842800324448, 0.8944271909999155, 0.9123595782365631, 0.9303762679690402, 0.9484724561103497, 0.9666436778875654, 0.9848857801796101, 1.0031948963187558, 1.0215674231297704, 1.0399999999999996, 1.058489489791939 ], [ 0.46518813398452025, 0.47413078364518785, 0.4837354648979129, 0.4939635614091387, 0.5047771785649584, 0.5161395160225575, 0.5280151512977633, 0.5403702434442518, 0.5531726674375731, 0.5663920903402517, 0.5799999999999998, 0.5939696961966998, 0.6082762530298219, 0.6228964600958974, 0.6378087487640788, 0.6529931086925801, 0.6684309986827359, 0.6841052550594826, 0.6999999999999998, 0.7161005515987261, 0.732393336944022, 0.748865809073962, 0.7655063683601853, 0.7823042886243176, 0.7992496481075232, 0.8163332652783418, 0.833546639366988, 0.8508818954473056, 0.8683317338436961, 0.8858893836140038, 0.903548559846121, 0.9213034245024814, 0.9391485505499113, 0.9570788891204315, 0.9750897394599122, 0.9931767214348105, 1.0113357503816423, 1.0295630140986998, 1.0478549517943783, 1.0662082348209467 ], [ 0.4833218389437828, 0.49193495504995366, 0.5011985634456666, 0.5110772935672254, 0.5215361924162119, 0.5325410782277737, 0.5440588203494177, 0.5560575509783137, 0.5685068161420757, 0.5813776741499452, 0.59464274989274, 0.6082762530298219, 0.6222539674441617, 0.6365532185135818, 0.6511528238439881, 0.6660330322138683, 0.6811754546370559, 0.6965629906907198, 0.7121797525905941, 0.7280109889280516, 0.7440430095095308, 0.7602631123499283, 0.7766595135579037, 0.7932212806020773, 0.8099382692526631, 0.8268010643437752, 0.8438009243891592, 0.8609297300012351, 0.8781799360040057, 0.8955445270895243, 0.9130169768410658, 0.9305912099305469, 0.9482615672903755, 0.9660227740586653, 0.9838699100999071, 1.0017983829094552, 1.0198039027185566, 1.0378824596263294, 1.0560303025955264, 1.0742439201596623 ], [ 0.501597448159378, 0.5099019513592784, 0.5188448708429139, 0.5283937925449163, 0.5385164807134504, 0.5491812087098391, 0.5603570290448759, 0.5720139858430036, 0.5841232746604091, 0.5966573556070518, 0.6095900261651267, 0.6228964600958974, 0.6365532185135818, 0.6505382386916236, 0.6648308055437864, 0.679411510058521, 0.6942621983083911, 0.7093659140387278, 0.7247068372797374, 0.7402702209328696, 0.7560423268574318, 0.7720103626247511, 0.7881624198095211, 0.8044874144447504, 0.8209750300709514, 0.8376156636548767, 0.8544003745317529, 0.8713208364316783, 0.8883692925805121, 0.9055385138137414, 0.9228217596047458, 0.9402127418834523, 0.9577055915050299, 0.9752948272189284, 0.9929753269845124, 1.0107423014794619, 1.0285912696499029, 1.0465180361560902, 1.0645186705737006, 1.0825894882179483 ], [ 0.5199999999999999, 0.5280151512977633, 0.5366563145999494, 0.5458937625582471, 0.5556977595779921, 0.5660388679233961, 0.5768882040742381, 0.5882176467941096, 0.5999999999999999, 0.6122091146005585, 0.6248199740725322, 0.6378087487640788, 0.6511528238439881, 0.6648308055437864, 0.6788225099390854, 0.6931089380465381, 0.7076722405181651, 0.7224956747275375, 0.7375635565834308, 0.7528612089887483, 0.7683749084919417, 0.7840918313565062, 0.7999999999999998, 0.8160882305241263, 0.8323460818673921, 0.8487638069569174, 0.8653323061113571, 0.8820430828479976, 0.8988882021697691, 0.9158602513484246, 0.9329523031752477, 0.9501578816175758, 0.9674709297958256, 0.9848857801796101, 1.002397126891333, 1.0199999999999996, 1.0376897416858275, 1.0554619841567006, 1.0733126291998987, 1.0912378292562988 ], [ 0.5385164807134503, 0.5462600113499063, 0.5546169849544818, 0.5635601121442146, 0.573061951275776, 0.5830951894845299, 0.5936328831862331, 0.6046486583132388, 0.6161168720299743, 0.6280127387243031, 0.6403124237432847, 0.6529931086925801, 0.6660330322138683, 0.679411510058521, 0.6931089380465381, 0.7071067811865472, 0.7213875518748571, 0.7359347797189637, 0.7507329751649382, 0.7657675887630656, 0.7810249675906652, 0.7964923100695949, 0.8121576201698778, 0.8280096617793777, 0.8440379138403674, 0.8602325267042623, 0.8765842800324447, 0.893084542470644, 0.9097252332435324, 0.9264987857520374, 0.94339811320566, 0.9604165762834371, 0.9775479527879944, 0.9947864092356706, 1.0121264743103993, 1.0295630140986995, 1.0470912090166737, 1.0647065323364928, 1.082404730218784, 1.1001818031580048 ], [ 0.5571355310873646, 0.564623768539724, 0.5727128425310539, 0.5813776741499451, 0.5905929224093358, 0.6003332407921452, 0.6105735008989498, 0.6212889826803625, 0.6324555320336757, 0.6440496875241846, 0.6560487786742688, 0.6684309986827359, 0.6811754546370559, 0.6942621983083911, 0.7076722405181651, 0.7213875518748571, 0.7353910524340092, 0.7496665925596522, 0.7641989269817118, 0.7789736837660176, 0.7939773296511681, 0.8091971329657561, 0.8246211251235318, 0.8402380615039998, 0.8560373823613076, 0.8720091742636653, 0.8881441324469804, 0.9044335243676007, 0.9208691546577067, 0.937443331620637, 0.9541488353501246, 0.9709788875150681, 0.9879271228182771, 1.0049875621120885, 1.0221545871344506, 1.0394229168149023, 1.0567875850898323, 1.0742439201596625, 1.091787525116494, 1.1094142598686927 ], [ 0.5758472019555185, 0.5830951894845299, 0.5909314681077661, 0.5993329625508678, 0.6082762530298218, 0.6177378084592199, 0.6276941930590084, 0.6381222453417525, 0.6489992295835179, 0.6603029607687669, 0.6720119046564575, 0.6841052550594826, 0.6965629906907198, 0.7093659140387278, 0.7224956747275375, 0.7359347797189637, 0.7496665925596522, 0.7636753236814711, 0.7779460135510687, 0.7924645102463578, 0.8072174428244224, 0.8221921916437784, 0.8373768566183326, 0.8527602242131134, 0.868331733843696, 0.8840814442120134, 0.8999999999999997, 0.9160785992479027, 0.9323089616645329, 0.9486832980505135, 0.9651942809610918, 0.9818350166906857, 0.9985990186255939, 1.015480181982888, 1.0324727599312242, 1.0495713410721537, 1.0667708282475665, 1.084066418629412, 1.1014535850411487, 1.1189280584559487 ], [ 0.59464274989274, 0.6016643582596528, 0.6092618484691125, 0.6174139616173251, 0.6260990336999409, 0.6352952069707435, 0.6449806198638838, 0.6551335741663679, 0.6657326790837294, 0.6767569726275451, 0.68818602136341, 0.6999999999999998, 0.7121797525905941, 0.7247068372797374, 0.7375635565834308, 0.7507329751649382, 0.7641989269817118, 0.7779460135510687, 0.791959594928933, 0.8062257748298548, 0.8207313811473275, 0.8354639429682168, 0.8504116650187717, 0.8655634003352958, 0.8809086218218093, 0.8964373932405985, 0.9121403400793101, 0.9280086206496142, 0.9440338976964755, 0.960208310732624, 0.9765244492586957, 0.9929753269845123, 1.0095543571299166, 1.0262553288533995, 1.0430723848324235, 1.0599999999999996, 1.0770329614269005, 1.094166349327194, 1.111395519155984, 1.1287160847617965 ], [ 0.6135144660071186, 0.6203224967708327, 0.6276941930590084, 0.6356099432828279, 0.6440496875241846, 0.6529931086925801, 0.6624198064671676, 0.6723094525588643, 0.6826419266350403, 0.6933974329343885, 0.7045565981523413, 0.7161005515987261, 0.7280109889280516, 0.7402702209328696, 0.7528612089887483, 0.7657675887630656, 0.7789736837660176, 0.7924645102463578, 0.8062257748298548, 0.8202438661763949, 0.8345058418010024, 0.8489994110716448, 0.8637129152675671, 0.8786353054595515, 0.8937561188601728, 0.9090654541890806, 0.9245539465060973, 0.9402127418834524, 0.9560334722173693, 0.9720082304178291, 0.9881295461628496, 1.004390362359177, 1.020784012413987, 1.0373041983911948, 1.0539449701004315, 1.0707007051459334, 1.0875660899458015, 1.1045361017187258, 1.1216059914247958, 1.1387712676389403 ], [ 0.6324555320336757, 0.6390618123468181, 0.6462197768561403, 0.6539113089708725, 0.6621178142898738, 0.6708203932499367, 0.6799999999999998, 0.6896375859826666, 0.6997142273814358, 0.710211236182588, 0.7211102550927977, 0.732393336944022, 0.7440430095095308, 0.7560423268574318, 0.7683749084919417, 0.7810249675906652, 0.7939773296511681, 0.8072174428244224, 0.8207313811473275, 0.8345058418010024, 0.8485281374238568, 0.8627861844049195, 0.8772684879784521, 0.89196412483911, 0.9068627239003704, 0.9219544457292884, 0.9372299611087982, 0.952680429105164, 0.9682974749528162, 0.9840731680114032, 0.9999999999999996, 1.0160708636704425, 1.0322790320451147, 1.048618138313466, 1.0650821564555475, 1.0816653826391964, 1.0983624174196782, 1.1151681487560516, 1.132077735846792, 1.1490865937778576 ], [ 0.6514598989960931, 0.6578753681359409, 0.6648308055437864, 0.6723094525588643, 0.6802940540677979, 0.6887670143089024, 0.6977105417004962, 0.7071067811865475, 0.7169379331573967, 0.7271863585079135, 0.7378346698278685, 0.748865809073962, 0.7602631123499283, 0.7720103626247511, 0.7840918313565062, 0.7964923100695949, 0.8091971329657561, 0.8221921916437784, 0.8354639429682168, 0.8489994110716448, 0.8627861844049195, 0.8768124086713187, 0.8910667763978184, 0.9055385138137413, 0.920217365626187, 0.9350935782048765, 0.950157881617576, 0.9654014708917733, 0.9808159868191381, 0.9963934965664918, 1.0121264743103993, 1.0280077820717113, 1.0440306508910546, 1.0601886624558854, 1.076475731263831, 1.0928860873851398, 1.109414259868693, 1.1260550608207396, 1.1428035701729318, 1.1596551211459374 ], [ 0.6705221845696082, 0.6767569726275451, 0.6835202996254023, 0.6907966415668215, 0.698569967862919, 0.7068238818828915, 0.7155417527999325, 0.7247068372797373, 0.7343023900274326, 0.7443117626371355, 0.7547184905645281, 0.7655063683601853, 0.7766595135579037, 0.7881624198095211, 0.7999999999999998, 0.8121576201698778, 0.8246211251235318, 0.8373768566183326, 0.8504116650187717, 0.8637129152675671, 0.8772684879784521, 0.8910667763978184, 0.9050966799187805, 0.9193475947648959, 0.9338094023942998, 0.9484724561103497, 0.9633275663033833, 0.9783659846908004, 0.9935793878699374, 1.0089598604503547, 1.0244998779892553, 1.040192289915667, 1.0560303025955264, 1.0720074626605913, 1.088117640698835, 1.1043550153822814, 1.1207140580897517, 1.1371895180663596, 1.153776408148476, 1.170469991071962 ], [ 0.6896375859826664, 0.6957010852370432, 0.7022819946431772, 0.7093659140387277, 0.7169379331573965, 0.724982758415674, 0.7334848328356897, 0.7424284477308232, 0.7517978451684997, 0.7615773105863906, 0.7717512552629892, 0.7823042886243176, 0.7932212806020773, 0.8044874144447504, 0.8160882305241263, 0.8280096617793777, 0.8402380615039998, 0.8527602242131134, 0.8655634003352958, 0.8786353054595515, 0.89196412483911, 0.9055385138137413, 0.9193475947648959, 0.9333809511662423, 0.9476286192385703, 0.962081077664455, 0.976729235765982, 0.9915644204992428, 1.0065783625729292, 1.0217631819555837, 1.0371113729971333, 1.0526157893552608, 1.0682696288858908, 1.0840664186294118, 1.0999999999999996, 1.116064514264296, 1.1322543883774525, 1.1485643212288978, 1.1649892703368554, 1.1815244390193538 ], [ 0.7088018058667738, 0.7147027354082253, 0.7211102550927976, 0.7280109889280515, 0.7353910524340092, 0.7432361670424815, 0.7515317691222371, 0.7602631123499283, 0.7694153624668535, 0.7789736837660176, 0.7889233169326405, 0.7992496481075232, 0.8099382692526631, 0.8209750300709514, 0.8323460818673921, 0.8440379138403674, 0.8560373823613076, 0.868331733843696, 0.8809086218218093, 0.8937561188601728, 0.9068627239003704, 0.920217365626187, 0.9338094023942998, 0.9476286192385703, 0.9616652224137042, 0.9759098319004678, 0.9903534722511954, 1.0049875621120887, 1.0198039027185566, 1.034794665622122, 1.0499523798725345, 1.0652699188468615, 1.080740486888503, 1.0963576058932591, 1.112115101956627, 1.1280070921762855, 1.144027971686007, 1.1601724009818537, 1.1764352935882187, 1.192811804099875 ], [ 0.7280109889280515, 0.7337574531137654, 0.7399999999999998, 0.7467261881037786, 0.7539230729988303, 0.7615773105863906, 0.769675256195754, 0.7782030583337485, 0.7871467461661767, 0.7964923100695948, 0.8062257748298546, 0.8163332652783418, 0.8268010643437752, 0.8376156636548767, 0.8487638069569174, 0.8602325267042623, 0.8720091742636653, 0.8840814442120134, 0.8964373932405985, 0.9090654541890806, 0.9219544457292884, 0.9350935782048765, 0.9484724561103497, 0.962081077664455, 0.9759098319004678, 0.9899494936611661, 1.004191216850655, 1.0186265262597471, 1.0332473082471587, 1.048045800525912, 1.0630145812734644, 1.0781465577554838, 1.093434954626931, 1.1088733020503285, 1.1244554237496474, 1.1401754250991376, 1.1560276813294736, 1.1720068259186884, 1.1881077392223311, 1.2043255373859671 ], [ 0.747261667690776, 0.7528612089887482, 0.7589466384404108, 0.7655063683601853, 0.7725283166331184, 0.7799999999999997, 0.7879086241436881, 0.7962411694957752, 0.8049844718999241, 0.8141252974819045, 0.8236504112789598, 0.833546639366988, 0.8438009243891592, 0.8544003745317529, 0.8653323061113571, 0.8765842800324447, 0.8881441324469804, 0.8999999999999997, 0.9121403400793101, 0.9245539465060973, 0.9372299611087982, 0.950157881617576, 0.9633275663033833, 0.976729235765982, 0.9903534722511954, 1.004191216850655, 1.0182337649086282, 1.0324727599312242, 1.0469001862641916, 1.0615083607772478, 1.0762899237658963, 1.0912378292562988, 1.106345334875146, 1.1216059914247958, 1.1370136322841513, 1.1525623627379122, 1.1682465493208183, 1.1840608092492544, 1.1999999999999995, 1.2160592090848203 ], [ 0.7665507158694718, 0.7720103626247511, 0.7779460135510687, 0.7843468620451028, 0.7912016177940991, 0.7984985911070849, 0.8062257748298547, 0.814370922860093, 0.8229216244576391, 0.8318653737234165, 0.8411896337925233, 0.8508818954473056, 0.8609297300012351, 0.8713208364316783, 0.8820430828479976, 0.893084542470644, 0.9044335243676007, 0.9160785992479027, 0.9280086206496142, 0.9402127418834524, 0.952680429105164, 0.9654014708917733, 0.9783659846908004, 0.9915644204992428, 1.0049875621120887, 1.0186265262597471, 1.0324727599312242, 1.04651803615609, 1.0607544484940892, 1.0751744044572487, 1.0897706180660216, 1.1045361017187256, 1.119464157532522, 1.1345483682946262, 1.1497825881443844, 1.1651609330903603, 1.180677771451635, 1.196327714299054, 1.2121056059601403, 1.2280065146406995 ], [ 0.7858753081755399, 0.7912016177940991, 0.7969943538068508, 0.8032434251209278, 0.8099382692526633, 0.8170679286326197, 0.8246211251235319, 0.8325863318599457, 0.8409518416651452, 0.8497058314499198, 0.8588364221433553, 0.8683317338436961, 0.8781799360040057, 0.8883692925805121, 0.8988882021697691, 0.9097252332435324, 0.9208691546577067, 0.9323089616645329, 0.9440338976964755, 0.9560334722173693, 0.9682974749528162, 0.9808159868191381, 0.9935793878699374, 1.0065783625729292, 1.0198039027185566, 1.0332473082471587, 1.0469001862641916, 1.0607544484940892, 1.074802307403552, 1.0890362712049584, 1.1034491379306974, 1.1180339887498945, 1.1327841806805032, 1.1476933388322854, 1.1627553482998902, 1.1779643458101774, 1.1933147112141034, 1.2088010589009257, 1.2244182292011168, 1.2401612798341992 ], [ 0.8052328855678956, 0.8104319835741922, 0.8160882305241264, 0.8221921916437784, 0.8287339742040263, 0.8357032966310469, 0.8430895563343195, 0.8508818954473057, 0.859069263796581, 0.8676404785393543, 0.8765842800324448, 0.8858893836140038, 0.8955445270895243, 0.9055385138137414, 0.9158602513484246, 0.9264987857520374, 0.937443331620637, 0.9486832980505135, 0.960208310732624, 0.9720082304178291, 0.9840731680114032, 0.9963934965664918, 1.0089598604503547, 1.0217631819555837, 1.034794665622122, 1.048045800525912, 1.0615083607772478, 1.0751744044572487, 1.0890362712049584, 1.1030865786510138, 1.1173182178770733, 1.1317243480636083, 1.1462983904725677, 1.161034021895999, 1.1759251676871276, 1.190965994476752, 1.2061509026651678, 1.2214745187681972, 1.2369316876852978, 1.2525174649480937 ], [ 0.8246211251235317, 0.8296987405076612, 0.8352245207128436, 0.8411896337925232, 0.8475848040166832, 0.8544003745317528, 0.8616263691415202, 0.8692525524840289, 0.8772684879784519, 0.8856635930193808, 0.8944271909999155, 0.903548559846121, 0.9130169768410658, 0.9228217596047458, 0.9329523031752477, 0.94339811320566, 0.9541488353501246, 0.9651942809610918, 0.9765244492586957, 0.9881295461628496, 0.9999999999999996, 1.0121264743103993, 1.0244998779892553, 1.0371113729971333, 1.0499523798725345, 1.0630145812734644, 1.0762899237658963, 1.0897706180660216, 1.1034491379306974, 1.1173182178770733, 1.1313708498984754, 1.1456002793295743, 1.1599999999999995, 1.1745637488020813, 1.1892854997854798, 1.2041594578792292, 1.2191800523302532, 1.2343419299367573, 1.2496399481450642, 1.265069168069477 ], [ 0.8440379138403673, 0.8489994110716446, 0.8544003745317528, 0.8602325267042623, 0.8664871608973784, 0.8731551981177226, 0.8802272433866151, 0.8876936408468855, 0.895544527089524, 0.9037698822155998, 0.9123595782365631, 0.9213034245024814, 0.9305912099305469, 0.9402127418834523, 0.9501578816175758, 0.9604165762834371, 0.9709788875150681, 0.9818350166906857, 0.9929753269845123, 1.004390362359177, 1.0160708636704425, 1.0280077820717113, 1.040192289915667, 1.0526157893552608, 1.0652699188468615, 1.0781465577554838, 1.0912378292562988, 1.1045361017187256, 1.1180339887498945, 1.1317243480636083, 1.1456002793295743, 1.1596551211459374, 1.1738824472663345, 1.1882760622010353, 1.202829996300391, 1.2175385004179535, 1.2323960402403111, 1.2473972903610135, 1.2625371281669298, 1.2778106275970624 ], [ 0.8634813257969157, 0.868331733843696, 0.8736131867136618, 0.8793179174792239, 0.8854377448471459, 0.8919641248391099, 0.8988882021697688, 0.9062008607367349, 0.9138927727036686, 0.9219544457292883, 0.9303762679690402, 0.9391485505499113, 0.9482615672903755, 0.9577055915050299, 0.9674709297958256, 0.9775479527879944, 0.9879271228182771, 0.9985990186255939, 1.0095543571299166, 1.020784012413987, 1.0322790320451147, 1.0440306508910546, 1.0560303025955264, 1.0682696288858908, 1.080740486888503, 1.093434954626931, 1.106345334875146, 1.119464157532522, 1.1327841806805032, 1.1462983904725677, 1.1599999999999995, 1.1738824472663345, 1.1879393923933992, 1.202164714171897, 1.2165525060596434, 1.231097071720991, 1.2457929201917946, 1.2606347607455535, 1.2756174975281573, 1.2907362240210036 ], [ 0.8829496021857642, 0.8876936408468855, 0.8928605714219883, 0.8984430978086477, 0.9044335243676007, 0.9108238029388557, 0.9176055797563566, 0.924770241735751, 0.9323089616645328, 0.9402127418834523, 0.9484724561103497, 0.9570788891204315, 0.9660227740586653, 0.9752948272189284, 0.9848857801796101, 0.9947864092356706, 1.0049875621120885, 1.015480181982888, 1.0262553288533995, 1.0373041983911948, 1.048618138313466, 1.0601886624558854, 1.0720074626605913, 1.0840664186294118, 1.0963576058932591, 1.1088733020503285, 1.1216059914247958, 1.1345483682946262, 1.1476933388322854, 1.161034021895999, 1.1745637488020813, 1.1882760622010353, 1.202164714171897, 1.2162236636408612, 1.2304470732217614, 1.2448293055676343, 1.259364919314493, 1.2740486646906384, 1.2888754788574412, 1.303840481040529 ], [ 0.9024411338142779, 0.907083237635885, 0.9121403400793101, 0.9176055797563567, 0.9234717104492154, 0.9297311439335564, 0.9363759928575697, 0.9433981132056601, 0.9507891459203767, 0.9585405573057404, 0.9666436778875654, 0.9750897394599122, 0.9838699100999071, 0.9929753269845124, 1.002397126891333, 1.0121264743103993, 1.0221545871344506, 1.0324727599312242, 1.0430723848324235, 1.0539449701004315, 1.0650821564555475, 1.076475731263831, 1.088117640698835, 1.0999999999999996, 1.112115101956627, 1.1244554237496474, 1.1370136322841513, 1.1497825881443844, 1.1627553482998902, 1.1759251676871276, 1.1892854997854798, 1.202829996300391, 1.2165525060596434, 1.2304470732217614, 1.2445079348883232, 1.2587295182047646, 1.2731064370271634, 1.2876334882255893, 1.302305647687976, 1.317118066082156 ], [ 0.9219544457292884, 0.9264987857520373, 0.9314504817756011, 0.9368030742904292, 0.942549733435854, 0.9486832980505134, 0.955196314900764, 0.9620810776644552, 0.9693296652842104, 0.9769339793455847, 0.9848857801796101, 0.9931767214348105, 1.0017983829094552, 1.0107423014794619, 1.0199999999999996, 1.0295630140986995, 1.0394229168149023, 1.0495713410721537, 1.0599999999999996, 1.0707007051459334, 1.0816653826391964, 1.0928860873851398, 1.1043550153822814, 1.116064514264296, 1.1280070921762855, 1.1401754250991376, 1.1525623627379122, 1.1651609330903603, 1.1779643458101774, 1.190965994476752, 1.2041594578792292, 1.2175385004179535, 1.231097071720991, 1.2448293055676343, 1.2587295182047646, 1.272792206135785, 1.287012043455693, 1.3013838787997947, 1.315902731967678, 1.3305637902783911 ], [ 0.9414881836751854, 0.9459386872308371, 0.9507891459203768, 0.9560334722173693, 0.9616652224137043, 0.9676776322722354, 0.9740636529508734, 0.9808159868191381, 0.9879271228182772, 0.995389371050344, 1.0031948963187558, 1.0113357503816423, 1.0198039027185566, 1.0285912696499029, 1.0376897416858275, 1.0470912090166737, 1.0567875850898323, 1.0667708282475665, 1.0770329614269005, 1.0875660899458015, 1.0983624174196782, 1.109414259868693, 1.1207140580897517, 1.1322543883774525, 1.144027971686007, 1.1560276813294736, 1.1682465493208183, 1.180677771451635, 1.1933147112141034, 1.2061509026651678, 1.2191800523302532, 1.2323960402403111, 1.2457929201917946, 1.259364919314493, 1.2731064370271634, 1.287012043455693, 1.301076477383247, 1.3152946437965902, 1.3296616110875723, 1.3441726079637237 ], [ 0.9610411021387169, 0.9654014708917733, 0.970154626850792, 0.9752948272189285, 0.9808159868191381, 0.9867117106835205, 0.9929753269845124, 0.9995999199679837, 1.0065783625729292, 1.0139033484509257, 1.0215674231297704, 1.0295630140986998, 1.0378824596263294, 1.0465180361560902, 1.0554619841567006, 1.0647065323364928, 1.0742439201596625, 1.084066418629412, 1.094166349327194, 1.1045361017187258, 1.1151681487560516, 1.1260550608207396, 1.1371895180663596, 1.1485643212288978, 1.1601724009818537, 1.1720068259186884, 1.1840608092492544, 1.196327714299054, 1.2088010589009257, 1.2214745187681972, 1.2343419299367573, 1.2473972903610135, 1.2606347607455535, 1.2740486646906384, 1.2876334882255893, 1.3013838787997947, 1.3152946437965902, 1.329360748630709, 1.3435773144854741, 1.3579396157414358 ], [ 0.9806120537705005, 0.98488578017961, 0.9895453501482381, 0.994585340732508, 0.9999999999999996, 1.0057832768544122, 1.0119288512538809, 1.0184301645179208, 1.0252804494381034, 1.032472759931224, 1.0399999999999996, 1.0478549517943783, 1.0560303025955264, 1.0645186705737006, 1.0733126291998987, 1.082404730218784, 1.091787525116494, 1.1014535850411487, 1.111395519155984, 1.1216059914247958, 1.132077735846792, 1.1428035701729318, 1.153776408148476, 1.1649892703368554, 1.1764352935882187, 1.1881077392223311, 1.1999999999999995, 1.2121056059601403, 1.2244182292011168, 1.2369316876852978, 1.2496399481450642, 1.2625371281669298, 1.2756174975281573, 1.2888754788574412, 1.302305647687976, 1.315902731967678, 1.3296616110875723, 1.3435773144854741, 1.3576450198781707, 1.3718600511714008 ], [ 1.0001999800039985, 1.004390362359177, 1.0089598604503547, 1.0139033484509257, 1.0192153844992722, 1.024890238025516, 1.0309219175087894, 1.0373041983911948, 1.0440306508910546, 1.0510946674776727, 1.058489489791939, 1.0662082348209467, 1.0742439201596623, 1.0825894882179483, 1.0912378292562988, 1.1001818031580048, 1.1094142598686927, 1.1189280584559487, 1.1287160847617965, 1.1387712676389403, 1.1490865937778576, 1.1596551211459374, 1.170469991071962, 1.1815244390193538, 1.192811804099875, 1.2043255373859671, 1.2160592090848203, 1.2280065146406995, 1.2401612798341992, 1.2525174649480937, 1.265069168069477, 1.2778106275970624, 1.2907362240210036, 1.303840481040529, 1.317118066082156, 1.3305637902783911, 1.3441726079637237, 1.3579396157414358, 1.3718600511714008, 1.3859292911256325 ] ] }, { "line": { "color": "black", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ -0.2, -0.18000000000000002, -0.16000000000000003, -0.14000000000000004, -0.12000000000000005, -0.10000000000000006, -0.08000000000000007, -0.06000000000000008, -0.04000000000000009, -0.0200000000000001, -1.1102230246251565e-16, 0.01999999999999988, 0.03999999999999987, 0.05999999999999989, 0.07999999999999985, 0.09999999999999981, 0.11999999999999983, 0.13999999999999985, 0.1599999999999998, 0.17999999999999977, 0.1999999999999998, 0.2199999999999998, 0.23999999999999977, 0.25999999999999973, 0.27999999999999975, 0.29999999999999977, 0.3199999999999998, 0.3399999999999997, 0.3599999999999997, 0.3799999999999997, 0.39999999999999963, 0.41999999999999965, 0.43999999999999967, 0.4599999999999997, 0.4799999999999997, 0.4999999999999996, 0.5199999999999996, 0.5399999999999996, 0.5599999999999996, 0.5799999999999996, 0.5999999999999996, 0.6199999999999997, 0.6399999999999997, 0.6599999999999995, 0.6799999999999995, 0.6999999999999995, 0.7199999999999995, 0.7399999999999995, 0.7599999999999996, 0.7799999999999996, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999994, 0.8799999999999994, 0.8999999999999995, 0.9199999999999995, 0.9399999999999995, 0.9599999999999995, 0.9799999999999995, 0.9999999999999993, 1.0199999999999994, 1.0399999999999994, 1.0599999999999994, 1.0799999999999994, 1.0999999999999994, 1.1199999999999994, 1.1399999999999995, 1.1599999999999995, 1.1799999999999993 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "black", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "y": [ -0.2, -0.18000000000000002, -0.16000000000000003, -0.14000000000000004, -0.12000000000000005, -0.10000000000000006, -0.08000000000000007, -0.06000000000000008, -0.04000000000000009, -0.0200000000000001, -1.1102230246251565e-16, 0.01999999999999988, 0.03999999999999987, 0.05999999999999989, 0.07999999999999985, 0.09999999999999981, 0.11999999999999983, 0.13999999999999985, 0.1599999999999998, 0.17999999999999977, 0.1999999999999998, 0.2199999999999998, 0.23999999999999977, 0.25999999999999973, 0.27999999999999975, 0.29999999999999977, 0.3199999999999998, 0.3399999999999997, 0.3599999999999997, 0.3799999999999997, 0.39999999999999963, 0.41999999999999965, 0.43999999999999967, 0.4599999999999997, 0.4799999999999997, 0.4999999999999996, 0.5199999999999996, 0.5399999999999996, 0.5599999999999996, 0.5799999999999996, 0.5999999999999996, 0.6199999999999997, 0.6399999999999997, 0.6599999999999995, 0.6799999999999995, 0.6999999999999995, 0.7199999999999995, 0.7399999999999995, 0.7599999999999996, 0.7799999999999996, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999994, 0.8799999999999994, 0.8999999999999995, 0.9199999999999995, 0.9399999999999995, 0.9599999999999995, 0.9799999999999995, 0.9999999999999993, 1.0199999999999994, 1.0399999999999994, 1.0599999999999994, 1.0799999999999994, 1.0999999999999994, 1.1199999999999994, 1.1399999999999995, 1.1599999999999995, 1.1799999999999993 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "brown", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 0.4, 0.41000000000000003, 0.42000000000000004, 0.43000000000000005, 0.44000000000000006, 0.45000000000000007, 0.4600000000000001, 0.4700000000000001, 0.4800000000000001, 0.4900000000000001, 0.5000000000000001, 0.5100000000000001, 0.5200000000000001, 0.5300000000000001, 0.5400000000000001, 0.5500000000000002, 0.5600000000000002, 0.5700000000000002, 0.5800000000000002, 0.5900000000000002, 0.6000000000000002, 0.6100000000000002, 0.6200000000000002, 0.6300000000000002, 0.6400000000000002, 0.6500000000000002, 0.6600000000000003, 0.6700000000000003, 0.6800000000000003, 0.6900000000000003, 0.7000000000000003, 0.7100000000000003, 0.7200000000000003, 0.7300000000000003, 0.7400000000000003, 0.7500000000000003, 0.7600000000000003, 0.7700000000000004, 0.7800000000000004, 0.7900000000000004 ], "y": [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "orange", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], "y": [ 0.4, 0.41000000000000003, 0.42000000000000004, 0.43000000000000005, 0.44000000000000006, 0.45000000000000007, 0.4600000000000001, 0.4700000000000001, 0.4800000000000001, 0.4900000000000001, 0.5000000000000001, 0.5100000000000001, 0.5200000000000001, 0.5300000000000001, 0.5400000000000001, 0.5500000000000002, 0.5600000000000002, 0.5700000000000002, 0.5800000000000002, 0.5900000000000002, 0.6000000000000002, 0.6100000000000002, 0.6200000000000002, 0.6300000000000002, 0.6400000000000002, 0.6500000000000002, 0.6600000000000003, 0.6700000000000003, 0.6800000000000003, 0.6900000000000003, 0.7000000000000003, 0.7100000000000003, 0.7200000000000003, 0.7300000000000003, 0.7400000000000003, 0.7500000000000003, 0.7600000000000003, 0.7700000000000004, 0.7800000000000004, 0.7900000000000004 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "blue", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], "y": [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], "z": [ 0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56 ] } ], "layout": {} }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import sqrt\n", "X = np.arange(.2, 1, 0.02)\n", "Y = np.arange(0.2, 1, 0.02)\n", "t = np.arange(-0.2, 1.2, 0.02)\n", "s = np.arange(0.4, 0.8, 0.01)\n", "X,Y = np.meshgrid(X,Y)\n", "f= sqrt(X*X + Y*Y)\n", "z0=sqrt(0.4**2+0.4**2)\n", "u=np.arange(0., z0, 0.01)\n", "\n", "surface = go.Surface(x=X, y=Y, z=f,colorscale=0.5)\n", "Xaxis = go.Scatter3d(x=t, y=0*t, z=0*t,\n", " mode = \"lines\",\n", " line = dict(\n", " color='black',\n", " width = 5\n", " ) \n", " )\n", "Yaxis = go.Scatter3d(x=0*t, y=t, z=0*t,\n", " mode = \"lines\",\n", " line = dict(\n", " color='black',\n", " width = 5\n", " ) \n", " )\n", "X0 = go.Scatter3d(x=s, y=0.4+0*s, z=0*s,\n", " mode = \"lines\",\n", " line = dict(\n", " color='brown',\n", " width = 5\n", " ) \n", " )\n", "X01= go.Scatter3d(x=0.4+0*u, y=0.4+0*u, z=u,\n", " mode = \"lines\",\n", " line = dict(\n", " color='blue',\n", " width = 5\n", " ) \n", " )\n", "Y0 = go.Scatter3d(y=s, x=0.4+0*s, z=0*s,\n", " mode = \"lines\",\n", " line = dict(\n", " color='orange',\n", " width = 5\n", " ) \n", " )\n", "#Line2 = go.Scatter3d(x=0*t, y=t, z=0*t)\n", "#Line3 = go.Scatter3d(x=t, y=t, z=np.ones(len(t))/2)\n", "#Line4 = go.Scatter3d(x=t, y=-t, z=-np.ones(len(t))/2)\n", "data = [surface,Xaxis,Yaxis,X0,Y0,X01]\n", "\n", "fig = go.Figure(data=data)\n", "iplot(fig)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "The same definition can be also applied to the functions with more than two\n", "variables.\n", "\n", "Definition\n", "---\n", " Suppose that $(x^i_0) = (x_0^1, x_0^2, \\cdots, x_0^n)$ in the domain of $f\n", " (\\mathbf{x}) = f (x^1, x^2, \\cdots, x^n)$. The partial derivative with\n", " respect to $x^i$ at $(x^i_0)$ is defined as\n", " $$\\mathbf{ f_i (x_0)= \\left.\\frac{\\partial f}{\\partial x^i}(x)\\right|_{x= x_0} = \\lim_{k \\rightarrow 0} \\frac{f\n", " (x_0^1, \\cdots, x_0^{i - 1},\\color{red}{ x_0^i + k}, x_0^{i + 1}, \\cdots, x_0^n) - f\n", " (x_0^1, x_0^2, \\cdots, x_0^{i -1},\\color{red}{ x_0^i }, x_0^{i + 1},\\cdots,x_0^n)}{k}} $$\n", "\n", "\n", "Definition\n", "---\n", " $\\color{red}{(f_1, \\cdots, f_n)}$ is called gradient of $f (\\vec{x})$, denoted as $\\color{red}{\\nabla f}$.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", " Find the $\\frac{\\partial f}{\\partial x}, \\frac{\\partial f}{\\partial y},\n", " \\frac{\\partial f}{\\partial x} (1, 3), \\frac{\\partial f}{\\partial y} (2, -\n", " 4)$ if $f (x, y) = x^3 + 4 x^2 y^3 + y^2$." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡ 2 3 2 2 ⎤\n", "⎣3⋅x + 8⋅x⋅y , 12⋅x ⋅y + 2⋅y⎦\n" ] } ], "source": [ "from sympy import symbols, diff,pprint,sqrt\n", "x,y=symbols('x y')\n", "f=x**3+4*x*x*y**3+y*y\n", "\n", "grad = lambda func, vars :[diff(func,var) for var in vars]\n", "\n", "df=grad(f,[x,y])\n", "pprint(df)\n", " " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-9*sin(9) + cos(9), -6*sin(9)]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def df_val(f,val):\n", " return [ff.subs({x:val[0],y:val[1]}) for ff in f]\n", "df_val(df,[1,3])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-1012, 760]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_val(df,[2,-4])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", " Find the $\\frac{\\partial f}{\\partial x}$ if $f (x, y) = x^3 + 4 x^2 y^3 + y^2$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡ 3 2 2 2 ⎤\n", "⎣4⋅x⋅y + 4⋅x - 3⋅y , 6⋅x ⋅y - 6⋅x⋅y + 6⋅y⎦\n" ] } ], "source": [ "f=2*x**2*y**3-3*x*y**2+2*x**2+3*y*y*1\n", "\n", "grad = lambda func, vars :[diff(func,var) for var in vars]\n", "\n", "df=grad(f,[x,y])\n", "pprint(df)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", " Find the $\\mathbf{\\frac{\\partial f}{\\partial x}}$ if $f (x, y) = x \\cos xy^2$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡ 2 ⎛ 2⎞ ⎛ 2⎞ 2 ⎛ 2⎞⎤\n", "⎣- x⋅y ⋅sin⎝x⋅y ⎠ + cos⎝x⋅y ⎠, -2⋅x ⋅y⋅sin⎝x⋅y ⎠⎦\n" ] } ], "source": [ "from sympy import cos\n", "x,y=symbols(\"x y\")\n", "f=x*cos(x*y**2)\n", "\n", "grad = lambda func, vars :[diff(func,var) for var in vars]\n", "\n", "df=grad(f,[x,y])\n", "pprint(df)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Find all the first partial derivatives of Cobb-Douglas function with $n$\n", " inputs,\n", " $$ f (x_1, \\cdots, x_n) = A x_1^{\\alpha_1} \\cdots x_n^{\\alpha_n}\n", " \\text{ where } A > 0, 0 < \\alpha_1, \\cdots \\alpha_n < 1 $$\n", " Sol:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x_i} & = & A x_1^{\\alpha_1} \\cdots x_{i -\n", " 1}^{\\alpha_{i - 1}} \\color{brown}{\\alpha_i x_i^{\\alpha_i - 1}} x_{i +\n", " 1}^{\\alpha_{i + 1}} \\cdots x_n^{\\alpha_n}\\\\\n", " & = & A \\alpha_i x_1^{\\alpha_1} \\cdots x_{i - 1}^{\\alpha_{i - 1}}\n", " x_i^{\\alpha_i} x_{i + 1}^{\\alpha_{i + 1}} \\cdots x_n^{\\alpha_n} / x_i\\\\\n", " & = & \\alpha_i \\frac{f (x_1, \\cdots, x_n)}{x_i} \\text{ for } i = 1,\n", " \\cdots, n\n", " \\end{eqnarray*}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Eexample\n", "---\n", " A factory produces two kinds of machine parts, says A and B. If the totally\n", " daily cost function of production of $x$ hundred units of A and $y$ hundred\n", " units of B is: \n", " $$ C (x, y) = 200 + 10 x + 20 y - \\sqrt{x + y} $$" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-sqrt(11)/22 + 10, -sqrt(11)/22 + 20]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C = 200+10*x+20*y-sqrt(x+y)\n", "Cxy=grad(C,[x,y])\n", "df_val(Cxy,[5,6])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " $\\frac{\\partial C}{\\partial x} (5, 6) = 10 - \\frac{1}{22} \\sqrt{11}$,i.e.\n", " an increase for $x$ from 5 to 6 while y kept at 6 will result in an increase\n", " in daily cost function approximately $9.85$. And\n", " $\\frac{\\partial C}{\\partial y} (5, 6) = 20 - \\sqrt{11} /\n", " 22$, i.e. an increase for $y$ from 6 to 7 while $x$ kept at 5 will result in\n", " an increase in daily cost function approximately $19.85$.\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " If $f (x, y) = x^2 e^{y^3} + \\sqrt{2 x + 3 y}$, $\\frac{\\partial f}{\\partial\n", " x} = 2 x e^{y^3} + (2 x + 3 y)^{- 1 / 2}$ and $\\frac{\\partial f}{\\partial y}\n", " = 3 x^2 y^2 e^{y^3} + \\frac{3}{2} (2 x + 3 y)^{- 1 / 2}$\n", " \n", "Solution\n", "---\n", " \n", "Since the partial differentiation only works for the defaulted variables, in\n", "other words, the left variables are treated as constants in such operation. Therefore\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial}{\\partial x} \\left( x^2 e^{y^3} + \\sqrt{2 x + 3 y} \\right)\n", " & = & e^{y^3} \\frac{\\partial}{\\partial x} x^2 + \\frac{\\partial}{\\partial\n", " x} \\sqrt{2 x + 3 y}\\\\\n", " & = & e^{y^3} \\cdot 2 x + 2 \\cdot \\frac{1}{2 \\sqrt{2 x + 3 y}}\\\\\n", " & = & 2 x e^{y^3} + \\frac{1}{\\sqrt{2 x + 3 y}}\n", " \\end{eqnarray*}\n", " Note that the last result comes from the {\\tmstrong{Chain Rule}} as follows:\n", " \n", "\n", "\n", "As the same reason, we also have the result for partial derivative with\n", " respect to $y$:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial}{\\partial y} \\left( x^2 e^{y^3} + \\sqrt{2 x + 3 y} \\right)\n", " & = & x^2 \\frac{\\partial}{\\partial y} e^{y^3} + \\frac{\\partial}{\\partial\n", " y} \\sqrt{2 x + 3 y}\\\\\n", " & = & 3 x^2 y^2 e^{y^3} + \\frac{3}{2 \\sqrt{2 x + 3 y}}\n", " \\end{eqnarray*} \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "Find out the first order derivatives for $f (x, y) = x \\sqrt{y} - y\n", " \\sqrt{x}$." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[sqrt(y) - y/(2*sqrt(x)), -sqrt(x) + x/(2*sqrt(y))]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=x*sqrt(y)-y*sqrt(x)\n", "grad(f,[x,y])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", " For Cobb-Douglas production function, $f (K, L) = 20 K^{1 / 4} L^{3 / 4}$\n", "1. **The marginal productivity of capital** when $K = 16$ and $L =81$ is \n", "$\\frac{\\partial f}{\\partial K} (16, 81) = \\frac{135}{8},$ i.e. an\n", " increase in $K$ from 16 to 17 will result in an increase of approximately\n", " ${\\frac{135}{8}}$ units of productions.\n", "- **The marginal productivity of labor** when $K = 16$ and $L =\n", " 81$ is $\\frac{\\partial f}{\\partial L} (16, 81) = 10,$ i.e. an increase in\n", " $L$ from 81 to 82 will result in an increase of approximately 10 units of\n", " productions.\n", "\n", "**Description**\n", " \n", "Note the partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial K} & = & 5 \\left( \\frac{L}{K} \\right)^{3 / 4}\\\\\n", " \\frac{\\partial f}{\\partial L} & = & 15 \\left( \\frac{K}{L} \\right)^{1 / 4}\n", " \\end{eqnarray*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", " For Cobb-Douglas production function, $f (K, L) = 20 K^{2/3} L^{1/3}$\n", "1. **The marginal productivity of capital** when $K = 125$ and $L =27$ is \n", "$\\frac{\\partial f}{\\partial K} (125, 27) = {8},$ i.e. an\n", " increase in $K$ from 125 to 126 will result in an increase of approximately\n", " ${8}$ units of productions.\n", "- **The marginal productivity of labor** when $K = 125$ and $L =\n", " 27$ is $\\frac{\\partial f}{\\partial L} (125, 27) = 18\\frac{14}{27},$ i.e. an increase in\n", " $L$ from 27 to 28 will result in an increase of approximately $18\\frac{14}{27}$ units of\n", " productions.\n", "\n", "**Description**\n", " \n", "Note the partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial K} & = & \\frac{40}{3} \\left( \\frac{L}{K} \\right)^{1 / 3}\\\\\n", " \\frac{\\partial f}{\\partial L} & = & \\frac{20}{3} \\left( \\frac{K}{L} \\right)^{2 / 3}\n", " \\end{eqnarray*}" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Two products are said to be **competitive** with each other if an\n", "increase in demand for one results in a decrease in demand for the other.\n", "**Complementary** products have just the opposite relation to each other.\n", "Suppose that $f (p, q)$ and $g (p, q)$ are the demand for products, $A$ and\n", "$B$, at respective price $p$ and $q$. We have\n", "\n", "1. $\\frac{\\partial f}{\\partial p} < 0$ and $\\frac{\\partial g}{\\partial q}\n", " < 0$ sine raising price always results in a decrease in demand.\n", "- If $\\frac{\\partial f}{\\partial q} > 0$ and $\\frac{\\partial g}{\\partial\n", " p} > 0$ Then $A$ and $B$ are in **competitive** case at price level\n", " $(p, q)$.\n", "- If $\\frac{\\partial f}{\\partial q} < 0$ and $\\frac{\\partial g}{\\partial\n", " p} < 0$ Then $A$ and $B$ are in **complementary** case at price level\n", " $(p, q)$.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", "If $f (p, q) = 400 - 5 p^2 + 16 q$ and $g (p, q) = 600 + 12 p - 4 q^2$, then\n", " $A$ and $B$ are competitive since\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial q} & = & 16 > 0\\\\\n", " \\frac{\\partial g}{\\partial p} & = & 12 > 0\n", "\\end{eqnarray*}\n", "\n", "Example\n", "---\n", "If $f (p, q) = \\frac{30 p}{2 p + 3 q}$ and $g (p, q) = \\frac{10 q}{p + 4\n", " q}$, then $A$ and $B$ are complementary since\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial q} & = & \\frac{\\partial}{\\partial q} \n", " \\frac{30 p}{2 p + 3 q}\\\\\n", " & = & \\frac{- 90 p}{(2 p + 3 q)^2} < 0\\\\\n", " \\frac{\\partial g}{\\partial p} & = & \\frac{\\partial}{\\partial p} \n", " \\frac{10 q}{p + 4 q}\\\\\n", " & = & \\frac{- 10 q}{(p + 4 q)^2} < 0\n", "\\end{eqnarray*}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Implicit Differentiation\n", "---\n", "Suppose that $z$ is differentiable and defined implicitly as follows:\n", "$$ x^2+y^3-z+2yz^2=5.$$\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sympy import Function,solve\n", "x,y = symbols('x y')\n", "z = Function('z')(x,y)\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2*x + 4*y*z(x, y)*Derivative(z(x, y), x) - Derivative(z(x, y), x),\n", " 3*y**2 + 4*y*z(x, y)*Derivative(z(x, y), y) + 2*z(x, y)**2 - Derivative(z(x, y), y)]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq= x**2+y**3-z+2*y*z**2-5\n", "gradv=grad(eq,[x,y])\n", "gradv" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dz/dx = -2*x/(4*y*z(x, y) - 1)\n" ] } ], "source": [ "pprint(\"dz/dx = %s\" %solve(gradv[0],diff(z, x))[0])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dz/dy = -(3*y**2 + 2*z(x, y)**2)/(4*y*z(x, y) - 1)\n" ] } ], "source": [ "pprint(\"dz/dy = %s\" %solve(gradv[1],diff(z, y))[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "**a).** If $f(x,y,z)=x^2y+y^2z+zx$, then $f_x=2xy+z$;
\n", "**b).** If $h(x,y,zw)=\\frac{xw^2}{y+\\sin zw}$, then $h_w=$\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 2 \n", " w ⋅x⋅z⋅cos(w⋅z) 2⋅w⋅x \n", "- ─────────────── + ────────────\n", " 2 y + sin(w⋅z)\n", " (y + sin(w⋅z)) \n" ] } ], "source": [ "from sympy import sin\n", "x,y,z,w=symbols(\" x y z w\")\n", "f=x*w**2/(y+sin(z*w))\n", "pprint(diff(f,w))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note\n", "---\n", " Higher order partial derivative. As the functions of single variable, we can\n", " define what the higher order partial derivatives of functions with multiple\n", " variables as follows:\n", "\n", "1. Two variables: Suppose that $f (x, y)$ is smooth enough,\n", " \n", "**Partial derivatives for $f (x, y)$**\n", "\n", "\n", "| Order | Partial Derivatives |\n", "|---|---|\n", "| 1st |$\\mathbf{f_1 = \\frac{\\partial f}{\\partial x}, f_2 = \\frac{\\partial f}{\\partial y}}$|\n", "| 2nd | $\\mathbf{f_{ij} = \\frac{\\partial^2f}{\\partial x^j\\partial x^i}}$|\n", "|More | $\\mathbf{f_{\\cdots i} = \\frac{\\partial f_{\\cdots}}{\\partial x^i} }$|\n", "\n", "\n", "\n", "**2.** More than two variables: Suppose that $f (\\vec{x}) = f (x^1,\n", " \\cdots, x^n) \\color{brown}{\\text{ (or denoted as } f\n", " (x^i))}$ is smooth enough,\n", " \n", "|Order | partial derivatives |\n", "|---|---|\n", "|1st | $\\mathbf{f_i = \\frac{\\partial f}{\\partial x^i}}$, for $i = 1, \\cdots,n$ |\n", "|2nd | $\\mathbf{f_{i j} = \\frac{\\partial^2f}{\\partial x^i\\partial x^j}},$ for $1 \\leqslant i, j \\le n$ |\n", "|More | $\\mathbf{f_{\\color{red}{\\cdots} i} = \\frac{\\partial}{\\partial x^i}f_{\\color{red}{\\cdots}}}$, for $i = 1, \\cdots, n$ |\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Example\n", "---\n", " Find the second order derivatives of $f (x, y) = x^2 y^3 + e^{4 x} \\ln y$.\n", " \n", " All the 1st order partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} = 2 x \\cdot y^3 + 4 e^{4 x} \\cdot \\ln y &\n", " \\text{and} & \\frac{\\partial f}{\\partial y} = x^2 \\cdot 3 y^2 + e^{4 x}\n", " \\cdot \\frac{1}{y}\n", " \\end{eqnarray*}\n", " And all the 2nd order of partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial^2 f}{\\partial x^2} & = & \\frac{\\partial}{\\partial x} (2 x\n", " y^3 + 4 e^{4 x} \\ln y)\\\\\n", " & = & 2 \\cdot y^3 + 16 e^{4 x} \\cdot \\ln y\\\\\n", " \\frac{\\partial^2 f}{\\partial y^2} & = & \\frac{\\partial}{\\partial y} \\left(\n", " 3 x^2 y^2 + e^{4 x} \\frac{1}{y} \\right)\\\\\n", " & = & 6 x^2 y - e^{4 x} \\frac{1}{y^2}\\\\\n", " \\frac{\\partial^2 f}{\\partial y \\partial x} & = & \\frac{\\partial}{\\partial\n", " y} (2 x y^3 + 4 e^{4 x} \\ln y)\\\\\n", " & = & 2 x \\cdot 3 y^2 + 4 e^{4 x} \\cdot \\frac{1}{y}\\\\\n", " \\frac{\\partial^2 f}{\\partial x \\partial y} & = & 6 x y^2 + 4 e^{4 x} / y\n", " \\end{eqnarray*}" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2*x*y**3 + 4*exp(4*x)*log(y), 3*x**2*y**2 + exp(4*x)/y]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import exp,log\n", "\n", "f=x*x*y**3+exp(4*x)*log(y)\n", "X=[x,y]\n", "g=grad(f,X)\n", "g" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡⎡ 4⋅x⎤ ⎡ 4⋅x 4⋅x⎤⎤\n", "⎢⎢ 3 4⋅x 2 4⋅ℯ ⎥ ⎢ 2 4⋅ℯ 2 ℯ ⎥⎥\n", "⎢⎢2⋅y + 16⋅ℯ ⋅log(y), 6⋅x⋅y + ──────⎥, ⎢6⋅x⋅y + ──────, 6⋅x ⋅y - ────⎥⎥\n", "⎢⎣ y ⎦ ⎢ y 2 ⎥⎥\n", "⎣ ⎣ y ⎦⎦\n" ] } ], "source": [ "pprint([[diff(gg,var) for gg in g] for var in X])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Find the first three order derivatives of $f (x, y) = 4 x^2 - 6 x y^3$.\n", " \n", " All the 1st order partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} = 8 x - 6 y^3 & \\text{and} & \\frac{\\partial\n", " f}{\\partial y} = 0 - 6 x \\cdot 3 y^2\n", " \\end{eqnarray*}\n", " And the 2nd order of partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial^2 f}{\\partial x^2} & = & \\frac{\\partial}{\\partial x} (8 x -\n", " 6 y^3)\\\\\n", " & = & 8\\\\\n", " \\frac{\\partial^2 f}{\\partial y^2} & = & \\frac{\\partial}{\\partial y} (- 18\n", " x y^2)\\\\\n", " & = & - 36 x y\\\\\n", " \\frac{\\partial^2 f}{\\partial y \\partial x} & = & \\frac{\\partial}{\\partial\n", " y} (8 x - 6 y^3)\\\\\n", " & = & 0 - 12 y^2\\\\\n", " \\frac{\\partial^2 f}{\\partial x \\partial y} & = & - 12 x y^2\n", " \\end{eqnarray*}\n", " And 3rd order of partial derivatives are as follows:\n", "\n", "\\begin{eqnarray*}\n", " f_{111} & = & \\frac{\\partial}{\\partial x} (8) = 0\\\\\n", " f_{222} & = & \\frac{\\partial}{\\partial y} (- 36 x y) = - 36 x\\\\\n", " f_{112} = f_{121} = f_{211} & = & \\frac{\\partial}{\\partial y} (8 - 6 y^3)\n", " = - 18 y^2\\\\\n", " f_{122} = f_{212} = f_{221} & = & \\frac{\\partial}{\\partial x} (- 36 x y) =\n", " - 36 x\n", " \\end{eqnarray*}\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=4*x**2-6*x*y**3\n", "diff(f,x,y)==diff(f,y,x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "Let $f(x,y,z)=x e^{yz}$, then\n", "\n", "1. $f_{xzy}=(1+yz)e^{yz}$,\n", "- $f_{yzx}=(1+yz)e^{yz}$,\n", "\n", "They are equal to with respectively." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Theorem\n", "---\n", " If $\\frac{\\partial f}{\\partial x}$, $\\frac{\\partial f}{\\partial y},\n", " \\frac{\\partial^2 f}{\\partial x \\partial y}$ ,$\\frac{\\partial^2 f}{\\partial y\n", " \\partial x}$ are all continuous near $(x_0, y_0)$, then $\\frac{\\partial^2\n", " f}{\\partial x \\partial y} (x_0, y_0) = \\frac{\\partial^2 f}{\\partial y\n", " \\partial x} (x_0, y_0)$.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "For $f(x,y,z)=x e^{yz}$, " ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fxzy= (y*z + 1)*exp(y*z)\n" ] } ], "source": [ "from sympy import exp\n", "f=x*exp(y*z)\n", "pprint(\"fxzy= %s\" %diff(f,x,z,y) )" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fyxz= (y*z + 1)*exp(y*z)\n" ] } ], "source": [ "from sympy import exp\n", "f=x*exp(y*z)\n", "pprint(\"fyxz= %s\" %diff(f,y,x,z) )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", "Suppose that\n", "$$ f (x, y) = \\left\\{ \\begin{array}{ll}\n", " \\frac{x^3 y - y^3 x}{x^2 + y^2} & \\text{ if } (x, y) \\neq (0.0) \\\\\n", " 0 & \\text{ if } (x, y) = (0.0)\n", " \\end{array} \\right. $$\n", " \n", " \n", " $f (x, y)$ is continuous at $(0, 0)$.\n", "\n", "**1.** first partial derivatives of $f (x.y)$ where $(x, y) \\neq (0, 0)$:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} & = & \\frac{(3 x^2 y + y^3) (x^2 + y^2) -\n", " 2 x (x^3 y + y^3 x)}{(x^2 + y^2)^2}\\\\\n", " & = & \\frac{- y^5 + 4 x^2 y^3 + x^4 y}{(x^2 + y^2)^2}\\\\\n", " \\frac{\\partial f}{\\partial y} & = & \\frac{x^5 - 4 y^2 x^3 - y^4 x}{(x^2\n", " + y^2)^2}\n", " \\end{eqnarray*}\n", "\n", "\n", "**2.** first partial derivatives of $f (x.y)$ at $(x, y) = (0, 0)$:\n", " \n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} (0, 0) & = & \\lim_{h \\rightarrow 0}\n", " \\frac{f (h, 0) - f (0, 0)}{h}\\\\\n", " & = & 0\\\\\n", " \\frac{\\partial f}{\\partial x} (0, 0) & = & 0\n", " \\end{eqnarray*}\n", "\n", "**3.** Second partial derivatives $\\frac{\\partial^2 f}{\\partial x\\partial y}$ and $\\frac{\\partial^2 f}{\\partial y \\partial x}$ of $f (x.y)$ where $(x, y) = (0, 0)$:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial^2 f}{\\partial x^{} \\partial y} (0, 0) & = & \\lim_{h\n", " \\rightarrow 0} \\frac{f_y (h, 0) - f_y (0, 0)}{h}\\\\\n", " & = & \\lim_{h \\rightarrow 0} \\frac{\\frac{- h^5 + 40^2 h^3 + 0^4 h}{(h^2\n", " + 0^2)^2} - 0}{h} = - 1\\\\\n", " \\frac{\\partial^2 f}{\\partial y^{} \\partial x} (0, 0) & = & \\lim_{k\n", " \\rightarrow 0} \\frac{f_x (0, k) - f_x (0, 0)}{k}\\\\\n", " & = & \\lim_{k \\rightarrow 0} \\frac{\\frac{k^5 - 40^2 k^3 - 0^4 k}{(0^2 +\n", " k^2)^2} - 0}{k} = 1\n", " \\end{eqnarray*}\n", "\n", "The last result shows $\\color{red}{\\frac{\\partial^2 f}{\\partial x\\partial y} (0, 0) \\neq \\frac{\\partial^2 f}{\\partial y \\partial x} (0, 0)}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Definition\n", "---\n", " A function, $u(x,y)$,is called harmonic if \n", " $$\\frac{\\partial^2u}{\\partial x^2}+\\frac{\\partial^2u}{\\partial y^2}=0$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " $u=e^x\\cos y$ is harmonic,\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x,y=symbols(\"x y\")\n", "u=exp(x)*cos(y)\n", "diff(u,x,x)+diff(u,y,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercise p. 1069\n", "---" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡ x y ⎤\n", "⎢ ℯ ℯ ⎥\n", "⎢───────, ───────⎥\n", "⎢ x y x y⎥\n", "⎣ℯ + ℯ ℯ + ℯ ⎦\n" ] } ], "source": [ "# 20 log(exp(x)+exp(y))\n", "from sympy import log,exp,cos,sin,diff,integrate,symbols,Matrix\n", "z=log(exp(x)+exp(y))\n", "pprint(grad(z,[x,y]))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-cos(x), cos(y)]\n" ] } ], "source": [ "# 22 partial derivative of int_x^y cos t dt\n", "\n", "t=symbols(\"t\")\n", "f=integrate(cos(t),[t,x,y])\n", "pprint(grad(f,[x,y]))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dz/dx = 2*sin(x + 2*y)/(y*cos(y*z(x, y)))\n", "dz/dy = (-z(x, y) + 4*sin(x + 2*y)/cos(y*z(x, y)))/y\n" ] } ], "source": [ "#32 2cos(x+2y)+sin yz -1=0\n", "z=Function(\"z\")(x,y)\n", "eq= 2*cos(x+2*y)+sin(y*z)-1\n", "\n", "gradv=grad(eq,[x,y])\n", "\n", "pprint(\"dz/dx = %s\" %solve(gradv[0],diff(z, x))[0])\n", "pprint(\"dz/dy = %s\" %solve(gradv[1],diff(z, y))[0])" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fxx = (-x**2/(x**2 + y**2) + 1)/sqrt(x**2 + y**2)\n", "fxy = fyx = -x*y/(x**2 + y**2)**(3/2)\n", "fyy = (-y**2/(x**2 + y**2) + 1)/sqrt(x**2 + y**2)\n" ] } ], "source": [ "#38 Second derivate of \\sqrt(x^2+y^2)\n", "from sympy import sqrt\n", "f= sqrt(x**2+y**2)\n", "pprint(\"fxx = %s\" %diff(f, x,x))\n", "pprint(\"fxy = fyx = %s\" %diff(f, x,y))\n", "pprint(\"fyy = %s\" %diff(f, y,y))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#46 f=exp(-2x)cos(3y), fxy=fyx\n", "f=exp(-2*x)*sin(3*y)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def highdiff(f,xy):\n", " fpart=f\n", " for x in xy:\n", " fpart=diff(fpart,x)\n", " return fpart " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fxy = fyx = -2*x**2*y**3*cos(x*y**2) - 4*x*y*sin(x*y**2)\n" ] } ], "source": [ "fxy = highdiff(f,[x,y])\n", "fyx = highdiff(f,[y,x])\n", "if (fxy == fyx):\n", " print(\"fxy = fyx = %s\" %fxy)\n", "else:\n", " print(\"fxy ≠ fyx and fxy= %s, fyx= %s\" %(fxy,fyx))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#90.\n", "\n", "Suppose that\n", "$$ f (x, y) = \\left\\{ \\begin{array}{ll}\n", " \\frac{xy(x^2 - y^2)}{x^2 + y^2} & \\text{ if } (x, y) \\neq (0.0) \\\\\n", " 0 & \\text{ if } (x, y) = (0.0)\n", " \\end{array} \\right. $$\n", " \n", " \n", " $f (x, y)$ is continuous at $(0, 0)$.\n", "\n", "**a.** first partial derivatives of $f (x.y)$ where $(x, y) \\neq (0, 0)$:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} & = & \\frac{(3 x^2 y + y^3) (x^2 + y^2) -\n", " 2 x (x^3 y + y^3 x)}{(x^2 + y^2)^2}\\\\\n", " & = & \\frac{- y^5 + 4 x^2 y^3 + x^4 y}{(x^2 + y^2)^2}\\\\\n", " \\frac{\\partial f}{\\partial y} & = & \\frac{x^5 - 4 y^2 x^3 - y^4 x}{(x^2\n", " + y^2)^2}\n", " \\end{eqnarray*}\n", "\n", "\n", "**b.** first partial derivatives of $f (x.y)$ at $(x, y) = (0, 0)$:\n", " \n", "\\begin{eqnarray*}\n", " \\frac{\\partial f}{\\partial x} (0, 0) & = & \\lim_{h \\rightarrow 0}\n", " \\frac{f (h, 0) - f (0, 0)}{h}\\\\\n", " & = & 0\\\\\n", " \\frac{\\partial f}{\\partial x} (0, 0) & = & 0\n", " \\end{eqnarray*}\n", "\n", "**c.** Second partial derivatives $\\frac{\\partial^2 f}{\\partial x\\partial y}$ and $\\frac{\\partial^2 f}{\\partial y \\partial x}$ of $f (x.y)$ where $(x, y) = (0, 0)$:\n", "\n", "\\begin{eqnarray*}\n", " \\frac{\\partial^2 f}{\\partial x^{} \\partial y} (0, 0) & = & \\lim_{h\n", " \\rightarrow 0} \\frac{f_y (h, 0) - f_y (0, 0)}{h}\\\\\n", " & = & \\lim_{h \\rightarrow 0} \\frac{\\frac{- h^5 + 40^2 h^3 + 0^4 h}{(h^2\n", " + 0^2)^2} - 0}{h} = - 1\\\\\n", " \\frac{\\partial^2 f}{\\partial y^{} \\partial x} (0, 0) & = & \\lim_{k\n", " \\rightarrow 0} \\frac{f_x (0, k) - f_x (0, 0)}{k}\\\\\n", " & = & \\lim_{k \\rightarrow 0} \\frac{\\frac{k^5 - 40^2 k^3 - 0^4 k}{(0^2 +\n", " k^2)^2} - 0}{k} = 1\n", " \\end{eqnarray*}\n", "\n", "The last result shows $\\color{red}{\\frac{\\partial^2 f}{\\partial x\\partial y} (0, 0) \\neq \\frac{\\partial^2 f}{\\partial y \\partial x} (0, 0)}$. This does not contradict **Clairaut's Theorem** since $f_{xy},f_{yx}$ are not continuous at $(0,0)$ since\n", "$$ \\lim_{x=0,y\\to0}f_{x,y}(x,y)\\ne f_{x,y}(0,0)$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Differentials\n", "---\n", "Let $f(x,y)$, and let $\\triangle x,\\triangle y$ be the increments of $x$ and $y$ respectively. Then the (total) differential $dz$ is \n", "\n", "$$\\mathbf{dz=\\frac{\\partial f}{\\partial x}dx+\\frac{\\partial f}{\\partial y}dy=f_xdx+f_ydy}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example** Let $f(x,y)=2x^2-xy$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def differential(func,xy):\n", " df=\"\"\n", " for x in xy:\n", " fx=diff(func,x)\n", " if df!=\"\":\n", " df=\"%s + (%s) d%s\" %(df,fx,x)\n", " else: \n", " df=\"(%s) d%s\" %(fx,x)\n", " return df " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4*x - y) dx + (-x) dy\n" ] } ], "source": [ "f=2*x**2-x*y\n", "df=differential(f,[x,y])\n", "print(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While $(x,y)$ changes from (1,1) to (0.98,1.03):\n", "1. $dx= 0.98-1=0.02, dy=1.03-1)$,\n", "- $dz = (4\\times1-1)dx-1dy=-0.09$,\n", "- $\\triangle z= z(0.98,1.03)-z(1,1)\\approx-0.0886\\sim dz$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example, body mass index (BMI)\n", "---\n", "The body mass index (BMI) or Quetelet index is a value derived from the mass (weight) and height of an individual. The BMI is defined as the body mass divided by the square of the body height, and is universally expressed in units of kg/m2, \n", "$$\\text{ BMI }=\\frac{\\text{ weight }}{\\text{ height}^2}$$\n", "resulting from mass in kilograms and height in metres.\n", "\n", "What's the increase of BMI if one's weight increases from 68 kg to 70 kg and height increases from 169cm to 170cm?\n", "\n", "**Sol**. As problem stated, assume \n", "\n", "$$\\text{ BMI}(w,h)=\\frac{w}{h^2}$$\n", "where $w,h$ represent one's weight (in kg) and height (in m)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[h**(-2), -2*w/h**3]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w,h=symbols(\"w h\")\n", "BMI= w/h/h\n", "dBMI=grad(BMI,[w,h])\n", "#df_val(BMI,[2,0.01])\n", "dBMI" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'(h**(-2)) dw + (-2*w/h**3) dh'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "differential(BMI,[w,h])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BMI increases from 23.809 to 24.221, approximately 0.018 (exactly 0.017)\n" ] } ], "source": [ "h=1.69\n", "dh=0.01\n", "w=68\n", "dw=2\n", "whh0=w/h/h\n", "whh1=(w+dw)/(h+dh)/(h+dh)\n", "exact=(whh1-whh0)/whh0\n", "dBMIvalpercent=(dw/h/h-2*dh*w/h/h/h)/whh0\n", "print(\"BMI increases from %5.3f to %5.3f, approximately %4.3f (exactly %4.3f)\" \n", " %(whh0,whh1,dBMIvalpercent,exact))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "p. 1082\n", "---" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "((x + y/2)/sqrt(x**2 + x*y + z**2)) dx + (x/(2*sqrt(x**2 + x*y + z**2))) dy + \n", "(z/sqrt(x**2 + x*y + z**2)) dz\n" ] } ], "source": [ "#16\n", "z=symbols(\"z\")\n", "w=sqrt(x*x+x*y+z**2)\n", "wxyz=differential(w,[x,y,z])\n", "pprint(wxyz)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Chain Rule\n", "---\n", "\n", "As result in one-variable function:\n", "$$ \\frac{d y}{d t} = \\frac{d y}{d x} \\frac{d x}{d t} $$\n", "we also have the similar result for multivariate functions:\n", "$$ \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial t^i}\n", " \\end{array}\\right) = \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial x^j}\n", " \\end{array}\\right) \\left(\\begin{array}{c}\n", " \\frac{\\partial x^j}{\\partial t^i}\n", " \\end{array}\\right) $$\n", "where\n", "\n", "\\begin{eqnarray*}\n", " \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial t^i}\n", " \\end{array}\\right) & = & \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial t^1}, \\frac{\\partial z}{\\partial t^2}, \\cdots,\n", " \\frac{\\partial z}{\\partial t^n} \n", " \\end{array}\\right)\\\\\n", " \\left(\\begin{array}{c}\n", " \\frac{\\partial x^j}{\\partial t^i}\n", " \\end{array}\\right) & = & \\left(\\begin{array}{ccc}\n", " \\frac{\\partial x^1}{\\partial t^1} & \\cdots & \\frac{\\partial x^1}{\\partial\n", " t^n}\\\\\n", " \\vdots & \\ddots & \\vdots\\\\\n", " \\frac{\\partial x^m}{\\partial t^1} & \\cdots & \\frac{\\partial x^m}{\\partial\n", " t^n}\n", " \\end{array}\\right)\n", "\\end{eqnarray*}" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def ChainRule(func, x,t,xt,output=False):\n", " z=Matrix([func])\n", " X=Matrix(x)\n", " n=len(x)\n", " Xt=Matrix(x).subs({x[n]:xt[n] for n in range(len(x))})\n", " T=Matrix(t)\n", " dzdt=z.jacobian(X).subs({x[n]:xt[n] for n in range(len(x))})*Xt.jacobian(T)\n", " if len(t)!=1:\n", " print(\"∂ %s /∂ %s\\n\" %(func,t)) \n", " pprint(dzdt)\n", " else:\n", " print(\"d ( %s) /d %s\\n\" %(func,t)) \n", " pprint(dzdt)\n", " if output==True: \n", " return dzdt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example, ($\\mathbb{R} (t)\\to\\mathbb{R}^n(\\mathbf{x}_{1\\times n})\\to\\mathbb{R}(f(\\mathbf{x}(t))$)\n", "---\n", "$$\\frac{d W}{d t}=\\frac{\\partial W}{\\color{red}{\\partial \\mathbf{x}}}\\frac{\\color{red}{d \\mathbf{x}}}{d t}\n", " = \\left[\\begin{array}{cccc}\n", " \\frac{\\partial W}{\\partial x^1} & \\frac{\\partial W}{\\partial x^2} &\n", " \\cdots & \\frac{\\partial W}{\\partial x^n}\n", " \\end{array}\\right]_{1 \\times n} \\left[\\begin{array}{c}\n", " \\frac{d x^1}{d t}\\\\\n", " \\frac{d x^2}{d t}\\\\\n", " \\vdots\\\\\n", " \\frac{d x^n}{d t}\n", " \\end{array}\\right]_{n\\times1} \n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "e.g. $n=2$\n", "\n", "$$\\frac{d W}{d t}=\\frac{\\partial W}{\\color{red}{\\partial (x,y)}}\\frac{\\color{red}{d (x,y)}}{d t}\n", " =\\left[\\begin{array}{cc}\n", " \\frac{\\partial W}{\\partial x} & \\frac{\\partial W}{\\partial y} \n", " \\end{array}\\right] \\left[\\begin{array}{c}\n", " \\frac{d x}{d t}\\\\\n", " \\frac{d y}{d t}\n", " \\end{array}\\right] =\\frac{\\partial W}{\\partial x}\\frac{d x}{d t} + \\frac{\\partial W}{\\partial y} \\frac{d y}{d t}\n", "$$\n", "Let $w=x^2y-xy^3$,$(x,y)=(\\cos t, e^t)$. Find $dw/dt$ and its value at $t=0$" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡⎛ 2 2⎞ t ⎛ 3⎞ ⎤\n", "⎣⎝x - 3⋅x⋅y ⎠⋅ℯ - ⎝2⋅x⋅y - y ⎠⋅sin(t)⎦\n" ] } ], "source": [ "x,y,s,t=symbols(\"x y s t\")\n", "w=Matrix([x**2*y-x*y**3])\n", "X=Matrix([cos(t),exp(t)])\n", "\n", "pprint(w.jacobian(Matrix([x,y]))*X.jacobian(Matrix([t])))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "d ( x**2*y - x*y**3) /d [t]\n", "\n", "⎡⎛ 2⋅t 2 ⎞ t ⎛ 3⋅t t ⎞ ⎤\n", "⎣⎝- 3⋅ℯ ⋅cos(t) + cos (t)⎠⋅ℯ - ⎝- ℯ + 2⋅ℯ ⋅cos(t)⎠⋅sin(t)⎦\n" ] } ], "source": [ "ChainRule(x**2*y-x*y**3, [x,y],[t],[cos(t),exp(t)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\left.\\frac{d w}{dt}\\right|_{t=0}=(-3+1)\\cdot1-(-1+2)\\cdot0=-2$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example, ($\\mathbb{R}^m(\\mathbf{u}_{1\\times m})\\to\\mathbb{R}^n(\\mathbf{x}_{1\\times n})\\to\\mathbb{R}(f(\\mathbf{x(\\mathbf{u}})$)\n", "---\n", "$$\\frac{\\partial W}{\\partial \\mathbf{u}}=\\frac{\\partial W}{\\color{red}{\\partial \\mathbf{x}}}\\frac{\\color{red}{\\partial \\mathbf{x}}}{\\partial\\mathbf{u}}=\n", "\\left[\\begin{array}{cccc}\n", " \\frac{\\partial W}{\\partial x^1} & \\frac{\\partial W}{\\partial x^2} &\n", " \\cdots & \\frac{\\partial W}{\\partial x^n}\n", " \\end{array}\\right]_{1 \\times n} \\left[\\begin{array}{cccc}\n", " \\frac{\\partial x^1}{\\partial u^1} & \\frac{\\partial x^1}{\\partial u^2} &\n", " \\cdots & \\frac{\\partial x^1}{\\partial u^m}\\\\\n", " \\frac{\\partial x^2}{\\partial u^1} & \\ddots & & \\\\\n", " \\vdots & & \\ddots & \\\\\n", " \\frac{\\partial x^n}{\\partial u^1} & \\frac{\\partial x^n}{\\partial u^2} & \n", " & \\frac{\\partial x^n}{\\partial u^m}\n", " \\end{array}\\right]_{n \\times m} \n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "e.g. $m,n=2,2$\n", "---\n", "$$\\frac{\\partial W}{\\partial (u,v)}=\\frac{\\partial W}{\\color{red}{\\partial (x,y)}}\\frac{\\color{red}{\\partial (x,y)}}{\\partial (u,v)}=\n", "\\left[\\begin{array}{cc}\n", " \\frac{\\partial W}{\\partial x} & \\frac{\\partial W}{\\partial y} \n", " \\end{array}\\right] \\left[\\begin{array}{cc}\n", " \\frac{\\partial x}{\\partial u} & \\frac{\\partial x}{\\partial v} \\\\\n", " \\frac{\\partial y}{\\partial u} & \\frac{\\partial y}{\\partial v} \n", " \\end{array}\\right]\n", "$$\n", "Let $w=2x^2y$,$(x,y)=(u^2+v^2, u^2-v^2)$. Find $\\partial w/\\partial u$ and $\\partial w/\\partial u$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⎡ 2 2 ⎤\n", "⎣4⋅u⋅x + 8⋅u⋅x⋅y - 4⋅v⋅x + 8⋅v⋅x⋅y⎦\n" ] } ], "source": [ "x,y,u,v=symbols(\"x y u v\")\n", "z=[2*x*x*y]\n", "X=Matrix([x,y])\n", "Xt=Matrix([x,y]).subs({x:u*u+v*v,y:u*u-v*v})\n", "T=Matrix([u,v])\n", "pprint(Matrix(z).jacobian(X)*Xt.jacobian(T))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ [2*x**2*y] /∂ [u, v]\n", "\n", "⎡ 2 \n", "⎢ ⎛ 2 2⎞ ⎛ 2 2⎞ ⎛ 2 2⎞ ⎛ 2 2⎞ ⎛ 2 2⎞ ⎛ 2 \n", "⎣8⋅u⋅⎝u - v ⎠⋅⎝u + v ⎠ + 4⋅u⋅⎝u + v ⎠ 8⋅v⋅⎝u - v ⎠⋅⎝u + v ⎠ - 4⋅v⋅⎝u +\n", "\n", " 2⎤\n", " 2⎞ ⎥\n", " v ⎠ ⎦\n" ] } ], "source": [ "ChainRule(z, [x,y],[u,v],[u*u+v*v,u*u-v*v])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", "Suppose that\n", "\n", "\\begin{eqnarray*}\n", " z & = & f (x, y) = \\sin (x + y^2)\\\\\n", " (x, y) & = & (s t, s^2 + t^2)\n", " \\end{eqnarray*}\n", "\n", "Then\n", "\n", "\\begin{eqnarray*}\n", " \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial x}, \\frac{\\partial z}{\\partial y}\n", " \\end{array}\\right) & = & \\left(\\begin{array}{cc}\n", " \\cos (x + y^2) & 2 y \\cos (x + y^2)\n", " \\end{array}\\right)\\\\\n", " \\left(\\begin{array}{cc}\n", " \\frac{\\partial x}{\\partial s} & \\frac{\\partial x}{\\partial t}\\\\\n", " \\frac{\\partial y}{\\partial s} & \\frac{\\partial y}{\\partial t}\n", " \\end{array}\\right) & = & \\left(\\begin{array}{cc}\n", " t & s\\\\\n", " 2 t & 2 s\n", " \\end{array}\\right)\\\\\n", " \\left(\\begin{array}{c}\n", " \\frac{\\partial z}{\\partial s}, \\frac{\\partial z}{\\partial t}\n", " \\end{array}\\right) & = & \\left(\\begin{array}{cc}\n", " \\cos (x + y^2) & 2 y \\cos (x + y^2)\n", " \\end{array}\\right) \\left(\\begin{array}{cc}\n", " t & s\\\\\n", " 2 t & 2 s\n", " \\end{array}\\right)\\\\\n", " & = & \\left(\\begin{array}{cc}\n", " t \\cos (x + y^2) + 4 t y \\cos (x + y^2) & s \\cos (x + y^2) + 4 s y \\cos\n", " (x + y^2)\n", " \\end{array}\\right)\\\\\n", " & = & \\cos ((t^2 + s^2)^2 + st) \\cdot ((4 s (t^2 + s^2) + t), (4 t (t^2 +\n", " s^2) + s))\n", " \\end{eqnarray*}" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ sin(x + y**2) /∂ [s, t]\n", "\n", "⎡ ⎛ 2⎞ ⎛ 2⎞ ⎛ \n", "⎢ ⎛ 2 2⎞ ⎜ ⎛ 2 2⎞ ⎟ ⎜ ⎛ 2 2⎞ ⎟ ⎜ ⎛ \n", "⎣4⋅s⋅⎝s + t ⎠⋅cos⎝s⋅t + ⎝s + t ⎠ ⎠ + t⋅cos⎝s⋅t + ⎝s + t ⎠ ⎠ s⋅cos⎝s⋅t + ⎝s\n", "\n", " 2⎞ ⎛ 2⎞⎤\n", "2 2⎞ ⎟ ⎛ 2 2⎞ ⎜ ⎛ 2 2⎞ ⎟⎥\n", " + t ⎠ ⎠ + 4⋅t⋅⎝s + t ⎠⋅cos⎝s⋅t + ⎝s + t ⎠ ⎠⎦\n" ] } ], "source": [ "x,y,s,t=symbols(\"x y s t\")\n", "f=sin(x+y*y)\n", "Xt=[s*t,s*s+t*t]\n", "ChainRule(f, [x,y],[s,t],Xt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example ($\\mathbb{R}^2(r,s)\\to\\mathbb{R}^3(x,y,z)\\to\\mathbb{R}(f(x,y,z)$)\n", "---\n", " Suppose that\n", "\n", "\\begin{eqnarray*}\n", " w (x, y, z) & = & x^2y+y^2z^3\\\\\n", " (x, y, z) & = & (r \\cos s, r \\sin s, r e^s)\n", " \\end{eqnarray*}\n", "Find $\\partial w/\\partial s $ at $(r,s)=(1,0)$ " ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ x**2*y + y**2*z**3 /∂ [r, s]\n", "\n", "⎡ 4 3⋅s 2 2 2 ⎛ 4 3⋅s 2 2 ⎞ \n", "⎣3⋅r ⋅ℯ ⋅sin (s) + 2⋅r ⋅sin(s)⋅cos (s) + ⎝2⋅r ⋅ℯ ⋅sin(s) + r ⋅cos (s)⎠⋅sin\n", "\n", " 5 3⋅s 2 3 2 ⎛ 4 3⋅s 2 2 \n", "(s) 3⋅r ⋅ℯ ⋅sin (s) - 2⋅r ⋅sin (s)⋅cos(s) + r⋅⎝2⋅r ⋅ℯ ⋅sin(s) + r ⋅cos (s\n", "\n", " ⎞ ⎤\n", ")⎠⋅cos(s)⎦\n" ] } ], "source": [ "x,y,z,r,s=symbols(\"x y z r s\")\n", "w=x*x*y+y*y*z*z*z\n", "Xt=[r*cos(s),r*sin(s),r*exp(s)]\n", "wxyz=ChainRule(w, [x,y,z],[r,s],Xt,output=1)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wxyz.subs({r:1,s:0})[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And\n", "$$\\left.\\frac{\\partial w}{\\partial s}\\right|_{(r,s)=(1,0)}=3\\cdot1\\cdot0-2\\cdot1\\cdot0+1\\cdot(2\\cdot0+1\\cdot1)=1$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Suppose that\n", "\n", "\\begin{eqnarray*}\n", " f (x, y, z) & = & \\frac{1}{x^2 + y^2 + z^2}\\\\\n", " (x, y, z) & = & (r \\cos t, r \\sin t, r)\n", " \\end{eqnarray*}\n", " Then\n", "\n", "\\begin{eqnarray*}\n", " \\left(\\begin{array}{ccc}\n", " f_x & f_y & f_z\n", " \\end{array}\\right) & = & \\frac{- 2}{(x^2 + y^2 + z^2)^2}\n", " \\left(\\begin{array}{ccc}\n", " x & y & z\n", " \\end{array}\\right)\\\\\n", " \\frac{\\partial (x, y, z)}{\\partial (r, t)} & = & \\left(\\begin{array}{cc}\n", " \\cos t & - r \\sin t\\\\\n", " \\sin t & r \\cos t\\\\\n", " 1 & 0\n", " \\end{array}\\right)\\\\\n", " \\left(\\begin{array}{cc}\n", " f_r & f_t\n", " \\end{array}\\right) & = & \\frac{- 2}{(x^2 + y^2 + z^2)^2}\n", " \\left(\\begin{array}{ccc}\n", " x & y & z\n", " \\end{array}\\right) \\left(\\begin{array}{cc}\n", " \\cos t & - r \\sin t\\\\\n", " \\sin t & r \\cos t\\\\\n", " 1 & 0\n", " \\end{array}\\right)\\\\\n", " & = & \\frac{- 2}{(x^2 + y^2 + z^2)^2} \\left(\\begin{array}{cc}\n", " x \\cos t + y \\sin t + z & r y \\cos t - r x \\sin t\n", " \\end{array}\\right)\\\\\n", " & = & \\left(\\begin{array}{cc}\n", " - \\frac{2 r \\sin (t)^2 + 2 r \\cos (t)^2 + 2 r}{(r^2 \\sin (t)^2 + r^2\n", " \\cos (t)^2 + r^2)^2} & 0\n", " \\end{array}\\right)\n", " \\end{eqnarray*}\n", " " ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ 1/(x**2 + y**2 + z**2) /∂ [r, t]\n", "\n", "⎡ 2 2 \n", "⎢ 2⋅r⋅sin (t) 2⋅r⋅cos (t) \n", "⎢- ─────────────────────────────── - ─────────────────────────────── - ───────\n", "⎢ 2 2 \n", "⎢ ⎛ 2 2 2 2 2⎞ ⎛ 2 2 2 2 2⎞ ⎛ 2 \n", "⎣ ⎝r ⋅sin (t) + r ⋅cos (t) + r ⎠ ⎝r ⋅sin (t) + r ⋅cos (t) + r ⎠ ⎝r ⋅sin\n", "\n", " ⎤\n", " 2⋅r ⎥\n", "──────────────────────── 0⎥\n", " 2 ⎥\n", "2 2 2 2⎞ ⎥\n", " (t) + r ⋅cos (t) + r ⎠ ⎦\n" ] } ], "source": [ "x,y,z,r,t=symbols(\"x y z r t\")\n", "f=1/(x*x+y*y+z*z)\n", "Xt=[r*cos(t),r*sin(t),r]\n", "ChainRule(f, [x,y,z],[r,t],Xt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercise\n", "---\n", "1. Suppose that $f (x, y) = x^2 + 3 x y + y^2$ and $(x, y) = (s t, s^2\n", " t)$. Find all the first-order partial derivatives of $f$ with respect to\n", " $(x, y)$ and $(s, t)$.\n", "- Suppose that $f (x^1, x^2, \\cdots, x^n) = \\sqrt{(x^1)^2 + \\cdots +\n", " (x^n)^2}$ and $x^i = ((t)^i)$, i.e. the $i$-th coordinate, $x^i$, is equal\n", " to power $i$ of $t$. Find all the first-order partial derivatives of $f$\n", " with respect to $(x, y)$ and $t$.\n", "\n", "Answer\n", "---\n", "**1.**\n", "\n", "\\begin{eqnarray*}\n", " \\left(\\frac{\\partial f}{\\partial x^i}\\right) & = & \\left(\\begin{array}{cc}\n", " 2 x + 3 y & 3 x + 2 y\n", " \\end{array}\\right)\\\\\n", " \\left(\\frac{\\partial x^i}{\\partial (s t)}\\right) & = & \\left(\\begin{array}{cc}\n", " t & s\\\\\n", " 2 s t & s^2\n", " \\end{array}\\right)\\\\\n", " \\left(\\frac{\\partial f}{\\partial (s t)}\\right) & = & \\left(\\begin{array}{cc}\n", " 2 x + 3 y & 3 x + 2 y\n", " \\end{array}\\right) \\left(\\begin{array}{cc}\n", " t & s\\\\\n", " 2 s t & s^2\n", " \\end{array}\\right)\\\\\n", " & = & \\left(\\begin{array}{cc}\n", " 2 s t + 3 s^2 t & 3 s t + 2 s^2 t\n", " \\end{array}\\right) \\left(\\begin{array}{cc}\n", " t & s\\\\\n", " 2 s t & s^2\n", " \\end{array}\\right)\\\\\n", " & = & \\left(\\begin{array}{cc}\n", " 2 s t^2 + 9 s^2 t^2 + 4 s^3 t^2 & 3 s^2 t + 6 s^3 t + 2 s^4 t\n", " \\end{array}\\right)\n", " \\end{eqnarray*}\n", "**2.**\n", "\n", "\\begin{eqnarray*}\n", " (\\partial f / \\partial x^i) & = & \\left( \\frac{x^i}{\\sqrt{(x^1)^2 +\n", " \\cdots + (x^n)^2}} \\right)\\\\\n", " (\\partial f / \\partial t) & = & \\left( \\frac{x^i}{\\sqrt{(x^1)^2 + \\cdots\n", " + (x^n)^2}} \\right) (\\partial x^i / \\partial t)\\\\\n", " & = & \\sum_{i = 1}^n \\frac{i x^i (t)^{i - 1}}{\\sqrt{(x^1)^2 + \\cdots +\n", " (x^n)^2}}\\\\\n", " & = & \\sum_{i = 1}^n \\frac{i (t)^{2 i - 1}}{\\sqrt{(t)^2 + \\cdots +\n", " (t)^{2 n}}}\n", " \\end{eqnarray*}\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "p. 1093\n", "---\n", "**4.** $w=\\ln(x+y^2),(x,y)=(\\tan t,\\sec t)$" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "d ( log(x + y**2)) /d [t]\n", "\n", "⎡ 2 2 ⎤\n", "⎢ tan (t) + 1 2⋅tan(t)⋅sec (t)⎥\n", "⎢──────────────── + ────────────────⎥\n", "⎢ 2 2 ⎥\n", "⎣tan(t) + sec (t) tan(t) + sec (t)⎦\n" ] } ], "source": [ "from sympy import tan,sec\n", "x,y,t=symbols(\"x y t\")\n", "w=log(x+y**2)\n", "Xt=[tan(t),sec(t)]\n", "\n", "ChainRule(w, [x,y],[t],Xt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**8.** $w=x\\sqrt{y^2+z^2},(x,y,z)=(1/t,e^{-t}\\cos t,e^{-t}\\sin t)$" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "d ( [x*sqrt(y**2 + z**2)]) /d [t]\n", "\n", "⎡ \n", "⎢⎛ -t -t ⎞ -t ⎛ -t -t ⎞ -t \n", "⎢⎝- ℯ ⋅sin(t) - ℯ ⋅cos(t)⎠⋅ℯ ⋅cos(t) ⎝- ℯ ⋅sin(t) + ℯ ⋅cos(t)⎠⋅ℯ ⋅sin(\n", "⎢────────────────────────────────────── + ────────────────────────────────────\n", "⎢ _______________________________ ______________________________\n", "⎢ ╱ -2⋅t 2 -2⋅t 2 ╱ -2⋅t 2 -2⋅t 2 \n", "⎣ t⋅╲╱ ℯ ⋅sin (t) + ℯ ⋅cos (t) t⋅╲╱ ℯ ⋅sin (t) + ℯ ⋅cos (t)\n", "\n", " _______________________________⎤\n", " ╱ -2⋅t 2 -2⋅t 2 ⎥\n", "t) ╲╱ ℯ ⋅sin (t) + ℯ ⋅cos (t) ⎥\n", "── - ──────────────────────────────────⎥\n", "_ 2 ⎥\n", " t ⎥\n", " ⎦\n" ] } ], "source": [ "x,y,z,t=symbols(\"x y z t\")\n", "w=[x*sqrt(y*y+z*z)]\n", "Xt=[1/t,exp(-t)*cos(t),exp(-t)*sin(t)]\n", "\n", "ChainRule(w, [x,y,z],[t],Xt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**10.**\n", "$w=\\sin xy, (x,y)=\\left((u+v)^3,\\sqrt v\\right)$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ sin(x*y) /∂ [u, v]\n", "\n", "⎡ 3 \n", "⎢ 2 ⎛ 3⎞ 2 ⎛ 3⎞ (u + v) ⋅cos\n", "⎢3⋅√v⋅(u + v) ⋅cos⎝√v⋅(u + v) ⎠ 3⋅√v⋅(u + v) ⋅cos⎝√v⋅(u + v) ⎠ + ────────────\n", "⎣ 2\n", "\n", "⎛ 3⎞⎤\n", "⎝√v⋅(u + v) ⎠⎥\n", "─────────────⎥\n", "⋅√v ⎦\n" ] } ], "source": [ "x,y,u,v=symbols(\"x y u v\")\n", "w=sin(x*y)\n", "Xt=[(u+v)**3,sqrt(v)]\n", "\n", "ChainRule(w, [x,y],[u,v],Xt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**20.**\n", "Let $w= x\\sqrt y+\\sqrt x$, $(x,y)=(2s+t,s^2-7t)$; evaluate $\\partial w/\\partial t$ at $(s,t)=(4,1)$." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂ sqrt(x) + x*sqrt(y) /∂ [s, t]\n", "\n", "⎡ ___________ 1 2⋅s + t ___________ 1 \n", "⎢2⋅╲╱ 2⋅s - 7⋅t + ─────────── + ───────────── ╲╱ 2⋅s - 7⋅t + ───────────── \n", "⎢ _________ ___________ _________ \n", "⎣ ╲╱ 2⋅s + t ╲╱ 2⋅s - 7⋅t 2⋅╲╱ 2⋅s + t \n", "\n", " 7⋅(2⋅s + t) ⎤\n", "- ───────────────⎥\n", " ___________⎥\n", " 2⋅╲╱ 2⋅s - 7⋅t ⎦\n" ] } ], "source": [ "x,y,u,v=symbols(\"x y u v\")\n", "w=x*sqrt(y)+sqrt(x)\n", "Xt=[2*s+t,s*2-7*t]\n", "\n", "wst=ChainRule(w, [x,y],[s,t],Xt,output=1)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-91/3" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wst.subs({s:4,t:1})[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\mathbf{\\left.\\frac{\\partial w}{\\partial t}\\right|_{(s,t)=(4,1)}}=1+1/6-63/2=-91/3$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**28.**\n", "Given \n", "$x=(u^2-v^2)/2,y=uv$, find $\\partial(x,y)/\\partial(u,v),\\partial(u,v)/\\partial(x,y)$" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "∂(x,y)/∂(u,v) = Matrix([[u, -v], [v, u]])\n" ] } ], "source": [ "x,y,u,v = symbols(\"x y u v\")\n", "fxy=Matrix([(u*u-v*v)/2, u*v])\n", "print(\"∂(x,y)/∂(u,v) = %s\" %fxy.jacobian([u,v]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the fact,\n", "$$\\left(\n", " \\frac{\\partial (u, v)}{\\partial (x, y)}\n", " \\right) = \\left(\n", " \\frac{\\partial (x, y)}{\\partial (u, v)}\n", " \\right)^{- 1} = \\left(\\begin{array}{cc}\n", " u & - v\\\\\n", " v & u\n", " \\end{array}\\right)^{- 1} = \\frac{1}{u^2 + v^2} \\left(\\begin{array}{cc}\n", " u & v\\\\\n", " - v & u\n", " \\end{array}\\right) \n", "$$ " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tangent Plane\n", "---\n", "1. Let $P(a,b,c)$ on the surface $S$, at which satisfies $F(x,y,z)=0$. Then the normal vector $\\vec n$ at $P$ is parallel to $\\nabla F(a,b,c)$, i.e.\n", "$$ \\frac{x-a}{F_x(a,b,c)}=\\frac{y-b}{F_y(a,b,c)}=\\frac{z-c}{F_z(a,b,c)}$$\n", "- Partial derivative represents the ratio of changes in the respective\n", "direction. In the case of $\\mathbb{R}^2$, there could exist a tangent plane\n", "for $z = f (x, y)$ at certain point $(x_0, y_0)$ which is perpendicular with\n", "$(\\nabla f, - 1)$ vector.\n", "\n", "Suppose that the surface in $\\mathbb{R}^3$ satisfies:\n", "\n", "\\begin{eqnarray*}\n", " z & = & f (x, y)\\\\\n", " & \\Downarrow & \\\\\n", " 0 & = & F (x, y, z)\\\\\n", " & = & f (x, y) - z\n", "\\end{eqnarray*}\n", "\n", "And suppose that all the partial derivatives of $f (x, y)$ are continuous. Any\n", "curve on the surface can be represented as follows:\n", "$$ (x (t), y (t), z (t)) $$\n", "Thus we have:\n", "\n", "\\begin{eqnarray*}\n", " 0 & = & F (x (t), y (t), z (t))\\\\\n", " & \\Downarrow & \\\\\n", " 0 & = & \\frac{d F (t)}{d t}\\\\\n", " & = & \\frac{\\partial F}{\\partial x} \\cdot \\frac{d x}{d t} + \\frac{\\partial\n", " F}{\\partial y} \\cdot \\frac{d y}{d t} + \\frac{\\partial F}{\\partial z} \\cdot\n", " \\frac{d z}{d t}\\\\\n", " (1^\\circ) &=& \\nabla F\\cdot \\frac{d(x,y,z)}{dt}\\\\\n", " (2^\\circ) & = & \\frac{\\partial f}{\\partial x} \\cdot \\frac{d x}{d t} + \\frac{\\partial\n", " f}{\\partial y} \\cdot \\frac{d y}{d t} + (- 1) \\cdot \\frac{d z}{d t}\\\\\n", " & = & (\\nabla f, - 1) \\cdot \\left( \\frac{d x}{d t}, \\frac{d y}{d t},\n", " \\frac{d z}{d t} \\right)\n", "\\end{eqnarray*}\n", "Given that $(x_0, y_0, f (x_0, y_0))$ lies on the surface, and so in the\n", "tangent, then for any other point $(x, y, z)$ in the tangent plane, the vector\n", "$(x - x_0, y - y_0, z - f (x_0, y_0))$ must lie in the tangent plane, and so\n", "must be normal to the normal to the curve and this tangent plane is always in\n", "such form as follows:\n", "\n", "\\begin{eqnarray*}\n", " 0 & = & (\\nabla f, - 1) \\cdot (x - x_0, y - y_0, z - f (x_0, y_0))\\\\\n", " & \\Downarrow & \\\\\n", " f (x, y) - f (x_0, y_0) & = & \\frac{\\partial f}{\\partial x} (x - x_0) +\n", " \\frac{\\partial f}{\\partial y} (y - y_0)\\\\\n", " & \\Downarrow & \\\\\n", " f (x, y) & = & f (x_0, y_0) + \\frac{\\partial f}{\\partial x} (x - x_0) +\n", " \\frac{\\partial f}{\\partial y} (y - y_0)\n", "\\end{eqnarray*}\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "\n", "The gradient of $f (x, y) = \\sqrt{x} + \\sqrt{y}$ at $(x, y) = (1, 1)$ is:\n", "\n", "\\begin{eqnarray*}\n", " \\nabla f (1, 1) & = & \\left. \\left( \\frac{\\partial f}{\\partial x},\n", " \\frac{\\partial f}{\\partial y} \\right) \\right|_{(1, 1)}\\\\\n", " & = & \\left. \\left( \\frac{1}{2 \\sqrt{x}}, \\frac{1}{2 \\sqrt{y}} \\right)\n", " \\right|_{(1, 1)}\\\\\n", " & = & \\left( \\frac{1}{2}, \\frac{1}{2} \\right)\n", " \\end{eqnarray*}\n", "Then the normal vector of the tangent plane passing throught $(1, 1, 2)$ is:\n", "\n", "\\begin{eqnarray*}\n", " 0 & = & \\left( \\frac{1}{2}, \\frac{1}{2}, - 1 \\right) \\cdot (x - 1, y - 1,\n", " z - 2)\\\\\n", " & \\Downarrow & \\\\\n", " 2 z & = & x + y + 2\n", " \\end{eqnarray*}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "The normal line and tangent plane of $4x^2+y^2+4z^2=16$ at $(1,2,\\sqrt 2)$ are \n", "\\begin{eqnarray}\n", "\\frac{x-1}{8}=\\frac{y-2}{4}=\\frac{z-\\sqrt2}{8\\sqrt2}\\\\\n", "8(x-1)+4(y-2)+8\\sqrt2(z-\\sqrt2)=0\n", "\\end{eqnarray}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", "The normal line and tangent plane of $f(x,y)=4x^2+y^2+2$ at $(x,y)=(1,1)$ are \n", "\\begin{eqnarray}\n", "\\frac{x-1}{-8}=\\frac{y-1}{-2}=\\frac{z-7}{1}\\\\\n", "-8(x-1)-2(y-1)+(z-7)=0\n", "\\end{eqnarray}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sympy import log,exp,cos,sin,diff,integrate,symbols,Matrix,sqrt,pi\n", "\n", "x,y,z=symbols(\"x y z\")" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "grad = lambda func, vars :[diff(func,var) for var in vars]\n", "\n", "def df_val(f,val):\n", " return [ff.subs({x:val[0],y:val[1],z:val[2]}) for ff in f]\n", "\n", "def tangentplane(f,X,A):\n", " if len(A)==2:\n", " A=[A[0],A[1],0] \n", " A[2]= f.subs({X[0]:A[0],X[1]:A[1]})\n", " if len(X)==2:\n", " f=f-z\n", " X=[X[0],X[1],z]\n", " df=grad(f,X)\n", " df0=df_val(df,A)\n", " \n", " print(df0[0]*(X[0]-A[0])+df0[1]*(X[1]-A[1])+df0[2]*(X[2]-A[2]),\"= 0\")\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8*x + 4*y + 8*sqrt(2)*(z - sqrt(2)) - 16 = 0\n" ] } ], "source": [ "f=4*x**2+y**2+4*z**2-16\n", "tangentplane(f,[x,y,z],[1,2,sqrt(2)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "p. 1115 Exercise\n", "---\n", "**20.** tangent plane of $xyz=-4$ at $(P=(2,-1,2)$ is" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2*x + 4*y - 2*z + 12 = 0\n" ] } ], "source": [ "f=x*y*z+4\n", "tangentplane(f,[x,y,z],[2,-1,2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "**26.** tangent plane of $z=\\exp(x)\\sin(\\pi y)$ at $(P=(0,1,0))$ is" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-z - pi*(y - 1) = 0\n" ] } ], "source": [ "f=exp(x)*sin(pi*y)-z\n", "tangentplane(f,[x,y,z],[0,1,0])" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-z - pi*(y - 1) = 0\n" ] } ], "source": [ "f=exp(x)*sin(pi*y)\n", "tangentplane(f,[x,y],[0,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "The change of $f$ in the other directions different to $x, y, \\cdots$, can\n", "be evaluated by the following:\n", "\n", "Definition\n", "---\n", " **The directional derivative in the unitary direction,** $\\vec{e} =\n", " (e^1, \\cdots, e^n)$ is:\n", " $$ D_{\\vec{e}} f = \\nabla f \\cdot \\vec{e} $$\n", " where $\\cdot$ means inner product.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " The directional derivative of $f (x, y) = \\sqrt{x} + \\sqrt{y}$ at $(x, y) =\n", " (1, 1)$ in the $(3, 4)$ direction is calculated as:\n", "\n", "\\begin{eqnarray*}\n", " (3, 4) & \\rightarrow & \\frac{1}{5} (3, 4)\\\\\n", " D_{\\vec{e}} f (1, 1) & = & \\nabla f (1, 1) \\cdot \\vec{e}\\\\\n", " & = & \\frac{1}{2} (1, 1) \\cdot \\frac{1}{5} (3, 4)\\\\\n", " & = & \\frac{7}{10}\n", " \\end{eqnarray*}\n", " In which direction does the directional derivative attain its maximum? Since\n", " the inner product of two vectors, $\\vec{a}$ and $\\vec{b}$ is:\n", " $$ \\vec{a} \\cdot \\vec{b} = | \\vec{a} | | \\vec{b} | \\cos \\theta $$\n", " where $\\theta$ is the intersection angle between $\\vec{a}$ and $\\vec{b}$,\n", " the directional derivative will attainn its maximum if $\\nabla f$ and\n", " $\\vec{e}$ are parallel. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " The directional derivative of $f (x, y) = \\exp^x\\cos y$ at $(x, y) =\n", " \\left(1, \\frac{\\pi}{4}\\right)$ in the $(2, 3)$ direction is calculated as:\n", "\n", "\\begin{eqnarray*}\n", " (2, 3) & \\rightarrow & \\frac{1}{\\sqrt{13}} (2, 3)\\\\\n", " D_{\\vec{e}} f (0, \\pi/4) & = & \\nabla f (0, \\pi/4) \\cdot \\vec{e}\\\\\n", " & = & (0,-2) \\cdot \\frac{1}{\\sqrt{13}} (2, 3)\\\\\n", " & = & \\frac{-6}{\\sqrt{13}}\n", " \\end{eqnarray*}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Theorem\n", "---\n", " Directional derivative will attain its maximum (minimum) if\n", " $$ \\vec{e} = \\nabla f / \\| \\nabla f\\| (\\color{brown}{- \\nabla f /\n", " \\nabla f\\|}) $$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " The maximum of directional derivative of $f (x, y) = \\sqrt{x} + \\sqrt{y}$ at\n", " $(x, y) = (1, 1)$ will occur at the direction:\n", " $$ \\vec{e} = \\nabla f / \\| \\nabla f\\| = (1 / 2, 1 / 2) / \\sqrt{(1 / 2)^2 +\n", " (1 / 2)^2} = (1 / \\sqrt{2}, 1 / \\sqrt{2}) $$\n", " and is equal to:\n", " $$ \\text{maximum of } D_{\\vec{e}} f (1, 1) = (1 / 2, 1 / 2) \\cdot (1 /\n", " \\sqrt{2}, 1 / \\sqrt{2}) = 1 / \\sqrt{2} $$\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "opacity": 0.95, "type": "surface", "x": [ [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ] ], "y": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], [ 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004 ], [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ], [ 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001 ], [ 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001 ], [ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8 ], [ 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1 ], [ 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002 ], [ 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3 ] ], "z": [ [ 0, 0.31622776601683794, 0.4472135954999579, 0.5477225575051662, 0.6324555320336759, 0.7071067811865476, 0.7745966692414834, 0.8366600265340756, 0.8944271909999159, 0.9486832980505138, 1, 1.0488088481701516, 1.0954451150103324, 1.140175425099138 ], [ 0.31622776601683794, 0.6324555320336759, 0.7634413615167959, 0.8639503235220041, 0.9486832980505138, 1.0233345472033855, 1.0908244352583214, 1.1528877925509136, 1.2106549570167537, 1.2649110640673518, 1.316227766016838, 1.3650366141869896, 1.4116728810271704, 1.456403191115976 ], [ 0.4472135954999579, 0.7634413615167959, 0.8944271909999159, 0.9949361530051242, 1.0796691275336339, 1.1543203766865056, 1.2218102647414413, 1.2838736220340334, 1.3416407864998738, 1.3958968935504716, 1.4472135954999579, 1.4960224436701095, 1.5426587105102902, 1.587389020599096 ], [ 0.5477225575051662, 0.8639503235220041, 0.9949361530051242, 1.0954451150103324, 1.180178089538842, 1.2548293386917138, 1.3223192267466497, 1.3843825840392419, 1.442149748505082, 1.4964058555556798, 1.5477225575051663, 1.596531405675318, 1.6431676725154984, 1.6878979826043041 ], [ 0.6324555320336759, 0.9486832980505138, 1.0796691275336339, 1.180178089538842, 1.2649110640673518, 1.3395623132202235, 1.4070522012751594, 1.4691155585677516, 1.5268827230335917, 1.5811388300841895, 1.632455532033676, 1.6812643802038276, 1.7279006470440081, 1.7726309571328138 ], [ 0.7071067811865476, 1.0233345472033855, 1.1543203766865056, 1.2548293386917138, 1.3395623132202235, 1.4142135623730951, 1.4817034504280309, 1.543766807720623, 1.6015339721864634, 1.6557900792370615, 1.7071067811865475, 1.755915629356699, 1.80255189619688, 1.8472822062856857 ], [ 0.7745966692414834, 1.0908244352583214, 1.2218102647414413, 1.3223192267466497, 1.4070522012751594, 1.4817034504280309, 1.5491933384829668, 1.611256695775559, 1.6690238602413991, 1.7232799672919972, 1.7745966692414834, 1.823405517411635, 1.8700417842518158, 1.9147720943406215 ], [ 0.8366600265340756, 1.1528877925509136, 1.2838736220340334, 1.3843825840392419, 1.4691155585677516, 1.543766807720623, 1.611256695775559, 1.6733200530681511, 1.7310872175339913, 1.7853433245845893, 1.8366600265340756, 1.8854688747042272, 1.932105141544408, 1.9768354516332136 ], [ 0.8944271909999159, 1.2106549570167537, 1.3416407864998738, 1.442149748505082, 1.5268827230335917, 1.6015339721864634, 1.6690238602413991, 1.7310872175339913, 1.7888543819998317, 1.8431104890504297, 1.8944271909999157, 1.9432360391700674, 1.9898723060102483, 2.034602616099054 ], [ 0.9486832980505138, 1.2649110640673518, 1.3958968935504716, 1.4964058555556798, 1.5811388300841895, 1.6557900792370615, 1.7232799672919972, 1.7853433245845893, 1.8431104890504297, 1.8973665961010275, 1.9486832980505138, 1.9974921462206654, 2.044128413060846, 2.088858723149652 ], [ 1, 1.316227766016838, 1.4472135954999579, 1.5477225575051663, 1.632455532033676, 1.7071067811865475, 1.7745966692414834, 1.8366600265340756, 1.8944271909999157, 1.9486832980505138, 2, 2.0488088481701516, 2.0954451150103326, 2.1401754250991383 ], [ 1.0488088481701516, 1.3650366141869896, 1.4960224436701095, 1.596531405675318, 1.6812643802038276, 1.755915629356699, 1.823405517411635, 1.8854688747042272, 1.9432360391700674, 1.9974921462206654, 2.0488088481701516, 2.0976176963403033, 2.144253963180484, 2.1889842732692895 ], [ 1.0954451150103324, 1.4116728810271704, 1.5426587105102902, 1.6431676725154984, 1.7279006470440081, 1.80255189619688, 1.8700417842518158, 1.932105141544408, 1.9898723060102483, 2.044128413060846, 2.0954451150103326, 2.144253963180484, 2.1908902300206647, 2.2356205401094704 ], [ 1.140175425099138, 1.456403191115976, 1.587389020599096, 1.6878979826043041, 1.7726309571328138, 1.8472822062856857, 1.9147720943406215, 1.9768354516332136, 2.034602616099054, 2.088858723149652, 2.1401754250991383, 2.1889842732692895, 2.2356205401094704, 2.280350850198276 ] ] }, { "line": { "color": "black", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ -0.2, -0.18000000000000002, -0.16000000000000003, -0.14000000000000004, -0.12000000000000005, -0.10000000000000006, -0.08000000000000007, -0.06000000000000008, -0.04000000000000009, -0.0200000000000001, -1.1102230246251565e-16, 0.01999999999999988, 0.03999999999999987, 0.05999999999999989, 0.07999999999999985, 0.09999999999999981, 0.11999999999999983, 0.13999999999999985, 0.1599999999999998, 0.17999999999999977, 0.1999999999999998, 0.2199999999999998, 0.23999999999999977, 0.25999999999999973, 0.27999999999999975, 0.29999999999999977, 0.3199999999999998, 0.3399999999999997, 0.3599999999999997, 0.3799999999999997, 0.39999999999999963, 0.41999999999999965, 0.43999999999999967, 0.4599999999999997, 0.4799999999999997, 0.4999999999999996, 0.5199999999999996, 0.5399999999999996, 0.5599999999999996, 0.5799999999999996, 0.5999999999999996, 0.6199999999999997, 0.6399999999999997, 0.6599999999999995, 0.6799999999999995, 0.6999999999999995, 0.7199999999999995, 0.7399999999999995, 0.7599999999999996, 0.7799999999999996, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999994, 0.8799999999999994, 0.8999999999999995, 0.9199999999999995, 0.9399999999999995, 0.9599999999999995, 0.9799999999999995, 0.9999999999999993, 1.0199999999999994, 1.0399999999999994, 1.0599999999999994, 1.0799999999999994, 1.0999999999999994, 1.1199999999999994, 1.1399999999999995, 1.1599999999999995, 1.1799999999999993 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "black", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "y": [ -0.2, -0.18000000000000002, -0.16000000000000003, -0.14000000000000004, -0.12000000000000005, -0.10000000000000006, -0.08000000000000007, -0.06000000000000008, -0.04000000000000009, -0.0200000000000001, -1.1102230246251565e-16, 0.01999999999999988, 0.03999999999999987, 0.05999999999999989, 0.07999999999999985, 0.09999999999999981, 0.11999999999999983, 0.13999999999999985, 0.1599999999999998, 0.17999999999999977, 0.1999999999999998, 0.2199999999999998, 0.23999999999999977, 0.25999999999999973, 0.27999999999999975, 0.29999999999999977, 0.3199999999999998, 0.3399999999999997, 0.3599999999999997, 0.3799999999999997, 0.39999999999999963, 0.41999999999999965, 0.43999999999999967, 0.4599999999999997, 0.4799999999999997, 0.4999999999999996, 0.5199999999999996, 0.5399999999999996, 0.5599999999999996, 0.5799999999999996, 0.5999999999999996, 0.6199999999999997, 0.6399999999999997, 0.6599999999999995, 0.6799999999999995, 0.6999999999999995, 0.7199999999999995, 0.7399999999999995, 0.7599999999999996, 0.7799999999999996, 0.7999999999999996, 0.8199999999999996, 0.8399999999999996, 0.8599999999999994, 0.8799999999999994, 0.8999999999999995, 0.9199999999999995, 0.9399999999999995, 0.9599999999999995, 0.9799999999999995, 0.9999999999999993, 1.0199999999999994, 1.0399999999999994, 1.0599999999999994, 1.0799999999999994, 1.0999999999999994, 1.1199999999999994, 1.1399999999999995, 1.1599999999999995, 1.1799999999999993 ], "z": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "black", "width": 5 }, "mode": "lines", "type": "scatter3d", "x": [ 1, 1 ], "y": [ 1, 1 ], "z": [ 0, 2 ] }, { "line": { "color": "blue", "width": 3 }, "mode": "lines", "type": "scatter3d", "x": [ 1, 1.5 ], "y": [ 1, 1.5 ], "z": [ 0, 0 ] }, { "line": { "color": "blue", "width": 3 }, "mode": "lines", "type": "scatter3d", "x": [ 1, 1.5 ], "y": [ 1, 1.5 ], "z": [ 2, 1 ] }, { "colorscale": 0.1, "opacity": 1, "type": "surface", "x": [ [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ], [ 0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1, 1.1, 1.2000000000000002, 1.3 ] ], "y": [ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ], [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], [ 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004, 0.30000000000000004 ], [ 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4 ], [ 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5 ], [ 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001, 0.6000000000000001 ], [ 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001, 0.7000000000000001 ], [ 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8 ], [ 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1 ], [ 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002, 1.2000000000000002 ], [ 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3 ] ], "z": [ [ 1, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65 ], [ 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.6500000000000001, 1.7 ], [ 1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7000000000000002, 1.75 ], [ 1.15, 1.2, 1.25, 1.3, 1.35, 1.4, 1.4500000000000002, 1.5, 1.55, 1.6, 1.65, 1.7000000000000002, 1.75, 1.8 ], [ 1.2, 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85 ], [ 1.25, 1.3, 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9 ], [ 1.3, 1.35, 1.4, 1.4500000000000002, 1.5, 1.55, 1.6, 1.6500000000000001, 1.7000000000000002, 1.75, 1.8, 1.85, 1.9000000000000001, 1.9500000000000002 ], [ 1.35, 1.4, 1.45, 1.5, 1.55, 1.6, 1.6500000000000001, 1.7000000000000002, 1.75, 1.8, 1.85, 1.9000000000000001, 1.9500000000000002, 2 ], [ 1.4, 1.45, 1.5, 1.55, 1.6, 1.65, 1.7000000000000002, 1.75, 1.8, 1.85, 1.9, 1.9500000000000002, 2, 2.05 ], [ 1.45, 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2, 2.0500000000000003, 2.1 ], [ 1.5, 1.55, 1.6, 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2, 2.05, 2.1, 2.15 ], [ 1.55, 1.6, 1.65, 1.7000000000000002, 1.75, 1.8, 1.85, 1.9000000000000001, 1.9500000000000002, 2, 2.05, 2.1, 2.1500000000000004, 2.2 ], [ 1.6, 1.6500000000000001, 1.7000000000000002, 1.75, 1.8, 1.85, 1.9000000000000001, 1.9500000000000002, 2, 2.0500000000000003, 2.1, 2.1500000000000004, 2.2, 2.25 ], [ 1.65, 1.7, 1.75, 1.8, 1.85, 1.9, 1.9500000000000002, 2, 2.05, 2.1, 2.15, 2.2, 2.25, 2.3 ] ] } ], "layout": {} }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from numpy import sqrt\n", "#X = np.arange(.2, 1, 0.02)\n", "#Y = np.arange(0.2, 1, 0.02)\n", "x = np.arange(0, 1.4, 0.1)\n", "y = np.arange(0, 1.4, 0.1)\n", "\n", "t = np.arange(-0.2, 1.2, 0.02)\n", "s = np.arange(0.4, 0.8, 0.01)\n", "X,Y = np.meshgrid(x,y)\n", "f= sqrt(X) + sqrt(Y)\n", "z0=sqrt(0.4**2+0.4**2)\n", "u=np.arange(0., z0, 0.01)\n", "Pf=(X-1)/2+(Y-1)/2+2\n", "surface = go.Surface(x=X, y=Y, z=f,opacity=0.95)\n", "P = go.Surface(x=X, y=Y, z=Pf,colorscale=0.1,opacity=1)\n", "Xaxis = go.Scatter3d(x=t, y=0*t, z=0*t,\n", " mode = \"lines\",\n", " line = dict(\n", " color='black',\n", " width = 5\n", " ) \n", " )\n", "Yaxis = go.Scatter3d(x=0*t, y=t, z=0*t,\n", " mode = \"lines\",\n", " line = dict(\n", " color='black',\n", " width = 5\n", " ) \n", " )\n", "X0 = go.Scatter3d(x=[1,1], y=[1,1], z=[0,2],\n", " mode = \"lines\",\n", " line = dict(\n", " color='black',\n", " width = 5\n", " ) \n", " )\n", "XY = go.Scatter3d(x=[1,1+1/2.], y=[1,1+1/2.], z=[0,0],\n", " mode = \"lines\",\n", " line = dict(\n", " color='blue',\n", " width = 3\n", " ) \n", " )\n", "N = go.Scatter3d(x=[1,1+1/2.], y=[1,1+1/2.], z=[2,2-1],\n", " mode = \"lines\",\n", " line = dict(\n", " color='blue',\n", " width = 3\n", " ) \n", " )\n", "Y0 = go.Scatter3d(y=s, x=0.4+0*s, z=0*s,\n", " mode = \"lines\",\n", " line = dict(\n", " color='orange',\n", " width = 5\n", " ) \n", " )\n", "#Line2 = go.Scatter3d(x=0*t, y=t, z=0*t)\n", "#Line3 = go.Scatter3d(x=t, y=t, z=np.ones(len(t))/2)\n", "#Line4 = go.Scatter3d(x=t, y=-t, z=-np.ones(len(t))/2)\n", "data = [surface,Xaxis,Yaxis,X0,XY,N,P]\n", "\n", "fig = go.Figure(data=data)\n", "iplot(fig)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot3d(x,y,z):\n", " fig = plt.figure()\n", " ax = Axes3D(fig)\n", " ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=plt.cm.jet,alpha=0.4)\n", " ax.contour(x, y, z, lw=3, cmap=\"autumn_r\", linestyles=\"solid\", zdir='z',offset=0)\n", " ax.set_xlabel('X')\n", " ax.set_ylabel('Y')\n", " ax.set_zlabel('Z')\n", " ax.set_zlim(0, 2)\n", " ax.scatter3D([1],[1],[0],color=(0,0,0));\n", " ax.arrow(x=1,y=1,dx=0.1,dy=0.1)\n", " xt=np.linspace(1,1.414,100)\n", " yt=np.linspace(1,1.414,100)\n", " zt=np.zeros(100)\n", " ax.plot3D(xt,yt,zt)\n", " ax.plot3D(xt,yt,np.sqrt(xt)+np.sqrt(yt))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(0, 1.4, 0.1)\n", "y = np.arange(0, 1.4, 0.1)\n", "x,y=np.meshgrid(x,y)\n", "f= np.sqrt(x)+np.sqrt(y)\n", "plot3d(x,y,f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From above picture, the value of $f(x,y)$ inscreases fastest along the (positive) gradient direction, which projection on the $X-Y$ plane is orthogonal to the level curves. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Find directional derivative of $f (x, y) = x^2-2xy$ at\n", " $(x, y) = (1, -2)$ from $(-1,2)$ to $(2,3)$, i.e. the direction:\n", " \\begin{eqnarray*}\n", " (2-(-1), 3-2)=(3,1) & \\rightarrow & \\frac{1}{\\sqrt{10}} (3, 1)\\\\\n", " D_{\\vec{e}} f (1, -2) & = & \\nabla f (1, -2) \\cdot \\vec{e}\\\\\n", " & = & (6,-2) \\cdot \\frac{1}{\\sqrt{10}} (3, 1)\\\\\n", " & = & \\frac{16}{\\sqrt{10}}\n", " \\end{eqnarray*} " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Suppose that $f (x) = x^2 \\sin (\\pi y / 6)$.\n", "**1.** The gradient of $f (x)$ at $(x, y) = (1, 1)$ is:\n", "\n", "\\begin{eqnarray*}\n", " \\nabla f (1, 1) & = & \\left(2 x \\sin (\\pi y / 6), \\pi x^2 \\cos (\\pi y / 6) /\n", " 6) \\right|_{(x, y) = (1, 1)}\\\\\n", " & = & \\left( 1, \\frac{\\sqrt{3} \\pi}{12} \\right)\n", " \\end{eqnarray*}\n", "\n", "**2.** The directional derivative at the direction, $\\vec{u} = (1, 0)$, is:\n", "\n", "\\begin{eqnarray*}\n", " \\nabla_{\\vec{u}} f (1, 1) & = & \\left( 1, \\frac{\\sqrt{3} \\pi}{12}\n", " \\right) \\cdot (1, 0) = 1\n", " \\end{eqnarray*}\n", "**3.** The directional derivative at the direction, $\\vec{v} = (1, 1)$, is:\n", "\n", "\\begin{eqnarray*}\n", " \\vec{v} & \\Rightarrow & (1, 1) / \\sqrt{1^2 + 1^2} = \\left(\n", " \\frac{1}{\\sqrt{2}}, \\frac{1}{\\sqrt{2}} \\right)\\\\\n", " & \\Downarrow & \\\\\n", " \\nabla_{\\vec{v}} f (1, 1) & = & \\left( 1, \\frac{\\sqrt{3} \\pi}{12}\n", " \\right) \\cdot \\left( \\frac{1}{\\sqrt{2}}, \\frac{1}{\\sqrt{2}} \\right) =\n", " \\frac{1}{\\sqrt{2}} + \\frac{\\sqrt{6} \\pi}{24}\n", " \\end{eqnarray*}\n", "**4.** The maximum of the directional derivative is:\n", "\n", "$$ \\| \\nabla f (1, 1)\\| = \\sqrt{1^2 + \\left( \\frac{\\sqrt{3} \\pi}{12}\n", " \\right)^2} $$\n", "\n", "and in the direction:\n", "\n", "$$ \\vec{e} = \\nabla f (1, 1) / \\| \\nabla f (1, 1)\\| $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Example\n", "---\n", " Suppose that $f (x, y,z) = \\frac{1}{\\sqrt{x^2+y^2}+z^2}$. Find the directional\n", " derivative of $f (x, y,z)$ at $P=(1, 2,3)$ in the directions \n", " $\\vec{e\\!}_1 = (2,1,-2)$, b). Find the direction at which the directional\n", " derivative increases fastest and what is the maximal rate of increase.\n", "- gradient at $P$\n", "\\begin{eqnarray*}\n", " \\nabla f (P) & = & \\left.\\left(\\frac{-x/\\sqrt{x^2+y^2}}{(\\sqrt{x^2+y^2}+z^2)^2}, \\frac{-y/\\sqrt{x^2+y^2}}{(\\sqrt{x^2+y^2}+z^2)^2}, \\frac{-2z}{(\\sqrt{x^2+y^2}+z^2)^2}\\right)\\right|_{(x, y,z) = (1, 2,3)}\\\\\n", " &=&\\left(\\frac{-1/\\sqrt{5}}{(\\sqrt{5}+9)^2}, \\frac{-2/\\sqrt{5}}{(\\sqrt{5}+9)^2}, \\frac{-6}{(\\sqrt{5}+9)^2}\\right)\n", " \\end{eqnarray*}\n", "- unit direction:\n", "$$\\vec{v} \\Rightarrow (2, 1,2) / \\sqrt{2^2+1^2 + 2^2} = \\left(\n", " \\frac{2}{3}, \\frac{1}{3},\\frac{2}{3} \\right)$$\n", "- directional derivative:\n", "$$\\nabla f (P)\\cdot \\left(\\frac{2}{3}, \\frac{1}{3},\\frac{2}{3} \\right)\n", " = \\frac{-12}{(\\sqrt{5}+9)^2}$$\n", "- At the direction, $ \\nabla f (P) $, the directional derivative increases rapidly with rate $ ||\\nabla f ||(P) $. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exercise\n", "---\n", " Suppose that $f (x, y) = 3 x^2 + 4 x y + 5 y^2$. Find the directional\n", " derivative of $f (x, y)$ at $(1, 1)$ in the directions \n", " a) $\\vec{e\\!}_1 = (3, -4)$, b) $\\vec{e\\!}_2 = (1, 1)$. Find the direction at which the directional\n", " derivative attains its maximum.\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-26/5" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=3*x*x+4*x*y+5*y*y\n", "df=grad(f,[x,y])\n", "dfv=df_val(df,[1,1])\n", "def df_dir(f,val):\n", " l=f[0]*val[0]+f[1]*val[1]\n", " return l/(sqrt(val[0]**2+val[1]**2))\n", "df_dir(dfv,[3,-4])" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12*sqrt(2)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_dir(dfv,[1,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise p. 1105** \n", "\n", "**8.** Find the gradient of $f(x,y,z)=(x+y)/(x+z)$ at $(1,2,3)$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x,y,z=symbols(\"x y z\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "grad = lambda func, vars :[diff(func,var) for var in vars]\n", "\n", "def df_valX(f,X,P):\n", " \"\"\"\n", " input\n", " f: function\n", " X: [x,y,...], variables\n", " P: position\n", " output\n", " gradient vector at P\n", " \"\"\"\n", " df=grad(f,X)\n", " return [ff.subs({X[i]:P[i] for i in range(len(X))}) for ff in df]\n", "\n", "def norm(v):\n", " \"\"\"norm of v\"\"\"\n", " d=0\n", " for i in range(len(v)):\n", " d+=v[i]**2\n", " return sqrt(d) \n", "def df_dir(f,X,P,vec):\n", " \"\"\"\n", " Input\n", " f: function\n", " X: [x,y,...], variables\n", " P: position\n", " vec: direction\n", " output\n", " directional derivative of f at P in direction vec\n", " \"\"\"\n", " dotsum=0\n", " dfv=df_valX(f,X,P)\n", " for i in range(len(dfv)):\n", " dotsum+=dfv[i]*vec[i] \n", " return dotsum/norm(vec)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1/16, 1/4, -3/16]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=(x+y)/(x+z)\n", "df_valX(f,[x,y,z],[1,2,3])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[-(x + y)/(x + z)**2 + 1/(x + z), 1/(x + z), -(x + y)/(x + z)**2]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grad(f,[x,y,z])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**12.** Find the gradient of $f(x,y,z)=x^3-y^3$ at $(2,1)$ in the directional $(1,1)$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9⋅√2\n", "────\n", " 2 \n" ] } ], "source": [ "f=x**3-y**3\n", "X=[x,y]\n", "P=[2,1]\n", "v=[1,1]\n", "\n", "pprint(df_dir(f,X,P,v))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**20.** Find the gradient of $f(x,y,z)=x^2+2xy^2+2yz^3$ at $(2,1,-1)$ in the directional $(1,2,2)$." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=x*x+2*x*y*y+2*y*z**3\n", "X=[x,y,z]\n", "P=[2,1,-1]\n", "v=[1,2,2]\n", "\n", "df_dir(f,X,P,v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**38.** Find the direction at which the directional derivative of $f(x)=x e^{-y^2}$ at $(1,0)$ increases rapidly." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 0]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f=x*exp(-y**2)\n", "\n", "df_valX(f,[x,y],[1,0])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This concludes that directional derivative increases rapidly at the the direction $(1,0)$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[NbConvertApp] Converting notebook 6 Multi-variable Calculus-Differentiation-2.ipynb to html\n", "[NbConvertApp] Writing 2410764 bytes to 6 Multi-variable Calculus-Differentiation-2.html\n" ] } ], "source": [ "!jupyter nbconvert --to html 6*Differ*-2.ipynb" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.6.1" }, "toc": { "colors": { "hover_highlight": "#DAA520", "navigate_num": "#000000", "navigate_text": "#333333", "running_highlight": "#FF0000", "selected_highlight": "#FFD700", "sidebar_border": "#EEEEEE", "wrapper_background": "#FFFFFF" }, "moveMenuLeft": true, "nav_menu": { "height": "512px", "width": "252px" }, "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 4, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false, "widenNotebook": false }, "widgets": { "state": {}, "version": "2.0.10" } }, "nbformat": 4, "nbformat_minor": 1 }