{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br />\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "<font size=\"7\">数値計算試験問題</font>\n",
    "</div>\n",
    "<br />\n",
    "<div style=\"text-align: right;\">\n",
    "<font size=\"4\">2026/07/15 実施</font>\n",
    "<br />\n",
    "<font size=\"4\">cc by Shigeto R. Nishitani 2026</font>\n",
    "</div>\n",
    "\n",
    "pick_works_from_ans ex26_ans.ipynb -1 '9 12 15' ''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 問１：線形代数，行列の４空間（25点）\n",
    "\n",
    "次の行列$A \\in \\mathbb{R}^{4 \\times 5}$を以下の通り定義する．\n",
    "\\begin{equation*}\n",
    "  A = \\left(\\begin{array}{ccccc}\n",
    "    1 & 0 & 0 & 1 & 1\n",
    "    \\\\\n",
    "    1 & 1 & 1 & 1 & 0\n",
    "    \\\\\n",
    "    0 & 1 & 1 & 0 & -1\n",
    "    \\\\\n",
    "    0 & 0 & 1 & 1 & -1\n",
    "  \\end{array}\\right)\n",
    "\\end{equation*}\n",
    "この行列 $A$ が定義する線形写像を \n",
    "$f: \\mathbb{R}^5 \\to \\mathbb{R}^4$（$f(\\boldsymbol{x}) = A\\boldsymbol{x}$）とする．\n",
    "以下の問いに答えよ．\n",
    "\n",
    "**設問：**\n",
    "1. **行空間と列空間** : \n",
    "    行列 $A$ の行空間 ${\\rm R}(A)$ および列空間 ${\\rm C}(A)$ の基底をそれぞれ求めよ．\n",
    "\n",
    "1. **像と核**: 写像 $f$ の像 $\\text{Im}(f)$ および核 $\\text{Ker}(f)$ の次元と基底を求めよ．\n",
    "\n",
    "1. **直交補空間の検証（行空間と核）**: $\\mathbb{R}^5$ において，核 $\\text{Ker}(f)$ と行空間 ${\\rm R}(A)$ が互いに直交補空間であることを，それぞれの基底を用いた内積計算により示せ．\n",
    "\n",
    "1. **直交補空間の検証（像と左核）** : 転置行列 $A^{\\rm T}$ が定義する線形写像 $f^{\\rm T}: \\mathbb{R}^4 \\to \\mathbb{R}^5$ (随伴写像と呼ばれる)を考える．このとき，その核 $\\text{Ker}(f^{\\rm T})$（左核と呼ばれる）が，写像 $f$ の像 $\\text{Im}(f)$ の直交補空間であることを示せ．\n",
    "1. **基本4空間による全体空間の分割（次元定理）** : 上記の設問を参考にして，行列の基本4空間（行空間 ${\\rm R}(A)$，列空間 ${\\rm C}(A)$，核 ${\\rm Ker}(A)$，\n",
    "    左核 ${\\rm Ker}(A^T)$）の包含関係と，それぞれの次元の間の関係を，図１を参考にまとめて説明せよ．\n",
    "\n",
    "\n",
    "\n",
    "<figure style=\"text-align: center;\">\n",
    "  <img src=\"https://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/2026/num_recipe/files/draw_four_spaces.010m.png\" width=\"600\">\n",
    "    <figcaption style=\"font-weight: bold; margin-bottom: 8px; text-align: center;\">図1：行列の基本４空間のイメージ図．</figcaption>\n",
    "</figure>\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( \\left[\\begin{matrix}1\\\\1\\\\0\\\\0\\end{matrix}\\right], \\  \\left[\\begin{matrix}0\\\\1\\\\1\\\\0\\end{matrix}\\right], \\  \\left[\\begin{matrix}0\\\\1\\\\1\\\\1\\end{matrix}\\right]\\right)$"
      ],
      "text/plain": [
       "⎛⎡1⎤  ⎡0⎤  ⎡0⎤⎞\n",
       "⎜⎢ ⎥  ⎢ ⎥  ⎢ ⎥⎟\n",
       "⎜⎢1⎥  ⎢1⎥  ⎢1⎥⎟\n",
       "⎜⎢ ⎥, ⎢ ⎥, ⎢ ⎥⎟\n",
       "⎜⎢0⎥  ⎢1⎥  ⎢1⎥⎟\n",
       "⎜⎢ ⎥  ⎢ ⎥  ⎢ ⎥⎟\n",
       "⎝⎣0⎦  ⎣0⎦  ⎣1⎦⎠"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sympy as sp\n",
    "\n",
    "# 数式の見栄えを良くする設定\n",
    "sp.init_printing(use_unicode=True)\n",
    "a1 = sp.Matrix([1, 1, 0, 0])\n",
    "a2 = sp.Matrix([0, 1, 1, 0])\n",
    "a3 = sp.Matrix([0, 1, 1, 1])\n",
    "a1, a2,a3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1 & 0 & 0 & 1 & 1\\\\1 & 1 & 1 & 1 & 0\\\\0 & 1 & 1 & 0 & -1\\\\0 & 0 & 1 & 1 & -1\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "⎡1  0  0  1  1 ⎤\n",
       "⎢              ⎥\n",
       "⎢1  1  1  1  0 ⎥\n",
       "⎢              ⎥\n",
       "⎢0  1  1  0  -1⎥\n",
       "⎢              ⎥\n",
       "⎣0  0  1  1  -1⎦"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = sp.Matrix.hstack(a1,a2,a3,a3-a2+a1,a1-a3)\n",
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【ans 1：解答例】R(A)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhoAAAAZCAYAAAB3soehAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE9klEQVR4Ae2d4XHTQBCFFSYFZEIHSQeEVEDSAaEDkg6Sn84/JnQAlBA6ACpgkg6gA0JK4K2jA2PL8lm61Tvp3s1oTtKdb3e/t3Iu0tnemc1mt1VVvcAWyun19fXPcGA1jjf2Weyv/XIJIFcuEf3FAoErnPu8cOy6q1x1xavBlwgo35eA6HDSBGLyvanPLqgcoOFwA52YPhuGUHMJBJBL7xGnbRX2z1Ht2/6ARbk6IOzSTSnfS8+AsuKPyfemPs/KwqRoRUAEREAEREAEhiRgdzR6F8xg7NGLPV45wv5j7wEjB4Ctm7rrL9R2V+YG5/577BM5VKduGdincDdYiJ1mu5NY9Yuk2fDXaZ0v1Gu1T87U/ivft4Soa41zrW0pU2P31O/vnScacGQPHn7C9oDtJbYDbIMV2L+DsXeo58//a3/uUK+sMfFwimW/jpPCnWk7hYbSbPjr1HRjce+bM8r37gRZmjM1Y9rurtS/V3r632eiYXcuzsxNOGgLAG3GP0iBPXv2v4f67yJD7D/Wxx/QdurpCNO+xYnYWNxptvvqKc2Gv05NMyb3BDmjfO8Akak5bNM0Y9ruINPKSzz9H+saDftDe79Cqqq+49wJgO01tKU8xbafMpZSxpJmHKXFvTzu0pyjebZWxzrROAFRe2SzXML6DGv3LGz7nrFNdWxpxlFW3MvjLs05mmdrdXQTjci7FftexNn2veKa8rjSjKOuuJfHXZpzNM/d6ugmGgAaJhH2LG5d8Xx0wra/LmadX09Amq1n49ki7p5014/N5M60vZ6IWqgExjjRiAH2PKaTYx+2fcfQJju0NONIK+7lcZfmHM1pVndplrsbblqbEUYLs2n7Xg2vwrbvFdeUx5VmHHWp3Ovb+N8Q+jZ3OM/wunsOrmRWmdyZtpMBHONAOef76CYagGkfY7U8aHrzCOfCotDk+cK2nzygAgaUZhyR2dzNPiI/4kTPs8rkzrTNI56H5ZzzfayPTr5C2oMGecMdDWv3LGz7nrFNdWxpxlFW3MvjLs05mmdrdawTDfu6c/s20uVi/73c1zO75baUx2z7KWMpZSxpxlFa3MvjLs05mmdrNdVEIyzuCXcUXAPGROIjDDygfh0MYd8em7zB9jac86rZ9hfiGpT7gl3bTWq71m/JRLpDaTZnmVSzGHUy4h7jblufpOymnO8ZaZ5Us7bkaGhj2m5wZ+tTSf3vtUYDCWUzVysnT1V1i3O2PuJLnWz1aZfqCKPaj6gdo7bFn1a/wvFQC7lo9hEjjbuHbYxpk8Tfph024+pVpNkT2SGvU7NI4943kZTvnQnSNPfQLJYC03asj239vPzfmc1m9kNkrW/uaN/Yp815tZVJAHljv0lTobY7UK0FfX7UHXr9AjDGUa62klajFwHknvLdC67GzY5ATL6HPqkenWQHQQ6NiwAS8hAeX43La3krAt0IKN+7cdOrxklAE41x6jZVr4/xBmwfSVQRgRIIKN9LUFkxVppoKAmyIIAJhq3T8PyitSzilBMiYASU78qDkghoolGS2nnHeo433/d5uyjvRCAZAeV7MpQaKHcCmmjkrlAh/mmSUYjQCnNOQPmuRCiJgCYaJamtWEVABERABERgYALz79HA7Dp8tNDMn+J45bdCYvoM7LvMZUgAeXIJty5q1+wL3Ab/JIlyNcPEmKhLyveJCquwGgnE5HtTnz+Fk/ahjF/AFAAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle \\left[ \\left[\\begin{matrix}1 & 0 & 0 & 1 & 1\\end{matrix}\\right], \\  \\left[\\begin{matrix}0 & 1 & 1 & 0 & -1\\end{matrix}\\right], \\  \\left[\\begin{matrix}0 & 0 & 1 & 1 & -1\\end{matrix}\\right]\\right]$"
      ],
      "text/plain": [
       "[[1  0  0  1  1], [0  1  1  0  -1], [0  0  1  1  -1]]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"【ans 1：解答例】R(A)\")\n",
    "A.rowspace()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【ans 1：解答例】C(A)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left[ \\left[\\begin{matrix}1\\\\1\\\\0\\\\0\\end{matrix}\\right], \\  \\left[\\begin{matrix}0\\\\1\\\\1\\\\0\\end{matrix}\\right], \\  \\left[\\begin{matrix}0\\\\1\\\\1\\\\1\\end{matrix}\\right]\\right]$"
      ],
      "text/plain": [
       "⎡⎡1⎤  ⎡0⎤  ⎡0⎤⎤\n",
       "⎢⎢ ⎥  ⎢ ⎥  ⎢ ⎥⎥\n",
       "⎢⎢1⎥  ⎢1⎥  ⎢1⎥⎥\n",
       "⎢⎢ ⎥, ⎢ ⎥, ⎢ ⎥⎥\n",
       "⎢⎢0⎥  ⎢1⎥  ⎢1⎥⎥\n",
       "⎢⎢ ⎥  ⎢ ⎥  ⎢ ⎥⎥\n",
       "⎣⎣0⎦  ⎣0⎦  ⎣1⎦⎦"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"【ans 1：解答例】C(A)\")\n",
    "A.columnspace()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【ans 2：解答例】Im f = C(A)\n",
      "【ans 2：解答例】Ker(A)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left[ \\left[\\begin{matrix}-1\\\\1\\\\-1\\\\1\\\\0\\end{matrix}\\right], \\  \\left[\\begin{matrix}-1\\\\0\\\\1\\\\0\\\\1\\end{matrix}\\right]\\right]$"
      ],
      "text/plain": [
       "⎡⎡-1⎤  ⎡-1⎤⎤\n",
       "⎢⎢  ⎥  ⎢  ⎥⎥\n",
       "⎢⎢1 ⎥  ⎢0 ⎥⎥\n",
       "⎢⎢  ⎥  ⎢  ⎥⎥\n",
       "⎢⎢-1⎥, ⎢1 ⎥⎥\n",
       "⎢⎢  ⎥  ⎢  ⎥⎥\n",
       "⎢⎢1 ⎥  ⎢0 ⎥⎥\n",
       "⎢⎢  ⎥  ⎢  ⎥⎥\n",
       "⎣⎣0 ⎦  ⎣1 ⎦⎦"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"【ans 2：解答例】Im f = C(A)\")\n",
    "print(\"【ans 2：解答例】Ker(A)\")\n",
    "A.nullspace()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【ans 3：解答例】\n",
      "--- 直交性の検証 (内積計算: r_i ⋅ n_j) ---\n",
      "\n",
      "[行空間基底 r1] ⋅ [核の基底 n1] = 0\n",
      "\n",
      "[行空間基底 r1] ⋅ [核の基底 n2] = 0\n",
      "\n",
      "[行空間基底 r2] ⋅ [核の基底 n1] = 0\n",
      "\n",
      "[行空間基底 r2] ⋅ [核の基底 n2] = 0\n",
      "\n",
      "[行空間基底 r3] ⋅ [核の基底 n1] = 0\n",
      "\n",
      "[行空間基底 r3] ⋅ [核の基底 n2] = 0\n"
     ]
    }
   ],
   "source": [
    "print(\"【ans 3：解答例】\")\n",
    "row_basis = A.rowspace()\n",
    "null_basis = A.nullspace()\n",
    "\n",
    "print(\"--- 直交性の検証 (内積計算: r_i ⋅ n_j) ---\")\n",
    "for i, r in enumerate(row_basis):\n",
    "    for j, n in enumerate(null_basis):\n",
    "        # 内積の計算\n",
    "        dot_product = r.dot(n)\n",
    "        \n",
    "        # 式の表示\n",
    "        print(f\"\\n[行空間基底 r{i+1}] ⋅ [核の基底 n{j+1}] = {dot_product}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【ans 4：解答例】\n",
      "--- 直交性の検証 (内積計算: c_i ⋅ ln_j) ---\n",
      "\n",
      "[列空間基底 c1] ⋅ [左核の基底 ln1] = 0\n",
      "\n",
      "[列空間基底 c2] ⋅ [左核の基底 ln1] = 0\n",
      "\n",
      "[列空間基底 c3] ⋅ [左核の基底 ln1] = 0\n"
     ]
    }
   ],
   "source": [
    "print(\"【ans 4：解答例】\")\n",
    "col_basis = A.columnspace()\n",
    "left_null_basis = A.transpose().nullspace()\n",
    "\n",
    "print(\"--- 直交性の検証 (内積計算: c_i ⋅ ln_j) ---\")\n",
    "for i, c in enumerate(col_basis):\n",
    "    for j, ln in enumerate(left_null_basis):\n",
    "        # 内積の計算\n",
    "        dot_product = c.dot(ln)\n",
    "        \n",
    "        # 式の表示\n",
    "        print(f\"\\n[列空間基底 c{i+1}] ⋅ [左核の基底 ln{j+1}] = {dot_product}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "【ans 5：解答例】\n",
    "1. 直交補空間による全体空間の分割と次元の関係\n",
    "    - 定義域 $V = \\mathbb{R}^5$ において，核 $\\mathrm{Ker}(f)$ と行空間 $\\mathrm{R}(A)$ は互いに直交補空間の関係にある．それぞれの次元の和は $2 + 3 = 5$ となり，空間全体の次元に一致する．\n",
    "    - 値域 $W = \\mathbb{R}^4$ において，左核 $\\mathrm{Ker}(f^{\\mathrm{T}})$ と列空間 $\\mathrm{C}(A)$ は互いに直交補空間の関係にある．それぞれの次元の和は $1 + 3 = 4$ となり，空間全体の次元に一致する．\n",
    "    - また，$\\mathrm{R}(A)$ と $\\mathrm{C}(A)$ の次元はともに行列 $A$ の階数（$\\text{rank} = 3$）に等しい．\n",
    "2. 写像による対応関係\n",
    "    - ゼロへの写像: 核 $\\mathrm{Ker}(f)$ は写像 $f$ によって $W$ の原点へ写され，左核 $\\mathrm{Ker}(f^{\\mathrm{T}})$ は随伴写像 $f^{\\mathrm{T}}$ によって $V$ の原点へ写される．\n",
    "    - 空間同士の写像: 写像 $f$ は $\\mathrm{R}(A)$ から $\\mathrm{C}(A)$ への全単射として働き，逆に随伴写像 $f^{\\mathrm{T}}$ は $\\mathrm{C}(A)$ を $\\mathrm{R}(A)$ へ写像する．"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 問２：数値積分，梁の変位（25点）\n",
    "\n",
    "長さ $L=6$ [m] の梁全体に，\n",
    "一定の荷重 $w=3$ [kN/m] （等分布荷重）がかかっている状況を考える．\n",
    "\n",
    "このとき，梁の各位置 $x$ における「曲げモーメント」$M(x)$ は，\n",
    "力学の平衡条件より以下の二次関数として導かれる．\n",
    "\n",
    "$$M(x) = \\frac{w}{2}(Lx - x^2)$$\n",
    "\n",
    "この梁の「端点における傾き（たわみ角）」$\\theta(L)$ は，以下の積分値として定義される．\n",
    "\n",
    "\n",
    "$$\\theta(L) = \\int_0^L \\frac{M(x)}{EI} dx$$\n",
    "\n",
    "\n",
    "ここで，$E$ は材料の定数，$I$ は断面形状の定数であり，\n",
    "簡単のため $\\frac{1}{EI} = 1$ として計算を行う．\n",
    "この積分値 $\\theta(L)$ は，\n",
    "梁の端点 $x=L$ における接線の傾き（数学的な $dy/dx$）に相当する物理量である．\n",
    "なお，この積分の理論的な真値は，\n",
    "解析的に計算すると \n",
    "$\\theta(L) = \\frac{w}{2EI} \\left[ \\frac{Lx^2}{2} - \\frac{x^3}{3} \\right]_0^L =  \\frac{wL^3}{12} = 54$ \n",
    "となる．\n",
    "\n",
    "\n",
    "**設問：**\n",
    "1. 区間 $[0, L]$ を $N$ 等分し，刻み幅 $h=L/N$ を用いて，中点公式および台形公式により $\\theta(L)$ を近似計算するプログラムを作成せよ．\n",
    "1. $N=10, 20, 40, 80, 160$ の各ケースについて，プログラムによる計算値と真値（$54$）との絶対誤差を求めよ．\n",
    "1. 得られた誤差を両対数グラフ（Log-Log Plot）にプロットせよ．中点公式と台形公式の誤差の大きさを比較し，なぜ中点公式の方が台形公式よりも誤差が小さくなるのかについて，積分の幾何学的な性質（曲線の凸性や誤差の打ち消し効果）の観点から考察せよ．\n",
    "\n",
    "\n",
    "\n",
    "<figure style=\"text-align: center;\">\n",
    "  <img src=\"https://assets.st-note.com/production/uploads/images/184176632/picture_pc_0f5f746066898dd08894f05290213584.png?width=2000&height=2000&fit=bounds&quality=85\" width=\"400\">\n",
    "  <figcaption style=\"font-weight: bold; margin-bottom: 8px; text-align: center;\">図2：梁の模式図，  出典：<a href=\"https://note.com/fine_kenchiku/n/n8aa377bf83e2\">１００日でわかる二級建築士，構造５４日目，くじらAI研究所｜建築</a></figcaption>\n",
    "</figure>\n",
    "\n",
    "**補足:**\n",
    "\n",
    "現実のH型鋼(H-300×150×6.5×9)では，全体の荷重は1.8t分，ヤング率 $E$: $205$ [GPa] $= 2.05 \\times 10^8$ [kN/m$^2$]，\n",
    "断面二次モーメント $I$: $6.5 \\times 10^{-5}$ [m$^4$]とすると\n",
    "曲げ剛性 $EI$: $E \\times I \\approx 13,325$ [kN$\\cdot$m$^2$]となり，\n",
    "端点のたわみ角は，\n",
    "$$\\theta(L) = \\frac{wL^3}{24EI} = \\frac{3 \\times 6^3}{24 \\times 13,325} \\approx 0.00202 \\text{ [rad]}(\\approx 0.116 \\text{ 度})$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 定数設定\n",
    "L = 6.0\n",
    "w = 3.0\n",
    "true_value = 54.0\n",
    "\n",
    "# モーメント関数\n",
    "def f(x): return (w / 2.0) * (L * x - x**2)\n",
    "\n",
    "# 1. 台形公式\n",
    "def trapezoidal(N):\n",
    "    x = np.linspace(0, L, N+1)\n",
    "    y = f(x)\n",
    "    h = L / N\n",
    "    return (h / 2.0) * (y[0] + 2.0 * np.sum(y[1:N]) + y[N])\n",
    "\n",
    "# 2. 中点公式\n",
    "def midpoint(N):\n",
    "    h = L / N\n",
    "    x_mid = np.linspace(h/2, L - h/2, N)\n",
    "    return h * np.sum(f(x_mid))\n",
    "\n",
    "# 3. 誤差の算出\n",
    "N_list = [10, 20, 40, 80, 160]\n",
    "err_trap = [abs(trapezoidal(n) - true_value) for n in N_list]\n",
    "err_mid = [abs(midpoint(n) - true_value) for n in N_list]\n",
    "\n",
    "# 4. グラフの描画\n",
    "plt.figure(figsize=(8, 5))\n",
    "plt.loglog(N_list, err_trap, 'o-', label='Trapezoidal Error')\n",
    "plt.loglog(N_list, err_mid, 's-', label='Midpoint Error')\n",
    "\n",
    "# 理論的な傾き -2 を示す線\n",
    "plt.loglog(N_list, [err_trap[0] * (n/N_list[0])**-2 for n in N_list], '--', color='gray', label='Slope -2 (O(h^2))')\n",
    "\n",
    "plt.xlabel('Number of Divisions N')\n",
    "plt.ylabel('Absolute Error')\n",
    "plt.title('Comparison: Trapezoidal vs Midpoint Rule')\n",
    "plt.legend()\n",
    "plt.grid(True, which=\"both\", ls=\"-\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "【ans 3：解答例】\n",
    "\n",
    "中点法での結果が，台形法での結果よりも常に高い精度となる．中点を代表値にすると前後の領域で正負のキャンセルが期待できるが，この問題では被積分関数が常に凸であるため，台形では常に小さい領域になるのがこの原因と考えられる．"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 問３：常微分方程式，ロボットアームの振動制御（25点）\n",
    "\n",
    "\n",
    "機械の制御は，常微分方程式を解くという意味で電気回路のRLCシミュレーションと等価です．\n",
    "\n",
    "RLC直列回路における電荷 $Q$ の時間変化は，キルヒホッフの法則より以下の微分方程式で記述されます．\n",
    "\n",
    "\n",
    "$$L \\frac{d^2Q}{dt^2} + R \\frac{dQ}{dt} + \\frac{1}{C_{cap}}Q = V(t)$$\n",
    "\n",
    "\n",
    "（ここで $C_{cap}$ は静電容量を表す，テキストでは各項の順序が違うので注意）\n",
    "\n",
    "この電気的な挙動は，機械系の振動（ロボットアームの関節など）と数学的に全く同じ形をしています．物理量は以下のように対応します．\n",
    "\n",
    "\n",
    "\n",
    "<table>\n",
    "<figcaption style=\"font-weight: bold; margin-bottom: 8px; text-align: center;\">表1：電気系と機械系の物理的対応関係</figcaption>  <thead>\n",
    "    <tr>\n",
    "      <th style=\"text-align: left;\">電気系 (RLC回路)</th>\n",
    "      <th style=\"text-align: left;\">機械系 (ロボットアーム)</th>\n",
    "      <th style=\"text-align: left;\">物理的な意味</th>\n",
    "      <th style=\"text-align: left;\">記憶のkey</th>\n",
    "    </tr>\n",
    "  </thead>\n",
    "  <tbody>\n",
    "    <tr>\n",
    "      <td>電圧 $V$</td>\n",
    "      <td>駆動トルク $\\tau$</td>\n",
    "      <td>システムを動かす外力</td>\n",
    "      <td>入力</td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "      <td>インダクタンス $L$</td>\n",
    "      <td>慣性モーメント $M$</td>\n",
    "      <td>動きを維持する性質</td>\n",
    "      <td>慣性</td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "      <td>抵抗 $R$</td>\n",
    "      <td>減衰係数 $C$</td>\n",
    "      <td>動きを妨げる性質</td>\n",
    "      <td>エネルギーの散逸</td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "      <td>静電容量の逆数 $1/C_{cap}$</td>\n",
    "      <td>回転剛性 $K$</td>\n",
    "      <td>位置へ戻ろうとする性質</td>\n",
    "      <td>復元力</td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "      <td>電荷 $Q$</td>\n",
    "      <td>回転角度 $\\theta$</td>\n",
    "      <td>システムの状態量</td>\n",
    "      <td>位置・変位</td>\n",
    "    </tr>\n",
    "    <tr>\n",
    "      <td>電流 $I = \\frac{dQ}{dt}$</td>\n",
    "      <td>角速度 $\\omega = \\frac{d\\theta}{dt}$</td>\n",
    "      <td>状態量の時間変化率</td>\n",
    "      <td>速度</td>\n",
    "    </tr>\n",
    "  </tbody>\n",
    "</table>\n",
    "\n",
    "この対応関係に基づき，ロボットアームの関節挙動をバネ・マス・ダンパ系（二次遅れ系）としてモデル化します．\n",
    "関節の回転角度 $\\theta$ は，駆動トルク $\\tau$ に対して以下の二次微分方程式で記述されます．\n",
    "\n",
    "$$M \\frac{d^2\\theta}{dt^2} + C \\frac{d\\theta}{dt} + K\\theta = \\tau$$\n",
    "\n",
    "ここで，$M=1.0$，$K=10.0$ とし，$C$ は関節の減衰係数を表します．\n",
    "\n",
    "**設問：**\n",
    "\n",
    "1. 授業で扱ったRLC回路の数値解法と同様の考え方（状態変数 $\\omega = \\frac{d\\theta}{dt}$ の導入）を用い，トルク $\\tau=10$ を与えた際の角度 $\\theta(t)$ を計算するプログラムを作成せよ．\n",
    "1. 減衰係数 $C$ を $0.5$（不足減衰）とした場合と，$10.0$（過減衰）とした場合の二通りについて計算し，結果を一つのグラフにプロットせよ．グラフから「振動的な挙動」と「単調な収束挙動」の違いを観察せよ．\n",
    "1. 振動が消失する境界となる「臨界減衰」の $C$ の数値を適当に変えて，小数点以下0桁で求めよ．$M$ と $K$ を用いて理論的に導出しても良い． $C=0.5, 10$ と比較して定性的な特徴を記せ．\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HvTo0QOAyZMn07p1a1q1asWjjz6afny5cuV46KGHiImJ4fnnn2fAgAHp22bMmMHAgQOzXHPSpElcffXVAGzZsoVFixbx3HPPERJiU4gGDRrQr18/j16vH3/8keHDhwMwfPhwfvjhB4+Oc+rWrRszZ84kJSUlT8cVNjpaM4isWwcdOsDJk3D99TBlSqAjUkoplZM1a9bQrl27DM9VqFCBevXqsXnzZv773/9y//33M2zYMJKTk0lNTWXNmjU899xzzJ8/n6pVq3L48GGPr/f8889TpUoVUlNT6dmzJ/Hx8dx333288cYbzJ49m6pVq7J3714effRRli1bRuXKlenduzc//PADAwYM4NSpU3Ts2JHXX38dYwzNmzfn4MGDREZG8umnn3LLLbdkuea8efMYOnRoennbtGlDaGio2/i6devGiRMnsjz/2muvcdlll7F//35q1qwJQI0aNdi/f7/b85w5c4bY2FhKlCjB6NGj05PIkJAQGjduzMqVK7O87kWJJmdB5PHHITQURoyACRPg7rvh4osDHZVSShUODzwAK1Z473ypqeG0awdvvZX/c3Tu3Jnnn3+e3bt3M2jQIJo0acKsWbO49tprqVq1KgBVqlTx+Hxff/0148aNIyUlhYSEBNauXUt0dHSGfZYsWUL37t2JjLTraQ8bNow5c+YwYMAAQkNDueaaawDbSf2mm27iiy++YOTIkSxYsCC9z5urhISE9HPlZu7cuR6XRUSy7Si/Y8cOateuzdatW7n00ktp3bo1jRo1AqBatWrs3bu3SCdn2qwZJPbts82Zd94JH3wAFSvCuHGBjkoppVROWrRowbJlyzI8d/z4cXbu3Enjxo254YYb+OmnnwgPD6dv377MmjUr39fatm0br732Gn/++Sfx8fH069cvz5PvhoWFZaj1GjlyJF988QWTJ0/m2muvpUSJrHU24eHh6ddp2bIlK1euzLa/Wrdu3dI78rveZs6cCUD16tVJSEgAbNJXrVo1t+epXbs2AA0bNqR79+4sX748fduZM2cIDw/PU7kLG605CxK//QapqTBsGISHw+DB8M03kJICbn5XlFJKZVKQGi53TpxIynUi0p49ezJ69GgmTpzIzTffTGpqKg899BAjRoygTJkybN26lYYNG3Lfffexc+dO4uPj6dWrFwMHDuTf//43ERERHD582KPas+PHj1O2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yy2MGTOG1pmWe+nWrRuTJk0CbH+wqlWrUqFChWzP061bN3744QdOnz7NqVOn+P777+nWrRvly5fPkHR069aNr776itTUVA4ePMicOXM8bk7r1KkTc+bMYZvjn4snzZrx8fE8++yz3HPPPQD07t07Qwd4Z3Nrr169eP/999OfP3LkCMePH6ds2bJUrFiR/fv3M23atPTttWrVolatWjz33HPZLs/UvHlzNm/eDECjRo2IjY1lzJgx6TV527dvT+/zN3fuXFasWJHlllNiBja5njJlCmfPnmX79u1s2rQpy+spIvTo0YOpU6cC8Nlnn6X3hQPYuHEjrVq1yvE6ntDkLICcCXq9ejnv16CB1pwppVSwq1OnDvfdd1+W58eOHcuyZcuIjo5m9OjRfPbZZzme58ILL2TEiBF06NCBjh07MmrUKNq2bUtERARdunShVatWPPLIIwwcOJDo6GhiYmK49NJLeeWVV6hRo4ZHsUZGRjJu3DgGDRpETEwM119/vdv95s6dmz6Vxj333MM777yTPnjgnXfeYenSpURHR9OiRQs++siO93vyySc5cuQIrVq1IiYmhtmzZxMTE0Pbtm1p1qwZN9xwA126dMlwnWHDhlG3bt30WrnM+vXrl2EC108++YT9+/fTuHFjWrVqxYgRI6hWrZpHZf/++++pU6cOCxYsoF+/funrhrZs2ZLrrruOFi1aMGjQIN5///30mrm+ffuyd+9eAF5++WXeeOMNGjduTGJiIrfeemv6uefNm0evXr08iiNHxpgic2vXrp3xtdmzZ3vtXL/+agwYM39+zvs99JAxYWHGpKZ67dL54s2yF0bFufxa9uIr2Mu/du1an537+PHjPjt3YeDP8t9zzz3mk08+yXb76dOnTceOHU1KSopf4slP2f/55x9z4403Zrvd3WcVWGrc5DNacxZAntacNWwIZ87Avn2+j0kppZTyp3bt2hEfH59hIt/MwsPDefrpp7OMngwmhw4d4tlnn/XKuXRAQADt2gUlSkButdCOOffYuhVq1fJ9XEoppZS/LFu2zKP9nM2PwcorzZkOWnMWQDt32mQrm6la0jlGOuugAKWUUqoY0OQsgHbtyr1JE+wktc79lVJKKVW0aXIWQLt2nU+8clKmjJ3vbPdu38eklFJKqcDS5CxA0tI8rzkDm8RpzZlSSilV9GlyFiAHD0Jysmc1ZwB16mjNmVJKBaN9+/YxZMgQGjVqRLt27ejbty8bN250u+9FF10E2ElTv/zyy/Tnly5d6naONE+4Lmae+fmmTZsSHR1Ns2bNuPfeezl69Gi+rlFQy5cvzzAf2LRp04iNjaVFixa0bduWhx56yONz7dy5k969e9O8eXNatGjB9u3bAbu+6aZNm7wdekBochYgO3fae0+TM605U0qp4GOMYeDAgXTv3p0tW7awbNkyXnzxRfbv359hP+fySfPnzweyJmexsbG88847Xo9v0qRJxMfHEx8fT+nSpTPMZu9PL7zwQnryuXr1au69916++OIL1q5dy9KlS2ncuLHH57r55pt55JFHWLduHYsXL06ffPauu+7ilVde8Un8/qbJWYA4p2pxrEubqzp1IDERkpJ8F5NSSqm8mT17NiVLluTOO+9Mfy4mJoZu3boRFxdHt27d6N+/Py1atACgXLlyAIwePZq5c+fSpk0b3nzzTeLi4rjyyisBOHnyJCNHjqR169ZER0enL5p+1113ERsbS8uWLRkzZkye4ixVqhSvvPIKO3fuZOXKlQB88cUXdOjQgTZt2nDHHXeQmpoKwO+//86FF17IRRddlL4awOLFi+ncuTNt27bloosuYsOGDQBcfPHF6cs2AXTt2jX9/E4nTpwgPj6emJgYAF555RWeeOIJmjVrBti1P++66y6PyrF27VpSUlLSp60oV64cZcqUAexyVjNnzvTaOqKBpPOcBUhCgr2vWdOz/Z01bHv2QB6+YCillPKh1atX065du2y3//PPP6xevZoGzjmRHF566SVee+01fvnlF4AMSxM9++yzVKxYkVWrVgF2bUqA559/nipVqpCamkrPnj2Jj48nOjra41hDQ0OJiYlh/fr1lCpViq+++op58+ZRsmRJ7r77biZNmkSfPn247bbbmDNnDlWrVuXcuXMANGvWjLlz51KiRAlmzpzJ448/zrfffsutt97KhAkTeOutt9i4cSNnzpxJT8Kcli5dmmG9ydWrV2fbjDlp0iReffXVLM83btyYqVOnsnHjRipVqsSgQYPYtm0bl112GS+99BKhoaGEhITQuHFjVq5cmeN7UhhochYg+/ZBSAh4uBRYeg3brl2anCmllDsP/P4AK/at8Nr5UlNTaVe7HW9d8Va+z9GhQ4csiVluZs6cyZQpU9IfV65cGYCvv/6acePG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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# ロボットアーム関節モデル（バネ・マス・ダンパ系）\n",
    "def euler_robot_arm(theta, omega, tau, C_val):\n",
    "    M = 1.0   # 慣性\n",
    "    K = 10.0  # 剛性\n",
    "    # 加速度 d_omega/dt = (tau - C*omega - K*theta) / M\n",
    "    d_omega = (tau - C_val * omega - K * theta) / M\n",
    "    # 速度 d_theta/dt = omega\n",
    "    d_theta = omega\n",
    "    \n",
    "    # オイラー法による更新\n",
    "    new_theta = theta + d_theta * dt\n",
    "    new_omega = omega + d_omega * dt\n",
    "    return new_theta, new_omega\n",
    "\n",
    "# シミュレーション設定\n",
    "dt = 0.01\n",
    "tt = np.arange(0, 20 + dt, dt)\n",
    "tau = 10.0 # ステップトルク入力\n",
    "\n",
    "# ケース1: 振動的 (C = 0.5)\n",
    "theta_osc = np.zeros(len(tt))\n",
    "omega_osc = np.zeros(len(tt))\n",
    "C_osc = 0.5\n",
    "\n",
    "# ケース2: 単調減衰 (C = 10.0)\n",
    "theta_dec = np.zeros(len(tt))\n",
    "omega_dec = np.zeros(len(tt))\n",
    "C_dec = 10.0\n",
    "\n",
    "# ケース3: 　臨界減衰\n",
    "theta_cri = np.zeros(len(tt))\n",
    "omega_cri = np.zeros(len(tt))\n",
    "C_cri = 6\n",
    "\n",
    "\n",
    "# シミュレーション実行\n",
    "for i in range(len(tt)-1):\n",
    "    theta_osc[i+1], omega_osc[i+1] = euler_robot_arm(theta_osc[i], omega_osc[i], tau, C_osc)\n",
    "    theta_dec[i+1], omega_dec[i+1] = euler_robot_arm(theta_dec[i], omega_dec[i], tau, C_dec)\n",
    "    theta_cri[i+1], omega_cri[i+1] = euler_robot_arm(theta_cri[i], omega_cri[i], tau, C_cri)\n",
    "\n",
    "# グラフ描画\n",
    "plt.figure(figsize=(10, 5))\n",
    "plt.plot(tt, theta_osc, label=f\"Oscillatory (C={C_osc})\", color=\"blue\")\n",
    "plt.plot(tt, theta_dec, label=f\"Monotonic Decay (C={C_dec})\", color=\"orange\")\n",
    "plt.plot(tt, theta_cri, label=f\"Critical Decay (C={C_cri})\", color=\"green\")\n",
    "plt.axhline(y=tau/10.0, color='r', linestyle='--', label=\"Target Angle\") # 理論的な収束値 tau/K\n",
    "plt.xlabel('Time [s]')\n",
    "plt.ylabel('Joint Angle [rad]')\n",
    "plt.title('Robot Arm Joint Response (Vibration Control)')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "【ans 3：解答例】\n",
    "\n",
    "C=6ぐらい，早く静止する．\n",
    "\n",
    "解析解は，特性方程式\n",
    "$$\n",
    "M\\lambda^2 + C\\lambda + K = 0\n",
    "$$\n",
    "の判別式\n",
    "$$D = C^2 - 4MK$$\n",
    "より\n",
    "$$C_{\\rm cri} = 2\\sqrt{MK}= 2\\sqrt{10} \\approx 6.32$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 問４：MCMC，正方形の詰め込み問題（25点）\n",
    "\n",
    "本問では，マルコフ連鎖モンテカルロ（MCMC）法の一種であるsimulated anneaing法(模擬焼き鈍し法)を用いて，\n",
    "レイアウト最適化を考えます．\n",
    "\n",
    "問題を具体化するため，8cm×8cmの正方形領域内に，与えられた8個の正方形（面積の合計が60）\n",
    "```\n",
    "　 sizes = np.array([4.0, 4.0, 3.0, 3.0, 2.0, 2.0, 1.0, 1.0])\n",
    "```\n",
    "を配置するとします．\n",
    "\n",
    "**設問：**\n",
    "1. 配置された各正方形の重なり面積を「エネルギー（コスト関数）」として定義し，\n",
    "simulated anneaing法(模擬焼き鈍し法)を用いて重なりが最小になるような配置を探索するプログラムを作成せよ．\n",
    "2. 実行結果として「初期配置」「エネルギー推移」「最適化後の配置」の3点を可視化せよ．\n",
    "\n",
    "図３にランダムな初期配置とエネルギー低下の様子，\n",
    "そしてこのシミュレーションでの最適配置を示しています．\n",
    "この図に示した通り，パラメータの設定によっては，\n",
    "間違った最適配置となる場合がありますが，\n",
    "それでも答案として認めます．\n",
    "また，あまりややこしい試行プロセスを作成する必要はありません．\n",
    "SAの良さは実装のしやすさによる，開発時間の短縮にありますので．\n",
    "\n",
    "<figure>\n",
    "  <img src=\"https://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/2026/num_recipe/files/r10_0999_15000.png\" width=\"600\">\n",
    "<figcaption style=\"font-weight: bold; margin-bottom: 8px; text-align: center;\">図3：ランダムな初期配置，エネルギー低下の様子と，このシミュレーションでの最適配置.</figcaption>\n",
    "</figure>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "初期重なりエネルギー: 26.8521\n",
      "最終重なりエネルギー: 0.0237\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x396 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cooling rateと試行回数を調整するとこんな単純なSAでも最適解が得られる．\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# ---------------------------------------------------------\n",
    "# 1. 問題の設定と初期化\n",
    "# ---------------------------------------------------------\n",
    "np.random.seed(42)\n",
    "\n",
    "# 正方形の要素（合計面積: 60）\n",
    "sizes = np.array([4.0, 4.0, 3.0, 3.0, 2.0, 2.0, 1.0, 1.0])\n",
    "N = len(sizes)\n",
    "\n",
    "# 外枠の一辺\n",
    "L = 8.0  \n",
    "\n",
    "# 初期配置（枠内からはみ出さないように初期化）\n",
    "positions = np.array([np.random.uniform(0, L - s, 2) for s in sizes])\n",
    "initial_positions = positions.copy()\n",
    "\n",
    "# ---------------------------------------------------------\n",
    "# 2. コスト関数（エネルギー関数）の定義\n",
    "# ---------------------------------------------------------\n",
    "def calc_overlap(x1, y1, s1, x2, y2, s2):\n",
    "    \"\"\"2つの正方形が重なっている面積を計算\"\"\"\n",
    "    dx = min(x1 + s1, x2 + s2) - max(x1, x2)\n",
    "    dy = min(y1 + s1, y2 + s2) - max(y1, y2)\n",
    "    if dx > 0 and dy > 0:\n",
    "        return dx * dy\n",
    "    return 0.0\n",
    "\n",
    "def compute_energy(pos, sizes):\n",
    "    \"\"\"全体のエネルギー（要素同士の重なり面積）を計算\"\"\"\n",
    "    energy = 0.0\n",
    "    for i in range(N):\n",
    "        for j in range(i + 1, N):\n",
    "            energy += calc_overlap(pos[i, 0], pos[i, 1], sizes[i], pos[j, 0], pos[j, 1], sizes[j])\n",
    "    return energy\n",
    "\n",
    "# ---------------------------------------------------------\n",
    "# 3. MCMC / 模擬焼き鈍し法（SA）の実行とパラメータ設定\n",
    "# ---------------------------------------------------------\n",
    "init_T = 10.0 #10.0          # 初期温度\n",
    "cooling_rate = 0.9995 #0.999   # 冷却率\n",
    "steps = 30000 #15000          # ステップ数\n",
    "\n",
    "T = init_T\n",
    "current_pos = positions.copy()\n",
    "current_energy = compute_energy(current_pos, sizes)\n",
    "\n",
    "best_pos = current_pos.copy()\n",
    "best_energy = current_energy\n",
    "\n",
    "energy_history = []\n",
    "\n",
    "for step in range(steps):\n",
    "    i = np.random.randint(0, N)\n",
    "    old_pos = current_pos[i].copy()\n",
    "    \n",
    "    # 現在の温度に応じたランダムな移動\n",
    "    move = np.random.normal(0, 0.4 * (T + 0.05), 2)\n",
    "    new_p = old_pos + move\n",
    "    s = sizes[i]\n",
    "    \n",
    "    # 【エラー修正】インデックス[0], [1]でX軸・Y軸を確実に指定してはみ出し判定\n",
    "    if (new_p[0] < 0) or (new_p[0] + s > L) or (new_p[1] < 0) or (new_p[1] + s > L):\n",
    "        energy_history.append(current_energy)  \n",
    "        continue  \n",
    "        \n",
    "    current_pos[i] = new_p\n",
    "    new_energy = compute_energy(current_pos, sizes)\n",
    "    dE = new_energy - current_energy\n",
    "    \n",
    "    if dE < 0 or np.random.uniform(0, 1) < np.exp(-dE / (T + 1e-6)):\n",
    "        current_energy = new_energy\n",
    "        if current_energy < best_energy:\n",
    "            best_energy = current_energy\n",
    "            best_pos = current_pos.copy()\n",
    "    else:\n",
    "        current_pos[i] = old_pos  \n",
    "        \n",
    "    energy_history.append(current_energy)\n",
    "    T *= cooling_rate\n",
    "\n",
    "print(f\"初期重なりエネルギー: {compute_energy(initial_positions, sizes):.4f}\")\n",
    "print(f\"最終重なりエネルギー: {best_energy:.4f}\")\n",
    "\n",
    "# ---------------------------------------------------------\n",
    "# 4. 結果の可視化（レイアウトと比率の修正）\n",
    "# ---------------------------------------------------------\n",
    "# 横並び3マスのグラフ（被らないように全体の横幅を 18 から 20 に拡大）\n",
    "#fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20, 6))\n",
    "fig, (ax1, ax2, ax3) = plt.subplots(\n",
    "    1, 3, \n",
    "    figsize=(18, 5.5), \n",
    "    gridspec_kw={'width_ratios': [1, 1, 1]} # 真ん中のグラフの横幅を少し狭くして余白を作る\n",
    ")\n",
    "\n",
    "\n",
    "\n",
    "def plot_packing(ax, pos, title_text, color, energy_val):\n",
    "    ax.set_xlim(-0.5, L + 0.5)\n",
    "    ax.set_ylim(-0.5, L + 0.5)\n",
    "    ax.add_patch(plt.Rectangle((0, 0), L, L, edgecolor='black', facecolor='none', lw=2, linestyle='--'))\n",
    "    for i in range(N):\n",
    "        x, y = pos[i]\n",
    "        s = sizes[i]\n",
    "        rect = plt.Rectangle((x, y), s, s, edgecolor='black', facecolor=color, alpha=0.6, lw=1.5)\n",
    "        ax.add_patch(rect)\n",
    "        ax.text(x + s/2, y + s/2, f\"#{i}\\n({int(s)})\", ha='center', va='center', fontsize=9)\n",
    "    ax.set_aspect('equal', adjustable='box')\n",
    "    ax.set_title(f\"{title_text}\\n(Overlap: {energy_val:.2f})\")\n",
    "\n",
    "# 左側：初期配置\n",
    "plot_packing(ax1, initial_positions, \"1. Initial Layout\", \"salmon\", compute_energy(initial_positions, sizes))\n",
    "\n",
    "# 中央：エネルギー推移（アスペクト比を自動調整にして被りを防止）\n",
    "ax2.plot(energy_history, color='purple', lw=1.5)\n",
    "ax2.set_xlabel(\"Steps (Iterations)\")\n",
    "ax2.set_ylabel(\"Energy (Overlap Area)\")\n",
    "# タイトル部分に全てのパラメータ（T, CR, Steps）を表示\n",
    "ax2.set_title(f\"2. Energy History\\n[T_init={init_T}, CR={cooling_rate}, Steps={steps}]\")\n",
    "ax2.grid(True, linestyle='--', alpha=0.6)\n",
    "\n",
    "# 右側：MCMC実行後の最適化配置\n",
    "plot_packing(ax3, best_pos, \"3. MCMC Optimized Layout\", \"skyblue\", best_energy)\n",
    "\n",
    "# 各グラフ間の余白をきれいに調整\n",
    "'''\n",
    "\n",
    "plt.subplots_adjust(wspace=0.1) # 横の隙間を広げる（デフォルトは0.2程度）\n",
    "plt.show()\n",
    "'''\n",
    "\n",
    "#plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "print(\"cooling rateと試行回数を調整するとこんな単純なSAでも最適解が得られる．\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
