{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# 1 High Dimensional Chains"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 8,
"metadata": {
},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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"
},
"execution_count": 8,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"# a)\n",
"x(t) = (t+1)^2\n",
"y(t) = 3*t^2\n",
"\n",
"show(x, y)\n",
"\n",
"parametric_plot((x(t), y(t)), (t, 0, 5), \n",
" axes_labels=['$x$', '$y$'])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 9,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"T(x,y) = e^(5*x)*(x^2 + y^2)\n",
"show(T)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
]
},
"execution_count": 26,
"metadata": {
},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lowest value of temperature is 148.4132\n"
]
}
],
"source": [
"x(t) = (t+1)^2\n",
"y(t) = 3*t^2\n",
"T_t(t) = e^(5*x)*(x^2 + y^2)\n",
"show(T_t)\n",
"para_plt = parametric_plot3d((T_t,x, y), (t, 0, 5), boundary_style={\"color\": \"black\", \"thickness\": 2})\n",
"para_plt\n",
"\n",
"print 'Lowest value of temperature is %.4f' % T_t(0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"### 1.d) Testing chain rule for T(t)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Partial derivatives of T(t) in terms of x and y\n"
]
},
{
"data": {
"text/html": [
""
]
},
"execution_count": 31,
"metadata": {
},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"dT/dt with chain rule\n"
]
},
{
"data": {
"text/html": [
""
]
},
"execution_count": 31,
"metadata": {
},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"T(t) in terms of t\n"
]
},
{
"data": {
"text/html": [
""
]
},
"execution_count": 31,
"metadata": {
},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"dT/dt without chain rule\n"
]
},
{
"data": {
"text/html": [
""
]
},
"execution_count": 31,
"metadata": {
},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checking above two equations\n"
]
},
{
"data": {
"text/plain": [
"[t == t]"
]
},
"execution_count": 31,
"metadata": {
},
"output_type": "execute_result"
}
],
"source": [
"var('t')\n",
"\n",
"# Calculating dT/dt with chain rule\n",
"T(x, y) = e^(5*x)*(x^2+y^2)\n",
"print 'Partial derivatives of T(t) in terms of x and y'\n",
"show(T_1.diff())\n",
"\n",
"dT_dx = T.diff()[0]\n",
"dT_dy = T.diff()[1]\n",
"print'dT/dt with chain rule'\n",
"check_dT_dt = dT_dx((t+1)^2,3*t^2)*dx_dt + dT_dy((t+1)^2,3*t^2)*dy_dt\n",
"show(check_dT_dt)\n",
"\n",
"\n",
"# Calculating dT/dt without chain rule\n",
"x(t) = (t+1)^2\n",
"y(t) = 3*t^2\n",
"\n",
"# Recreating T(t) in terms of t only.\n",
"T(t) = e^(5*x)*(x^2+y^2)\n",
"print 'T(t) in terms of t'\n",
"show(T(t))\n",
"test_dT_dt = T.diff()\n",
"print'dT/dt without chain rule'\n",
"show(test_dT_dt)\n",
"\n",
"# Equating those two equations\n",
"print 'Checking above two equations'\n",
"solve(check_dT_dt - test_dT_dt == 0, t)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# 2. Taking up a notch"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": "\n