New files

This commit is contained in:
ParkSuMin committed 2025-08-31 18:41:52 +02:00
commit 468745733d
4 files changed
+2096

No files matched your search

+1
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
+680
View File
@@ -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
}