Last active
May 24, 2020 08:31
-
-
Save DieTime/d9a3f7b7c13dabf5e18270aa934b8137 to your computer and use it in GitHub Desktop.
Решение задач из методички по численным методам
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# М3О-208Б-18 Глазков Д. А.\n", | |
"- <p style=\"font-size: 20px; margin-bottom: 8px\">Численные методы, методичка.</p>\n", | |
"- <p style=\"font-size: 20px\">Вариант 3.</p>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Содержание:\n", | |
"1. Интерполирование функций\n", | |
"2. Численное дифференцирование и интегрирование\n", | |
" 1. Численное дифференцирование\n", | |
" 2. Численное интегрирование\n", | |
"3. Численное решение уравнений\n", | |
"4. Исходник Jupyter Notebook" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Необходимые библиотеки" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from math import log, exp\n", | |
"import matplotlib.pyplot as plt\n", | |
"import numpy" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# №1. Интерполирование функций <a class=\"anchor\" id=\"interpolation\"></a>\n", | |
"1. Построить интерполяционный полином Лагранжа для функции f(x) с узлами интерполирования Xi, i=0,1,2. \n", | |
"2. Вычеслить значения f(x) и полинома Лагранда в точке A. Построить графики на отрезке [X0, X2]. \n", | |
"3. Вычислить точно и оценить погрешность интерпояции в этой точке." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://i.ibb.co/HYK8kn4/image.png\" align=\"left\" width=\"20%\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Функция вывода полинома Лагранжа" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def toLagrange(X, Y):\n", | |
" # Если таблица некорректная - вывод ошибки\n", | |
" if len(X) != len(Y):\n", | |
" raise ValueError('The length of X is not equal to the length of Y')\n", | |
" \n", | |
" # Вывод полинома в текстовой форме\n", | |
" print(\"L(x) = \", end='')\n", | |
" for i in range(len(X)):\n", | |
" print(\"%.3f\" % Y[i], end='', sep='')\n", | |
" \n", | |
" for k in range(len(X)):\n", | |
" if k != i:\n", | |
" print(\"*((x - %.3f)/(%.3f))\" % (X[k], X[i] - X[k]), end='')\n", | |
" \n", | |
" if i != len(X) - 1:\n", | |
" print(\" + \", end='')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Функция получения значения в точке А с помощью полинома Лагранжа" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def Lagrange(X, Y, A):\n", | |
" # Если таблица некорректная - вывод ошибки\n", | |
" if len(X) != len(Y):\n", | |
" raise ValueError('The length of X is not equal to the length of Y')\n", | |
" \n", | |
" # Результат\n", | |
" result = 0 \n", | |
" \n", | |
" for i in range(len(X)):\n", | |
" # Частичная сумма\n", | |
" part = Y[i]\n", | |
" \n", | |
" # Домнажаем частичную сумму\n", | |
" for k in range(len(X)):\n", | |
" if k != i:\n", | |
" part *= (A - X[k])/(X[i] - X[k])\n", | |
" \n", | |
" # Добавляем частичную сумму к результату\n", | |
" result += part\n", | |
" \n", | |
" return result" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Функция для интерполяции" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def f(x):\n", | |
" return log(x)**(12/5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Генерация таблицы для интепроляции" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"X = [4, 5, 6]\n", | |
"Y = [2.1900452899299268, 3.1334166440628146, 4.053883837734392]\n" | |
] | |
} | |
], | |
"source": [ | |
"X = [4, 5, 6]\n", | |
"Y = [f(x) for x in X]\n", | |
"\n", | |
"print(\"X =\", X)\n", | |
"print(\"Y =\", Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Вывод полученного полинома Лагранжа" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"L(x) = 2.190*((x - 5.000)/(-1.000))*((x - 6.000)/(-2.000)) + 3.133*((x - 4.000)/(1.000))*((x - 6.000)/(-1.000)) + 4.054*((x - 4.000)/(2.000))*((x - 5.000)/(1.000))" | |
] | |
} | |
], | |
"source": [ | |
"toLagrange(X, Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Сравнение полученных значений в точке A" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"f(a) = 2.6634738877273882\n", | |
"L(a) = 2.6645939870540345\n", | |
"\n", | |
"Абс. погрещность: 0.0011\n", | |
"Отн. погрешность: 0.0421 %\n" | |
] | |
} | |
], | |
"source": [ | |
"a = 4.5\n", | |
"\n", | |
"F = f(a)\n", | |
"L = Lagrange(X, Y, a)\n", | |
"\n", | |
"print(\"f(a) =\", F)\n", | |
"print(\"L(a) =\", L)\n", | |
"\n", | |
"print(\"\\nАбс. погрещность: %.4f\" % abs(L - F))\n", | |
"print(\"Отн. погрешность: %.4f\" % (abs(L - F) / F * 100), \"%\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Построение графиков" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x16e998ec3c8>]" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 720x216 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"step = 0.5\n", | |
"\n", | |
"x = list(numpy.arange(X[0], X[-1] + step, step))\n", | |
"Fx = [f(i) for i in x]\n", | |
"Lx = [Lagrange(X, Y, i) for i in x]\n", | |
"\n", | |
"fig, (F, L) = plt.subplots(1, 2, figsize=(10,3))\n", | |
"\n", | |
"F.set_title(\"F(x)\")\n", | |
"F.set_xlabel(\"X\")\n", | |
"F.set_ylabel(\"Y\")\n", | |
"F.grid()\n", | |
"F.plot (x, Fx)\n", | |
"\n", | |
"L.set_xlabel(\"X\")\n", | |
"L.set_ylabel(\"Y\")\n", | |
"L.set_title(\"L(x)\")\n", | |
"L.grid()\n", | |
"L.plot (x, Lx)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# №2. а) Численное дифференцирование <a class=\"anchor\" id=\"derivative\"></a>\n", | |
"1. Дана функция f(x), заданная в виде таблицы в пяти узлах Xi, i = 0, 1, 2, 3, 4.\n", | |
"2. Найти значения ее 1-й и 2-й производной в первых четырех узлах." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Исходные данные" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"X = [0.145, 0.147, 0.149, 0.151, 0.153]\n", | |
"Y = [4.97674, 4.99043, 5.00391, 5.01730, 5.03207]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Получим интерполяционный многочлен Лагранжа " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"L(x) = 4.977*((x - 0.147)/(-0.002))*((x - 0.149)/(-0.004))*((x - 0.151)/(-0.006))*((x - 0.153)/(-0.008)) + 4.990*((x - 0.145)/(0.002))*((x - 0.149)/(-0.002))*((x - 0.151)/(-0.004))*((x - 0.153)/(-0.006)) + 5.004*((x - 0.145)/(0.004))*((x - 0.147)/(0.002))*((x - 0.151)/(-0.002))*((x - 0.153)/(-0.004)) + 5.017*((x - 0.145)/(0.006))*((x - 0.147)/(0.004))*((x - 0.149)/(0.002))*((x - 0.153)/(-0.002)) + 5.032*((x - 0.145)/(0.008))*((x - 0.147)/(0.006))*((x - 0.149)/(0.004))*((x - 0.151)/(0.002))" | |
] | |
} | |
], | |
"source": [ | |
"toLagrange(X, Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Выбор шага" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"h = 1E-7" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Вычисление первой производной для первых 4-х узлов" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://i.ibb.co/2WYDdMZ/image.png\" align=\"left\" width=\"25%\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"X = [0.145, 0.147, 0.149, 0.151]\n", | |
"Y' = [6.749, 6.839, 6.651, 6.861]\n" | |
] | |
} | |
], | |
"source": [ | |
"dx = lambda x, h: (-3*Lagrange(X, Y, x) + 4*Lagrange(X, Y, x + h) - Lagrange(X, Y, x + 2*h)) / (2 * h)\n", | |
"first = [dx(x, h) for x in X[:-1]]\n", | |
"print(\"X =\", X[:-1])\n", | |
"print(\"Y' =\", [round(i, 3) for i in first])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Вычисление второй производной для первых 4-х узлов" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"https://i.ibb.co/6NyKfn5/1.png\" align=\"left\" width=\"30%\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"X = [0.145, 0.147, 0.149, 0.151]\n", | |
"Y'' = [226.752, -81.357, -50.537, 317.257]\n" | |
] | |
} | |
], | |
"source": [ | |
"d2x = lambda x, h: (2*Lagrange(X, Y, x) - 5*Lagrange(X, Y, x + h) + 4*Lagrange(X, Y, x + 2*h) - Lagrange(X, Y, x + 3*h)) / h**2\n", | |
"second = [d2x(x, h) for x in X[:-1]]\n", | |
"print(\"X =\", X[:-1])\n", | |
"print(\"Y'' =\", [round(i, 3) for i in second])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Построение графиков" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x16eacb11748>]" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJUAAADgCAYAAAC6lFe/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3iUVf7+8fdJQgIhQKihhtB7DwQRpCkqolhQaatgVwRdK6uiu6KrYllBRMSCFRREFBVRWui9BEINSSihhgRCCunn90fG7y/LghJI8kwm9+u6uJJ5SuY+BObMfJ5zzmOstYiIiIiIiIiIiBSEl9MBRERERERERESk5FFRSURERERERERECkxFJRERERERERERKTAVlUREREREREREpMBUVBIRERERERERkQJTUUlERERERERERApMRSWRS2CMaWaM2WKMSTbGjDHG9DPG/HCR5643xrQq6owiIlL81D+IiMj5qH8QT6WiksileQYIt9ZWsNZOAv4NvH6R574FvFxkyURExEmF1j8YY3oZY8ILP6KIiDigyPoHY4wtzKAiBaGiksilqQ/sADDGdAYqWWvXXuS584DexphaRRVOREQco/5BRETOR/2DeCQVlUQKyBizBOgNTDbGpADXA8vy7e9mjDlpjKnnetzOGHPaGNMcwFqbDmwC+hV/ehERKSrqH0RE5HzUP4gnU1FJpICstX2AFcCj1toAoA2wJ9/+1cCHwOfGmHLAl8AL1trd+X7MLqBd8aUWEZGiVtj9g7U23Frbq5jii4hIESnq/sFaa4q8ESIXoKKSyOULBJLP2fZPoBKwHjgCvH/O/mTXeSIi4rnUP4iIyPmofxCPoaKSyOU7BVTIv8FamwV8BrQG3rbWnrt4XgXgdLGkExERp6h/EBGR81H/IB5DRSWRy7cNaJp/gzGmDvASMB142xjjd845LYCI4oknIiIOUf8gIiLno/5BPIaKSiKXbz7Q848HxhhD3lWGT4B7gaPA+Hz7/YBOwMJiTSkiIsVN/YOIiJyP+gfxGCoqiVwma+1mIMkYE+baNAYIAsa5hq2OBEYaY3q49t8EhFtrjxR/WhERKS7qH0RE5HzUP4gnMf87VVNECsoY0w94xFp780Ucuw6411obWfTJRETESeofRETkfNQ/iKdQUUlERERERERERApM099E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\n", | |
"text/plain": [ | |
"<Figure size 1440x216 with 3 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fig, (f, df, d2f) = plt.subplots(1, 3, figsize=(20,3))\n", | |
"\n", | |
"f.set_title(\"f(x)\")\n", | |
"f.set_xlabel(\"X\")\n", | |
"f.set_ylabel(\"Y\")\n", | |
"f.grid()\n", | |
"f.plot (X[:-1], Y[:-1], label = \"f(x)\")\n", | |
"\n", | |
"df.set_xlabel(\"X\")\n", | |
"df.set_ylabel(\"Y\")\n", | |
"df.grid()\n", | |
"df.set_title(\"f(x)'\")\n", | |
"df.plot (X[:-1], first, label = \"f(x)'\")\n", | |
"\n", | |
"d2f.set_xlabel(\"X\")\n", | |
"d2f.set_ylabel(\"Y\")\n", | |
"d2f.grid()\n", | |
"d2f.set_title(\"f(x)''\")\n", | |
"d2f.plot (X[:-1], second, label = \"f(x)''\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# №2. б) Численное интегрирование <a class=\"anchor\" id=\"integral\"></a>\n", | |
"1. Дана функция f(x), заданная в виде таблицы в пяти узлах Xi, i = 0, 1, 2, 3, 4.\n", | |
"2. Приближенно вычислить определенный интеграл на отрезке [X0; X4], используя формулы прямоугольников, трапеций, Симпсона" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Исходные данные" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"X = [0.145, 0.147, 0.149, 0.151, 0.153]\n", | |
"Y = [4.97674, 4.99043, 5.00391, 5.01730, 5.03207]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Вычисляем шаг" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"h = 0.002\n" | |
] | |
} | |
], | |
"source": [ | |
"h = X[1] - X[0]\n", | |
"print(\"h = %.3f\" % h)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод левых прямоуголников" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"http://aco.ifmo.ru/el_books/numerical_methods/lectures/images/image055.png\" align=\"left\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"I(left) = 0.039977\n" | |
] | |
} | |
], | |
"source": [ | |
"I = h * sum(Y[:-1])\n", | |
"print(\"I(left) = %.6f\" % I)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод правых прямоуголников" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"http://aco.ifmo.ru/el_books/numerical_methods/lectures/images/image056.png\" align=\"left\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"I(right) = 0.040087\n" | |
] | |
} | |
], | |
"source": [ | |
"I = h * sum(Y[1:])\n", | |
"print(\"I(right) = %.6f\" % I)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод средних прямоуголников" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"http://aco.ifmo.ru/el_books/numerical_methods/lectures/images/image054.png\" align=\"left\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"I(center) = 0.040031\n" | |
] | |
} | |
], | |
"source": [ | |
"I = h * sum([Lagrange(X, Y, x - h / 2) for x in X[1:]])\n", | |
"print(\"I(center) = %.6f\" % I)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод трапеций" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"http://aco.ifmo.ru/el_books/numerical_methods/lectures/images/image064.png\" align=\"left\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"I(trapezoid) = 0.040032\n" | |
] | |
} | |
], | |
"source": [ | |
"I = h * sum([(Y[i] + Y[i-1])/2 for i in range(1, len(Y))])\n", | |
"print(\"I(trapezoid) = %.6f\" % I)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод Симпсона" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<img src=\"http://aco.ifmo.ru/el_books/numerical_methods/lectures/images/image071.png\" align=\"left\"></img>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"I(Simpson) = 0.040032\n" | |
] | |
} | |
], | |
"source": [ | |
"I = h / 6 * (Y[0] + Y[-1] + 2 * sum(Y[1:-1]) + 4 * sum([Lagrange(X, Y, x - h / 2) for x in X[1:]]))\n", | |
"print(\"I(Simpson) = %.6f\" % I)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# №3. Численное решение уравнений <a class=\"anchor\" id=\"solve\"></a>\n", | |
"1. Дано уравнение f(x) = ln(x) + 2 * x^2 - 6.\n", | |
"2. Найти один из его корней методами дихотомии, итераций, Ньютона, хорд (секущих).\n", | |
"3. Достичь точности 1E-2 методом дихотомии и 1E-3 остальными методами." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Необходимые функции" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Исходная функция\n", | |
"def f(x):\n", | |
" return log(x) + 2 * x**2 - 6\n", | |
"\n", | |
"# Производная исходной функции\n", | |
"def df(x):\n", | |
" return 4 * x + 1 / x\n", | |
"\n", | |
"# Вторая производная исходной функции\n", | |
"def d2f(x):\n", | |
" return 4 - x ** (-2)\n", | |
"\n", | |
"# Рукуррентная функция для итераций\n", | |
"def g(x):\n", | |
" return x - 0.1 * f(x)\n", | |
"\n", | |
"# Производная рекуррентной функции\n", | |
"def dg(x):\n", | |
" return -0.4 * x - 0.1 / x + 1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Построение графика для наглядности" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Подготовка данных для графика\n", | |
"X = list(numpy.arange(0.1, 5, 0.1))\n", | |
"Y = [f(x) for x in X]\n", | |
"\n", | |
"# Отрисовка графика\n", | |
"plt.title(\"F(x)\")\n", | |
"plt.xlabel(\"x\")\n", | |
"plt.ylabel(\"y\")\n", | |
"plt.grid()\n", | |
"plt.plot(X, Y)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод Дихотомии" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def dichotomy(f, start, end, eps):\n", | |
" # Границы поиска\n", | |
" a = start\n", | |
" b = end\n", | |
"\n", | |
" # Проверка на наличие рещения\n", | |
" if f(a) * f(b) > 0:\n", | |
" raise ValueError('No solutions. Perhaps the borders are not selected correctly.')\n", | |
"\n", | |
" while b - a > eps * 2:\n", | |
" # Подсчет середины\n", | |
" c = (a + b) / 2\n", | |
"\n", | |
" # Установка новых границ\n", | |
" if f(a) * f(c) < 0:\n", | |
" b = c\n", | |
" else:\n", | |
" a = c\n", | |
"\n", | |
" return (a + b) / 2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод Итераций" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def iterations(f, g, dg, start, eps):\n", | |
" # Массив для итераций\n", | |
" x = [start]\n", | |
"\n", | |
" while True:\n", | |
" # Ошибка если итерации не сходятся\n", | |
" if dg(x[-1]) >= 1:\n", | |
" raise ValueError('Iterations do not converge, try changing g function')\n", | |
"\n", | |
" # Условия выхода\n", | |
" if len(x) >= 3:\n", | |
" if abs(f(x[-1])) < eps and (x[-1] - x[-2])**2 / abs(2 * x[-2] - x[-1] - x[-3]) < eps:\n", | |
" break\n", | |
"\n", | |
" # Добавление новой итерации\n", | |
" x.append(g(x[-1]))\n", | |
"\n", | |
" return x[-1]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод Ньютона" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def newton(f, df, d2f, start, end, eps):\n", | |
" # Выбор начального приближения\n", | |
" x0 = end if f(start) * d2f(start) > 0 else start\n", | |
"\n", | |
" # Первое приближение\n", | |
" x1 = x0 - f(x0)/df(x0)\n", | |
"\n", | |
" # Следующее приближение пока не достигнута точность\n", | |
" while abs(x0-x1) > eps:\n", | |
" x0 = x1\n", | |
" x1 = x1 - f(x1) / df(x1)\n", | |
"\n", | |
" return x1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Метод Хорд (Секущих)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def chord(f, start, end, eps):\n", | |
" # Границы поиска\n", | |
" a = start\n", | |
" b = end\n", | |
"\n", | |
" # Проверка на наличие рещения\n", | |
" if f(a) * f(b) > 0:\n", | |
" raise ValueError('No solutions. Perhaps the borders are not selected correctly.')\n", | |
"\n", | |
" # Предыдущее значение c\n", | |
" last = None\n", | |
"\n", | |
" while True:\n", | |
" # Находим точку пересечения\n", | |
" c = (a * f(b) - b * f(a)) / (f(b) - f(a))\n", | |
"\n", | |
" # Если достигнута необходимая точность - выходим\n", | |
" if abs(f(c)) < eps and abs(c - last) < eps:\n", | |
" break\n", | |
"\n", | |
" # Устанавливаем новые границы\n", | |
" if f(a) * f(c) < 0:\n", | |
" b = c\n", | |
" else:\n", | |
" a = c\n", | |
"\n", | |
" # Запоминаем предыдущее значение c\n", | |
" last = c\n", | |
" \n", | |
" return c" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Работа методов" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Eps=0.01\n", | |
"Метод Дихотомии: 1.6599609375000002\n", | |
"\n", | |
"Eps=0.001\n", | |
"Метод Итераций: 1.6574632389834791\n", | |
"Метод Ньютона: 1.6575106531317443\n", | |
"Метод Xорд: 1.6573969027878515\n" | |
] | |
} | |
], | |
"source": [ | |
"print(\"Eps=\", 1E-2, sep='')\n", | |
"print(\"Метод Дихотомии:\", dichotomy(f, 0.1, 5, 1E-2), end='\\n\\n')\n", | |
"\n", | |
"print(\"Eps=\", 1E-3, sep='')\n", | |
"print(\"Метод Итераций: \", iterations(f, g, dg, 0.1, 1E-3))\n", | |
"print(\"Метод Ньютона: \", newton(f, df, d2f, 0.1, 5, 1E-3))\n", | |
"print(\"Метод Xорд: \", chord(f, 0.1, 5, 1E-3))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Исходник Jupyter Notebook <a class=\"anchor\" id=\"links\"></a>\n", | |
"<a style=\"font-size: 16px\" href=\"https://gist.github.com/DieTime/d9a3f7b7c13dabf5e18270aa934b8137\">https://gist.github.com/DieTime/d9a3f7b7c13dabf5e18270aa934b8137</a>" | |
] | |
} | |
], | |
"metadata": { | |
"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.6.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment