New files
This commit is contained in:
commit
468745733d
4 files changed
+2096
No files matched your search
@@ -0,0 +1 @@
|
||||
{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[],"dockerImageVersionId":30918,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Лабораторная работа №1 (интерполяция полиномами)","metadata":{}},{"cell_type":"markdown","source":"## Базовые функции","metadata":{}},{"cell_type":"code","source":"import numpy as np\n\ndef f(t):\n return np.exp(-t**2)\n\ndef nodes_mulitiply(x, t_nodes):\n return np.prod(x - t_nodes)\n\ndef factorial(n):\n if n == 0:\n return 1\n else:\n return n * factorial(n-1)\n\ndef chebyshev(a, b, k):\n chebyshev = np.zeros(k, dtype=float)\n for m in range(1, k + 1):\n chebyshev[m-1] = (a + b)/2 + (b - a)/2 * np.cos((2*m - 1)/(2*k) * np.pi)\n return chebyshev","metadata":{"execution":{"iopub.status.busy":"2025-03-13T19:46:56.318274Z","iopub.status.idle":"2025-03-13T19:46:56.326780Z","shell.execute_reply.started":"2025-03-13T19:46:56.318716Z","shell.execute_reply":"2025-03-13T19:46:56.325265Z"},"trusted":true},"outputs":[],"execution_count":31},{"cell_type":"markdown","source":"## Производная $n$-ой степени в точке $t$","metadata":{}},{"cell_type":"code","source":"import numpy as np\n\ndef get_derivative(n, t):\n a = np.zeros((n+1, n+1), dtype=float)\n a[0, 0] = 1\n \n for j in range(1, n+1):\n for i in range(n+1):\n if i+1 <= n:\n term1 = (i+1) * a[j-1, i+1]\n else:\n term1 = 0\n \n if i-1 >= 0:\n term2 = -2 * a[j-1, i-1]\n else:\n term2 = 0\n \n a[j, i] = term1 + term2\n \n P_n = np.polyval(a[n, ::-1], t)\n nth_derivative = P_n * np.exp(-t**2)\n return nth_derivative","metadata":{"execution":{"iopub.status.busy":"2025-03-13T19:46:56.328701Z","iopub.execute_input":"2025-03-13T19:46:56.329204Z","iopub.status.idle":"2025-03-13T19:46:56.354655Z","shell.execute_reply.started":"2025-03-13T19:46:56.329147Z","shell.execute_reply":"2025-03-13T19:46:56.353019Z"},"trusted":true},"outputs":[],"execution_count":32},{"cell_type":"markdown","source":"## Базисный полином Лагранжа","metadata":{}},{"cell_type":"code","source":"def l_i(i, x, t_nodes):\n return np.prod((x - t_nodes[t_nodes != t_nodes[i]]) / (t_nodes[i] - t_nodes[t_nodes != t_nodes[i]]))","metadata":{"execution":{"iopub.status.busy":"2025-03-13T19:46:56.357400Z","iopub.execute_input":"2025-03-13T19:46:56.357813Z","iopub.status.idle":"2025-03-13T19:46:56.379527Z","shell.execute_reply.started":"2025-03-13T19:46:56.357777Z","shell.execute_reply":"2025-03-13T19:46:56.378077Z"},"trusted":true},"outputs":[],"execution_count":33},{"cell_type":"markdown","source":"## Интерполяционный полином Лагранжа","metadata":{}},{"cell_type":"code","source":"def L(x, t_nodes, f_nodes):\n n = len(t_nodes)\n\n basis = np.array([l_i(i, x, t_nodes) for i in range(n)])\n return np.sum(np.multiply(basis, f_nodes))","metadata":{"execution":{"iopub.status.busy":"2025-03-13T19:46:56.381051Z","iopub.execute_input":"2025-03-13T19:46:56.381593Z","iopub.status.idle":"2025-03-13T19:46:56.401027Z","shell.execute_reply.started":"2025-03-13T19:46:56.381537Z","shell.execute_reply":"2025-03-13T19:46:56.399544Z"},"trusted":true},"outputs":[],"execution_count":34},{"cell_type":"markdown","source":"## Курс валюты","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.dates as mdates\n\nfrom datetime import datetime\n\nurl = \"https://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=11/02/2025&date_req2=15/02/2025&VAL_NM_RQ=R01235\"\noutput = pd.read_xml(url)\ndates_str = output['Date'].values\nrates = output['Value'].str.replace(',', '.').astype(float)\n\ndates = [datetime.strptime(date, '%d.%m.%Y') for date in dates_str]\nx_nodes = np.array(dates)\ny_nodes = np.array(rates)\n\nx_interp = np.linspace(mdates.date2num(x_nodes[0]), mdates.date2num(x_nodes[-1]), 500)\ny_interp = np.array([L(x, mdates.date2num(x_nodes), y_nodes) for x in x_interp])\n\nx_interp_dates = mdates.num2date(x_interp)\n\nplt.figure(figsize=(8, 6))\nplt.plot(x_interp_dates, y_interp, label=\"$L(x)$\", color=\"blue\")\nplt.scatter(x_nodes, y_nodes, color=\"red\", label=\"Исходные данные\")\n\nplt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%Y'))\nplt.gca().xaxis.set_major_locator(mdates.DayLocator())\n\nplt.xlabel(\"Дата\")\nplt.ylabelLine truncated
|
||||
+1415
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -0,0 +1,680 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b0171fe2",
|
||||
"metadata": {
|
||||
"id": "6e-MGk_sYwto",
|
||||
"papermill": {
|
||||
"duration": 0.005395,
|
||||
"end_time": "2025-05-26T12:00:42.929552",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.924157",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"# Лабораторная работа №4. LU-разложение"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "e55ed6ed",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:42.939088Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:42.938689Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:42.948722Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:42.947046Z"
|
||||
},
|
||||
"id": "gsnd8FCUYwtq",
|
||||
"papermill": {
|
||||
"duration": 0.016723,
|
||||
"end_time": "2025-05-26T12:00:42.950660",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.933937",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "c9cdfebd",
|
||||
"metadata": {
|
||||
"id": "TqOkW3yn6CfL",
|
||||
"papermill": {
|
||||
"duration": 0.003345,
|
||||
"end_time": "2025-05-26T12:00:42.958714",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.955369",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Исходные СЛАУ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "edde8bd8",
|
||||
"metadata": {
|
||||
"id": "eaWRRTBS6Ht-",
|
||||
"papermill": {
|
||||
"duration": 0.003509,
|
||||
"end_time": "2025-05-26T12:00:42.966538",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.963029",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"$A_1x = b_1$:\n",
|
||||
"\\begin{equation}\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\t1 & 1 & 0 & 3 \\\\\n",
|
||||
"\t\t2 & 1 & -1 & 1 \\\\\n",
|
||||
"\t\t3 & -1 & -1 & 2 \\\\\n",
|
||||
"\t\t-1 & 2 & 3 & -1\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\tx_1 \\\\\n",
|
||||
"\t\tx_2 \\\\\n",
|
||||
"\t\tx_3 \\\\\n",
|
||||
"\t\tx_4\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\t=\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\t4 \\\\\n",
|
||||
"\t\t1 \\\\\n",
|
||||
"\t\t-3 \\\\\n",
|
||||
"\t\t4\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\\end{equation}\n",
|
||||
"\n",
|
||||
"$A_2x = b_2$:\n",
|
||||
"\\begin{equation}\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\t3 & 1 & -3 \\\\\n",
|
||||
"\t\t6 & 2 & 5 \\\\\n",
|
||||
"\t\t1 & 4 & -3\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\tx_1 \\\\\n",
|
||||
"\t\tx_2 \\\\\n",
|
||||
"\t\tx_3\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\t=\n",
|
||||
"\t\\begin{bmatrix}\n",
|
||||
"\t\t-16 \\\\\n",
|
||||
"\t\t12 \\\\\n",
|
||||
"\t\t-39\n",
|
||||
"\t\\end{bmatrix}\n",
|
||||
"\\end{equation}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "4e2397fc",
|
||||
"metadata": {
|
||||
"id": "4RjiYoOFYwtq",
|
||||
"papermill": {
|
||||
"duration": 0.00338,
|
||||
"end_time": "2025-05-26T12:00:42.974269",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.970889",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## LU-разложение"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "00dfff6f",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:42.984367Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:42.984067Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:42.990634Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:42.989637Z"
|
||||
},
|
||||
"id": "80D9G2G0Ywtr",
|
||||
"papermill": {
|
||||
"duration": 0.014196,
|
||||
"end_time": "2025-05-26T12:00:42.993087",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.978891",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def lu(A):\n",
|
||||
" n = A.shape[0]\n",
|
||||
" U = A.copy()\n",
|
||||
" L = np.eye(n)\n",
|
||||
" for i in range(n):\n",
|
||||
" M = np.eye(n)\n",
|
||||
"\n",
|
||||
" for j in range(i+1, n):\n",
|
||||
" m_i = U[j, i] / U[i, i]\n",
|
||||
" M[j, i] = -m_i\n",
|
||||
"\n",
|
||||
" U = M @ U\n",
|
||||
" L = L @ np.linalg.inv(M)\n",
|
||||
" return L, U"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "6ec9cd52",
|
||||
"metadata": {
|
||||
"id": "-xXPAM5kYwts",
|
||||
"papermill": {
|
||||
"duration": 0.004751,
|
||||
"end_time": "2025-05-26T12:00:43.002932",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:42.998181",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Решение СЛАУ с использованием LU-разложения"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "a4fa7355",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.011657Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.011325Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.017980Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.016791Z"
|
||||
},
|
||||
"id": "I6zZuT9zYwts",
|
||||
"papermill": {
|
||||
"duration": 0.01353,
|
||||
"end_time": "2025-05-26T12:00:43.020024",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.006494",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def solve(L, U, b):\n",
|
||||
" n = L.shape[0]\n",
|
||||
" y = np.zeros(n)\n",
|
||||
" for i in range(n):\n",
|
||||
" y[i] = b[i] - np.dot(L[i, :i], y[:i])\n",
|
||||
"\n",
|
||||
" x = np.zeros(n)\n",
|
||||
" for i in range(n-1, -1, -1):\n",
|
||||
" x[i] = (y[i] - np.dot(U[i, i+1:], x[i+1:])) / U[i, i]\n",
|
||||
" return x"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "144e122d",
|
||||
"metadata": {
|
||||
"id": "zMPnLeRL6tkA",
|
||||
"papermill": {
|
||||
"duration": 0.003144,
|
||||
"end_time": "2025-05-26T12:00:43.026992",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.023848",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Решение СЛАУ $A_1x = b_1$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "11241f71",
|
||||
"metadata": {
|
||||
"_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
|
||||
"_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5",
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.036794Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.036450Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.136912Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.135576Z"
|
||||
},
|
||||
"id": "dbxDrIfqYwts",
|
||||
"outputId": "eedc32fe-e354-4603-947a-37d0e57394fe",
|
||||
"papermill": {
|
||||
"duration": 0.108266,
|
||||
"end_time": "2025-05-26T12:00:43.138788",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.030522",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Solve is: [ -1.000000, 2.000000, 0.000000, 1.000000 ]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"A1 = np.array([[1., 1., 0., 3.],\n",
|
||||
" [2., 1., -1., 1.],\n",
|
||||
" [3., -1., -1., 2.],\n",
|
||||
" [-1., 2., 3., -1.]])\n",
|
||||
"b1 = np.array([4., 1., -3., 4.])\n",
|
||||
"\n",
|
||||
"L, U = lu(A1)\n",
|
||||
"# print(\"L:\\n\", L)\n",
|
||||
"# print(\"U:\\n\", U)\n",
|
||||
"ans_1 = solve(L, U, b1)\n",
|
||||
"print(f\"Solve is: [ {ans_1[0]:.6f}, {ans_1[1]:.6f}, {ans_1[2]:.6f}, {ans_1[3]:.6f} ]\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e6479df1",
|
||||
"metadata": {
|
||||
"id": "Zp1o80eLYwtt",
|
||||
"papermill": {
|
||||
"duration": 0.003615,
|
||||
"end_time": "2025-05-26T12:00:43.146164",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.142549",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Модифицированная функция LU-разложения"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "54c475c9",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.155575Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.154704Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.163273Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.162006Z"
|
||||
},
|
||||
"id": "ilUYjY2uYwtt",
|
||||
"papermill": {
|
||||
"duration": 0.01488,
|
||||
"end_time": "2025-05-26T12:00:43.165046",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.150166",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def lu(A, Permute):\n",
|
||||
" n = A.shape[0]\n",
|
||||
" U = A.copy()\n",
|
||||
" L = np.eye(n)\n",
|
||||
" P = np.eye(n)\n",
|
||||
"\n",
|
||||
" for i in range(n):\n",
|
||||
" if Permute:\n",
|
||||
" max_idx = np.argmax(np.abs(U[i:, i])) + i\n",
|
||||
" if max_idx != i:\n",
|
||||
" U[[i, max_idx], :] = U[[max_idx, i], :]\n",
|
||||
" P[[i, max_idx], :] = P[[max_idx, i], :]\n",
|
||||
" if i > 0:\n",
|
||||
" L[[i, max_idx], :i] = L[[max_idx, i], :i]\n",
|
||||
"\n",
|
||||
" M = np.eye(n)\n",
|
||||
" for j in range(i+1, n):\n",
|
||||
" m_i = U[j,i] / U[i,i]\n",
|
||||
" M[j, i] = -m_i\n",
|
||||
"\n",
|
||||
" U = M @ U\n",
|
||||
" L = L @ np.linalg.inv(M)\n",
|
||||
"\n",
|
||||
" return L, U, P"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "a7df72b9",
|
||||
"metadata": {
|
||||
"id": "NqXdkl5fYwtu",
|
||||
"papermill": {
|
||||
"duration": 0.003428,
|
||||
"end_time": "2025-05-26T12:00:43.172590",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.169162",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Модифицированная функция решения СЛАУ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "eb7d00ab",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.181226Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.180948Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.188210Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.187079Z"
|
||||
},
|
||||
"id": "_XJZmPHqYwtu",
|
||||
"papermill": {
|
||||
"duration": 0.013904,
|
||||
"end_time": "2025-05-26T12:00:43.190207",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.176303",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def solve(L, U, P, b):\n",
|
||||
" b = P @ b\n",
|
||||
" n = L.shape[0]\n",
|
||||
" y = np.zeros(n)\n",
|
||||
" for i in range(n):\n",
|
||||
" y[i] = b[i] - np.dot(L[i, :i], y[:i])\n",
|
||||
"\n",
|
||||
" x = np.zeros(n)\n",
|
||||
" for i in range(n-1, -1, -1):\n",
|
||||
" x[i] = (y[i] - np.dot(U[i, i+1:], x[i+1:])) / U[i, i]\n",
|
||||
" return x"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "abb5725d",
|
||||
"metadata": {
|
||||
"id": "4wPzZedyYwtu",
|
||||
"papermill": {
|
||||
"duration": 0.003396,
|
||||
"end_time": "2025-05-26T12:00:43.197774",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.194378",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Решение СЛАУ $A_2x = b_2$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "a03aaca6",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.207494Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.207184Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.215774Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.214371Z"
|
||||
},
|
||||
"id": "UGd1L6_uYwtv",
|
||||
"outputId": "9c43ee6a-7ad5-4561-90fd-6058c4f55505",
|
||||
"papermill": {
|
||||
"duration": 0.015323,
|
||||
"end_time": "2025-05-26T12:00:43.217345",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.202022",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Solve is: [ 1.000000, -7.000000, 4.000000 ]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"A2 = np.array([[3., 1., -3.], [6., 2., 5.], [1., 4., -3.]])\n",
|
||||
"b2 = np.array([-16., 12., -39.])\n",
|
||||
"L, U, P = lu(A2, True)\n",
|
||||
"# print(\"L:\\n\", L)\n",
|
||||
"# print(\"U:\\n\", U)\n",
|
||||
"# print(\"P:\\n\", P)\n",
|
||||
"ans_2 = solve(L,U,P,b2)\n",
|
||||
"print(f\"Solve is: [ {ans_2[0]:.6f}, {ans_2[1]:.6f}, {ans_2[2]:.6f} ]\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "dec771fa",
|
||||
"metadata": {
|
||||
"id": "kzQVvJK-Ywtv",
|
||||
"papermill": {
|
||||
"duration": 0.005275,
|
||||
"end_time": "2025-05-26T12:00:43.226907",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.221632",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Log-log график относительной погрешности $E = \\frac{\\|\\hat{x} - \\tilde{x}\\|_\\infty}{\\|\\hat{x}\\|_\\infty}$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "4e11a9a1",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.237058Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.236762Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:43.259392Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:43.257833Z"
|
||||
},
|
||||
"id": "SUIa1a90Ywtv",
|
||||
"outputId": "18ace28c-a8d9-4ae8-b1f7-0fdb5b5cf313",
|
||||
"papermill": {
|
||||
"duration": 0.031268,
|
||||
"end_time": "2025-05-26T12:00:43.262442",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.231174",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Solve for FALSE, when p = 0, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 1, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 2, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 3, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 4, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 5, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 6, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 7, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 8, is: 1.000000, -7.000001, 4.000000\n",
|
||||
"Solve for FALSE, when p = 9, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for FALSE, when p = 10, is: 0.999982, -6.999947, 4.000000\n",
|
||||
"Solve for FALSE, when p = 11, is: 1.000089, -7.000266, 4.000000\n",
|
||||
"Solve for FALSE, when p = 12, is: 1.000333, -7.000999, 4.000000\n",
|
||||
"\n",
|
||||
"Solve for TRUE, when p = 0, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 1, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 2, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 3, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 4, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 5, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 6, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 7, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 8, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 9, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 10, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 11, is: 1.000000, -7.000000, 4.000000\n",
|
||||
"Solve for TRUE, when p = 12, is: 1.000000, -7.000000, 4.000000\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"relative_errors_false = []\n",
|
||||
"relative_errors_true = []\n",
|
||||
"for p in range(0, 13):\n",
|
||||
" k = 10**(-p)\n",
|
||||
" A1 = np.array([[3 + k, 1., -3.], [6., 2., 5.], [1., 4., -3.]])\n",
|
||||
" b1 = np.array([-16 + k, 12., -39.])\n",
|
||||
"\n",
|
||||
" L = np.eye(len(A1))\n",
|
||||
" L,U,P = lu(A1, False)\n",
|
||||
" x = solve(L,U,P,b1)\n",
|
||||
" print(f\"Solve for FALSE, when p = {p}, is: {x[0]:.6f}, {x[1]:.6f}, {x[2]:.6f}\")\n",
|
||||
" error = np.linalg.norm(ans_2 - x) / np.linalg.norm(ans_2)\n",
|
||||
" relative_errors_false.append(error)\n",
|
||||
"\n",
|
||||
"print()\n",
|
||||
"for p in range(0, 13):\n",
|
||||
" k = 10**(-p)\n",
|
||||
" A1 = np.array([[3 + k, 1., -3.], [6., 2., 5.], [1., 4., -3.]])\n",
|
||||
" b1 = np.array([-16 + k, 12., -39.])\n",
|
||||
"\n",
|
||||
" L = np.eye(len(A1))\n",
|
||||
" L,U,P = lu(A1, True)\n",
|
||||
" x = solve(L,U,P,b1)\n",
|
||||
" print(f\"Solve for TRUE, when p = {p}, is: {x[0]:.6f}, {x[1]:.6f}, {x[2]:.6f}\")\n",
|
||||
" error = np.linalg.norm(ans_2 - x) / np.linalg.norm(ans_2)\n",
|
||||
" relative_errors_true.append(error)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "f1eeafa4",
|
||||
"metadata": {
|
||||
"execution": {
|
||||
"iopub.execute_input": "2025-05-26T12:00:43.273202Z",
|
||||
"iopub.status.busy": "2025-05-26T12:00:43.272878Z",
|
||||
"iopub.status.idle": "2025-05-26T12:00:44.298708Z",
|
||||
"shell.execute_reply": "2025-05-26T12:00:44.297579Z"
|
||||
},
|
||||
"id": "pBjDPqvyYwtv",
|
||||
"outputId": "310fd01f-5f13-4a67-ca26-8e64d81f86d1",
|
||||
"papermill": {
|
||||
"duration": 1.032378,
|
||||
"end_time": "2025-05-26T12:00:44.300492",
|
||||
"exception": false,
|
||||
"start_time": "2025-05-26T12:00:43.268114",
|
||||
"status": "completed"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 800x500 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"fig = plt.figure(figsize=(8, 5))\n",
|
||||
"plt.loglog(range(0,13), relative_errors_false, 's', color=\"green\", label=r'$\\frac{||\\hat{x} - \\tilde{x}||_{\\infty}}{||\\hat{x}||_{\\infty}}$, False')\n",
|
||||
"plt.loglog(range(0,13), relative_errors_true, 'o', color=\"red\", label=r'$\\frac{||\\hat{x} - \\tilde{x}||_{\\infty}}{||\\hat{x}||_{\\infty}}$, True')\n",
|
||||
"plt.xlabel('$p$')\n",
|
||||
"plt.ylabel(\"$E$\")\n",
|
||||
"plt.grid(True)\n",
|
||||
"fig.tight_layout()\n",
|
||||
"plt.savefig('E.png',dpi=350)\n",
|
||||
"plt.show()"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"collapsed_sections": [
|
||||
"HHs70jNEYwtv"
|
||||
],
|
||||
"provenance": []
|
||||
},
|
||||
"kaggle": {
|
||||
"accelerator": "none",
|
||||
"dataSources": [],
|
||||
"dockerImageVersionId": 31040,
|
||||
"isGpuEnabled": false,
|
||||
"isInternetEnabled": true,
|
||||
"language": "python",
|
||||
"sourceType": "notebook"
|
||||
},
|
||||
"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.11.11"
|
||||
},
|
||||
"papermill": {
|
||||
"default_parameters": {},
|
||||
"duration": 7.337637,
|
||||
"end_time": "2025-05-26T12:00:44.825729",
|
||||
"environment_variables": {},
|
||||
"exception": null,
|
||||
"input_path": "__notebook__.ipynb",
|
||||
"output_path": "__notebook__.ipynb",
|
||||
"parameters": {},
|
||||
"start_time": "2025-05-26T12:00:37.488092",
|
||||
"version": "2.6.0"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
Reference in new issue
Block a user