Archived
Add errors
This commit is contained in:
1 parent
6d5ce32ca3
commit
faa2802f8c
1 file changed
+212
-38
+212
-38
@@ -1,47 +1,155 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"id": "18bd929b",
|
||||
"cell_type": "markdown",
|
||||
"id": "fda98006",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"N = 20\n",
|
||||
"x = np.linspace(0, 10, N + 1)\n",
|
||||
"with open(\"matrix_linear.txt\", 'r') as file:\n",
|
||||
" data_str = file.read()\n",
|
||||
"y = np.fromstring(data_str, sep=' ')\n",
|
||||
"plt.plot(x, y, label=\"Linear element solution\", color='red')\n",
|
||||
"plt.title(\"Linear element\")\n",
|
||||
"plt.grid(True)\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
"# Solution of second-order linear ordinary differential equation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 135,
|
||||
"id": "7fced95c",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def write_to_file(name: str, array):\n",
|
||||
" with open(f\"{name}\", 'w') as file:\n",
|
||||
" for element in array:\n",
|
||||
" file.write(f\"{element} \")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 136,
|
||||
"id": "d20bde93",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8af07a56",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Solution of $5u'' + 4u' + 1 = 0, u'(0) = u(0), u(10) = 5$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 137,
|
||||
"id": "d0fe0703",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def u(x):\n",
|
||||
" return (9 * np.exp(8) * (x - 30) + 155 * np.exp(8 - 4 * x / 5) - 5 * (x + 1)) / (20 - 36 * np.exp(8))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "efac514a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Linear element"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 138,
|
||||
"id": "18bd929b",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def show_plot_linear(filename: str, elements: int):\n",
|
||||
" with open(filename, 'r') as file:\n",
|
||||
" data_str = file.read()\n",
|
||||
"\n",
|
||||
" x = np.linspace(0, 10, elements + 1)\n",
|
||||
" y = np.fromstring(data_str, sep=' ')\n",
|
||||
" y_real = u(x)\n",
|
||||
"\n",
|
||||
" plt.plot(x, y, label=\"Linear element solution\", color='red')\n",
|
||||
" plt.plot(x, y_real, label=\"Numeral solution\", color='black')\n",
|
||||
" plt.title(f\"Linear element, elements = {elements}\")\n",
|
||||
" plt.grid(True)\n",
|
||||
" plt.xlabel(\"X\")\n",
|
||||
" plt.ylabel(\"Y\")\n",
|
||||
" plt.legend()\n",
|
||||
" plt.savefig(f\"linear_{elements}.png\", dpi=300)\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
" write_to_file(f\"linear_real_y_{elements}.txt\", y_real)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d9a38740",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Cubic element"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 139,
|
||||
"id": "73525bc7",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def show_plot_cubic(filename: str, elements: int):\n",
|
||||
" with open(filename, 'r') as file:\n",
|
||||
" data_str = file.read()\n",
|
||||
"\n",
|
||||
" x = np.linspace(0, 10, 3 * elements + 1)\n",
|
||||
" y = np.fromstring(data_str, sep=' ')\n",
|
||||
" y_real = u(x)\n",
|
||||
"\n",
|
||||
" plt.plot(x, y, label=\"Cubic element solution\", color=\"green\")\n",
|
||||
" plt.plot(x, y_real, label=\"Numeral solution\", color='black')\n",
|
||||
" plt.title(f\"Cubic element, elements = {elements} \")\n",
|
||||
" plt.xlabel(\"X\")\n",
|
||||
" plt.ylabel(\"Y\")\n",
|
||||
" plt.grid(True)\n",
|
||||
" plt.legend()\n",
|
||||
" plt.savefig(f\"cubic_{elements}.png\", dpi=300)\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
" write_to_file(f\"cubic_real_y_{elements}.txt\", y_real)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3584baa4",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Main part"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 140,
|
||||
"id": "b8a772e3",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAATgdJREFUeJzt3Qdc1VX/B/APe8kSlA0uFAE1cYJ777JhpZZW6vP0T8uR+mRPPWmWWmpm+pTa8mmYZaUtTXGAGrj3QnEAKkNQtuz7f53DSGQIeu/93fF5v16/uPd67+VwQvlwzvecY6JSqVQgIiIiUoipUp+YiIiISGAYISIiIkUxjBAREZGiGEaIiIhIUQwjREREpCiGESIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEyMnPnzoWJiQlSU1Pv+dwmTZrgueeegzaJzyc+LxEZD4YRIh138eJF/POf/0SzZs1gbW0NBwcHdOvWDcuXL8ft27eVbh7dw8cff4y1a9cq3QwinWaudAOIqGZ//PEHRo0aBSsrK4wbNw7BwcEoKCjA3r17MWvWLJw+fRpr1qzR2OePiYmBqSl/Z3nQMOLq6qr1ESYifcIwQqSjLl++jKeffhp+fn7YuXMnPDw8Kv5s8uTJiI2NlWFFk0QIIiLSNP7KQ6Sj3n//fWRnZ+Pzzz+vFETKtWjRAlOnTpW3r1y5IutAqpsOEI+LOpG7iZqRJ598Uk77uLi4yPfKy8u7Z81Ieno6pk+fLv9MhBVvb285alOXGpRvvvkGHTp0gI2NDRo2bCjDVkJCwj1fV1JSgg8//BBBQUFyqsrNzU1OXd26datKe4cPH46IiAh07NhRfp42bdrI+8LPP/8s74v3EO04evRolc917tw5PPHEE7J94nnifX799ddKzxH9LPr1r7/+wowZM9CoUSPY2dnh0UcfxY0bNyq1R4xeRUZGyueLq3fv3vf8eomMDcMIkY767bffZJ1IWFiYRt5fBBERPhYuXIihQ4fio48+wj/+8Y9aXyPCUY8ePbBixQoMHDhQ1q28+OKL8gf41atXa33tu+++K0OLv78/PvjgA0ybNg07duxAz549ZcCpjQgeYlqqvFbm+eefx7fffotBgwahsLCw0nPFiNGYMWMwYsQI+bWJwCJui+eLEPXMM89g3rx5shZH9IEIOuVEcOjatSvOnj2L1157DUuXLpUhY+TIkdi4cWOVdr388ss4fvw43nrrLfzf//2f/H82ZcqUij8XAUqEtYCAAHz99dfy+ve//13r10pklFREpHMyMjJU4q/nI488UqfnX758WT7/yy+/rPJn4vG33nqr4r64LR57+OGHKz3vpZdeko8fP3684jE/Pz/V+PHjK+7/5z//kc/5+eefq3yekpKSGtt35coVlZmZmerdd9+t9PjJkydV5ubmlR4Xn0983nJ79uyRn/Pbb7+t9No///yzyuPideKxqKioise2bt0qH7OxsVHFxcVVPL569Wr5+K5duyoe69evn6pNmzaqvLy8Sl9XWFiYyt/fv+Ix0c/itf3796/0dU+fPl1+nenp6RWPBQUFqXr16lVj3xCRSsWRESIdlJmZKT/a29tr7HOIupO7f8sXNm/eXONrfvrpJ7Rr105OR9xNTEHUREyPiBEIMRIhpnPKL3d3dzlSsmvXrhpfu2HDBjg6OmLAgAGVXiumWRo0aFDltYGBgQgNDa2436VLF/mxb9++8PX1rfL4pUuX5MebN2/K2hzRxqysrIrPk5aWJkdgLly4gGvXrlX6XGIk6c6vW4waFRcXIy4ursavh4iqYgErkQ4SdRyC+KGoKSIE3Kl58+Zy5YyoP6mJmNp4/PHH6/25xA9yMUhz9+csZ2FhUetrMzIy0Lhx42r/PCUlpdL9OwOHIIKM4OPjU+3j5XUnYnpHtPHNN9+UV02fy8vLq8bP5ezsXOk9iahuGEaIdDSMeHp64tSpU3V6fk2jEuK39LqqbWTjQYlREfH+W7ZsgZmZWZU/FyMctb1WBBFR81EdUTx6p+rev7bHS2eySj+PMHPmTDkSUh1RNFyf9ySiumEYIdJRYlWI2EMkOjq60rRDdcp/I7+7ELS26QIx4tC0adOK+2JkQPxArm33UzF6UteAdPfrxA9o8flatmxZ79du375dFq+K1TGaIoqFy0dp+vfvr7b31WTIIzIUrBkh0lGzZ8+WKzkmTpyI5OTkaqdMxMqS8pEUsbHW7t27q2y4VZP//ve/le6LFTLCkCFDanyNmKIRq0eqW1lS22jAY489JkcRxCqWu58n7ou6jJqIGg4xwjN//vwqf1ZUVHTPlTh1JUZfxLLb1atXIzExscqf37lktz7E/0N1tZHIUHFkhEhHiRGBdevW4amnnkLr1q0r7cAaFRUlCzvv3ANEhJZFixbJj2JvDBFMzp8/X+umag8//DAGDx4sR1/EHiBiSawoUK2JWF77448/yl1hX3jhBVlEKgo/xT4cq1atqvG14mt55513MGfOHFmTIpbKiuJc0QYRbEQhqJgeqU6vXr3k0l6xTPfYsWNySbEYvRAjO6IPRCAT+4Kogwho3bt3l3uRTJo0SY6WiCAo+kcsXRZBrL5EH33yySfy6xfTPCL0iGJaIrqD0st5iKh258+fV02aNEnVpEkTlaWlpcre3l7VrVs31YoVKyotQc3NzVVNmDBB5ejoKJ/z5JNPqlJSUmpc2nvmzBnVE088IZ/r7OysmjJliur27duVPvfdS3uFtLQ0+VwvLy/ZHm9vb/mc1NTUe34tP/30k6p79+4qOzs7eQUEBKgmT56siomJqXFpb7k1a9aoOnToIJfoijaLJbizZ89WXb9+vVJ7hw0bVuW14usVn6e65dCLFy+u9PjFixdV48aNU7m7u6ssLCzk1zl8+HDVjz/+WGVp78GDByu9ViwTvnu5cFJSkmyTaLP4My7zJarKRPznznBCREREpE2sGSEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiLSrzAiDooSR3C7uLjI3RDFevxDhw7V+PyIiAi5A+HdV1JS0oO2nYiIiIxt0zNx+JPYkrlPnz7yjAlxJoTYeKh8K+raxMTEVBz+JdR06FV1xBbV169fl5skcWtlIiIi/SB2DxEHfoqztsRBnGoJI++99548+fLLL7+seOzOsy1qI8KHk5MT7ocIInefuElERET6ISEhAd7e3uoJI2LLZ3GapdgKOjIyUh6l/dJLL8ltk+/loYceQn5+vtzOeu7cuXKEpSbieeIqV74vm9g6WoyOqEthYSF27dolR3pqO8KcHgz7WXvY19rBftYO9rP+97MYFRGDFvf62V2vHVitra3lxxkzZshAcvDgQUydOlWeSTF+/Pgap2dE3Yg4K0MEjM8++wxff/019u/fj5CQkGpfI8KKOFDrbuKcDltb27o2l4iIiBSUm5srz7zKyMioVKrxQGHE0tJShgpxSFe5V155RYYScZBUXYmDr3x9fWUoqcvISGZmppymSU1NrfWLuZ80GB4ejgEDBjB1axD7WXvY19rBftYO9rP+97P4+S1OFL9XGKnXNI2HhwcCAwMrPSZOE/3pp5/q1bjOnTtj7969Nf65lZWVvO4mOkkT35Cael+qjP2sPexr7WA/awf7WX/7ua7vV6+lvaLOQ0y73EkcUe7n51evxoljwEWwISIiIqrXyMj06dMRFhaGBQsW4Mknn8SBAwewZs0aeZWbM2eO3Ivkq6++kvc//PBDWbwSFBSEvLw8WTOyc+dObNu2Tf1fDRERERl2GOnUqRM2btwoA8fbb78tQ4YIG2PHjq14TmJiIuLj4yvuFxQU4NVXX5UBRRSftm3bFtu3b5dVu0RERET1CiPC8OHD5VWTtWvXVro/e/ZseRERERFVh2fTEBERkaIYRoiIiEhRDCNERESkKIYRIiIiUhTDCBERESmKYYSIiIj0a2kvkTHLzi9CYvptXM/IQ3puAfILS5BfXIL8wmLkF5WUXcUoLFLBysIUthZmsLE0g52VOWwtzWBjUXrb0cYC7o7WaGhrCVNTE6W/LCIiRTGMEN0l43YhTlxNx+nrmbh6KxeJ6Xm4JgJI+m1k5hWp9XNZmpmisYMVPByt4e5oU/rRwRpNG9mhpZs9PB2tYWLCsEJEho1hhIxaQVEJziVl4lhCesV16UZOra+xtzaHl5MNnG0tYW1hCitzMzkKYmVedtvcFBbmpnLUJLegCLkFxWVX6e3bBcW4mVuA1Ox8FBSX4Oqt2/ICblX5XHaWZmjhZo+WjRvA301c9ghwt4eHo40Ge4WISLsYRsjoJGXk4c9TifjzdBKOxKfLQHI3n4Y2aOvthKYudvBwsoank40MIGLkwt5aPadaFhaXICUrH0kZt5GYkSfbJT6KEZjYlGxcTs1BTkExjieky+tObg5WeMjHCe19neXHtt6OsLXkX2ci0k/814uMQsLNXGw5lYgtp5JwNL7yD3ZRv9HOx0n+UH/IxxHtvJ3g0sBK422yMDOVAUdcNYWVK6k5uJCSjfPJWfLjheQsXLyRg+TMfGw9nSwvQZSdiGmddt6OsEw3QcesfHg15JHrRKQfGEbIYKVk5mHD4avYfDJR1n/cqYOfM4YEu6NvQGM0dbXTyboMEVbEtIy4hrbxqHhcTPecupaJo/G3KqaWxIjKuaQseQFm+Pr9SLRo3ADdmrsgrIUrujZ1gaMtwwkR6SaGETI4MUlZ+HTPJfxy7BoKi1UVIwddmrpgSBt3DApyh5uDNfSVmI7p3LShvMqJKZ5jCbdw8HIath67gmu5JnKqR1z/i46TX3+wlyO6tXCVASzE1xlmXMVDRDqCYYQMgkqlwt7YVHy65zJ2n79R8XhHP2c80cEbAwLdtDL1ohSxTHiwowf6tXJF25KLCOs9AIcTMhB1MU1eIpScuJohr08iLsLJ1gJ9WjWWwaRny0ZyqoqISCkMI6TXRPHpb8evy5GQ0imK0lGQIcELine truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
@@ -52,16 +160,82 @@
|
||||
],
|
||||
"source": [
|
||||
"N = 20\n",
|
||||
"x = np.linspace(0, 10, 3 * N + 1)\n",
|
||||
"with open(\"matrix_cubic.txt\", 'r') as file:\n",
|
||||
" data_str = file.read()\n",
|
||||
"y = np.fromstring(data_str, sep=' ')\n",
|
||||
"plt.plot(x, y, label=\"Cubic element solution\")\n",
|
||||
"plt.title(\"Cubic element\")\n",
|
||||
"plt.grid(True)\n",
|
||||
"show_plot_linear(\"matrix_linear.txt\", N)\n",
|
||||
"show_plot_cubic(\"matrix_cubic.txt\", N)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "22fe3de6",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Errors"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 142,
|
||||
"id": "e0e9266d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def read_data_from_file(filename):\n",
|
||||
" with open(filename, 'r') as file:\n",
|
||||
" content = file.read().strip()\n",
|
||||
" data = np.array([float(x) for x in content.split()])\n",
|
||||
" return data\n",
|
||||
"\n",
|
||||
"def show_error(program_file: str, analytical_file: str):\n",
|
||||
" # Считывание данных из файлов\n",
|
||||
" real = read_data_from_file(analytical_file)\n",
|
||||
" matrix = read_data_from_file(program_file)\n",
|
||||
" \n",
|
||||
" # Расчет абсолютных разностей\n",
|
||||
" absolute_errors = np.abs(real - matrix)\n",
|
||||
"\n",
|
||||
"plt.show()"
|
||||
" # Расчет относительных погрешностей (в долях)\n",
|
||||
" # Добавляем маленькое значение к знаменателю для избежания деления на ноль\n",
|
||||
" relative_errors = absolute_errors / (np.abs(real))\n",
|
||||
"\n",
|
||||
" # Расчет относительных погрешностей в процентах\n",
|
||||
" relative_errors_percent = relative_errors * 100\n",
|
||||
"\n",
|
||||
" # Нахождение максимальной относительной погрешности\n",
|
||||
" max_relative_error = np.max(relative_errors)\n",
|
||||
" max_relative_error_percent = np.max(relative_errors_percent)\n",
|
||||
" max_error_index = np.argmax(relative_errors)\n",
|
||||
"\n",
|
||||
" # Вывод результатов\n",
|
||||
" print(f\"\\nМаксимальная относительная погрешность: {max_relative_error:.6f} ({max_relative_error_percent:.2f}%)\")\n",
|
||||
" print(f\"Индекс точки с максимальной погрешностью: {max_error_index}\")\n",
|
||||
" print(f\"Значения в точке с максимальной погрешностью:\")\n",
|
||||
" print(f\" cubic_real: {real[max_error_index]}\")\n",
|
||||
" print(f\" matrix_cubic: {matrix[max_error_index]}\")\n",
|
||||
" print(f\" Абсолютная разность: {absolute_errors[max_error_index]:.6f}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 143,
|
||||
"id": "89918171",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\n",
|
||||
"Максимальная относительная погрешность: 0.107830 (10.78%)\n",
|
||||
"Индекс точки с максимальной погрешностью: 0\n",
|
||||
"Значения в точке с максимальной погрешностью:\n",
|
||||
" cubic_real: 3.1950864987612366\n",
|
||||
" matrix_cubic: 2.85056\n",
|
||||
" Абсолютная разность: 0.344526\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"show_error(\"matrix_linear.txt\", \"linear_real_y_20.txt\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
Reference in new issue
Block a user