diff --git a/docs/02algorithms/11dp/index.mdx b/docs/02algorithms/11dp/index.mdx index 0051e0d8c..cf5c78057 100644 --- a/docs/02algorithms/11dp/index.mdx +++ b/docs/02algorithms/11dp/index.mdx @@ -174,7 +174,7 @@ $3$ 行 $j$ 列は、$\{a_1,a_2,a_3\}=\{3,4,6\}$ の中からいくつかを使 $i$ 行目を考える時、$a_i$ を入れるか入れないかの二択になります。 - $a_i$ を入れないときは、何も変わらないので一個上のセルの値の真偽値そのままです。つまり、$i$ 行 $j$ 列の真偽値は、$i-1$ 行 $j$ 列の真偽値となります。 -- $a_i$ を入れるときは、$a_k(1\leq k\leq i-1)$ を使って、**$j-a_i$** を作ることができていれば、それに $a_i$ を加えることで $j$ を作れそうです。 +- $a_i$ を入れるときは、$\{a_k\}(1\leq k\leq i-1)$ を使って、**$j-a_i$** を作ることができていれば、それに $a_i$ を加えることで $j$ を作れそうです。 例えば、$3$ と $4$ を使って、$10-6=4$ が作れていれば、それに $6$ を加えることで $10$ を作ることができます。 そうすると、$i$ 行 $j$ 列の真偽値は、$i-1$ 行 $j-a_i$ 列の真偽値となります。 diff --git a/static/gaussian-elimination/gauss_jordan_elimination.ipynb b/static/gaussian-elimination/gauss_jordan_elimination.ipynb index e60d6cb29..a12729fe8 100644 --- a/static/gaussian-elimination/gauss_jordan_elimination.ipynb +++ b/static/gaussian-elimination/gauss_jordan_elimination.ipynb @@ -1,49 +1,49 @@ { - "nbformat": 4, - "nbformat_minor": 2, - "metadata": {}, - "cells": [ - { - "metadata": {}, - "source": [ - "def gausu_jordan_elimination(a):\n", - " # 前進消去\n", - " for i in range(len(a)):\n", - " # 部分ピボット選択\n", - " for j in range(i + 1, len(a)):\n", - " if abs(a[i][i]) < abs(a[j][i]):\n", - " tmp = a[i]\n", - " a[i] = a[j]\n", - " a[j] = tmp\n", - " # pivot倍で行を割る\n", - " pivot = a[i][i]\n", - " for j in range(i, len(a[i])):\n", - " a[i][j] /= pivot\n", - " # 掃き出す\n", - " for j in range(len(a)):\n", - " if j != i:\n", - " factor = a[j][i]\n", - " for k in range(i, len(a[i])):\n", - " a[j][k] -= factor * a[i][k]\n", - " x = []\n", - " for i in range(len(a)):\n", - " x.append(a[i][len(a[i]) - 1])\n", - " return x\n", - "\n", - "\n", - "print(gausu_jordan_elimination([[0, -2, 3, 2], [-1, 3, -2, 1], [1, -1, 6, 11]]))" - ], - "cell_type": "code", - "outputs": [ + "nbformat": 4, + "nbformat_minor": 2, + "metadata": {}, + "cells": [ { - "output_type": "stream", - "name": "stdout", - "text": [ - "[1.0, 2.0, 2.0]\n" - ] + "metadata": {}, + "source": [ + "def gauss_jordan_elimination(a):\n", + " # \u524d\u9032\u6d88\u53bb\n", + " for i in range(len(a)):\n", + " # \u90e8\u5206\u30d4\u30dc\u30c3\u30c8\u9078\u629e\n", + " for j in range(i + 1, len(a)):\n", + " if abs(a[i][i]) < abs(a[j][i]):\n", + " tmp = a[i]\n", + " a[i] = a[j]\n", + " a[j] = tmp\n", + " # pivot\u500d\u3067\u884c\u3092\u5272\u308b\n", + " pivot = a[i][i]\n", + " for j in range(i, len(a[i])):\n", + " a[i][j] /= pivot\n", + " # \u6383\u304d\u51fa\u3059\n", + " for j in range(len(a)):\n", + " if j != i:\n", + " factor = a[j][i]\n", + " for k in range(i, len(a[i])):\n", + " a[j][k] -= factor * a[i][k]\n", + " x = []\n", + " for i in range(len(a)):\n", + " x.append(a[i][len(a[i]) - 1])\n", + " return x\n", + "\n", + "\n", + "print(gauss_jordan_elimination([[0, -2, 3, 2], [-1, 3, -2, 1], [1, -1, 6, 11]]))" + ], + "cell_type": "code", + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[1.0, 2.0, 2.0]\n" + ] + } + ], + "execution_count": null } - ], - "execution_count": null - } - ] + ] }