cs107-lecture-examples

Example codes used during Harvard CS107 lectures
git clone https://git.0xfab.ch/cs107-lecture-examples.git
Log | Files | Refs | README | LICENSE

jacobian.ipynb (6548B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "code",
      5    "execution_count": 1,
      6    "id": "ec28b876-491e-4a36-9f7a-9741091710a8",
      7    "metadata": {},
      8    "outputs": [],
      9    "source": [
     10     "# File       : jacobian.ipynb\n",
     11     "# Description: Compute the Jacobian of f(x) symbolically\n",
     12     "# Copyright 2021 Harvard University. All Rights Reserved.\n",
     13     "import sympy as sym"
     14    ]
     15   },
     16   {
     17    "cell_type": "markdown",
     18    "id": "ca02b856-bad2-4321-bc40-1b241e178564",
     19    "metadata": {},
     20    "source": [
     21     "Initialize the printing enginge:"
     22    ]
     23   },
     24   {
     25    "cell_type": "code",
     26    "execution_count": 2,
     27    "id": "43378bb3-7fb1-4353-b25d-a244aabbc1a8",
     28    "metadata": {},
     29    "outputs": [],
     30    "source": [
     31     "sym.init_printing()"
     32    ]
     33   },
     34   {
     35    "cell_type": "markdown",
     36    "id": "7a55d860-a790-42c6-9139-86bc8216f219",
     37    "metadata": {},
     38    "source": [
     39     "Define the symbolic variable $x$"
     40    ]
     41   },
     42   {
     43    "cell_type": "code",
     44    "execution_count": 3,
     45    "id": "b45dfea4-084e-45c5-bbf8-35c1d783151b",
     46    "metadata": {},
     47    "outputs": [],
     48    "source": [
     49     "x = sym.symbols('x')"
     50    ]
     51   },
     52   {
     53    "cell_type": "markdown",
     54    "id": "e2ee0254-3bc6-4b0c-8dc4-cf709cb51c51",
     55    "metadata": {},
     56    "source": [
     57     "Define the function $f(x)$"
     58    ]
     59   },
     60   {
     61    "cell_type": "code",
     62    "execution_count": 4,
     63    "id": "0d6e1538-8be1-4dfb-b277-2ffe5ba50510",
     64    "metadata": {},
     65    "outputs": [],
     66    "source": [
     67     "f = x - sym.exp(-2 * sym.sin(4 * x)**2)"
     68    ]
     69   },
     70   {
     71    "cell_type": "markdown",
     72    "id": "39954478-feda-44b6-898e-9db0d170123a",
     73    "metadata": {},
     74    "source": [
     75     "Compute the derivative $\\mathrm{d}f/\\mathrm{d}x$ (Jacobian)"
     76    ]
     77   },
     78   {
     79    "cell_type": "code",
     80    "execution_count": 5,
     81    "id": "e705c9bb-d927-428b-8273-574282294e24",
     82    "metadata": {},
     83    "outputs": [
     84     {
     85      "data": {
     86       "image/png": "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\n",
     87       "text/latex": [
     88        "$\\displaystyle 1 + 16 e^{- 2 \\sin^{2}{\\left(4 x \\right)}} \\sin{\\left(4 x \\right)} \\cos{\\left(4 x \\right)}$"
     89       ],
     90       "text/plain": [
     91        "              2                       \n",
     92        "        -2⋅sin (4⋅x)                  \n",
     93        "1 + 16⋅ℯ            ⋅sin(4⋅x)⋅cos(4⋅x)"
     94       ]
     95      },
     96      "execution_count": 5,
     97      "metadata": {},
     98      "output_type": "execute_result"
     99     }
    100    ],
    101    "source": [
    102     "sym.diff(f, x)"
    103    ]
    104   }
    105  ],
    106  "metadata": {
    107   "kernelspec": {
    108    "display_name": "Python 3 (ipykernel)",
    109    "language": "python",
    110    "name": "python3"
    111   },
    112   "language_info": {
    113    "codemirror_mode": {
    114     "name": "ipython",
    115     "version": 3
    116    },
    117    "file_extension": ".py",
    118    "mimetype": "text/x-python",
    119    "name": "python",
    120    "nbconvert_exporter": "python",
    121    "pygments_lexer": "ipython3",
    122    "version": "3.9.7"
    123   }
    124  },
    125  "nbformat": 4,
    126  "nbformat_minor": 5
    127 }