Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.87 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement