• API
• FAQ
• Tools
• Archive
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",
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,
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,
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,
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,
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",
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",
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,
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",
285.    "source": [
286.     "Сходится со скоростью $\\frac{1}{n^{1.5}}$"
287.    ]
288.   }
289.  ],
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.

Top