{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cbf92e4c",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "# Jupyter Notebook and SageMath"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dbd93bed",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "## Recommended Environment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "678f25a2",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "If you are on Windows...\n",
    "\n",
    "- Install WSL\n",
    "- In WSL, install Ubuntu 24.04\n",
    "- In Ubuntu 24.04, install Sagamath (the version does not matter, but higher is better)\n",
    "- Install VS Code\n",
    "- In VS Code, install the WSL extension.\n",
    "- In VS Code, also install the Jupyter extension."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "86194aed",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "If you are on Mac...\n",
    "\n",
    "- Install Sagamath (the version does not matter, but higher is better)\n",
    "- Install VS Code\n",
    "- In VS Code, install the Jupyter extension."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a53c2588",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1 + 1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "17607a70",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "## VS Code Quick Start"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a620bc84",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "Press Ctrl-Shift-P to access the command palette.\n",
    "\n",
    "On Mac, press Command-Shift-P."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "409fd423",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "## Jupyter Notebook Quick Start"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f5dd6a9",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "There are two kinds to cells, text cells and code cells.\n",
    "\n",
    "This is a text cell. (The titles are also text cells.)\n",
    "\n",
    "Inline math $a^2 + b^2 = c^2$ is supported.\n",
    "Display math\n",
    "$$ \\nabla \\cdot \\mathbf{E} = \\frac{\\rho}{\\varepsilon_0} $$\n",
    "$$ \\nabla \\cdot \\mathbf{B} = 0 $$\n",
    "$$ \\nabla \\times \\mathbf{E} = -\\frac{\\partial \\mathbf{B}}{\\partial t} $$\n",
    "$$ \\nabla \\times \\mathbf{B} = \\mu_0 \\mathbf{J} + \\mu_0 \\varepsilon_0 \\frac{\\partial \\mathbf{E}}{\\partial t} $$\n",
    "is also supported."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "71fc77fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# This is a code cell\n",
    "# Change the language setting to allow coloring\n",
    "\n",
    "def Fib(n):\n",
    "    if n <= 1: return n\n",
    "    else: return Fib(n - 1) + Fib(n - 2)\n",
    "\n",
    "# Press Ctrl-Enter to run a cell\n",
    "# Press Shift-Enter to run a cell and move focus to the next cell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b61cf113",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "832040"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# You can skip print() if you only need to print one object\n",
    "\n",
    "Fib(30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "249958a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 5.95 s, sys: 107 μs, total: 5.95 s\n",
      "Wall time: 5.97 s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "9227465"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time Fib(35)\n",
    "\n",
    "# Time the function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c4e2b0d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fib(Integer(30)) = 832040\n",
      "Fib(Integer(31)) = 1346269\n",
      "Fib(Integer(32)) = 2178309\n",
      "CPU times: user 2.76 s, sys: 5.14 ms, total: 2.77 s\n",
      "Wall time: 2.78 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "print(f'{Fib(30) = }')\n",
    "print(f'{Fib(31) = }')\n",
    "print(f'{Fib(32) = }')\n",
    "\n",
    "# Time the whole cell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "385b0a48",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "35.9 μs ± 803 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit Fib(10)\n",
    "\n",
    "# For a command too fast, use timeit to run multiple times to get average"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "97452f67",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "187 μs ± 2.36 μs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "\n",
    "Fib(10)\n",
    "Fib(11)\n",
    "Fib(12)\n",
    "\n",
    "# Guess what is this? (Time the whole cell multiple times to get average)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d7e6e070",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define complicated recursive functions.\n",
    "\n",
    "def F(n):\n",
    "    if n <= 1: return n\n",
    "    else: return F(n - 1) + G(n - 2)\n",
    "\n",
    "def G(n):\n",
    "    if n <= 1: return n\n",
    "    else: return F(n - 1) + G(n - 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c7837522",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         2693198 function calls (685 primitive calls) in 4.464 seconds\n",
      "\n",
      "   Ordered by: internal time\n",
      "\n",
      "   ncalls  tottime  percall  cumtime  percall filename:lineno(function)\n",
      "1346269/1    2.506    0.000    4.447    4.447 1784526098.py:3(F)\n",
      "1346268/29    1.956    0.000    4.491    0.155 1784526098.py:7(G)\n",
      "       14    0.001    0.000    0.001    0.000 socket.py:623(send)\n",
      "  175/171    0.000    0.000    0.000    0.000 {built-in method builtins.isinstance}\n",
      "       60    0.000    0.000    0.000    0.000 enum.py:1576(_get_value)\n",
      "        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}\n",
      "        2    0.000    0.000    0.000    0.000 socket.py:771(recv_multipart)\n",
      "        2    0.000    0.000    0.000    0.000 base_events.py:1977(_run_once)\n",
      "       14    0.000    0.000    0.000    0.000 enum.py:1583(__or__)\n",
      "      2/1    0.000    0.000    4.447    4.447 {built-in method builtins.exec}\n",
      "        4    0.000    0.000    0.000    0.000 attrsettr.py:66(_get_attr_opt)\n",
      "       26    0.000    0.000    0.000    0.000 enum.py:677(__call__)\n",
      "        1    0.000    0.000    0.000    0.000 {method 'execute' of 'sqlite3.Connection' objects}\n",
      "        4    0.000    0.000    0.000    0.000 typing.py:184(_type_check)\n",
      "       32    0.000    0.000    0.000    0.000 typing.py:1355(__eq__)\n",
      "        2    0.000    0.000    0.000    0.000 {method 'poll' of 'select.epoll' objects}\n",
      "      2/1    0.000    0.000    4.447    4.447 <string>:1(<module>)\n",
      "        4    0.000    0.000    0.000    0.000 attrsettr.py:43(__getattr__)\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:3089(_bind)\n",
      "       26    0.000    0.000    0.000    0.000 enum.py:1146(__new__)\n",
      "        6    0.000    0.000    0.000    0.000 enum.py:1594(__and__)\n",
      "        1    0.000    0.000    0.000    0.000 history.py:845(writeout_cache)\n",
      "        3    0.000    0.000    0.002    0.001 {method 'run' of '_contextvars.Context' objects}\n",
      "        2    0.000    0.000    0.000    0.000 typing.py:1583(__subclasscheck__)\n",
      "       12    0.000    0.000    0.000    0.000 typing.py:1361(__hash__)\n",
      "        1    0.000    0.000    0.000    0.000 traitlets.py:1535(_notify_observers)\n",
      "        2    0.000    0.000    0.001    0.000 zmqstream.py:573(_handle_events)\n",
      "        1    0.000    0.000    0.000    0.000 iostream.py:718(_rotate_buffers)\n",
      "        2    0.000    0.000    0.000    0.000 selectors.py:435(select)\n",
      "        9    0.000    0.000    0.000    0.000 {built-in method builtins.hasattr}\n",
      "        1    0.000    0.000    0.000    0.000 asyncio.py:231(add_callback)\n",
      "        2    0.000    0.000    0.000    0.000 zmqstream.py:653(_rebuild_io_state)\n",
      "        5    0.000    0.000    0.000    0.000 base_events.py:766(time)\n",
      "        4    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:1409(_handle_fromlist)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:278(_really_send)\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:3646(set)\n",
      "        3    0.000    0.000    0.008    0.003 events.py:92(_run)\n",
      "       15    0.000    0.000    0.000    0.000 {built-in method builtins.len}\n",
      "        4    0.000    0.000    0.000    0.000 typing.py:396(inner)\n",
      "        2    0.000    0.000    0.000    0.000 ioloop.py:750(_run_callback)\n",
      "        6    0.000    0.000    0.000    0.000 traitlets.py:695(__get__)\n",
      "        1    0.000    0.000    0.000    0.000 iostream.py:616(_flush)\n",
      "        2    0.000    0.000    0.000    0.000 zmqstream.py:546(_run_callback)\n",
      "        2    0.000    0.000    0.000    0.000 zmqstream.py:676(_update_handler)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:213(_is_master_process)\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:3491(validate)\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:708(set)\n",
      "        1    0.000    0.000    0.000    0.000 __init__.py:213(fix)\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:746(_cross_validate)\n",
      "        6    0.000    0.000    0.000    0.000 {method '__enter__' of '_thread.lock' objects}\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:737(_validate)\n",
      "        1    0.000    0.000    0.000    0.000 iostream.py:710(_flush_buffers)\n",
      "        1    0.000    0.000    0.000    0.000 threading.py:641(clear)\n",
      "        2    0.000    0.000    0.000    0.000 {method '__exit__' of 'sqlite3.Connection' objects}\n",
      "       12    0.000    0.000    0.000    0.000 {built-in method builtins.hash}\n",
      "        2    0.000    0.000    0.000    0.000 queue.py:112(empty)\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:2840(args)\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:2893(apply_defaults)\n",
      "        1    0.000    0.000    0.000    0.000 traitlets.py:1520(_notify_trait)\n",
      "        5    0.000    0.000    0.000    0.000 {built-in method time.monotonic}\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:3639(validate_elements)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:276(<lambda>)\n",
      "        1    0.000    0.000    0.000    0.000 base_events.py:846(_call_soon)\n",
      "        4    0.000    0.000    0.000    0.000 {built-in method builtins.getattr}\n",
      "        3    0.000    0.000    0.000    0.000 selector_events.py:744(_process_events)\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:3231(bind)\n",
      "        6    0.000    0.000    0.000    0.000 {built-in method builtins.next}\n",
      "        6    0.000    0.000    0.000    0.000 traitlets.py:648(get)\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:727(__set__)\n",
      "        2    0.000    0.000    0.000    0.000 {built-in method _abc._abc_subclasscheck}\n",
      "        6    0.000    0.000    0.000    0.000 {method '__exit__' of '_thread.lock' objects}\n",
      "        5    0.000    0.000    0.000    0.000 {method 'get' of 'dict' objects}\n",
      "        4    0.000    0.000    0.000    0.000 typing.py:175(_type_convert)\n",
      "        2    0.000    0.000    0.000    0.000 zmqstream.py:614(_handle_recv)\n",
      "       10    0.000    0.000    0.000    0.000 inspect.py:2746(kind)\n",
      "        5    0.000    0.000    0.000    0.000 {method 'popleft' of 'collections.deque' objects}\n",
      "        2    0.000    0.000    0.000    0.000 typing.py:1292(__instancecheck__)\n",
      "        1    0.000    0.000    0.000    0.000 threading.py:325(_acquire_restore)\n",
      "        1    0.000    0.000    0.000    0.000 events.py:41(__init__)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:157(_handle_event)\n",
      "        2    0.000    0.000    0.000    0.000 socket.py:700(send_multipart)\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:2863(kwargs)\n",
      "        2    0.000    0.000    0.000    0.000 <frozen abc>:121(__subclasscheck__)\n",
      "        3    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.lock' objects}\n",
      "        2    0.000    0.000    0.000    0.000 {built-in method builtins.issubclass}\n",
      "        4    0.000    0.000    0.000    0.000 {method 'append' of 'collections.deque' objects}\n",
      "        4    0.000    0.000    0.000    0.000 {method 'upper' of 'str' objects}\n",
      "        5    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}\n",
      "        1    0.000    0.000    0.000    0.000 base_events.py:1962(_add_callback)\n",
      "        1    0.000    0.000    0.000    0.000 history.py:833(_writeout_input_cache)\n",
      "        1    0.000    0.000    0.000    0.000 history.py:839(_writeout_output_cache)\n",
      "        2    0.000    0.000    0.000    0.000 threading.py:316(__exit__)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:216(_check_mp_mode)\n",
      "        2    0.000    0.000    0.000    0.000 zmqstream.py:532(sending)\n",
      "        2    0.000    0.000    0.000    0.000 threading.py:313(__enter__)\n",
      "        1    0.000    0.000    0.000    0.000 base_events.py:817(call_soon)\n",
      "        1    0.000    0.000    0.000    0.000 traitlets.py:1531(notify_change)\n",
      "        1    0.000    0.000    0.000    0.000 {built-in method _heapq.heappop}\n",
      "        3    0.000    0.000    0.000    0.000 {method 'items' of 'mappingproxy' objects}\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:2312(validate)\n",
      "        1    0.000    0.000    0.000    0.000 threading.py:322(_release_save)\n",
      "        2    0.000    0.000    0.000    0.000 {built-in method posix.getpid}\n",
      "        2    0.000    0.000    0.000    0.000 {built-in method math.ceil}\n",
      "        1    0.000    0.000    0.000    0.000 {method '__enter__' of '_thread.RLock' objects}\n",
      "        1    0.000    0.000    0.002    0.002 asyncio.py:206(_handle_events)\n",
      "        2    0.000    0.000    0.000    0.000 queue.py:266(_qsize)\n",
      "        4    0.000    0.000    0.000    0.000 inspect.py:2734(name)\n",
      "        1    0.000    0.000    0.000    0.000 history.py:55(only_when_enabled)\n",
      "        1    0.000    0.000    0.000    0.000 __init__.py:244(fun)\n",
      "        4    0.000    0.000    0.000    0.000 zmqstream.py:528(receiving)\n",
      "        4    0.000    0.000    0.000    0.000 inspect.py:3043(parameters)\n",
      "        2    0.000    0.000    0.000    0.000 {built-in method builtins.iter}\n",
      "        2    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}\n",
      "        1    0.000    0.000    0.000    0.000 {method 'values' of 'mappingproxy' objects}\n",
      "        2    0.000    0.000    0.000    0.000 {method '__enter__' of 'sqlite3.Connection' objects}\n",
      "        2    0.000    0.000    0.000    0.000 traitlets.py:3501(validate_elements)\n",
      "        1    0.000    0.000    0.000    0.000 threading.py:328(_is_owned)\n",
      "        2    0.000    0.000    0.000    0.000 iostream.py:255(closed)\n",
      "        1    0.000    0.000    0.000    0.000 zmqstream.py:684(<lambda>)\n",
      "        1    0.000    0.000    0.000    0.000 {method '__exit__' of '_thread.RLock' objects}\n",
      "        1    0.000    0.000    0.000    0.000 {built-in method _asyncio.get_running_loop}\n",
      "        1    0.000    0.000    0.000    0.000 {built-in method _thread.allocate_lock}\n",
      "        2    0.000    0.000    0.000    0.000 typing.py:2300(cast)\n",
      "        1    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}\n",
      "        1    0.000    0.000    0.000    0.000 {built-in method _contextvars.copy_context}\n",
      "        1    0.000    0.000    0.000    0.000 inspect.py:2832(__init__)\n",
      "        1    0.000    0.000    0.000    0.000 base_events.py:548(_check_closed)\n",
      "        1    0.000    0.000    0.000    0.000 {method 'release' of '_thread.lock' objects}\n",
      "        1    0.000    0.000    0.000    0.000 base_events.py:2075(get_debug)"
     ]
    }
   ],
   "source": [
    "%prun F(30)\n",
    "\n",
    "# Profile run = investigate the fraction of time spent in each function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1b426656",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use software-engineering trick to accelerate\n",
    "\n",
    "from functools import cache\n",
    "\n",
    "@cache\n",
    "def Fib(n):\n",
    "    if n <= 1: return n\n",
    "    else: return Fib(n - 1) + Fib(n - 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4f916038",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "123 ns ± 1.91 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit Fib(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "06298dcb",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 100/100 [00:10<00:00,  9.78it/s]\n"
     ]
    }
   ],
   "source": [
    "# Progress bar (pure text)\n",
    "\n",
    "from tqdm import tqdm\n",
    "# Install tqdm with\n",
    "# /home/simple/miniforge3/bin/conda install -n sage -c conda-forge tqdm\n",
    "\n",
    "for i in tqdm(range(100)):\n",
    "    sleep(float(0.1))\n",
    "    pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2ce158be",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "dcb3e62436fa4b97967fcc254f5858ff",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/100 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Progress bar (HTML)\n",
    "\n",
    "from tqdm.notebook import tqdm\n",
    "# Install tqdm with\n",
    "# /home/simple/miniforge3/bin/conda install -n sage -c conda-forge tqdm\n",
    "\n",
    "s = 0.1\n",
    "for i in tqdm(range(100)):\n",
    "    s = 2 if random() < 0.1 else 0.1\n",
    "    sleep(float(s))\n",
    "    pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f6086be3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# The execution order matters\n",
    "a = 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "586b01d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "20"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The execution order matters\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "9db76e14",
   "metadata": {},
   "outputs": [],
   "source": [
    "# The execution order matters\n",
    "a = 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9b9533af",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The execution order matters\n",
    "a"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a7adb77f",
   "metadata": {
    "vscode": {
     "languageId": "plaintext"
    }
   },
   "source": [
    "## SageMath Quick Start"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "80ebc0f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "63/256"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Symbolic computation\n",
    "\n",
    "1 / 2 * 3 / 4 * 5 / 6 * 7 / 8 * 9 / 10 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "ddd8d845",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.246093750000000"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Use dot to switch to floating-point\n",
    "\n",
    "1 / 2 * 3 / 4 * 5 / 6 * 7 / 8 * 9 / 10."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f99b49fa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1024, 1048576, 1073741824)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Hat is power\n",
    "\n",
    "2^10, 2^20, 2^30"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b975bed9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(e^pi)^sqrt(163)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Mathematical constants are treated mathematically\n",
    "\n",
    "Ramanujan = (e^pi)^163^(1/2)\n",
    "Ramanujan"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "0d61be4e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.6253741264076e17"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Use .n() to control the precision\n",
    "\n",
    "Ramanujan.n(50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "18e635a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.6253741264076874400000000000e17"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Ramanujan.n(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a260aa88",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.625374126407687439999999999992500725971981856888793538563373369908627075374103782106479101186073129511813461860645041930838879497538640449057287144771968148523224320391164782914886422827201311783170650104522268780144484177034696946335570768172388768100092370653951938650636275765788855822394811427691210083088665110728471062346581129818301245913283610006498266592365172617883086371078645219552815427466510961100147250209790463938177871257500980365778e17"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Ramanujan.n(1500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "f50ac252",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(x^3 + x^2 - x + 1,\n",
       " -x^3 + x^2 + x + 1,\n",
       " (x^3 - x)*(x^2 + 1),\n",
       " (x^2 + 1)/(x^3 - x))"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Expressions can be added or multiplied or...\n",
    "\n",
    "f = x^2 + 1\n",
    "g = x^3 - x\n",
    "\n",
    "f + g, f - g, f * g, f / g"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "22253e30",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "x^3 + y^3 - 3*x*y*z + z^3"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# By default, x is a variable\n",
    "# If you need more variables, declare them\n",
    "\n",
    "y = var('y')\n",
    "z = var('z')\n",
    "\n",
    "h = x + y^3 + z^3 - 3*x*y*z \n",
    "\n",
    "g + h"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "b7bc9b98",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(x^2 - x*y + y^2 - x*z - y*z + z^2)*(x + y + z)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Factorization\n",
    "\n",
    "(g + h).factor()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "eaa9f7a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "101"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Expression can be evaluated\n",
    "\n",
    "f(x=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "795b4ca6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "101\n",
      "f(x=Integer(10)) = 101\n",
      "f(x=RealNumber(\"10.\")) = 101.000000000000\n"
     ]
    }
   ],
   "source": [
    "# Use f-string to print better\n",
    "\n",
    "print(f'{f(x=10)}')\n",
    "print(f'{f(x=10) = }')\n",
    "print(f'{f(x=10.) = }')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "060f8ee9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "f(x=Integer(10)) * g(x=Integer(10)) = 99990\n",
      "(f * g)(x=Integer(10)) = 99990\n"
     ]
    }
   ],
   "source": [
    "# Evaluate-and-multiply is the same as multiply-and-evaluate\n",
    "\n",
    "print(f'{f(x=10) * g(x=10) = }')\n",
    "print(f'{(f * g)(x=10) = }')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "10d7f888",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(-1/2*sqrt(1/3)*sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 1/2*sqrt(-(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3) + 6*sqrt(1/3)/sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 4/3/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)),\n",
       "  1),\n",
       " (-1/2*sqrt(1/3)*sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) + 1/2*sqrt(-(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3) + 6*sqrt(1/3)/sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 4/3/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)),\n",
       "  1),\n",
       " (1/2*sqrt(1/3)*sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 1/2*sqrt(-(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3) - 6*sqrt(1/3)/sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 4/3/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)),\n",
       "  1),\n",
       " (1/2*sqrt(1/3)*sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) + 1/2*sqrt(-(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3) - 6*sqrt(1/3)/sqrt((3*(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(2/3) + 4)/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)) - 4/3/(1/18*I*sqrt(229)*sqrt(3) + 1/2)^(1/3)),\n",
       "  1)]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find algebraic roots\n",
    "\n",
    "(x^4 + x + 1).roots()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "533a7b8b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\\left[\\left(-\\frac{1}{2} \\, \\sqrt{\\frac{1}{3}} \\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}} - \\frac{1}{2} \\, \\sqrt{-{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}} + \\frac{6 \\, \\sqrt{\\frac{1}{3}}}{\\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}} - \\frac{4}{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}, 1\\right), \\left(-\\frac{1}{2} \\, \\sqrt{\\frac{1}{3}} \\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}} + \\frac{1}{2} \\, \\sqrt{-{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}} + \\frac{6 \\, \\sqrt{\\frac{1}{3}}}{\\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}} - \\frac{4}{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}, 1\\right), \\left(\\frac{1}{2} \\, \\sqrt{\\frac{1}{3}} \\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}} - \\frac{1}{2} \\, \\sqrt{-{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}} - \\frac{6 \\, \\sqrt{\\frac{1}{3}}}{\\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}} - \\frac{4}{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}, 1\\right), \\left(\\frac{1}{2} \\, \\sqrt{\\frac{1}{3}} \\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}} + \\frac{1}{2} \\, \\sqrt{-{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}} - \\frac{6 \\, \\sqrt{\\frac{1}{3}}}{\\sqrt{\\frac{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{2}{3}} + 4}{{\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}} - \\frac{4}{3 \\, {\\left(\\frac{1}{18} i \\, \\sqrt{229} \\sqrt{3} + \\frac{1}{2}\\right)}^{\\frac{1}{3}}}}, 1\\right)\\right]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Turn to LaTeX\n",
    "\n",
    "latex(_)\n",
    "\n",
    "# Underscore means the output of the recently executed cell"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "050812a8",
   "metadata": {},
   "source": [
    "## Arbitrary Precision Real Numbers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "6af212d3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Real Double Field"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The fastest real numbers; basically IEEE's float64\n",
    "\n",
    "RDF"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "201df321",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Real Field with 53 bits of precision,\n",
       " Real Field with 53 bits of precision,\n",
       " Real Field with 53 bits of precision)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The real numbers with various precision (53 bits by default)\n",
    "\n",
    "RR, RealField(), RealField(53)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "2d29e5cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.14159265358979"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RR(pi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "cc029159",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.14159265358979"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Define a formula that computes pi\n",
    "\n",
    "def chudnovsky(n_terms):\n",
    "    s = 0\n",
    "    for k in range(n_terms):\n",
    "        num =((-1)**k) * factorial(6*k) * (13591409 + 545140134*k)\n",
    "        den = factorial(3*k) * (factorial(k)**3) * (640320 ** (3*k))\n",
    "        s += num / den\n",
    "    C = 426880 * 10005.sqrt()\n",
    "    return C / s\n",
    "\n",
    "RR(chudnovsky(4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "d5250e8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Real Field with 100 bits of precision"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Control your precision\n",
    "\n",
    "RealField(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "0dcc327f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.1415926535897932384626433832795028841971693993751058209849"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RealField(200)(chudnovsky(4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "661bc821",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.1415926535897932384626433832795028841971693993751058209749"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RealField(200)(pi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "5aa1fcea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RealField(200)(pi) == RealField(200)(chudnovsky(4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "809fbfef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RealField(200)(pi) == RealField(200)(chudnovsky(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "6426e060",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "RealField(500)(pi) == RealField(500)(chudnovsky(20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "8080db66",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Complex Field with 53 bits of precision,\n",
       " Complex Field with 53 bits of precision,\n",
       " Complex Field with 53 bits of precision)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Complex numbers\n",
    "\n",
    "CC, ComplexField(), ComplexField(53)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "ed829f3e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Complex Field with 100 bits of precision"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Control the precision\n",
    "\n",
    "ComplexField(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "2a4afb7d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Real Interval Field with 53 bits of precision,\n",
       " Real Interval Field with 53 bits of precision,\n",
       " Real Interval Field with 53 bits of precision)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Interval arithmetic - similar to RR but with precision guarantee\n",
    "\n",
    "RIF, RealIntervalField(), RealIntervalField(53)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "7768b7dd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[3.141592653589794?, 3.141592653589794?, 3.141593?]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Interval arithmetic - it knows the precision\n",
    "\n",
    "[\n",
    "    RIF(pi),\n",
    "    RIF((pi + 10^10) - 10^10),\n",
    "    RIF((pi + 10^10)) - RIF(10^10)\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "282caae0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Real ball field with 53 bits of precision,\n",
       " Real ball field with 53 bits of precision,\n",
       " Real ball field with 53 bits of precision)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Another interval arithmetic package - it knows the precision\n",
    "\n",
    "RBF, RealBallField(), RealBallField(53)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "46774c2e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[3.141592653589793 +/- 3.39e-16],\n",
       " [3.141592653589793 +/- 3.39e-16],\n",
       " [3.14159 +/- 5.85e-6]]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[\n",
    "    RBF(pi),\n",
    "    RBF((pi + 10^10) - 10^10),\n",
    "    RBF((pi + 10^10)) - RBF(10^10)\n",
    "]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a380d89",
   "metadata": {},
   "source": [
    "## Redo Homework Using Latest Technology"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e16e5b13",
   "metadata": {},
   "source": [
    "## HW 1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8def26a",
   "metadata": {},
   "source": [
    "![HW1-1](HW1-1.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "d6aea93d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare y as a function instead of a variable\n",
    "\n",
    "x = var('x')\n",
    "y = function('y')(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "fd823425",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Declare an equation\n",
    "\n",
    "eq = y.diff(x, x) == x * y.diff(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "6c854ff4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-1/2*I*sqrt(2)*sqrt(pi)*_K1*erf(1/2*I*sqrt(2)*x) + _K2"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "desolve(eq, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "733ce984",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(%k1>0)', see `assume?` for more details)\nIs %k1 positive or negative?",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/maxima_lib.py:624\u001b[0m, in \u001b[0;36mMaximaLib._create\u001b[0;34m(self, value, name)\u001b[0m\n\u001b[1;32m    623\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 624\u001b[0m         \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    625\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m error:\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/maxima_lib.py:534\u001b[0m, in \u001b[0;36mMaximaLib.set\u001b[0;34m(self, var, value)\u001b[0m\n\u001b[1;32m    533\u001b[0m cmd \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m : \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m$\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m (var, value\u001b[38;5;241m.\u001b[39mrstrip(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m;\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m--> 534\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43meval\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/maxima_lib.py:480\u001b[0m, in \u001b[0;36mMaximaLib._eval_line\u001b[0;34m(self, line, locals, reformat, **kwds)\u001b[0m\n\u001b[1;32m    479\u001b[0m         \u001b[38;5;28;01mif\u001b[39;00m statement:\n\u001b[0;32m--> 480\u001b[0m             \u001b[43mmaxima_eval\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m#$\u001b[39;49m\u001b[38;5;132;43;01m%s\u001b[39;49;00m\u001b[38;5;124;43m$\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m%\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mstatement\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    481\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m reformat:\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/libs/ecl.pyx:828\u001b[0m, in \u001b[0;36msage.libs.ecl.EclObject.__call__\u001b[0;34m()\u001b[0m\n\u001b[1;32m    827\u001b[0m lispargs = EclObject(list(args))\n\u001b[0;32m--> 828\u001b[0m return ecl_wrap(ecl_safe_apply(self.obj, (<EclObject>lispargs).obj))\n\u001b[1;32m    829\u001b[0m \n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/libs/ecl.pyx:356\u001b[0m, in \u001b[0;36msage.libs.ecl.ecl_safe_apply\u001b[0;34m()\u001b[0m\n\u001b[1;32m    355\u001b[0m     else:\n\u001b[0;32m--> 356\u001b[0m         raise RuntimeError(\"ECL says: {}\".format(message))\n\u001b[1;32m    357\u001b[0m else:\n",
      "\u001b[0;31mRuntimeError\u001b[0m: ECL says: Maxima asks: Is %k1 positive or negative?",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/interface.py:732\u001b[0m, in \u001b[0;36mInterfaceElement.__init__\u001b[0;34m(self, parent, value, is_name, name)\u001b[0m\n\u001b[1;32m    731\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 732\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name \u001b[38;5;241m=\u001b[39m \u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    733\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mTypeError\u001b[39;00m, \u001b[38;5;167;01mRuntimeError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m x:\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/maxima_lib.py:628\u001b[0m, in \u001b[0;36mMaximaLib._create\u001b[0;34m(self, value, name)\u001b[0m\n\u001b[1;32m    627\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIs\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m s:  \u001b[38;5;66;03m# Maxima asked for a condition\u001b[39;00m\n\u001b[0;32m--> 628\u001b[0m     \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_missing_assumption\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    629\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/maxima_lib.py:1057\u001b[0m, in \u001b[0;36mMaximaLib._missing_assumption\u001b[0;34m(self, errstr)\u001b[0m\n\u001b[1;32m   1056\u001b[0m outstr \u001b[38;5;241m=\u001b[39m outstr\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_SAGE_VAR_\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m-> 1057\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(outstr)\n",
      "\u001b[0;31mValueError\u001b[0m: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(%k1>0)', see `assume?` for more details)\nIs %k1 positive or negative?",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[52], line 6\u001b[0m\n\u001b[1;32m      4\u001b[0m y \u001b[38;5;241m=\u001b[39m function(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124my\u001b[39m\u001b[38;5;124m'\u001b[39m)(x)\n\u001b[1;32m      5\u001b[0m eq1 \u001b[38;5;241m=\u001b[39m y\u001b[38;5;241m.\u001b[39mdiff(x, x) \u001b[38;5;241m+\u001b[39m x \u001b[38;5;241m*\u001b[39m y\u001b[38;5;241m.\u001b[39mdiff(x)\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mInteger(\u001b[38;5;241m2\u001b[39m) \u001b[38;5;241m==\u001b[39m Integer(\u001b[38;5;241m0\u001b[39m)\n\u001b[0;32m----> 6\u001b[0m \u001b[43mdesolve\u001b[49m\u001b[43m(\u001b[49m\u001b[43meq1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/calculus/desolvers.py:581\u001b[0m, in \u001b[0;36mdesolve\u001b[0;34m(de, dvar, ics, ivar, show_method, contrib_ode, algorithm)\u001b[0m\n\u001b[1;32m    578\u001b[0m cmd \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(TEMP:\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m,\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m,\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m), if TEMP=false then TEMP else substitute(\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m=\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m),TEMP))\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m%\u001b[39m (ode_solver, de0, dvar_str, ivar_str, dvar_str, dvar_str, ivar_str)\n\u001b[1;32m    579\u001b[0m \u001b[38;5;66;03m# we produce string like this\u001b[39;00m\n\u001b[1;32m    580\u001b[0m \u001b[38;5;66;03m# ode2('diff(y,x,2)+2*'diff(y,x,1)+y-cos(x),y(x),x)\u001b[39;00m\n\u001b[0;32m--> 581\u001b[0m soln \u001b[38;5;241m=\u001b[39m \u001b[43mP\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcmd\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    583\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mstr\u001b[39m(soln)\u001b[38;5;241m.\u001b[39mstrip() \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfalse\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m    584\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m contrib_ode:\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/interface.py:294\u001b[0m, in \u001b[0;36mInterface.__call__\u001b[0;34m(self, x, name)\u001b[0m\n\u001b[1;32m    291\u001b[0m         \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[1;32m    293\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m--> 294\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    295\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m    296\u001b[0m     \u001b[38;5;66;03m# Special methods do not and should not have an option to\u001b[39;00m\n\u001b[1;32m    297\u001b[0m     \u001b[38;5;66;03m# set the name directly, as the identifier assigned by the\u001b[39;00m\n\u001b[1;32m    298\u001b[0m     \u001b[38;5;66;03m# interface should stay consistent. An identifier with a\u001b[39;00m\n\u001b[1;32m    299\u001b[0m     \u001b[38;5;66;03m# user-assigned name might change its value, so we return a\u001b[39;00m\n\u001b[1;32m    300\u001b[0m     \u001b[38;5;66;03m# new element.\u001b[39;00m\n\u001b[1;32m    301\u001b[0m     result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_coerce_from_special_method(x)\n",
      "File \u001b[0;32m~/miniforge3/envs/sage/lib/python3.14/site-packages/sage/interfaces/interface.py:734\u001b[0m, in \u001b[0;36mInterfaceElement.__init__\u001b[0;34m(self, parent, value, is_name, name)\u001b[0m\n\u001b[1;32m    732\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name \u001b[38;5;241m=\u001b[39m parent\u001b[38;5;241m.\u001b[39m_create(value, name\u001b[38;5;241m=\u001b[39mname)\n\u001b[1;32m    733\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mTypeError\u001b[39;00m, \u001b[38;5;167;01mRuntimeError\u001b[39;00m, \u001b[38;5;167;01mValueError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m x:\n\u001b[0;32m--> 734\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(x)\n",
      "\u001b[0;31mTypeError\u001b[0m: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(%k1>0)', see `assume?` for more details)\nIs %k1 positive or negative?"
     ]
    }
   ],
   "source": [
    "# Nonlinear equation is less easy\n",
    "\n",
    "x = var('x')\n",
    "y = function('y')(x)\n",
    "eq1 = y.diff(x, x) + x * y.diff(x)^2 == 0\n",
    "desolve(eq1, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "49803c27",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "x*diff(y(x), x)^2 + diff(y(x), x, x) == 0"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Manually introduce y' as z\n",
    "\n",
    "z = function('z')(x)\n",
    "eq2 = z.diff(x) + x * z^2 == 0\n",
    "eq2.subs(z==y.diff(x)).subs(diff(z, x)==y.diff(x, x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "4b6fb150",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq2.subs(z==y.diff(x)).subs(diff(z, x)==y.diff(x, x)) == eq1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "5683d829",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1/z(x)) == 1/2*x^2 + _C"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol = desolve(eq2, z)\n",
    "sol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "430467f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "z(x) == 2/(x^2 + 2*_C)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol = 1/sol\n",
    "sol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "48545751",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2/(x^2 + 2*_C)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = sol.rhs()\n",
    "z"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "713e3e3c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sqrt(2)*arctan(1/2*sqrt(2)*x/sqrt(_C))/sqrt(_C)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "assume(var('_C') > 0)\n",
    "y = z.integral(x)\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "f084a188",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.diff(x, x) + x * y.diff(x)^2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "d6cbf2c2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[y(x) == ilt((g2883*y(0) + z(0) + D[2](laplace)(z(x)^2, x, g2883))/g2883^2, g2883, x),\n",
       " z(x) == ilt((z(0) + D[2](laplace)(z(x)^2, x, g2883))/g2883, g2883, x)]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# A more automatic way:\n",
    "# Higher-order ODE = system of first-order ODE\n",
    "\n",
    "x = var('x')\n",
    "y = function('y')(x)\n",
    "z = function('z')(x) # supposedly y'\n",
    "eq3 = y.diff(x) == z\n",
    "eq4 = z.diff(x) + x * z^2 == 0\n",
    "desolve_system([eq3, eq4], [y , z], ics = [1, -2, 2])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8720038",
   "metadata": {},
   "source": [
    "![HW1-2](HW1-2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "25f7a0c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Numerical solver\n",
    "\n",
    "var('x')\n",
    "y = function('y')(x)\n",
    "eq3 = y.diff(x) == cos(x * y) * exp(-x^(1/3))\n",
    "sol = desolve_rk4(eq3, y, ics=[0, 1], end_points=10, step=0.02)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "21db70de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[0, 1],\n",
       " [0.02, 1.016622311608073],\n",
       " [0.04, 1.0312961538929295],\n",
       " [0.06, 1.0451231339364628],\n",
       " [0.08, 1.0583368228747951],\n",
       " [0.1, 1.0710574954496683],\n",
       " [0.12, 1.0833589534495813],\n",
       " [0.14, 1.0952908174397138],\n",
       " [0.16, 1.106888349453706],\n",
       " [0.18, 1.1181775211984801],\n",
       " [0.2, 1.1291779177706678],\n",
       " [0.22, 1.139904531949655],\n",
       " [0.24, 1.1503689388513871],\n",
       " [0.26, 1.1605801010881158],\n",
       " [0.28, 1.1705449419040388],\n",
       " [0.3, 1.1802687663640232],\n",
       " [0.32, 1.189755579506599],\n",
       " [0.34, 1.1990083325358645],\n",
       " [0.36, 1.208029117460279],\n",
       " [0.38, 1.2168193239643819]]"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol[:20]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "39e4e6c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AG+xyhWAJGnIELM44v77zcrXHj1sJwIAFBYjdADyJSVJPXuala87dthOAwAoLAodgHyhodL8+ea5Ola+AoBzFKnQTZ8+XXXq1FHp0qUVHR2tdevWnff98+fP15VXXqmyZcuqevXquvXWW3X48OEiBQZQsk6tfD16lJWvAOAUXhe6lJQUjRw5UmPGjNHWrVvVoUMHde/eXRkZGWd9//r165WQkKDbb79dO3bs0Ouvv65Nmzbpr3/96wWHB1Ayatc2Z75++CErXwHACVwej3f/p7pNmzZq2bKlZsyYkX+tcePGio+PV1JS0hnvf/LJJzVjxgx98cUX+deeffZZTZ48Wfv27TvrPXJycpSTk5P/9+zsbNWsWVNZWVmKiIjwJi6ACzB3rjR4sDRlinTvvbbTAADOxasRuuPHjystLU1xcXEFrsfFxWnjxo1n/Uzbtm21f/9+LVu2TB6PR99++63eeOMN9ezZ85z3SUpKktvtzn/VrFnTm5gAiklCgvTQQ2bl69tv204DADgXrwrd999/r9zcXEVGRha4HhkZqYMHD571M23bttX8+fPVr18/lSpVStWqVVPFihX17LPPnvM+o0ePVlZWVv7rXCN5AErexIlmgUT//tK2bbbTAADOpkiLIlwuV4G/ezyeM66dsnPnTg0fPlxjx45VWlqa3nnnHe3du1dDhw49588PDw9XREREgRcAO0JCzMrXhg3NliYHDthOBAD4Pa82Fr7kkksUGhp6xmjcoUOHzhi1OyUpKUnt2rXTAw88IElq1qyZypUrpw4dOuixxx5T9erVixgdgK+UKyctWSK1aWNG69aulcqXt50KAHCKVyN0pUqVUnR0tFJTUwtcT01NVdu2bc/6mZ9//lkhIQVvExoaKsmM7AFwhho1zHN0n38uDRgg5ebaTgQAOMXrKdfExES98MILmjVrlnbt2qV7771XGRkZ+VOoo0ePVkJCQv77e/XqpTfffFMzZszQl19+qQ0bNmj48OFq3bq1atSoUXy/CYAS16yZlJJiit3999tOAwA4xeuzXPv166fDhw9r/PjxyszMVNOmTbVs2TLVrl1bkpSZmVlgT7ohQ4boyJEjmjZtmu677z5VrFhRXbp00aRJk4rvtwDgMz16SM88I919t1SvnjRsmO1EAACv96GzITs7W263m33oAD9y772m2P33v6bkAQDs4SxX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",
      "text/plain": [
       "Graphics object consisting of 1 graphics primitive"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Plot the coordinates\n",
    "\n",
    "line(sol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "7aecc7d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Graphics object consisting of 2 graphics primitives"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Bonus: PID control?\n",
    "\n",
    "var('x')\n",
    "y = var('y')\n",
    "z = var('z') # meant to be y'\n",
    "f(x) = (-1)^floor(x/2) \n",
    "eq3 = z, (f(x) - y) * 100 - z*5\n",
    "eq4 = y, z\n",
    "sol = desolve_system_rk4(eq3, eq4, ics=[0, 1, 2], ivar=x, end_points=10, step=0.001)\n",
    "line([x, y] for x, y, z in sol) + plot(f, 0, 10, color='red')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "7c4babbe",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.integrate import solve_ivp\n",
    "\n",
    "L = 2.0\n",
    "N = 100\n",
    "dx = L / (N + 1)\n",
    "\n",
    "x = np.linspace(dx, L - dx, N)\n",
    "u0 = 1 - (x - 1)**2 + sin(x*10) / 10\n",
    "\n",
    "def heat_rhs(t, u):\n",
    "    dudt = np.zeros_like(u)\n",
    "\n",
    "    dudt[1:-1] = (u[:-2] - 2*u[1:-1] + u[2:]) / dx**2\n",
    "    dudt[0] = (0 - 2*u[0] + u[1]) / dx**2\n",
    "    dudt[-1] = (u[-2] - 2*u[-1] + 0) / dx**2\n",
    "\n",
    "    return dudt\n",
    "\n",
    "t_eval = np.linspace(0, 0.5, 100)\n",
    "\n",
    "sol = solve_ivp(\n",
    "    heat_rhs,\n",
    "    [0, 0.5],\n",
    "    u0,\n",
    "    t_eval=t_eval\n",
    ")\n",
    "\n",
    "X, T = np.meshgrid(x, sol.t)\n",
    "\n",
    "U = sol.y.T   # shape: len(t) by len(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "d6d350d2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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QygUYteuXYyMjFBQUMDMzAwXX3wxN9xwwypF41OBtUpT3XLLLej1ei666CJyc3P51a9+xfe+9z1eeOGFI+qNGzi52CCZDZwR+P1+/v73v7N7924efvhhVCoVV111VcoT51QW25N6amazGZPJRCQSQaVSUVdXR35+/rpNkx2OW999F9O9MyCVsemcagYfHyAejVPTUc70gCjm2HxOLT1va+Pqf3/bUd8jSTA1NTVrnn2KRqPccMMNHDp0iKeeeoqioiImJye5//77yc3N5SMf+cgJH+NrYa3SVEdDS0sL73rXu/jSl750qnZzA2z4yWzgDCEzM5Orr76aq6++mmAwyBNPPMF9993Hddddh1wuT0U455133klvU5dKpeTn55Oeno7JZEKn05GWlsbY2BjRaJSCggIKCwtTM13rEbn5WUjkcpo2lTL42CC6Ki3LUyZmDy2Rq1Xjsno596ouLv/wRUd9vdvtpq+vj+rq6jUTTCwW46abbqK/v589e/ak5mjq6uq49dZbT/jYXg9JaarPfvazq55/LWmqVyIej+PxeN5U9uBnCuv/lm0dYS32BHv27EEikRzxb2xs7DTu8dkBpVLJFVdcwS9/+UuMRiO//e1vkUqlfPCDH6SmpoaPfexjPPbYYyd14t/tdtPb20t5eTmtra00NjZy/vnnp4QvJycn2bNnD4ODg6ysrKw7PbUP3vp2LrtuK8NPDSEIArlasZsrHotTWq/jxu9c96oE4/F46Ovro6qqKiVnf6yIx+PcfPPNPPvsszzxxBPo9foTPpa14nikqV6J73//+/h8Pt75zneetP268MILueWWW07a+71RsEEyx4g//vGP3HLLLXzhC1+gv7+f7du3c+mll67ymTgaxsfHWVlZSf2rq6s7TXt8dkIul/O2t72Nn/3sZywvL3PvvfeiUqm46aabqKqq4iMf+Qh//etfT2ji3+l00tvbS2VlJdXV1annk3pqdXV1nHfeeWzZsoWsrCxmZ2fZs2cP/f3960ZPTVdRwAf/80qKq0TByvkxA3JFGhKJhAvfuZVL3n/0ArjH46G3t5eKioo1F+nj8Tif/vSnefLJJ3niiSdOurzQWrFWaaok7rnnHm6//Xb++Mc/rlmPbQNrx0ZN5hix1hzwnj17uOiii3A4HBstnScBsViM5557LuWJ43A4VnniZGZmHtP7JGdB6urq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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(111, projection='3d')\n",
    "\n",
    "ax.plot_surface(X, T, U, cmap='viridis')\n",
    "\n",
    "ax.set_xlabel(\"x\")\n",
    "ax.set_ylabel(\"t\")\n",
    "ax.set_zlabel(\"u(x,t)\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c5d69dd5",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "points = [\n",
    "    (float(x[j]), float(sol.t[i]), float(sol.y[j, i]))\n",
    "    for i in range(len(sol.t))\n",
    "    for j in range(len(x))\n",
    "]\n",
    "\n",
    "list_plot3d(\n",
    "    points,\n",
    "    interpolation_type='linear',\n",
    "    aspect_ratio=[1, 5, 1], \n",
    "    axes_labels=['x', 't', 'u(x,t)']\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "302c5ada",
   "metadata": {},
   "source": [
    "## HW 2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96529774",
   "metadata": {},
   "source": [
    "![HW2-2](HW2-2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "8f34c678",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1/(s^2 + 1)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Laplace transform\n",
    "\n",
    "var('t s')\n",
    "laplace(sin(t), t, s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "846c5785",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1/(s^2 + 1)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sin(t).laplace(t, s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "87ed054e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "s/(s^2 + 1)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "laplace(sin(t).diff(t), t, s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "10d4d6d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sin(t)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inverse_laplace(1/(s^2 + 1), s, t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "7af02a9b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50582988811/22680*(x - 10)^10*e^(-100) - 1326868945/1134*(x - 10)^9*e^(-100) + 276863221/504*(x - 10)^8*e^(-100) - 14361790/63*(x - 10)^7*e^(-100) + 1481797/18*(x - 10)^6*e^(-100) - 76030/3*(x - 10)^5*e^(-100) + 38803/6*(x - 10)^4*e^(-100) - 3940/3*(x - 10)^3*e^(-100) + 199*(x - 10)^2*e^(-100) - 20*(x - 10)*e^(-100) + e^(-100)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Taylor\n",
    "\n",
    "var('x')\n",
    "f = exp(-x^2)\n",
    "f.taylor(x, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "108cde4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2/5*sin(5*x) - 1/2*sin(4*x) + 2/3*sin(3*x) - sin(2*x) + 2*sin(x)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Fourier series\n",
    "\n",
    "var('x')\n",
    "f = piecewise([((-pi, pi), x)])\n",
    "f.fourier_series_partial_sum(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "de166b8a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{\\pi} e^{- \\pi^{2} k^{2}}$"
      ],
      "text/plain": [
       "sqrt(pi)*exp(-pi**2*k**2)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sympy as sp\n",
    "\n",
    "x, k = sp.symbols('x k', real=True)\n",
    "f = sp.exp(-x**2)\n",
    "F = sp.fourier_transform(f, x, k)\n",
    "F"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "a8fd2adb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exp(-x**2)\n"
     ]
    }
   ],
   "source": [
    "x, k = sp.symbols('x k', real=True)\n",
    "F = sp.sqrt(sp.pi) * sp.exp(-sp.pi**2 * k**2)\n",
    "f = sp.inverse_fourier_transform(F, k, x)\n",
    "print(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "05ab4909",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(gamma(s), (0, oo), True)\n"
     ]
    }
   ],
   "source": [
    "x, s = sp.symbols('x s', positive=True)\n",
    "f = sp.exp(-x)\n",
    "M = sp.mellin_transform(f, x, s)\n",
    "print(M)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "20337903",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exp(-x)\n"
     ]
    }
   ],
   "source": [
    "x, s = sp.symbols('x s', positive=True)\n",
    "F = sp.gamma(s)\n",
    "f = sp.inverse_mellin_transform(F, s, x, (0, sp.oo))\n",
    "print(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "ca267b35",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Piecewise((1/(-a/z + 1), Abs(a/z) < 1), (Sum(a**n/z**n, (n, 0, oo)), True))\n"
     ]
    }
   ],
   "source": [
    "n, z = sp.symbols('n z')\n",
    "a = sp.symbols('a')\n",
    "x_n = a**n\n",
    "Z = sp.summation(x_n * z**(-n), (n, 0, sp.oo))\n",
    "print(Z)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "599e90b0",
   "metadata": {},
   "source": [
    "![HW2-3](HW2-3.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "8a8c79ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[      pi 1/2*pi^2 1/3*pi^3]\n",
       "[1/2*pi^2 1/3*pi^3 1/4*pi^4]\n",
       "[1/3*pi^3 1/4*pi^4 1/5*pi^5]"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "var('x')\n",
    "\n",
    "def innp(f, g): return (f * g).integral(x, 0, pi)\n",
    "\n",
    "fourA = matrix([\n",
    "    [innp(x^i,  x^j) for i in range(3)]\n",
    "    for j in range(3)\n",
    "])\n",
    "\n",
    "fourA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "5febf861",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[              sqrt(pi)                      0                      0]\n",
       "[          1/2*pi^(3/2) 1/2*sqrt(1/3)*pi^(3/2)                      0]\n",
       "[          1/3*pi^(5/2) 1/2*sqrt(1/3)*pi^(5/2) 1/6*sqrt(1/5)*pi^(5/2)]"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L = fourA.cholesky()\n",
    "L"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "239a081f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(sqrt(pi), 1/2*sqrt(1/3)*pi^(3/2)*x + 1/2*pi^(3/2), 1/6*sqrt(1/5)*pi^(5/2)*x^2 + 1/2*sqrt(1/3)*pi^(5/2)*x + 1/3*pi^(5/2))"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L * vector([x^0, x^1, x^2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "9c293329",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[                                                                1/sqrt(pi)]\n",
       "[                            -3*sqrt(1/3)/sqrt(pi) + 6*sqrt(1/3)*x/pi^(3/2)]\n",
       "[5*sqrt(1/5)/sqrt(pi) - 30*sqrt(1/5)*x/pi^(3/2) + 30*sqrt(1/5)*x^2/pi^(5/2)]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B = L^-1 * matrix([[x^0, x^1, x^2]]).T\n",
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "d2494712",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-(pi - pi*e)/sqrt(pi),\n",
       " -sqrt(3)*sqrt(pi)*e + 3*sqrt(3)*sqrt(pi),\n",
       " 7*sqrt(5)*sqrt(pi)*e - 19*sqrt(5)*sqrt(pi))"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f = exp(x/pi)\n",
    "innp(f, B[0][0]), innp(f, B[1][0]), innp(f, B[2][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "3f82671e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[  2   0 2/3]\n",
       "[  0 2/3   0]\n",
       "[2/3   0 2/5]"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Legendre\n",
    "\n",
    "var('x')\n",
    "def innp(f, g): return (f * g).integral(x, -1, 1)\n",
    "Le = matrix([\n",
    "    [innp(x^i,  x^j) for i in range(3)]\n",
    "    for j in range(3)\n",
    "])\n",
    "Le"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "005ddb99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[   1    0    0]\n",
       "[   0    1    0]\n",
       "[-1/2    0  3/2]"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diagonal_matrix([sqrt(2/1), sqrt(2/3), sqrt(2/5)]) * Le.cholesky()^-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "f2d46d11",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, x, 3/2*x^2 - 1/2)"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "legendre_P(0, x), legendre_P(1, x), legendre_P(2, x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07f42f58",
   "metadata": {},
   "source": [
    "Same matrix-comprehension format, with the standard orthogonality weights."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "71747443",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[  2   0   0   0   0]\n",
       "[  0 2/3   0   0   0]\n",
       "[  0   0 2/5   0   0]\n",
       "[  0   0   0 2/7   0]\n",
       "[  0   0   0   0 2/9]"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Built-in orthogonal polynomial bases\n",
    "\n",
    "var('x')\n",
    "N = 5\n",
    "\n",
    "# Legendre: weight 1 on [-1, 1]\n",
    "Leg = matrix([\n",
    "    [(legendre_P(i, x) * legendre_P(j, x)).integral(x, -1, 1) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "Leg\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "7a62c4ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[    pi      0      0      0      0]\n",
       "[     0 1/2*pi      0      0      0]\n",
       "[     0      0 1/2*pi      0      0]\n",
       "[     0      0      0 1/2*pi      0]\n",
       "[     0      0      0      0 1/2*pi]"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Chebyshev T: weight 1/sqrt(1 - x^2) on [-1, 1]\n",
    "CheT = matrix([\n",
    "    [(chebyshev_T(i, x) * chebyshev_T(j, x) / sqrt(1 - x^2)).integral(x, -1, 1) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "CheT\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "aaae46d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1/2*pi      0      0      0      0]\n",
       "[     0 1/2*pi      0      0      0]\n",
       "[     0      0 1/2*pi      0      0]\n",
       "[     0      0      0 1/2*pi      0]\n",
       "[     0      0      0      0 1/2*pi]"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Chebyshev U: weight sqrt(1 - x^2) on [-1, 1]\n",
    "CheU = matrix([\n",
    "    [(chebyshev_U(i, x) * chebyshev_U(j, x) * sqrt(1 - x^2)).integral(x, -1, 1) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "CheU\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "6f4b891b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1 0 0 0 0]\n",
       "[0 1 0 0 0]\n",
       "[0 0 1 0 0]\n",
       "[0 0 0 1 0]\n",
       "[0 0 0 0 1]"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Laguerre: weight exp(-x) on [0, infinity)\n",
    "Lag = matrix([\n",
    "    [(laguerre(i, x) * laguerre(j, x) * exp(-x)).integral(x, 0, oo) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "Lag\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "2df47588",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[    sqrt(pi)            0            0            0            0]\n",
       "[           0   2*sqrt(pi)            0            0            0]\n",
       "[           0            0   8*sqrt(pi)            0            0]\n",
       "[           0            0            0  48*sqrt(pi)            0]\n",
       "[           0            0            0            0 384*sqrt(pi)]"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Hermite: weight exp(-x^2) on (-infinity, infinity)\n",
    "Her = matrix([\n",
    "    [(hermite(i, x) * hermite(j, x) * exp(-x^2)).integral(x, -oo, oo) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "Her\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "8f76314f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[  4/3     0     0     0     0]\n",
       "[    0   4/3     0     0     0]\n",
       "[    0     0   6/5     0     0]\n",
       "[    0     0     0 16/15     0]\n",
       "[    0     0     0     0 20/21]"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Jacobi: weight (1 - x)^alpha * (1 + x)^beta on [-1, 1]\n",
    "alpha = 1\n",
    "beta = 2\n",
    "\n",
    "Jac = matrix([\n",
    "    [(jacobi_P(i, alpha, beta, x) * jacobi_P(j, alpha, beta, x) * (1 - x)^alpha * (1 + x)^beta).integral(x, -1, 1) for j in range(N)]\n",
    "    for i in range(N)\n",
    "])\n",
    "Jac\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51d9e2c4",
   "metadata": {},
   "source": [
    "## HW 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "35e3c421",
   "metadata": {},
   "source": [
    "![HW3-1](HW3-1.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "50a687b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20*exp(-2*I*pi*x*xi)*cos(10*pi*x),\n",
       " sqrt(pi)*(-I*pi*xi + 1)*exp(-pi*xi*(pi*xi + 2*I)))"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SymPy checks for problem 1\n",
    "import sympy as sp\n",
    "\n",
    "x, xi = sp.symbols('x xi', real=True)\n",
    "I = sp.I\n",
    "\n",
    "G1a = sp.integrate(\n",
    "    sp.cos(10*sp.pi*x) * sp.exp(-2*sp.pi*I*x*xi),\n",
    "    (x, 0, 20)\n",
    ")\n",
    "\n",
    "G1b = sp.fourier_transform(\n",
    "    x * sp.exp(-(x - 1)**2),\n",
    "    x,\n",
    "    xi\n",
    ")\n",
    "\n",
    "sp.simplify(G1a), sp.simplify(G1b)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "58437bd5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{FT}{\\left(\\operatorname{conv}{\\left(\\delta^{\\left( 1 \\right)}\\left( x \\right),\\operatorname{conv}{\\left(\\sin{\\left(\\pi x \\right)},\\operatorname{conv}{\\left(\\operatorname{sinc}{\\left(3 x \\right)},\\operatorname{conv}{\\left(\\operatorname{sinc}{\\left(4 x \\right)},\\operatorname{sinc}{\\left(5 x \\right)} \\right)} \\right)} \\right)} \\right)} \\right)}$"
      ],
      "text/plain": [
       "FT(conv(DiracDelta(x, 1), conv(sin(pi*x), conv(sinc(3*x), conv(sinc(4*x), sinc(5*x))))))"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Problem 2(a), binary virtual conv + FT + subs\n",
    "# Formula: delta'(x) * sin(pi*x) * sinc(3*x) * sinc(4*x) * sinc(5*x)\n",
    "\n",
    "import sympy as sp\n",
    "\n",
    "x, xi = sp.symbols('x xi', real=True)\n",
    "I = sp.I\n",
    "\n",
    "conv = sp.Function('conv')\n",
    "FT = sp.Function('FT')\n",
    "sinc = sp.Function('sinc')\n",
    "dprime = sp.diff(sp.DiracDelta(x), x)\n",
    "\n",
    "expr = FT(conv(dprime,\n",
    "    conv(sp.sin(sp.pi*x),\n",
    "    conv(sinc(3*x),\n",
    "    conv(sinc(4*x),\n",
    "    sinc(5*x),\n",
    ")))))\n",
    "\n",
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "ff4b8cf4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{FT}{\\left(\\operatorname{sinc}{\\left(3 x \\right)} \\right)} \\operatorname{FT}{\\left(\\operatorname{sinc}{\\left(4 x \\right)} \\right)} \\operatorname{FT}{\\left(\\operatorname{sinc}{\\left(5 x \\right)} \\right)} \\operatorname{FT}{\\left(\\sin{\\left(\\pi x \\right)} \\right)} \\operatorname{FT}{\\left(\\delta^{\\left( 1 \\right)}\\left( x \\right) \\right)}$"
      ],
      "text/plain": [
       "FT(sinc(3*x))*FT(sinc(4*x))*FT(sinc(5*x))*FT(sin(pi*x))*FT(DiracDelta(x, 1))"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def apply_conv_rule(expr):\n",
    "    if expr.func == FT and expr.args[0].func == conv:\n",
    "        a, b = expr.args[0].args\n",
    "        return apply_conv_rule(FT(a)) * apply_conv_rule(FT(b))\n",
    "    return expr\n",
    "\n",
    "expr2 = apply_conv_rule(expr)\n",
    "expr2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "68831589",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\pi \\xi \\left(\\delta\\left(\\xi - \\frac{1}{2}\\right) - \\delta\\left(\\xi + \\frac{1}{2}\\right)\\right) \\left(- \\frac{\\theta\\left(\\xi - \\frac{5}{2}\\right)}{5} + \\frac{\\theta\\left(\\xi + \\frac{5}{2}\\right)}{5}\\right) \\left(- \\frac{\\theta\\left(\\xi - 2\\right)}{4} + \\frac{\\theta\\left(\\xi + 2\\right)}{4}\\right) \\left(- \\frac{\\theta\\left(\\xi - \\frac{3}{2}\\right)}{3} + \\frac{\\theta\\left(\\xi + \\frac{3}{2}\\right)}{3}\\right)$"
      ],
      "text/plain": [
       "pi*xi*(DiracDelta(xi - 1/2) - DiracDelta(xi + 1/2))*(-Heaviside(xi - 5/2)/5 + Heaviside(xi + 5/2)/5)*(-Heaviside(xi - 2)/4 + Heaviside(xi + 2)/4)*(-Heaviside(xi - 3/2)/3 + Heaviside(xi + 3/2)/3)"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def rect(a):\n",
    "    a = sp.Rational(a)\n",
    "    return sp.Heaviside(xi + a/2) - sp.Heaviside(xi - a/2)\n",
    "\n",
    "rules = {\n",
    "    FT(dprime): 2*sp.pi*I*xi,\n",
    "    FT(sp.sin(sp.pi*x)): (\n",
    "        sp.DiracDelta(xi - sp.Rational(1, 2))\n",
    "        - sp.DiracDelta(xi + sp.Rational(1, 2))\n",
    "    )/(2*I),\n",
    "    FT(sinc(3*x)): sp.Rational(1, 3)*rect(3),\n",
    "    FT(sinc(4*x)): sp.Rational(1, 4)*rect(4),\n",
    "    FT(sinc(5*x)): sp.Rational(1, 5)*rect(5),\n",
    "}\n",
    "\n",
    "expr3 = expr2.subs(rules)\n",
    "expr3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02afcc56",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1c219bed",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "SageMath 10.8",
   "language": "sage",
   "name": "sagemath"
  },
  "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.14.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
