Files
Iris Series: Visualize Math -- From Arithmetic Basics to Machine Learning 5adb9e44a7 Add files via upload
2025-02-01 17:08:33 +08:00

191 lines
17 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "73bd968b-d970-4a05-94ef-4e7abf990827",
"metadata": {},
"source": [
"Chapter 11\n",
"\n",
"# LU分解\n",
"Book_4《矩阵力量》 | 鸢尾花书:从加减乘除到机器学习 (第二版)"
]
},
{
"cell_type": "markdown",
"id": "5c3656e4-9943-447a-bc6a-83031ca6a96d",
"metadata": {},
"source": [
"这段代码首先定义了一个 $4 \\times 4$ 的矩阵 $ A $,并对其进行 LU 分解,得到三个矩阵:置换矩阵 $P$、下三角矩阵 $L$ 和上三角矩阵 $U$。分解结果满足矩阵关系:\n",
"\n",
"$$\n",
"A = P @ L @ U\n",
"$$\n",
"\n",
"其中:\n",
"- $P$ 是置换矩阵,用于表示行交换。\n",
"- $L$ 是具有单位对角线的下三角矩阵。\n",
"- $U$ 是上三角矩阵。\n",
"\n",
"代码利用 `seaborn` 库可视化每个矩阵,展示 LU 分解的过程。通过热图展示,颜色代表矩阵中元素的大小,从而可以更直观地观察分解后矩阵的结构。图形包括 $A$、$P$、$L$、$U$ 的矩阵分解,以“=”和“@”符号连接,最终形成 $A = P @ L @ U$ 的图示分解表达。"
]
},
{
"cell_type": "markdown",
"id": "a6c6f2f2-1bf0-491e-8600-5a833445670e",
"metadata": {},
"source": [
"## 导入库"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "03e4473a-a15c-44ef-a4ea-229a35ed0ef2",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np # 导入数值计算库\n",
"import seaborn as sns # 导入数据可视化库\n",
"from scipy.linalg import lu # 导入 LU 分解函数\n",
"from matplotlib import pyplot as plt # 导入绘图库"
]
},
{
"cell_type": "markdown",
"id": "73a25e1b-2482-40a5-85ca-9122293767a8",
"metadata": {},
"source": [
"## 定义矩阵 A 并进行 LU 分解"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1b44c738-02af-4db1-85f6-113004c7a5f0",
"metadata": {},
"outputs": [],
"source": [
"A = np.array([[5, 2, -2, 3],\n",
" [-2, 5, -8, 7],\n",
" [7, -5, 1, -6],\n",
" [-5, 4, -4, 8]])\n",
"\n",
"P, L, U = lu(A, permute_l=False) # 对矩阵 A 进行 LU 分解,得到置换矩阵 P、下三角矩阵 L 和上三角矩阵 U"
]
},
{
"cell_type": "markdown",
"id": "8767e062-ada1-49c7-81f9-65a4c228220c",
"metadata": {},
"source": [
"## 可视化矩阵 A、P、L 和 U 的分解过程"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "17a1f3cb-456a-4fee-a313-9582886c82c9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'U')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9YAAAEPCAYAAACnR1x8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkPUlEQVR4nO3deZRU9Zk38Kd6pZVFDdpg3Bh1XA5qIugRlLgkwRe3mDOJJibG0RwnODJ51bjEJPNqcmaUiNEsmMS8EkfenIgZDYxmgiMeGdTBOEB0XDLG4QwGN2QM0iLptfq+f/SCLQh036pbS38+59Sx762ifs9Nqr7cby1NLkmSJAAAAIAhqSn1AAAAAFDJFGsAAABIQbEGAACAFBRrAAAASEGxBgAAgBQUawAAAEhBsQYAAIAUFGsAAABIQbEGAACAFBRrAAAASEGxBoAK09XVFfPnz4/TTz899tprr6irq4vm5uaYPn16zJ8/P/L5fKlHBMqU/IDiyCVJkpR6CABg5zz77LNxzjnnxBtvvBEXXnhhTJ48Ofbdd99oaWmJ3/zmNzF//vzYc88945577okDDzyw1OMCZUR+QPEo1gBQIZ5//vmYOnVqnHfeeXHzzTfHrrvuutVtWltb4/LLL4/FixfH8uXL44Mf/GAJJgXKjfyA4lKsIWNJkuz0x6zq6uqKPA1QKfL5fBx55JFx6qmnxi233LLN2yRJEt3d3VFbWxtf+MIX4q233ooHHngg40mBciM/oPh8xxoytmzZsqivr9+py0svvVTqcYEysWDBgti8eXPMnj07IiK6u7vjW9/6Vnzwgx+Mpqam+Iu/+Iu4+eab46Mf/WhERNx6663x8MMPx+rVq0s5NlAG5AcUn7fDIGOTJk2KFStW7NRt99577yJPA1SKRYsWxV/+5V9GQ0NDRETMnTs3brrpprjhhhviiCOOiIULF8bf/u3fxnHHHRcRER/4wAdiypQpsXTp0jjooINKOTpQYvIDik+xhoyNHDkyPvShD+3UbX0UHOjz4osvxmc/+9n+7dtvvz2uvfba+PKXvxwRESeffHI899xz0d3d3X+b5ubm+J//+Z/MZwXKi/yA4vNRcMiYj4IDQ9HZ2RkjRozo316zZk0cffTRA25zzDHHDNh+5ZVXYuzYsZnMB5Qv+QHF5+0wyJiPggNDsd9++8WLL74Yp512WkT0vJv03hff1qxZ0//ziy++GP/+7/8ed911V5ZjAmVIfkDxKdaQsVGjRsXkyZNLPQZQYaZPnx4LFiyIyy67LCIizjnnnLjhhhti4sSJceSRR8YDDzwQCxcujOOOOy6WLFkSX/rSl2LWrFnxZ3/2Z6UdHCg5+QHF55/bAoAKsHHjxjjwwAPjlltuiQsuuCDeeeedOP/882PRokUREXHwwQfH2WefHXPmzInm5ua46qqr4oorrohcLlfawYGSkx9QfIo1AFSIe++9N84///y466674pxzzomIiPXr18eGDRvikEMOibfeeis2btwYEyZMcEIMDCA/oLgUawCoID/72c/ir/7qr+KUU06Jiy++OI499tjYfffd46233ur/TuSmTZvioYcecnIMDCA/oHgUawCoMGvWrIkbbrghfvnLX8aGDRv6948fPz7OO++8uPrqq2OvvfYq4YRAuZIfUByKNQBUqO7u7nj55ZejpaUl9thjj9hnn31KPRJQIeQHFJZiDQAAACnUlHoAAAAAqGSKNQAAAKSgWAMAAEAKijUAAACkoFgDAABACoo1AAAApKBYAwAAQAqKNQAAAKSgWAMAAEAKijUAAACkoFgDAABACoo1AAAApKBYAwAAQAqKNQAAAKSgWAMAAEAKijUAAACkoFgDAABACoo1AAAApKBYAwAAQAqKNQAAAKSgWAMAAEAKijUAAACkoFgDAABACoo1AAAApKBYAwAAQAqKNQAAAKSgWAMAAEAKijUAAACkoFgDAABACoo1AAAApKBYAwAAQAqKdQa+//3vRy6Xi4kTJ5Z6FKBC/MM//EPkcrn+S11dXeyzzz5x4YUXxquvvlrq8YAy15chK1euLPUoQIW4/vrrI5fLxZtvvrnN6ydOnBgnnXRStkNVEMU6Az/96U8jIuL555+PJ598ssTTAJXkzjvvjCeeeCKWLFkSF198cdx9990xbdq02Lx5c6lHAwCgl2JdZCtXroz/+I//iNNPPz0iIubNm1fiiYBKMnHixDjuuOPi5JNPjuuuuy6uvvrqWLNmTSxatKjUowEA0EuxLrK+Ij179uyYOnVqLFiwIP70pz+VeCqgUh133HEREfGHP/yhxJMAANBHsS6i1tbWuPvuu+OYY46JiRMnxkUXXRSbNm2Kf/zHfyz1aECFWr16dURE7LnnniWeBACAPop1Ed17773R0tISX/zi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",
"text/plain": [
"<Figure size 1200x300 with 11 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axs = plt.subplots(1, 7, figsize=(12, 3)) # 创建子图\n",
"\n",
"plt.sca(axs[0])\n",
"ax = sns.heatmap(A, cmap='RdBu_r', vmax=10, vmin=-10, # 绘制矩阵 A 的热图\n",
" cbar_kws={\"orientation\": \"horizontal\"})\n",
"ax.set_aspect(\"equal\")\n",
"plt.title('A')\n",
"\n",
"plt.sca(axs[1])\n",
"plt.title('=') # 绘制等号\n",
"plt.axis('off')\n",
"\n",
"plt.sca(axs[2])\n",
"ax = sns.heatmap(P, cmap='RdBu_r', vmax=10, vmin=-10, # 绘制置换矩阵 P 的热图\n",
" cbar_kws={\"orientation\": \"horizontal\"})\n",
"ax.set_aspect(\"equal\")\n",
"plt.title('P')\n",
"\n",
"plt.sca(axs[3])\n",
"plt.title('@') # 绘制乘号\n",
"plt.axis('off')\n",
"\n",
"plt.sca(axs[4])\n",
"ax = sns.heatmap(L, cmap='RdBu_r', vmax=10, vmin=-10, # 绘制下三角矩阵 L 的热图\n",
" cbar_kws={\"orientation\": \"horizontal\"})\n",
"ax.set_aspect(\"equal\")\n",
"plt.title('L')\n",
"\n",
"plt.sca(axs[5])\n",
"plt.title('@') # 绘制乘号\n",
"plt.axis('off')\n",
"\n",
"plt.sca(axs[6])\n",
"ax = sns.heatmap(U, cmap='RdBu_r', vmax=10, vmin=-10, # 绘制上三角矩阵 U 的热图\n",
" cbar_kws={\"orientation\": \"horizontal\"})\n",
"ax.set_aspect(\"equal\")\n",
"plt.title('U')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "85a80909-2aac-49ed-bb7a-f8cc6b80ee7d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "ecd322f4-f919-4be2-adc3-69d28ef25e69",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}