SHARE
TWEET

Untitled

a guest Mar 23rd, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {
  2.  "cells": [
  3.   {
  4.    "cell_type": "markdown",
  5.    "metadata": {},
  6.    "source": [
  7.     "$f(x) = \\sqrt{1 - x^2} \\quad [a, b] = [0, 1]$\n",
  8.     "\n",
  9.     "$x_0 = 0, x_i = \\frac{i}{n}$\n",
  10.     "\n",
  11.     "$S_i = f\\left(\\frac{x_{i - 1} + x_i}{2}\\right) \\frac{1}{n}$\n",
  12.     "\n",
  13.     "$I = \\int \\limits_0^1 \\sqrt{1 - x^2} = \\frac{S_{\\text{circle}}}{4} = \\frac{\\pi}{4} \\approx 0.78539816$"
  14.    ]
  15.   },
  16.   {
  17.    "cell_type": "code",
  18.    "execution_count": 1,
  19.    "metadata": {},
  20.    "outputs": [],
  21.    "source": [
  22.     "import numpy as np\n",
  23.     "import pandas as pd"
  24.    ]
  25.   },
  26.   {
  27.    "cell_type": "code",
  28.    "execution_count": 2,
  29.    "metadata": {},
  30.    "outputs": [],
  31.    "source": [
  32.     "def f(x):\n",
  33.     "    return np.sqrt(1 - x * x)"
  34.    ]
  35.   },
  36.   {
  37.    "cell_type": "code",
  38.    "execution_count": 3,
  39.    "metadata": {},
  40.    "outputs": [],
  41.    "source": [
  42.     "def get(n):\n",
  43.     "    d = 1. / n\n",
  44.     "    result = 0.\n",
  45.     "    \n",
  46.     "    for i in range(n):\n",
  47.     "        x_i = d * i\n",
  48.     "        x_ii = d * (i + 1)\n",
  49.     "        result += f((x_i + x_ii) / 2.) / n\n",
  50.     "    return result"
  51.    ]
  52.   },
  53.   {
  54.    "cell_type": "code",
  55.    "execution_count": 4,
  56.    "metadata": {},
  57.    "outputs": [
  58.     {
  59.      "data": {
  60.       "text/html": [
  61.        "<div>\n",
  62.        "<style scoped>\n",
  63.        "    .dataframe tbody tr th:only-of-type {\n",
  64.        "        vertical-align: middle;\n",
  65.        "    }\n",
  66.        "\n",
  67.        "    .dataframe tbody tr th {\n",
  68.        "        vertical-align: top;\n",
  69.        "    }\n",
  70.        "\n",
  71.        "    .dataframe thead th {\n",
  72.        "        text-align: right;\n",
  73.        "    }\n",
  74.        "</style>\n",
  75.        "<table border=\"1\" class=\"dataframe\">\n",
  76.        "  <thead>\n",
  77.        "    <tr style=\"text-align: right;\">\n",
  78.        "      <th></th>\n",
  79.        "      <th>real</th>\n",
  80.        "      <th>approx</th>\n",
  81.        "      <th>err</th>\n",
  82.        "      <th>s</th>\n",
  83.        "    </tr>\n",
  84.        "    <tr>\n",
  85.        "      <th>n</th>\n",
  86.        "      <th></th>\n",
  87.        "      <th></th>\n",
  88.        "      <th></th>\n",
  89.        "      <th></th>\n",
  90.        "    </tr>\n",
  91.        "  </thead>\n",
  92.        "  <tbody>\n",
  93.        "    <tr>\n",
  94.        "      <th>8</th>\n",
  95.        "      <td>0.785398163397448</td>\n",
  96.        "      <td>0.789171732824577</td>\n",
  97.        "      <td>0.003773569427129</td>\n",
  98.        "      <td>2.683284822374950</td>\n",
  99.        "    </tr>\n",
  100.        "    <tr>\n",
  101.        "      <th>16</th>\n",
  102.        "      <td>0.785398163397448</td>\n",
  103.        "      <td>0.786737951981630</td>\n",
  104.        "      <td>0.001339788584182</td>\n",
  105.        "      <td>2.385944730064856</td>\n",
  106.        "    </tr>\n",
  107.        "    <tr>\n",
  108.        "      <th>32</th>\n",
  109.        "      <td>0.785398163397448</td>\n",
  110.        "      <td>0.785872850670559</td>\n",
  111.        "      <td>0.000474687273111</td>\n",
  112.        "      <td>2.208147001901588</td>\n",
  113.        "    </tr>\n",
  114.        "    <tr>\n",
  115.        "      <th>64</th>\n",
  116.        "      <td>0.785398163397448</td>\n",
  117.        "      <td>0.785566168003386</td>\n",
  118.        "      <td>0.000168004605938</td>\n",
  119.        "      <td>2.089868598954976</td>\n",
  120.        "    </tr>\n",
  121.        "    <tr>\n",
  122.        "      <th>128</th>\n",
  123.        "      <td>0.785398163397448</td>\n",
  124.        "      <td>0.785457593379461</td>\n",
  125.        "      <td>0.000059429982013</td>\n",
  126.        "      <td>2.005492790019204</td>\n",
  127.        "    </tr>\n",
  128.        "    <tr>\n",
  129.        "      <th>256</th>\n",
  130.        "      <td>0.785398163397448</td>\n",
  131.        "      <td>0.785419180620520</td>\n",
  132.        "      <td>0.000021017223072</td>\n",
  133.        "      <td>1.942258551314332</td>\n",
  134.        "    </tr>\n",
  135.        "    <tr>\n",
  136.        "      <th>512</th>\n",
  137.        "      <td>0.785398163397448</td>\n",
  138.        "      <td>0.785405595089595</td>\n",
  139.        "      <td>0.000007431692147</td>\n",
  140.        "      <td>1.893097536565201</td>\n",
  141.        "    </tr>\n",
  142.        "    <tr>\n",
  143.        "      <th>1024</th>\n",
  144.        "      <td>0.785398163397448</td>\n",
  145.        "      <td>0.785400791070969</td>\n",
  146.        "      <td>0.000002627673521</td>\n",
  147.        "      <td>1.853778253215027</td>\n",
  148.        "    </tr>\n",
  149.        "    <tr>\n",
  150.        "      <th>2048</th>\n",
  151.        "      <td>0.785398163397448</td>\n",
  152.        "      <td>0.785399092451015</td>\n",
  153.        "      <td>0.000000929053567</td>\n",
  154.        "      <td>1.821612262099438</td>\n",
  155.        "    </tr>\n",
  156.        "    <tr>\n",
  157.        "      <th>4096</th>\n",
  158.        "      <td>0.785398163397448</td>\n",
  159.        "      <td>0.785398491872911</td>\n",
  160.        "      <td>0.000000328475462</td>\n",
  161.        "      <td>1.794809255095244</td>\n",
  162.        "    </tr>\n",
  163.        "    <tr>\n",
  164.        "      <th>8192</th>\n",
  165.        "      <td>0.785398163397448</td>\n",
  166.        "      <td>0.785398279532022</td>\n",
  167.        "      <td>0.000000116134574</td>\n",
  168.        "      <td>1.772130702027616</td>\n",
  169.        "    </tr>\n",
  170.        "    <tr>\n",
  171.        "      <th>16384</th>\n",
  172.        "      <td>0.785398163397448</td>\n",
  173.        "      <td>0.785398204457387</td>\n",
  174.        "      <td>0.000000041059939</td>\n",
  175.        "      <td>1.752692377329566</td>\n",
  176.        "    </tr>\n",
  177.        "    <tr>\n",
  178.        "      <th>32768</th>\n",
  179.        "      <td>0.785398163397448</td>\n",
  180.        "      <td>0.785398177914360</td>\n",
  181.        "      <td>0.000000014516912</td>\n",
  182.        "      <td>1.735846010594087</td>\n",
  183.        "    </tr>\n",
  184.        "    <tr>\n",
  185.        "      <th>65536</th>\n",
  186.        "      <td>0.785398163397448</td>\n",
  187.        "      <td>0.785398168529956</td>\n",
  188.        "      <td>0.000000005132508</td>\n",
  189.        "      <td>1.721105551736002</td>\n",
  190.        "    </tr>\n",
  191.        "    <tr>\n",
  192.        "      <th>131072</th>\n",
  193.        "      <td>0.785398163397448</td>\n",
  194.        "      <td>0.785398165212066</td>\n",
  195.        "      <td>0.000000001814618</td>\n",
  196.        "      <td>1.708099249120909</td>\n",
  197.        "    </tr>\n",
  198.        "    <tr>\n",
  199.        "      <th>262144</th>\n",
  200.        "      <td>0.785398163397448</td>\n",
  201.        "      <td>0.785398164039013</td>\n",
  202.        "      <td>0.000000000641565</td>\n",
  203.        "      <td>1.696538080966664</td>\n",
  204.        "    </tr>\n",
  205.        "    <tr>\n",
  206.        "      <th>524288</th>\n",
  207.        "      <td>0.785398163397448</td>\n",
  208.        "      <td>0.785398163624275</td>\n",
  209.        "      <td>0.000000000226827</td>\n",
  210.        "      <td>1.686194097522441</td>\n",
  211.        "    </tr>\n",
  212.        "  </tbody>\n",
  213.        "</table>\n",
  214.        "</div>"
  215.       ],
  216.       "text/plain": [
  217.        "                     real             approx                err  \\\n",
  218.        "n                                                                 \n",
  219.        "8       0.785398163397448  0.789171732824577  0.003773569427129   \n",
  220.        "16      0.785398163397448  0.786737951981630  0.001339788584182   \n",
  221.        "32      0.785398163397448  0.785872850670559  0.000474687273111   \n",
  222.        "64      0.785398163397448  0.785566168003386  0.000168004605938   \n",
  223.        "128     0.785398163397448  0.785457593379461  0.000059429982013   \n",
  224.        "256     0.785398163397448  0.785419180620520  0.000021017223072   \n",
  225.        "512     0.785398163397448  0.785405595089595  0.000007431692147   \n",
  226.        "1024    0.785398163397448  0.785400791070969  0.000002627673521   \n",
  227.        "2048    0.785398163397448  0.785399092451015  0.000000929053567   \n",
  228.        "4096    0.785398163397448  0.785398491872911  0.000000328475462   \n",
  229.        "8192    0.785398163397448  0.785398279532022  0.000000116134574   \n",
  230.        "16384   0.785398163397448  0.785398204457387  0.000000041059939   \n",
  231.        "32768   0.785398163397448  0.785398177914360  0.000000014516912   \n",
  232.        "65536   0.785398163397448  0.785398168529956  0.000000005132508   \n",
  233.        "131072  0.785398163397448  0.785398165212066  0.000000001814618   \n",
  234.        "262144  0.785398163397448  0.785398164039013  0.000000000641565   \n",
  235.        "524288  0.785398163397448  0.785398163624275  0.000000000226827   \n",
  236.        "\n",
  237.        "                        s  \n",
  238.        "n                          \n",
  239.        "8       2.683284822374950  \n",
  240.        "16      2.385944730064856  \n",
  241.        "32      2.208147001901588  \n",
  242.        "64      2.089868598954976  \n",
  243.        "128     2.005492790019204  \n",
  244.        "256     1.942258551314332  \n",
  245.        "512     1.893097536565201  \n",
  246.        "1024    1.853778253215027  \n",
  247.        "2048    1.821612262099438  \n",
  248.        "4096    1.794809255095244  \n",
  249.        "8192    1.772130702027616  \n",
  250.        "16384   1.752692377329566  \n",
  251.        "32768   1.735846010594087  \n",
  252.        "65536   1.721105551736002  \n",
  253.        "131072  1.708099249120909  \n",
  254.        "262144  1.696538080966664  \n",
  255.        "524288  1.686194097522441  "
  256.       ]
  257.      },
  258.      "execution_count": 4,
  259.      "metadata": {},
  260.      "output_type": "execute_result"
  261.     }
  262.    ],
  263.    "source": [
  264.     "interesting = [2 ** x for x in range(3, 20)]\n",
  265.     "\n",
  266.     "results = []\n",
  267.     "\n",
  268.     "I = np.pi / 4.\n",
  269.     "\n",
  270.     "for n in interesting:\n",
  271.     "    approx = get(n)\n",
  272.     "    err = np.abs(approx - I)\n",
  273.     "    s = - np.log(err) / np.log(n)\n",
  274.     "    results.append([I, approx, err, s])\n",
  275.     "\n",
  276.     "pd.set_option(\"display.precision\", 15)\n",
  277.     "df = pd.DataFrame(index=interesting, columns=['real', 'approx', 'err', 's'], data=results)\n",
  278.     "df.index.name = 'n'\n",
  279.     "df"
  280.    ]
  281.   },
  282.   {
  283.    "cell_type": "markdown",
  284.    "metadata": {},
  285.    "source": [
  286.     "Сходится со скоростью $\\frac{1}{n^{1.5}}$"
  287.    ]
  288.   }
  289.  ],
  290.  "metadata": {
  291.   "kernelspec": {
  292.    "display_name": "Python 3.7",
  293.    "language": "python",
  294.    "name": "python3"
  295.   },
  296.   "language_info": {
  297.    "codemirror_mode": {
  298.     "name": "ipython",
  299.     "version": 3
  300.    },
  301.    "file_extension": ".py",
  302.    "mimetype": "text/x-python",
  303.    "name": "python",
  304.    "nbconvert_exporter": "python",
  305.    "pygments_lexer": "ipython3",
  306.    "version": "3.7.2"
  307.   }
  308.  },
  309.  "nbformat": 4,
  310.  "nbformat_minor": 2
  311. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top