{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "51844410",
   "metadata": {},
   "source": [
    "# Notebook 02 — Direct methods for dense systems\n",
    "\n",
    "Companion to **Deck 02**. Experiments with LU, Cholesky, low-rank updates, least squares, the SVD, and regularization.\n",
    "\n",
    "The notebook is a sandbox: change dimensions, condition numbers, and regularization parameters.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "e80f24d5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:55.880960Z",
     "iopub.status.busy": "2026-11-02T01:56:55.880676Z",
     "iopub.status.idle": "2026-11-02T01:56:56.666317Z",
     "shell.execute_reply": "2026-11-02T01:56:56.664753Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.linalg import lu, cholesky, qr, svd, hilbert\n",
    "\n",
    "np.set_printoptions(precision=3, suppress=False)\n",
    "rng = np.random.default_rng(1)\n",
    "plt.rcParams.update({\"figure.figsize\": (7, 4), \"axes.grid\": True})\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4e9c6c6",
   "metadata": {},
   "source": [
    "## 1. LU with partial pivoting\n",
    "\n",
    "For a random matrix, verify $PA=LU$ and solve $Ax=b$ using the factors. Then compare with a direct solve.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4ba6fef7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:56.669251Z",
     "iopub.status.busy": "2026-11-02T01:56:56.668888Z",
     "iopub.status.idle": "2026-11-02T01:56:56.681222Z",
     "shell.execute_reply": "2026-11-02T01:56:56.680327Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max |PA-LU| = 3.793635591422447e-15\n",
      "unit lower triangular: True\n",
      "relative difference: 1.4944968615760477e-16\n"
     ]
    }
   ],
   "source": [
    "n = 8\n",
    "A = rng.standard_normal((n, n)) + n*np.eye(n)\n",
    "b = rng.standard_normal(n)\n",
    "\n",
    "P, L, U = lu(A)\n",
    "print(\"max |PA-LU| =\", np.linalg.norm(P@A - L@U))\n",
    "print(\"unit lower triangular:\", np.allclose(np.diag(L), 1.0))\n",
    "x_direct = np.linalg.solve(A, b)\n",
    "x_lu = np.linalg.solve(U, np.linalg.solve(L, P@b))\n",
    "print(\"relative difference:\", np.linalg.norm(x_direct-x_lu)/np.linalg.norm(x_direct))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9b1bd6a",
   "metadata": {},
   "source": [
    "## 2. Worst-case growth\n",
    "\n",
    "The Wilkinson matrix produces maximal growth under partial pivoting. The growth factor is exponential, even though the condition number is moderate.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ce29afcf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:56.683577Z",
     "iopub.status.busy": "2026-11-02T01:56:56.683364Z",
     "iopub.status.idle": "2026-11-02T01:56:57.341771Z",
     "shell.execute_reply": "2026-11-02T01:56:57.340171Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def wilkinson(n):\n",
    "    W = np.eye(n)\n",
    "    W[:, -1] = 1.0\n",
    "    for i in range(1, n):\n",
    "        W[i, :i] = -1.0\n",
    "    return W\n",
    "\n",
    "def lu_growth(A):\n",
    "    A = A.astype(float).copy()\n",
    "    n = A.shape[0]\n",
    "    scale = np.max(np.abs(A))\n",
    "    growth = 1.0\n",
    "    for k in range(n-1):\n",
    "        p = k + np.argmax(np.abs(A[k:, k]))\n",
    "        if A[p, k] == 0:\n",
    "            continue\n",
    "        if p != k:\n",
    "            A[[k, p], :] = A[[p, k], :]\n",
    "        for i in range(k+1, n):\n",
    "            A[i, k] /= A[k, k]\n",
    "            A[i, k+1:] -= A[i, k]*A[k, k+1:]\n",
    "        growth = max(growth, np.max(np.abs(A))/scale)\n",
    "    return growth\n",
    "\n",
    "ns = np.arange(4, 16)\n",
    "growth = np.array([lu_growth(wilkinson(n)) for n in ns])\n",
    "plt.semilogy(ns, growth, \"o-\", label=\"observed growth\")\n",
    "plt.semilogy(ns, 2.0**(ns-1), \"--\", label=\"$2^{n-1}$\")\n",
    "plt.xlabel(\"n\"); plt.ylabel(\"growth factor\"); plt.legend()\n",
    "plt.title(\"Wilkinson matrix: worst-case growth\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f81fb2c",
   "metadata": {},
   "source": [
    "## 3. Cholesky and the Schur complement\n",
    "\n",
    "For SPD matrices, Cholesky is half the cost of LU and needs no pivoting. The Schur complement appears in block elimination and in the proof of the Cholesky factorization.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "580cd7b3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:57.345918Z",
     "iopub.status.busy": "2026-11-02T01:56:57.345642Z",
     "iopub.status.idle": "2026-11-02T01:56:57.360003Z",
     "shell.execute_reply": "2026-11-02T01:56:57.357700Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max |A-LL^T| = 5.070693752293403e-15\n",
      "positive diagonal: True\n",
      "Schur complement symmetric: True\n",
      "Schur complement eigenvalues: [ 6.79   7.348  9.4   14.702]\n"
     ]
    }
   ],
   "source": [
    "n = 6\n",
    "B = rng.standard_normal((n, n))\n",
    "A = B@B.T + n*np.eye(n)\n",
    "L = cholesky(A, lower=True)\n",
    "print(\"max |A-LL^T| =\", np.linalg.norm(A - L@L.T))\n",
    "print(\"positive diagonal:\", np.all(np.diag(L) > 0))\n",
    "\n",
    "# Schur complement of the leading 2x2 block\n",
    "k = 2\n",
    "A11, A12, A21, A22 = A[:k,:k], A[:k,k:], A[k:,:k], A[k:,k:]\n",
    "S = A22 - A21 @ np.linalg.solve(A11, A12)\n",
    "print(\"Schur complement symmetric:\", np.allclose(S, S.T))\n",
    "print(\"Schur complement eigenvalues:\", np.linalg.eigvalsh(S))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d798b47",
   "metadata": {},
   "source": [
    "## 4. Sherman–Morrison–Woodbury\n",
    "\n",
    "A rank-$k$ update of an $n\\times n$ matrix can be inverted using a $k\\times k$ inverse. Verify the identity numerically.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5d65d9f2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:57.363256Z",
     "iopub.status.busy": "2026-11-02T01:56:57.363031Z",
     "iopub.status.idle": "2026-11-02T01:56:57.370727Z",
     "shell.execute_reply": "2026-11-02T01:56:57.369847Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "relative SMW error: 2.868599348057466e-16\n"
     ]
    }
   ],
   "source": [
    "n, k = 80, 3\n",
    "A = rng.standard_normal((n, n)); A = A@A.T + n*np.eye(n)\n",
    "U = rng.standard_normal((n, k))\n",
    "V = rng.standard_normal((n, k))\n",
    "\n",
    "Ainv = np.linalg.inv(A)\n",
    "C = np.eye(k) + V.T @ Ainv @ U\n",
    "smw = Ainv - Ainv @ U @ np.linalg.inv(C) @ V.T @ Ainv\n",
    "direct = np.linalg.inv(A + U@V.T)\n",
    "print(\"relative SMW error:\", np.linalg.norm(smw-direct)/np.linalg.norm(direct))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4220a460",
   "metadata": {},
   "source": [
    "## 5. Normal equations versus QR and SVD\n",
    "\n",
    "The normal equations square the condition number. Watch the forward error grow when the Hilbert matrix becomes ill-conditioned.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2df52754",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:57.373036Z",
     "iopub.status.busy": "2026-11-02T01:56:57.372819Z",
     "iopub.status.idle": "2026-11-02T01:56:57.381873Z",
     "shell.execute_reply": "2026-11-02T01:56:57.381103Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n= 5 cond=4.77e+05  NE=1.45e-08  QR=1.12e-12  SVD=1.46e-11\n",
      "n= 7 cond=4.75e+08  NE=2.22e+00  QR=6.43e-09  SVD=1.27e-08\n",
      "n= 9 cond=4.93e+11  NE=3.87e+00  QR=6.94e-06  SVD=6.17e-06\n",
      "n=11 cond=5.22e+14  NE=8.29e+00  QR=3.93e-05  SVD=1.08e-02\n"
     ]
    }
   ],
   "source": [
    "for n in [5, 7, 9, 11]:\n",
    "    A = hilbert(n)\n",
    "    x_true = np.ones(n)\n",
    "    b = A @ x_true\n",
    "    x_ne = np.linalg.solve(A.T@A, A.T@b)\n",
    "    x_qr = np.linalg.lstsq(A, b, rcond=None)[0]\n",
    "    x_svd = np.linalg.pinv(A) @ b\n",
    "    err_ne = np.linalg.norm(x_ne-x_true)/np.linalg.norm(x_true)\n",
    "    err_qr = np.linalg.norm(x_qr-x_true)/np.linalg.norm(x_true)\n",
    "    err_svd = np.linalg.norm(x_svd-x_true)/np.linalg.norm(x_true)\n",
    "    print(f\"n={n:2d} cond={np.linalg.cond(A):8.2e}  NE={err_ne:8.2e}  QR={err_qr:8.2e}  SVD={err_svd:8.2e}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe4eb7e8",
   "metadata": {},
   "source": [
    "## 6. Eckart–Young\n",
    "\n",
    "The truncated SVD is the best rank-$k$ approximation in the spectral and Frobenius norms. Compare the measured errors with the singular values.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "211f5c80",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:57.384149Z",
     "iopub.status.busy": "2026-11-02T01:56:57.383936Z",
     "iopub.status.idle": "2026-11-02T01:56:57.954234Z",
     "shell.execute_reply": "2026-11-02T01:56:57.953271Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "m, n = 50, 30\n",
    "A = rng.standard_normal((m, n)) @ np.diag(np.linspace(5, 0.01, n))\n",
    "U, s, Vt = svd(A, full_matrices=False)\n",
    "ks = np.arange(1, 16)\n",
    "err2 = []\n",
    "errF = []\n",
    "for k in ks:\n",
    "    Ak = U[:, :k] @ np.diag(s[:k]) @ Vt[:k, :]\n",
    "    err2.append(np.linalg.norm(A-Ak, 2))\n",
    "    errF.append(np.linalg.norm(A-Ak, \"fro\"))\n",
    "plt.semilogy(ks, err2, \"o-\", label=\"spectral error\")\n",
    "plt.semilogy(ks, s[1:16], \"s--\", label=r\"$\\sigma_{k+1}$\")\n",
    "plt.semilogy(ks, errF, \"d-.\", label=\"Frobenius error\")\n",
    "plt.xlabel(\"k\"); plt.ylabel(\"error\"); plt.legend()\n",
    "plt.title(\"Eckart–Young truncation\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb95db75",
   "metadata": {},
   "source": [
    "## 7. Tikhonov filtering\n",
    "\n",
    "Tikhonov regularization replaces $\\sigma_j$ by the filtered factors $\\sigma_j^2/(\\sigma_j^2+\\lambda)$. Plot the solution norm and residual as $\\lambda$ varies.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "893e5fb9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:57.956648Z",
     "iopub.status.busy": "2026-11-02T01:56:57.956431Z",
     "iopub.status.idle": "2026-11-02T01:56:58.330950Z",
     "shell.execute_reply": "2026-11-02T01:56:58.329914Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 700x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 40\n",
    "A = hilbert(n)\n",
    "b = A @ np.ones(n)\n",
    "U, s, Vt = svd(A)\n",
    "\n",
    "lambdas = np.logspace(-16, 0, 40)\n",
    "norm_x = []\n",
    "res = []\n",
    "for lam in lambdas:\n",
    "    filt = s**2/(s**2 + lam)\n",
    "    x = Vt.T @ (filt * (U.T @ b) / s)\n",
    "    norm_x.append(np.linalg.norm(x))\n",
    "    res.append(np.linalg.norm(A@x-b))\n",
    "plt.loglog(lambdas, norm_x, label=r\"$\\|x_\\lambda\\|$\")\n",
    "plt.loglog(lambdas, res, label=\"residual\")\n",
    "plt.xlabel(r\"$\\lambda$\"); plt.legend()\n",
    "plt.title(\"Tikhonov filter factors\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53e1eedc",
   "metadata": {},
   "source": [
    "## 8. Soft thresholding and a sparse solution\n",
    "\n",
    "For an orthonormal design, the LASSO solution is the soft threshold $S_\\lambda(A^Tb)$. Change $\\lambda$ and watch the support shrink.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d572a1df",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-11-02T01:56:58.333638Z",
     "iopub.status.busy": "2026-11-02T01:56:58.333387Z",
     "iopub.status.idle": "2026-11-02T01:56:58.345640Z",
     "shell.execute_reply": "2026-11-02T01:56:58.342829Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lambda=0.00  nnz=30  ||x||=4.574\n",
      "lambda=0.05  nnz=15  ||x||=4.464\n",
      "lambda=0.20  nnz= 4  ||x||=4.167\n",
      "lambda=0.50  nnz= 4  ||x||=3.597\n",
      "lambda=1.00  nnz= 4  ||x||=2.674\n"
     ]
    }
   ],
   "source": [
    "n = 30\n",
    "Q, _ = qr(rng.standard_normal((n, n)))\n",
    "x_true = np.zeros(n); x_true[[2, 7, 11, 20]] = [3.0, -2.0, 1.5, 2.5]\n",
    "b = Q @ x_true + 0.1*rng.standard_normal(n)\n",
    "\n",
    "def soft(t, lam):\n",
    "    return np.sign(t)*np.maximum(np.abs(t)-lam, 0.0)\n",
    "\n",
    "for lam in [0.0, 0.05, 0.2, 0.5, 1.0]:\n",
    "    x = soft(Q.T@b, lam)\n",
    "    print(f\"lambda={lam:4.2f}  nnz={np.sum(np.abs(x)>1e-12):2d}  ||x||={np.linalg.norm(x):.3f}\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ace9be5d",
   "metadata": {},
   "source": [
    "## Exercises\n",
    "\n",
    "1. Compare the operation counts of LU and Cholesky by timing `scipy.linalg.lu` and `scipy.linalg.cholesky` for increasing $n$.\n",
    "2. Find a matrix where partial pivoting has growth $2^{n-1}$ but `np.linalg.solve` still returns an accurate solution. Explain why.\n",
    "3. Derive the SMW identity and check it for $k=1$ and $k=3$.\n",
    "4. For the Hilbert matrix, plot the observed least-squares error against $\\kappa(A)$ and $\\kappa(A)^2$.\n",
    "5. Add a residual term to the LSQ experiment and compare the normal-equation, QR, and SVD errors with the perturbation bound from the slides.\n",
    "6. For the LASSO path, plot the number of nonzeros and the prediction error as functions of $\\lambda$.\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv (3.14.7)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
