Skip to content

Instantly share code, notes, and snippets.

@robert-marik
Last active September 21, 2022 10:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robert-marik/7eb864d3bc5d995772164baf13299e79 to your computer and use it in GitHub Desktop.
Save robert-marik/7eb864d3bc5d995772164baf13299e79 to your computer and use it in GitHub Desktop.
Newtonova_metoda.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Newtonova_metoda.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyO+b46KuBJXOHwwCP0H6D7C",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/robert-marik/7eb864d3bc5d995772164baf13299e79/newtonova_metoda.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "ejpJFDl8t1qQ"
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"source": [
"# Newtonova metoda\n",
"\n",
"Obecný vzorec pro Newtonovu iterační metodu je $$x_{n+1}=x_n-\\frac{f(x_n)}{f'(x_n)}.$$\n",
"Pro řešení rovnice $$x=\\cos(x)$$ tuto rovnici přepíšeme do tvaru $$x-\\cos(x)=0$$ a pro funkci $$f(x)=x-\\cos(x) $$ dostáváme iterační vzorec \n",
"$$x_{n+1}=x_n - \\frac{x_n-\\cos(x_n)}{1+\\sin(x_n)}.$$"
],
"metadata": {
"id": "idyxo05ivbSW"
}
},
{
"cell_type": "code",
"source": [
"x = 1\n",
"for i in range(5):\n",
" x = x - (x-np.cos(x))/(1+np.sin(x))\n",
" print(x)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lZgm25IUt4xq",
"outputId": "9ba67d5d-a575-44fc-c013-e4e67d1c1107"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.7503638678402439\n",
"0.7391128909113617\n",
"0.739085133385284\n",
"0.7390851332151607\n",
"0.7390851332151607\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Konvergence je neuvěřitelně rychlá. Ale není se co divit. V okolí průsečíku je funkce $$f(x)=x-\\cos (x)$$ prakticky lineární. Na následujícím obrázku je detail v okolí před bodem $x=1$, na kterém je graf prakticky nerozlišitelný od přímky. Na dalším obrázku je graf na intervalu, na kterém se projeví nelinearita."
],
"metadata": {
"id": "amz3uylAwU0Q"
}
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt"
],
"metadata": {
"id": "mZIqGQpyull7"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"x = np.linspace(0.5,1.1,100)\n",
"plt.plot(x,x-np.cos(x))\n",
"plt.plot(x,0*x, color='k')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "_tn8F7KSuC3j",
"outputId": "d092decd-ab28-4544-a8fe-c3de7e7fefad"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f019a3d3750>]"
]
},
"metadata": {},
"execution_count": 14
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"x = np.linspace(-5,5,100)\n",
"plt.plot(x,x-np.cos(x))\n",
"plt.plot(x,0*x,color='k')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "Uh2D-XBhujIG",
"outputId": "d15942a9-0998-4610-c386-663b78c21174"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f019a2dd890>]"
]
},
"metadata": {},
"execution_count": 15
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAc/UlEQVR4nO3deXxV1aH28d/KSUJIQkIIo0CYpyhTCMjgCGpVtFarV0FQFAVxKLZaK1Xbt71Wb+u10lY7gCCVSVS0aLEV7eTIlDBICPMQ5pBA5ukM6/0jaS+1IEN2srPPeb4f+ZBzTtzn2SE8rKy999rGWouIiHhXlNsBRESkflTkIiIepyIXEfE4FbmIiMepyEVEPC7ajTdt3bq17dq1qxtvLSLiWVlZWQXW2jZfft6VIu/atStr1651461FRDzLGLP3ZM9rakVExONU5CIiHqciFxHxOBW5iIjHqchFRDxORS4i4nEqchERj3PlPHIRkabIHwxRXOmnqMJPaZWfypogFTVBqgMh/MEQNYEQgZAlaC3WWkIhy8kWArcWQnVLhIesxR+0BIKWYCjEjRmd6NY6wdHcKnIRiRj+YIidR8vYdbScPYXl7Cko51BxFUdKqjhcXEVJVaDBMwzukqIiFxE5E9Zadh4tZ+2eY2TtPU7OwRK255fiD/7fGLp1YiwdU+LpmprA8O6ppCY0IyUhhuTmMbSIiyY+Npr4WB9xMT5ifVFE+wzRUVFERYHPGIwxGMCY/3x/YwxRpvb36ChDjC/qX4+dpiIXkbBRWFbNR9uP8o+tR/l4ewGF5TUApMTH0L9TSy7u3Zr0Dkn0bJtIl9QEEpuFRwWGx16ISMQ6Vl7Dnzcd5o8bD7JyVyEhC6kJsVzSuw3Du7cis2srurdOaJCRcFOhIhcRzwmFLJ/uLGDRqjw+2HyEQMjSvXUCD1zekyv6taN/x2SiosK3uL9MRS4inlFeHWDJmn3M+2wPeccqaJUQy12juvKNwR1J75AU1qPur6IiF5Em73h5DXM/3c2rn++luNLP0K4pPPq1Pnzt/HY0i/a5Hc91KnIRabLKqgPM+Xg3sz/eRXlNgKvS2zHlkh4M6ZLidrQmRUUuIk1OMGRZtDqPmR9so7C8hq+d345HrupD73Yt3I7WJKnIRaRJWbPnGD9clsPmQyUM796KOdf0Y1Dnlm7HatJU5CLSJBRX+Pnv5Zt5M2s/5yXH8dL4DK7t3z5iD2CeDceK3BjjA9YCB6y11zm1XREJfytyDvPEHzZxrLyG+y/rwYOjexIfq3HmmXLyKzUdyAWSHNymiISx0io/P1iWw9vrDtCvQxKvTBrKBR2T3Y7lOY4UuTGmEzAW+AnwHSe2KSLhLTvvONNfW8fBoiqmj+nFg6N7EuPTytrnwqkR+UzgMeCUh5SNMVOAKQBpaWkOva2IeI21lt/+Yxf/u2Ir7ZPieH3qcIZ0aeV2LE+rd5EbY64D8q21WcaYy071edbaWcAsgMzMzJMt4SsiYa60ys+jb2zg/ZwjjO3fgWdu6k9y8xi3Y3meEyPyUcDXjTHXAnFAkjFmgbV2ggPbFpEwsSO/lCnzs9hbWMGTY/sx+aJuOiPFIfUucmvtDGAGQN2I/FGVuIic6B/bjvLgwmyaxUSx8J4LGd491e1IYUXn94hIg5q/ci//750cerdrwZw7MzmvZXO3I4UdR4vcWvt34O9OblNEvCkUsjy9PJe5n+5mTN+2/GLc4LC5kUNTo6+qiDiuJhDikTc28O6Gg0wa2ZWnrkvHF0Hrgzc2FbmIOKq8OsB9C7L4eHsBj1/Tl6mXdNdBzQamIhcRxxRV1HDnK2vYdKCYn908gP/K7Ox2pIigIhcRRxSWVTNxzmp25Jfxm9szuOr89m5HihgqchGpt/zSKia8vIq9hRXMvjOTS3u3cTtSRFGRi0i95JdUcdvslRwqquKVu4YyskdrtyNFHBW5iJyzgrJqxr+8isPFVbw6eRhDu2rNFDdoqTEROSfHymuY8PIq9h+vYO6koSpxF6nIReSsFVf6mThnFbsLyplz51Bdcu8yFbmInJXKmiCT561h25FSfjtxCKN6ak7cbZojF5EzVhMIMW1hFll5x3lxXAaX92nrdiRBI3IROUOhkOXRNzbw961HeebG/owd0MHtSFJHRS4ip2Wt5cd/3Mw7Gw7yvav7Mm6Y7vLVlKjIReS0Zn+8i3mf7eHuUd2479LubseRL1GRi8hXWrb+AM+8t4WxAzrw5Nh+WgCrCVKRi8gpfb6zkEff2MCwbq14/paBRGkp2iZJRS4iJ7Ujv4yp89fSJTWB2RMziYvxuR1JTkFFLiL/obCsmrvnrSHGF8Urk4aSHK873TdlOo9cRP5NlT/IlPlZHCmpYvGU4XRuFe92JDkNFbmI/Iu1lseXbiRr73FeGp9BRlqK25HkDGhqRUT+5dd/38kf1h/kkSt764IfD1GRiwgAK3IO89z7W/n6wPN4cHRPt+PIWVCRiwi5h0p4eMl6BnZuyc9uHqBzxT1GRS4S4Y6V13Dvq2tJioth9sQhOs3Qg3SwUySC+YMhHliYTX5pNW9MHUHbpDi3I8k50IhcJIL9ZHkun+8q5Nkb+zOwc0u348g5UpGLRKg31u5j3md7mHxRN745pJPbcaQeVOQiEWjj/iKe+MMmRvZIZcY1fd2OI/WkIheJMIVl1dw3P4s2ic14cXwG0T7VgNfpYKdIBAkEQzywKJvC8hqWThtJq4RYtyOJA1TkIhHkp3/ewspdx3j+loFc0DHZ7TjikHr/TGWM6WyM+ZsxZrMxJscYM92JYCLirOUbDzH7493cMaKLDm6GGSdG5AHgEWtttjGmBZBljPnAWrvZgW2LiAN25Jfy3Tc3kJHWkifHprsdRxxW7xG5tfaQtTa77uNSIBfoWN/tiogzSqv8TJmfRXysj1/fPoTYaB3cDDeO/okaY7oCg4FVJ3ltijFmrTFm7dGjR518WxE5BWstj725kb2FFfxqXAbtk3XlZjhyrMiNMYnAUuBha23Jl1+31s6y1mZaazPbtGnj1NuKyFeY88lu/rTpMN+7ug8jeqS6HUcaiCNFboyJobbEF1pr33JimyJSP6t2FfLsn7Zw9fntuffi7m7HkQbkxFkrBpgD5Fprf17/SCJSX/klVTy4eB1preJ57hYtSxvunBiRjwImAqONMevrfl3rwHZF5BwEgiEeXLyOsqoAv50whBZxunFyuKv36YfW2k8A/XMv0kQ89/5WVu8+xgu3DqRP+xZux5FGoPOQRMLI+zmH+d1Hu5gwPI0bB+uin0ihIhcJE3sKynn09Q0M7JTMU9fpop9IoiIXCQOVNUGmLczG5zO8dHsGzaJ1u7ZIokWzRDzOWstTyzax5XAJcycNpVNKvNuRpJFpRC7icUvW7OPNrP08NLoXl/dp63YccYGKXMTDNh0o5gfv5HBxr9ZMH9PL7TjiEhW5iEcVV/iZtjCL1IRYfnHbYHxROgs4UmmOXMSDQiHLt19fz+HiKpZMHaE7/UQ4jchFPOilv+3gr1vyeeq6dDLSUtyOIy5TkYt4zMfbj/LzD7fxjUHnMXF4F7fjSBOgIhfxkANFlXxr8Tp6t23BMzf112JYAqjIRTyjyh9k2oIsAkHLbyZkEB+rQ1xSS98JIh7xo3dz2Li/mFkTh9C9TaLbcaQJ0YhcxAOWrMlj8ep9PHB5D646v73bcaSJUZGLNHEb9hXx1LLai36+c2Uft+NIE6QiF2nCCsqquW9BFm1bNOOXuuhHTkFz5CJNlD8Y4oGF2Rwrr2HptJGk6KIfOQUVuUgT9ex7W1hVd6efCzomux1HmjBNrYg0QUuz9jP3093cNaqr7vQjp6UiF2li1u8rYsbbXzCyRyrfv7af23HEA1TkIk1IfkkVU+evpW2LZrw4PoMYn/6KyulpjlykiajyB5m6IIuSygBv3T9SKxrKGVORizQB1lq+/9YXrMsr4te3Z9CvQ5LbkcRD9HObSBPw23/s4q11B/jOlb25tn8Ht+OIx6jIRVy2IucwP3t/C9cPPI+HRvd0O454kIpcxEU5B4t5eMl6BnRM5rmbB2hZWjknKnIRlxwqruTueWtIbh7DrDsyiYvxuR1JPEoHO0VcUFYd4O55aymvDvLGfSNolxTndiTxMBW5SCMLBEM8tCibbUdKmTtpqM5QkXrT1IpII7LW8tSyHP629Sg/+vr5XNq7jduRJAw4UuTGmKuNMVuNMTuMMY87sU2RcPTLv+xg8eo87r+sBxN042RxSL2L3BjjA14CrgHSgXHGmPT6blck3Ly2Oo8XPtzGNzM68d2v6QYR4hwn5siHATustbsAjDGvATcAmx3Y9r95+OGHWb9+vdObFWlwxytq2HakjOTmMaz9vAWX/9rtROKWQYMGMXPmTEe36cTUSkdg3wmP99c992+MMVOMMWuNMWuPHj3qwNuKeENJpZ/tR8pIiPXRq20iOlVcnNZoZ61Ya2cBswAyMzPtuWzD6X/FRBrahn1FjJ+9kotSmrNkygjd5UcahBMj8gNA5xMed6p7TiSibTtSyqRXVtMqMZb5ky9UiUuDcaLI1wC9jDHdjDGxwG3AOw5sV8SzduSXMX72KmJ8USyYfKEu+JEGVe+pFWttwBjzIPA+4APmWmtz6p1MxKN2F5QzfvZKABbdO5wuqQkuJ5Jw58gcubX2PeA9J7Yl4mV7C8sZN2slwZDltSnD6dk20e1IEgF0ib6IQ3bkl3H7yyupCYRYPGU4vdq1cDuSRAgVuYgDcg+VMOHlVRhjeG3KCPq0V4lL41GRi9TTxv1F3DF3NXHRPhbdeyHd22g6RRqXFs0SqYePtx9l3KyVJDaL5vWpI1Ti4goVucg5emfDQe6et4bOreJZOm0kaanxbkeSCKWpFZGzZK1lzie7eXp5LsO6tWL2HZkkN49xO5ZEMBW5yFnwB0P8YFkOi1fncc0F7Xnh1kG6RZu4TkUucoaKK/xMW5jFZzsLuf+yHjx6VR+iorQClrhPRS5yBnIPlTBtQRYHiip5/paBfHNIJ7cjifyLilzkNN5et58Zb31BUlwMi+8dTmbXVm5HEvk3KnKRU6jyB3l6+WYWrMxjWLdWvDh+MG1baPEraXpU5CInkXuohOmvrWPbkTLuvbgbj13dlxifztaVpklFLnKCYMgy77M9/PTPW0huHsPv7x6mO91Lk6ciF6mzI7+Ux97cSHZeEVf0a8tPvzmA1MRmbscSOS0VuUS8Kn+QWR/t4sW/7iC+mY8Xbh3INwZ1xOjmmuIRKnKJWNZaPth8hKeX55J3rIKxAzrwo6+fT2uNwsVjVOQSkTbuL+K597fy8fYCerVNZMHkC7moV2u3Y4mcExW5RJRtR0p5fsVW3s85Qsv4GH5wXToTR3TRGSniaSpyCXvWWtbsOc6sj3byYW4+ic2iefiKXky+qBst4rTYlXifilzCVmVNkD9uPMjCVXms31dESnwM3xrdk7tGdSMlIdbteCKOUZFLWAmFLGv3HuedDQdYtu4gpdUBurdJ4L9vOJ+bh3SmeaxWKpTwoyIXz6vyB1mz5xh/yc3nT5sOcaSkmmbRUVzbvwO3De3MsG6tdCqhhDUVuXhOlT/Ixv3FZO09zqrdhazcVUiVP0RsdBSX9W7D2AEdGNOvHYnN9O0tkUHf6dJkVfmD7DtWwd7CCnYVlLHlUCm5h0vZkV+KP2gB6N4mgduGpnFp7zZc2L0V8bH6lpbIo+96+UrVgSBVNSEq/UGq/EH8wRA1wRDBkCVkIWQt1gLUFmvtx7Vs3eNgyGKtJRCy+IMh/MEQ1YEQFTVBKmuClFUHKKrwU1zp51h5NUdKqskvraagrPrfsrRLaka/Dklc1qcNQ9JSyOiSQisdtBRRkUeq6kCQvYUV5BVWkHesggNFlRwtrSa/tIrCshqKKmuLtSYQapQ8CbE+kpvHkJIQS/vkOAZ2TqZ9UnO6pMaTlhpPt9QEnWkicgoq8ghw4pzypoPFbD1cyu6CcoKh/xs+N4/x0S6pGW1aNKNn20RaxseQFBdDi7homsdG0zzGR1xMFDG+2l/RUQZflIHa/4g64WDiiccVo4zBmNrfY3yG6Kgoon2GuBgf8bE+msf4SGgWrQtyROpBRR6GAsEQG/YX8dG2Aj7efpSN+4sJ1JV251bN6dMuiavPb0+vdol0SU0grVU8KfExOrNDxKNU5GGiJhDis50FvPfFIVZsPkJRhZ8oAwM6tWTKJd0Z0iWFQZ1ballWkTCkIve4rYdLWbJmH2+v28/xCj+JzaK5ol9brkxvz6ieqbSM17yySLhTkXtQIBji/ZwjzPlkF9l5RcT4DFemt+OmwZ24qFdr4mJ09aJIJKlXkRtjngOuB2qAncBd1toiJ4LJf6ryB3ltdR4vf7Kb/ccr6ZIaz5Nj+3Hj4I6aMhGJYPUdkX8AzLDWBowxPwVmAN+rfyw5UXUgyOtr9vHi33ZwpKSazC4pPDk2nSvT29WeOSIiEa1eRW6tXXHCw5XAzfWLIyey1rL8i0M8+94WDhRVMrRrCjNvHcyIHqluRxORJsTJOfK7gSWnetEYMwWYApCWlubg24anTQeK+fG7m1m95xj9OiTxzE39uaRXa50iKCL/4bRFboz5EGh/kpeesNYuq/ucJ4AAsPBU27HWzgJmAWRmZtpTfV6kK68O8PyKbbzy2W5S4mN59qb+/FdmZ02hiMgpnbbIrbVXfNXrxphJwHXAGGutCroePtp2lBlvfcGBokomDE/ju1/rS3Jz3cFGRL5afc9auRp4DLjUWlvhTKTIU1ET4OnluSxalUePNgm8cd8IhnZt5XYsEfGI+s6Rvwg0Az6om7tdaa29r96pIsgX+4uZ/to6dheWM/WS7nz7yt46D1xEzkp9z1rp6VSQSGOtZe6ne3j2vVxaJzZj4T0XMrJHa7djiYgH6cpOF5RVB/jemxtZ/sUhrkxvx3M3D9Cl9CJyzlTkjWxHfhlT5q9lT0E5j1/Tl6mXdNcphSJSLyryRvTRtqM8sCibWF8UC+8Zrgt7RMQRKvJG8urne/jRu5vp1TaRl+/MpFNKvNuRRCRMqMgbWChkeXp5LnM/3c0V/doy87bBuru7iDhKjdKAqgNBHnl9A3/ceIi7RnXlybHpukJTRBynIm8gJVV+pr6axee7Cvn+tX2592Id1BSRhqEibwDHy2u4Y+5qcg+V8MKtA7lxcCe3I4lIGFOROyy/tIqJL69md2E5s+4Ywui+7dyOJCJhTkXuoEPFldw+exWHS6qYN2koI3vqSk0RaXgqcoccKq7k1t+t5Hh5DfMnD2NIFy16JSKNQ0XugMPFVYybVVfi91zIoM4t3Y4kIhFERV5P+SVVjJ+9koKyGl6dPEwlLiKNLsrtAF52rLyG21+umxO/aygZaSluRxKRCKQR+TkqrfIz6ZXV7D1Wwe/vGkambgQhIi7RiPwcVPmD3PP7tWw+WMJvbs/Q4lci4iqNyM9SIBjiwUXZrN5zjJm3DmJMP50nLiLu0oj8LFhreeLtTXyYm8+Pb7iAGwZ1dDuSiIiK/Gz8/INtLFm7j2+N7snE4V3cjiMiAqjIz9j8lXv51V93cGtmZ759ZW+344iI/IuK/Az8JfcIP1y2iTF92/KTGy/QKoYi0qSoyE9j04FiHly0jvTzkvjluMFE+/QlE5GmRa30FQ4WVXL3vDWkxMcw986hJOjOPiLSBKmZTqGsOsDd89ZQWRPkjWkjaJsU53YkEZGTUpGfRDBkmb54Hdvzy3hl0lD6tk9yO5KIyClpauUkfvbnLfxlSz4/vD6dS3q3cTuOiMhXUpF/yetr9/G7j3YxcXgX7hjR1e04IiKnpSI/wdo9x3ji7S+4qGdrfnh9uttxRETOiIq8zsGiSu5bkE3Hls15aXyGTjMUEc/QwU5qVzOcOj+LKn+QxfdeSHJ8jNuRRETOmCPDTmPMI8YYa4zx3N2GrbU8vnQjmw4WM/PWQfRq18LtSCIiZ6XeRW6M6QxcBeTVP07jm/PJbv6w/iCPXNmbK9K1JK2IeI8TI/IXgMcA68C2GtVnOwp45r1crrmgPQ9c3tPtOCIi56ReRW6MuQE4YK3d4FCeRrP/eAUPLMqmR5tEnrtloBbCEhHPOu3BTmPMh0D7k7z0BPB9aqdVTssYMwWYApCWlnYWEZ1X5Q9y34IsAiHLrDsySdQaKiLiYadtMGvtFSd73hjTH+gGbKgbzXYCso0xw6y1h0+ynVnALIDMzEzXpmH+eZefTQdKmHNnJt1aJ7gVRUTEEec8FLXWfgG0/edjY8weINNaW+BArgazcFUeS7P3M31ML91vU0TCQkRd9ZKdd5wfvZvDZX3aMH1ML7fjiIg4wrHJYWttV6e21RAKyqq5f0E27ZPjmHnrIKKidHBTRMJDRBzlCwRDPLRoHccralg6bSQt42PdjiQi4piIKPLnP9jG57sKee7mAVzQMdntOCIijgr7OfIVOYf5zd93Mm5YGrdkdnY7joiI48K6yPcUlPPI6xsY0ClZy9KKSNgK2yKvrKm96MfnM7w0PoO4GJ/bkUREGkRYzpFba3nyD5vYeqSUVyYNpXOreLcjiYg0mLAckb+2Zh9Ls/fz0OheXNan7en/BxERDwu7It90oJgfvpPDxb1a66IfEYkIYVXkxRV+7luQRWpCLL+4bTA+XfQjIhEgbObIQyHLd15fz5GSKpZMHUGrBF30IyKRIWxG5L/5x07+siWfJ8emk5GW4nYcEZFGExZF/tmOAp5fsZXrB57HHSO6uB1HRKRReb7IDxdX8dDidXRvk8j/3NRfd/oRkYjj6TnymkCI+xdmUekPsmRCBgm604+IRCBPN9+zf8olO6+IX40bTM+2LdyOIyLiCs9Orby74SCvfLqHu0Z15fqB57kdR0TENZ4s8u1HSvne0o0M6ZLCjGv6uR1HRMRVnivy0io/UxdkER8bza9vzyA22nO7ICLiKE/NkVtr+e4bG9lbWMHCey6kXVKc25FERFznqeHsrI928eecw8y4pi/Du6e6HUdEpEnwVJG3T47jliGdmHxRN7ejiIg0GZ6aWrlhUEduGNTR7RgiIk2Kp0bkIiLyn1TkIiIepyIXEfE4FbmIiMepyEVEPE5FLiLicSpyERGPU5GLiHicsdY2/psacxTY2+hvXH+tgQK3QzSiSNtf0D5HCq/ucxdrbZsvP+lKkXuVMWattTbT7RyNJdL2F7TPkSLc9llTKyIiHqciFxHxOBX52ZnldoBGFmn7C9rnSBFW+6w5chERj9OIXETE41TkIiIepyI/B8aYR4wx1hjT2u0sDc0Y85wxZosxZqMx5m1jTEu3MzUUY8zVxpitxpgdxpjH3c7T0IwxnY0xfzPGbDbG5BhjprudqTEYY3zGmHXGmD+6ncUpKvKzZIzpDFwF5LmdpZF8AFxgrR0AbANmuJynQRhjfMBLwDVAOjDOGJPubqoGFwAesdamA8OBByJgnwGmA7luh3CSivzsvQA8BkTEUWJr7QprbaDu4Uqgk5t5GtAwYIe1dpe1tgZ4DbjB5UwNylp7yFqbXfdxKbXlFtb3UjTGdALGAi+7ncVJKvKzYIy5AThgrd3gdhaX3A38ye0QDaQjsO+Ex/sJ81I7kTGmKzAYWOVukgY3k9qBWMjtIE7y1M2XG4Mx5kOg/UleegL4PrXTKmHlq/bZWrus7nOeoPZH8YWNmU0anjEmEVgKPGytLXE7T0MxxlwH5Ftrs4wxl7mdx0kq8i+x1l5xsueNMf2BbsAGYwzUTjFkG2OGWWsPN2JEx51qn//JGDMJuA4YY8P3woMDQOcTHneqey6sGWNiqC3xhdbat9zO08BGAV83xlwLxAFJxpgF1toJLueqN10QdI6MMXuATGutF1dQO2PGmKuBnwOXWmuPup2noRhjoqk9mDuG2gJfA4y31ua4GqwBmdoRye+BY9bah93O05jqRuSPWmuvczuLEzRHLqfzItAC+MAYs94Y81u3AzWEugO6DwLvU3vQ7/VwLvE6o4CJwOi6P9v1daNV8RiNyEVEPE4jchERj1ORi4h4nIpcRMTjVOQiIh6nIhcR8TgVuYiIx6nIRUQ87v8DO2H9f0+sJgAAAAAASUVORK5CYII=\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"source": [
"# Numerický výpočet derivace\n",
"\n",
"Derivaci do Newtonova iteračního vzorce můžeme vypočítat také numericky pomocí centrální diference. Postup je zatížen určitou chybou, související s velikostí kroku pro výpočet centrální diference, ale není nutné mít analytický předpis pro derivaci."
],
"metadata": {
"id": "iCSsNFItj1NN"
}
},
{
"cell_type": "code",
"source": [
"def f(x): \n",
" return x-np.cos(x) # deklarace funkce\n",
"\n",
"x = 1\n",
"h = 0.01 # krok pro výpočet centrální diference\n",
"for i in range(5):\n",
" derivace = (f(x+h)-f(x-h))/(2*h) # centrální diference\n",
" x = x - (f(x))/(derivace) # Newtonův iterační vzorec\n",
" print(x)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "a2J52Wq0j1ji",
"outputId": "54cdaf6a-6697-46b9-ed0e-66ebe71b98d7"
},
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.750361966623651\n",
"0.7391128055965105\n",
"0.7390851331986064\n",
"0.7390851332151607\n",
"0.7390851332151607\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Vysoká přesnost výpočtů\n",
"\n",
"Pro naprostou většinu výpočtů stačí přeednastavená přesnost výpočtů. Přesnost však můžeme zvýšit pomocí dalších knihoven a můžeme tak sledovat vysokou rychlost, s jakou se postupnými aproximacemi blížíme k řešení rovnice. "
],
"metadata": {
"id": "fK1ivSulQ6If"
}
},
{
"cell_type": "code",
"source": [
"!apt install libmpc-dev\n",
"!pip install gmpy2"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LNjmpSlXRMTp",
"outputId": "52276b65-1e40-40b9-830f-010ed083e9b6"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Reading package lists... Done\n",
"Building dependency tree \n",
"Reading state information... Done\n",
"The following additional packages will be installed:\n",
" libgmp-dev libgmpxx4ldbl libmpfr-dev\n",
"Suggested packages:\n",
" gmp-doc libgmp10-doc libmpfr-doc\n",
"The following NEW packages will be installed:\n",
" libgmp-dev libgmpxx4ldbl libmpc-dev libmpfr-dev\n",
"0 upgraded, 4 newly installed, 0 to remove and 41 not upgraded.\n",
"Need to get 625 kB of archives.\n",
"After this operation, 3,178 kB of additional disk space will be used.\n",
"Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgmpxx4ldbl amd64 2:6.1.2+dfsg-2 [8,964 B]\n",
"Get:2 http://archive.ubuntu.com/ubuntu bionic/main amd64 libgmp-dev amd64 2:6.1.2+dfsg-2 [316 kB]\n",
"Get:3 http://archive.ubuntu.com/ubuntu bionic/main amd64 libmpfr-dev amd64 4.0.1-1 [249 kB]\n",
"Get:4 http://archive.ubuntu.com/ubuntu bionic/main amd64 libmpc-dev amd64 1.1.0-1 [50.5 kB]\n",
"Fetched 625 kB in 1s (1,190 kB/s)\n",
"Selecting previously unselected package libgmpxx4ldbl:amd64.\n",
"(Reading database ... 155514 files and directories currently installed.)\n",
"Preparing to unpack .../libgmpxx4ldbl_2%3a6.1.2+dfsg-2_amd64.deb ...\n",
"Unpacking libgmpxx4ldbl:amd64 (2:6.1.2+dfsg-2) ...\n",
"Selecting previously unselected package libgmp-dev:amd64.\n",
"Preparing to unpack .../libgmp-dev_2%3a6.1.2+dfsg-2_amd64.deb ...\n",
"Unpacking libgmp-dev:amd64 (2:6.1.2+dfsg-2) ...\n",
"Selecting previously unselected package libmpfr-dev:amd64.\n",
"Preparing to unpack .../libmpfr-dev_4.0.1-1_amd64.deb ...\n",
"Unpacking libmpfr-dev:amd64 (4.0.1-1) ...\n",
"Selecting previously unselected package libmpc-dev:amd64.\n",
"Preparing to unpack .../libmpc-dev_1.1.0-1_amd64.deb ...\n",
"Unpacking libmpc-dev:amd64 (1.1.0-1) ...\n",
"Setting up libgmpxx4ldbl:amd64 (2:6.1.2+dfsg-2) ...\n",
"Setting up libgmp-dev:amd64 (2:6.1.2+dfsg-2) ...\n",
"Setting up libmpfr-dev:amd64 (4.0.1-1) ...\n",
"Setting up libmpc-dev:amd64 (1.1.0-1) ...\n",
"Processing triggers for libc-bin (2.27-3ubuntu1.3) ...\n",
"/sbin/ldconfig.real: /usr/local/lib/python3.7/dist-packages/ideep4py/lib/libmkldnn.so.0 is not a symbolic link\n",
"\n",
"Collecting gmpy2\n",
" Downloading gmpy2-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB)\n",
"\u001b[K |████████████████████████████████| 3.6 MB 9.9 MB/s \n",
"\u001b[?25hInstalling collected packages: gmpy2\n",
"Successfully installed gmpy2-2.1.2\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Následující kód má na starosti následující\n",
"\n",
"* Načte knihovnu pro počítání s vyšším počtem desetinných míst\n",
"* Vyřeší rovnici Newtonovou metodou pomocí 10 kroků\n",
"* Vytiskne jednotlivé iterace řešení. Tiskne jenom tu část, která už je vypočtena správně a v dalších iteracích se opakuje.\n",
"\n"
],
"metadata": {
"id": "3WBsuhkURL2P"
}
},
{
"cell_type": "code",
"source": [
"import gmpy2\n",
"from gmpy2 import cos, sin\n",
"from gmpy2 import mpfr\n",
"gmpy2.get_context().precision=1000 # nastavení přesností výpočtů\n",
"\n",
"def common_start(sa, sb):\n",
" \"\"\" returns the longest common substring from the beginning of sa and sb \"\"\"\n",
" def _iter():\n",
" for a, b in zip(sa, sb):\n",
" if a == b:\n",
" yield a\n",
" else:\n",
" return\n",
"\n",
" return ''.join(_iter())\n",
"\n",
"\n",
"x = mpfr('1') # cislo 1 v množině čísel s nastavenou přesností výpočtů\n",
"ans = [] # pole pro ulozeni iteraci\n",
"for i in range(10):\n",
" x = x - (x - cos(x))/(1 + sin(x))\n",
" ans = ans + [str(x)]\n",
"\n",
"sol = ans[-1]\n",
"for i in ans:\n",
" print(common_start(str(i), str(sol)))"
],
"metadata": {
"id": "yCk3aIu3u5E5",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "110c1cf1-ba0c-48ce-941a-b039a0f22a01"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.7\n",
"0.739\n",
"0.739085133\n",
"0.7390851332151606416\n",
"0.7390851332151606416553120876738734040134\n",
"0.739085133215160641655312087673873404013411758900757464965680635773284654883547594\n",
"0.739085133215160641655312087673873404013411758900757464965680635773284654883547594599376106931766531849801246643987163027714903691308420315780440574620778688524903891\n",
"0.739085133215160641655312087673873404013411758900757464965680635773284654883547594599376106931766531849801246643987163027714903691308420315780440574620778688524903891539289438845095234801335631276772231580956353776572451204373419936433512538409780034340646700479402143478080271801883771136138204206631661\n",
"0.739085133215160641655312087673873404013411758900757464965680635773284654883547594599376106931766531849801246643987163027714903691308420315780440574620778688524903891539289438845095234801335631276772231580956353776572451204373419936433512538409780034340646700479402143478080271801883771136138204206631661\n",
"0.739085133215160641655312087673873404013411758900757464965680635773284654883547594599376106931766531849801246643987163027714903691308420315780440574620778688524903891539289438845095234801335631276772231580956353776572451204373419936433512538409780034340646700479402143478080271801883771136138204206631661\n"
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "9jAMFG2ET7_n"
},
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment