mirror of
https://github.com/Visualize-ML/Book4_Power-of-Matrix.git
synced 2026-02-03 10:33:18 +08:00
161 lines
25 KiB
Plaintext
161 lines
25 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "73bd968b-d970-4a05-94ef-4e7abf990827",
|
||
"metadata": {},
|
||
"source": [
|
||
"Chapter 02\n",
|
||
"\n",
|
||
"# 平面向量\n",
|
||
"Book_4《矩阵力量》 | 鸢尾花书:从加减乘除到机器学习 (第二版)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "41d40a38-db14-4162-bbb4-ade44a0fc01e",
|
||
"metadata": {},
|
||
"source": [
|
||
"这段代码的目的是在二维平面上绘制两个向量。通过 `draw_vector` 函数,代码接受一个向量和其对应的颜色值,将向量从原点($[0, 0]$)绘制到指定的终点位置。代码分别绘制了两个向量:第一个向量 $\\vec{v_1} = [4, 3]$ 和第二个向量 $\\vec{v_2} = [-3, 4]$。这两个向量的颜色分别为蓝色和红色,绘制在坐标轴上。\n",
|
||
"\n",
|
||
"### 代码描述\n",
|
||
"代码先导入了所需的库 `numpy` 和 `matplotlib.pyplot`,其中 `numpy` 用于处理向量的数组格式,`matplotlib.pyplot` 用于绘图。在 `draw_vector` 函数中,代码通过 `np.array` 函数构造了一个包含向量起点和终点的数组 $\\text{array} = [[0, 0, x_1, x_2]]$,其中 $\\vec{v} = [x_1, x_2]$ 表示向量的坐标。此数组被拆分成起点和终点,接着调用 `plt.quiver` 绘制从起点 $(0, 0)$ 出发、指向终点 $(x_1, x_2)$ 的向量。\n",
|
||
"\n",
|
||
"代码中的向量分量表达为 $\\vec{v_1} = [4, 3]$ 和 $\\vec{v_2} = [-3, 4]$,其在坐标系中的位置可分别表示为:\n",
|
||
"$$\n",
|
||
"\\vec{v_1} = 4 \\hat{i} + 3 \\hat{j}\n",
|
||
"$$\n",
|
||
"和\n",
|
||
"$$\n",
|
||
"\\vec{v_2} = -3 \\hat{i} + 4 \\hat{j}\n",
|
||
"$$\n",
|
||
"这里 $\\hat{i}$ 和 $\\hat{j}$ 分别表示二维坐标系中的单位向量。\n",
|
||
"\n",
|
||
"最后,代码设置坐标轴的标签 $x_1$ 和 $x_2$,对坐标范围进行了限定 $[-5, 5]$,并加上网格线来辅助观察向量的方向和位置。最终的绘制效果展示了二维空间中两个不同方向和颜色的向量。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a5aa4dec-32a4-4a62-a821-650c735b35bd",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 导入所需库"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "1ea42b69-5170-4c31-ad2c-dcabaf01cf14",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np # 导入NumPy库,用于数值计算\n",
|
||
"import matplotlib.pyplot as plt # 导入Matplotlib库,用于绘图"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "30cf6c0b-1aef-4d8c-af7f-83ca7b0e2584",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 定义绘制向量的函数"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "dbc715a5-295c-4944-9c66-f34212fdaa05",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def draw_vector(vector, RBG): # 定义函数,用于绘制向量并设置颜色\n",
|
||
" array = np.array([[0, 0, vector[0], vector[1]]]) # 创建二维数组,包含向量的起点和终点\n",
|
||
" X, Y, U, V = zip(*array) # 解包数组,得到向量的起点坐标和分量\n",
|
||
" plt.quiver(X, Y, U, V, angles='xy', scale_units='xy', scale=1, color=RBG) # 使用quiver函数绘制向量"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4c0a93fa-27a2-4395-94d4-0513aa910a9a",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 绘图设置"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "4c6006e3-510b-4cea-954c-872c12191475",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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vRxPefPNN3HVVVdh/vz5iMfjOOmkk3D77bcjn89rL03dvffei/nz5yMWi2HhwoXYuXOn9pI8paurC2effTba2towc+ZMfOlLX8Lrr7+uvSzP6+rqQiAQwA033KC9lJpwuHnQhg0bMHv2bO1leNK+fftQLpfxwAMP4NVXX8Xf//3f4/7778ett96qvTRV27Ztww033IDbbrsNe/fuxXnnnYeVK1fiwIED2kvzjOeeew7r1q3DSy+9hB07dqBYLGLZsmVmP4zTDbt27cKmTZtw+umnay+ldg55ypNPPuksWLDAefXVVx0Azt69e7WX5Hl/93d/58yfP197Gar++I//2Fm7du2wry1YsMC55ZZblFbkfYcOHXIAOM8995z2Ujypr6/P+cQnPuHs2LHDOf/8853169drL6km3HPzkPfffx/XXHMNHnroIZMfDqilp6cH06ZN016Gmnw+j927d2PZsmXDvr5s2TK8+OKLSqvyvp6eHgBo6m1nIuvWrcNFF12Ez372s9pLmZSmenCylzmOg8svvxxr167FokWL8Oabb2ovyYTf/e53uOeee3D33XdrL0XN4cOHUSqVMGvWrGFfnzVrFt577z2lVXmb4zi46aabcO655+K0007TXo7nPProo9izZw927dqlvZRJ455bg91xxx0IBAIT/vOb3/wG99xzD3p7e/GNb3xDe8kqpJ2G6u7uxooVK3DxxRfj6quvVlq5d4z8GCfHcTzz0U5ec9111+GVV17BI488or0Uzzl48CDWr1+PrVu3IhaLaS9n0vj4rQY7fPgwDh8+POFr5s2bh9WrV+PnP//5sG9GpVIJoVAIl112GR588MFGL1WVtNPgX7bu7m4sXboUixcvxo9+9KMJP9fJ7/L5PBKJBB577DGsWrWq8vX169fj5ZdfxnPPPae4Ou+5/vrrsX37djz//POYP3++9nI8Z/v27Vi1ahVCoVDla6VSCYFAAMFgELlcbth/8yoON484cOBA5ePTgYFv3suXL8fjjz+OxYsXe/Zz6DS88847WLp0KRYuXIitW7ea+IvWaIsXL8bChQtx7733Vr526qmn4otf/CK6uroUV+YdjuPg+uuvxxNPPIFnn30Wn/jEJ7SX5El9fX146623hn3tiiuuwIIFC3DzzTebOYzLc24eccIJJwz7cWtrKwDgpJNO4mAboru7GxdccAFOOOEE3HXXXfjggw8q/+1jH/uY4sp03XTTTVizZg0WLVqEc845B5s2bcKBAwewdu1a7aV5xrp16/Dwww/jZz/7Gdra2irnIzs6OhCPx5VX5x1tbW2jBlgymcT06dPNDDaAw42MeeaZZ7B//37s379/1NBv5oMQl156KT788ENs3LgR7777Lk477TQ8+eSTmDt3rvbSPOO+++4DAFxwwQXDvr5lyxZcfvnl7i+IGoqHJYmIyHea9yw8ERH5FocbERH5DocbERH5DocbERH5DocbERH5DocbERH5DocbERH5DocbERH5DocbERH5DocbkVGPPPIIYrEY3nnnncrXrr76apx++umVD+IkalZ8/BaRUY7j4IwzzsB5552HH/zgB7jzzjuxefNmvPTSS/j4xz+uvTwiVXxwMpFRgUAA3/72t/GVr3wFs2fPxve+9z3s3LmzMthWrVqFZ599Fp/5zGfw+OOPK6+WyF3ccyMy7qyzzsKrr76KZ555Bueff37l67/85S/R39+PBx98kMONmg7PuREZ9vTTT2Pfvn0olUqYNWvWsP+2dOlStLW1Ka2MSBeHG5FRe/bswcUXX4wHHngAy5cvx9/8zd9oL4nIM3jOjcigN998ExdddBFuueUWrFmzBqeeeirOPvts7N69GwsXLtReHpE67rkRGfPRRx9h5cqV+MIXvoBbb70VALBw4UJ8/vOfx2233aa8OiJv4J4bkTHTpk3Da6+9NurrP/vZzxRWQ+RNvFqSyKeWL1+OPXv2IJVKYdq0aXjiiSdw9tlnay+LyBUcbkRE5Ds850ZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7D4UZERL7z/wHWIMS2pXJAgAAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots() # 创建画布和坐标轴对象\n",
|
||
"\n",
|
||
"# 绘制向量[4,3]并设置颜色为蓝色\n",
|
||
"draw_vector([4, 3], np.array([0, 112, 192]) / 255) \n",
|
||
"\n",
|
||
"# 绘制向量[-3,4]并设置颜色为红色\n",
|
||
"draw_vector([-3, 4], np.array([255, 0, 0]) / 255)\n",
|
||
"\n",
|
||
"## 图形显示设置\n",
|
||
"plt.ylabel('$x_2$') # 设置y轴标签为x_2\n",
|
||
"plt.xlabel('$x_1$') # 设置x轴标签为x_1\n",
|
||
"plt.axis('scaled') # 设置坐标轴比例\n",
|
||
"ax.set_xlim([-5, 5]) # 设置x轴显示范围\n",
|
||
"ax.set_ylim([-5, 5]) # 设置y轴显示范围\n",
|
||
"ax.grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5]) # 添加网格线,设置样式\n",
|
||
"\n",
|
||
"plt.show() # 显示图形"
|
||
]
|
||
},
|
||
{
|
||
"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
|
||
}
|