Machine Learning Kurs im Rahmen der Studierendentage im SS 2023
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

890 lines
154 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "Exercise 4: Least square fit to data"
  8. ]
  9. },
  10. {
  11. "cell_type": "code",
  12. "execution_count": 1,
  13. "metadata": {},
  14. "outputs": [],
  15. "source": [
  16. "from matplotlib import pyplot as plt\n",
  17. "plt.rcParams[\"font.size\"] = 20\n",
  18. "import numpy as np"
  19. ]
  20. },
  21. {
  22. "cell_type": "code",
  23. "execution_count": 2,
  24. "metadata": {},
  25. "outputs": [],
  26. "source": [
  27. "# data\n",
  28. "x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='d')\n",
  29. "dx = np.array([0.1,0.1,0.5,0.1,0.5,0.1,0.5,0.1,0.5,0.1], dtype='d')\n",
  30. "y = np.array([1.1 ,2.3 ,2.7 ,3.2 ,3.1 ,2.4 ,1.7 ,1.5 ,1.5 ,1.7 ], dtype='d')\n",
  31. "dy = np.array([0.15,0.22,0.29,0.39,0.31,0.21,0.13,0.15,0.19,0.13], dtype='d')"
  32. ]
  33. },
  34. {
  35. "cell_type": "code",
  36. "execution_count": 3,
  37. "metadata": {},
  38. "outputs": [],
  39. "source": [
  40. "# define fit function \n",
  41. "def pol3(a0, a1, a2, a3):\n",
  42. " return a0 + x*a1 + a2*x**2 + a3*x**3"
  43. ]
  44. },
  45. {
  46. "cell_type": "code",
  47. "execution_count": 4,
  48. "metadata": {},
  49. "outputs": [],
  50. "source": [
  51. "# least-squares function = sum of data residuals squared\n",
  52. "def LSQ(a0, a1, a2, a3):\n",
  53. " return np.sum((y - pol3(a0, a1, a2, a3)) ** 2 / dy ** 2)"
  54. ]
  55. },
  56. {
  57. "cell_type": "code",
  58. "execution_count": 5,
  59. "metadata": {},
  60. "outputs": [],
  61. "source": [
  62. "# import Minuit object\n",
  63. "from iminuit import Minuit"
  64. ]
  65. },
  66. {
  67. "cell_type": "code",
  68. "execution_count": 6,
  69. "metadata": {},
  70. "outputs": [
  71. {
  72. "data": {
  73. "text/html": [
  74. "<table>\n",
  75. " <tr>\n",
  76. " <th colspan=\"5\" style=\"text-align:center\" title=\"Minimizer\"> Migrad </th>\n",
  77. " </tr>\n",
  78. " <tr>\n",
  79. " <td colspan=\"2\" style=\"text-align:left\" title=\"Minimum value of function\"> FCN = 3.719 </td>\n",
  80. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total number of function and (optional) gradient evaluations\"> Nfcn = 103 </td>\n",
  81. " </tr>\n",
  82. " <tr>\n",
  83. " <td colspan=\"2\" style=\"text-align:left\" title=\"Estimated distance to minimum and goal\"> EDM = 4.33e-16 (Goal: 0.0002) </td>\n",
  84. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total run time of algorithms\"> </td>\n",
  85. " </tr>\n",
  86. " <tr>\n",
  87. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Valid Minimum </td>\n",
  88. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> No Parameters at limit </td>\n",
  89. " </tr>\n",
  90. " <tr>\n",
  91. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below EDM threshold (goal x 10) </td>\n",
  92. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below call limit </td>\n",
  93. " </tr>\n",
  94. " <tr>\n",
  95. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Covariance </td>\n",
  96. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Hesse ok </td>\n",
  97. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix accurate?\"> Accurate </td>\n",
  98. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix positive definite?\"> Pos. def. </td>\n",
  99. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Was positive definiteness enforced by Minuit?\"> Not forced </td>\n",
  100. " </tr>\n",
  101. "</table><table>\n",
  102. " <tr>\n",
  103. " <td></td>\n",
  104. " <th title=\"Variable name\"> Name </th>\n",
  105. " <th title=\"Value of parameter\"> Value </th>\n",
  106. " <th title=\"Hesse error\"> Hesse Error </th>\n",
  107. " <th title=\"Minos lower error\"> Minos Error- </th>\n",
  108. " <th title=\"Minos upper error\"> Minos Error+ </th>\n",
  109. " <th title=\"Lower limit of the parameter\"> Limit- </th>\n",
  110. " <th title=\"Upper limit of the parameter\"> Limit+ </th>\n",
  111. " <th title=\"Is the parameter fixed in the fit\"> Fixed </th>\n",
  112. " </tr>\n",
  113. " <tr>\n",
  114. " <th> 0 </th>\n",
  115. " <td> a0 </td>\n",
  116. " <td> -0.98 </td>\n",
  117. " <td> 0.34 </td>\n",
  118. " <td> </td>\n",
  119. " <td> </td>\n",
  120. " <td> </td>\n",
  121. " <td> </td>\n",
  122. " <td> </td>\n",
  123. " </tr>\n",
  124. " <tr>\n",
  125. " <th> 1 </th>\n",
  126. " <td> a1 </td>\n",
  127. " <td> 2.52 </td>\n",
  128. " <td> 0.30 </td>\n",
  129. " <td> </td>\n",
  130. " <td> </td>\n",
  131. " <td> </td>\n",
  132. " <td> </td>\n",
  133. " <td> </td>\n",
  134. " </tr>\n",
  135. " <tr>\n",
  136. " <th> 2 </th>\n",
  137. " <td> a2 </td>\n",
  138. " <td> -0.48 </td>\n",
  139. " <td> 0.06 </td>\n",
  140. " <td> </td>\n",
  141. " <td> </td>\n",
  142. " <td> </td>\n",
  143. " <td> </td>\n",
  144. " <td> </td>\n",
  145. " </tr>\n",
  146. " <tr>\n",
  147. " <th> 3 </th>\n",
  148. " <td> a3 </td>\n",
  149. " <td> 0.0259 </td>\n",
  150. " <td> 0.0035 </td>\n",
  151. " <td> </td>\n",
  152. " <td> </td>\n",
  153. " <td> </td>\n",
  154. " <td> </td>\n",
  155. " <td> </td>\n",
  156. " </tr>\n",
  157. "</table><table>\n",
  158. " <tr>\n",
  159. " <td></td>\n",
  160. " <th> a0 </th>\n",
  161. " <th> a1 </th>\n",
  162. " <th> a2 </th>\n",
  163. " <th> a3 </th>\n",
  164. " </tr>\n",
  165. " <tr>\n",
  166. " <th> a0 </th>\n",
  167. " <td> 0.119 </td>\n",
  168. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.096 <strong>(-0.931)</strong> </td>\n",
  169. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  170. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000997 <strong>(-0.835)</strong> </td>\n",
  171. " </tr>\n",
  172. " <tr>\n",
  173. " <th> a1 </th>\n",
  174. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.096 <strong>(-0.931)</strong> </td>\n",
  175. " <td> 0.0893 </td>\n",
  176. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0178 <strong>(-0.987)</strong> </td>\n",
  177. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000996 <strong>(0.962)</strong> </td>\n",
  178. " </tr>\n",
  179. " <tr>\n",
  180. " <th> a2 </th>\n",
  181. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  182. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0178 <strong>(-0.987)</strong> </td>\n",
  183. " <td> 0.00366 </td>\n",
  184. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  185. " </tr>\n",
  186. " <tr>\n",
  187. " <th> a3 </th>\n",
  188. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000997 <strong>(-0.835)</strong> </td>\n",
  189. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000996 <strong>(0.962)</strong> </td>\n",
  190. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  191. " <td> 1.2e-05 </td>\n",
  192. " </tr>\n",
  193. "</table>"
  194. ],
  195. "text/plain": [
  196. "┌─────────────────────────────────────────────────────────────────────────┐\n",
  197. "│ Migrad │\n",
  198. "├──────────────────────────────────┬──────────────────────────────────────┤\n",
  199. "│ FCN = 3.719 │ Nfcn = 103 │\n",
  200. "│ EDM = 4.33e-16 (Goal: 0.0002) │ │\n",
  201. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  202. "│ Valid Minimum │ No Parameters at limit │\n",
  203. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  204. "│ Below EDM threshold (goal x 10) │ Below call limit │\n",
  205. "├───────────────┬──────────────────┼───────────┬─────────────┬────────────┤\n",
  206. "│ Covariance │ Hesse ok │ Accurate │ Pos. def. │ Not forced │\n",
  207. "└───────────────┴──────────────────┴───────────┴─────────────┴────────────┘\n",
  208. "┌───┬──────┬───────────┬───────────┬────────────┬────────────┬─────────┬─────────┬───────┐\n",
  209. "│ │ Name │ Value │ Hesse Err │ Minos Err- │ Minos Err+ │ Limit- │ Limit+ │ Fixed │\n",
  210. "├───┼──────┼───────────┼───────────┼────────────┼────────────┼─────────┼─────────┼───────┤\n",
  211. "│ 0 │ a0 │ -0.98 │ 0.34 │ │ │ │ │ │\n",
  212. "│ 1 │ a1 │ 2.52 │ 0.30 │ │ │ │ │ │\n",
  213. "│ 2 │ a2 │ -0.48 │ 0.06 │ │ │ │ │ │\n",
  214. "│ 3 │ a3 │ 0.0259 │ 0.0035 │ │ │ │ │ │\n",
  215. "└───┴──────┴───────────┴───────────┴────────────┴────────────┴─────────┴─────────┴───────┘\n",
  216. "┌────┬─────────────────────────────────────────┐\n",
  217. "│ │ a0 a1 a2 a3 │\n",
  218. "├────┼─────────────────────────────────────────┤\n",
  219. "│ a0 │ 0.119 -0.096 0.0183 -0.000997 │\n",
  220. "│ a1 │ -0.096 0.0893 -0.0178 0.000996 │\n",
  221. "│ a2 │ 0.0183 -0.0178 0.00366 -0.000208 │\n",
  222. "│ a3 │ -0.000997 0.000996 -0.000208 1.2e-05 │\n",
  223. "└────┴─────────────────────────────────────────┘"
  224. ]
  225. },
  226. "execution_count": 6,
  227. "metadata": {},
  228. "output_type": "execute_result"
  229. }
  230. ],
  231. "source": [
  232. "# create instance of Minuit and use LSQ function to minimize\n",
  233. "LSQ.errordef = Minuit.LEAST_SQUARES\n",
  234. "m = Minuit(LSQ,a0=-1.3, a1=2.6 ,a2=-0.24 ,a3=0.005)\n",
  235. "# run migrad \n",
  236. "m.migrad()"
  237. ]
  238. },
  239. {
  240. "cell_type": "code",
  241. "execution_count": 7,
  242. "metadata": {},
  243. "outputs": [
  244. {
  245. "name": "stdout",
  246. "output_type": "stream",
  247. "text": [
  248. "Chi2/ndof = 0.6198527004952333\n"
  249. ]
  250. }
  251. ],
  252. "source": [
  253. "# get function value at the minimum, which is per definition a chi2\n",
  254. "# obtain chi2 / degree of freedom (dof)\n",
  255. "chi2 = m.fval / (len(y) - len(m.values))\n",
  256. "print (\"Chi2/ndof =\" , chi2)"
  257. ]
  258. },
  259. {
  260. "cell_type": "code",
  261. "execution_count": 8,
  262. "metadata": {},
  263. "outputs": [
  264. {
  265. "data": {
  266. "text/html": [
  267. "<table>\n",
  268. " <tr>\n",
  269. " <th colspan=\"5\" style=\"text-align:center\" title=\"Minimizer\"> Migrad </th>\n",
  270. " </tr>\n",
  271. " <tr>\n",
  272. " <td colspan=\"2\" style=\"text-align:left\" title=\"Minimum value of function\"> FCN = 3.719 </td>\n",
  273. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total number of function and (optional) gradient evaluations\"> Nfcn = 128 </td>\n",
  274. " </tr>\n",
  275. " <tr>\n",
  276. " <td colspan=\"2\" style=\"text-align:left\" title=\"Estimated distance to minimum and goal\"> EDM = 1.06e-17 (Goal: 0.0002) </td>\n",
  277. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total run time of algorithms\"> </td>\n",
  278. " </tr>\n",
  279. " <tr>\n",
  280. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Valid Minimum </td>\n",
  281. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> No Parameters at limit </td>\n",
  282. " </tr>\n",
  283. " <tr>\n",
  284. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below EDM threshold (goal x 10) </td>\n",
  285. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below call limit </td>\n",
  286. " </tr>\n",
  287. " <tr>\n",
  288. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Covariance </td>\n",
  289. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Hesse ok </td>\n",
  290. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix accurate?\"> Accurate </td>\n",
  291. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix positive definite?\"> Pos. def. </td>\n",
  292. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Was positive definiteness enforced by Minuit?\"> Not forced </td>\n",
  293. " </tr>\n",
  294. "</table><table>\n",
  295. " <tr>\n",
  296. " <td></td>\n",
  297. " <th title=\"Variable name\"> Name </th>\n",
  298. " <th title=\"Value of parameter\"> Value </th>\n",
  299. " <th title=\"Hesse error\"> Hesse Error </th>\n",
  300. " <th title=\"Minos lower error\"> Minos Error- </th>\n",
  301. " <th title=\"Minos upper error\"> Minos Error+ </th>\n",
  302. " <th title=\"Lower limit of the parameter\"> Limit- </th>\n",
  303. " <th title=\"Upper limit of the parameter\"> Limit+ </th>\n",
  304. " <th title=\"Is the parameter fixed in the fit\"> Fixed </th>\n",
  305. " </tr>\n",
  306. " <tr>\n",
  307. " <th> 0 </th>\n",
  308. " <td> a0 </td>\n",
  309. " <td> -0.98 </td>\n",
  310. " <td> 0.34 </td>\n",
  311. " <td> </td>\n",
  312. " <td> </td>\n",
  313. " <td> </td>\n",
  314. " <td> </td>\n",
  315. " <td> </td>\n",
  316. " </tr>\n",
  317. " <tr>\n",
  318. " <th> 1 </th>\n",
  319. " <td> a1 </td>\n",
  320. " <td> 2.52 </td>\n",
  321. " <td> 0.30 </td>\n",
  322. " <td> </td>\n",
  323. " <td> </td>\n",
  324. " <td> </td>\n",
  325. " <td> </td>\n",
  326. " <td> </td>\n",
  327. " </tr>\n",
  328. " <tr>\n",
  329. " <th> 2 </th>\n",
  330. " <td> a2 </td>\n",
  331. " <td> -0.48 </td>\n",
  332. " <td> 0.06 </td>\n",
  333. " <td> </td>\n",
  334. " <td> </td>\n",
  335. " <td> </td>\n",
  336. " <td> </td>\n",
  337. " <td> </td>\n",
  338. " </tr>\n",
  339. " <tr>\n",
  340. " <th> 3 </th>\n",
  341. " <td> a3 </td>\n",
  342. " <td> 0.0259 </td>\n",
  343. " <td> 0.0035 </td>\n",
  344. " <td> </td>\n",
  345. " <td> </td>\n",
  346. " <td> </td>\n",
  347. " <td> </td>\n",
  348. " <td> </td>\n",
  349. " </tr>\n",
  350. "</table><table>\n",
  351. " <tr>\n",
  352. " <td></td>\n",
  353. " <th> a0 </th>\n",
  354. " <th> a1 </th>\n",
  355. " <th> a2 </th>\n",
  356. " <th> a3 </th>\n",
  357. " </tr>\n",
  358. " <tr>\n",
  359. " <th> a0 </th>\n",
  360. " <td> 0.119 </td>\n",
  361. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  362. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  363. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  364. " </tr>\n",
  365. " <tr>\n",
  366. " <th> a1 </th>\n",
  367. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  368. " <td> 0.0895 </td>\n",
  369. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  370. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  371. " </tr>\n",
  372. " <tr>\n",
  373. " <th> a2 </th>\n",
  374. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  375. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  376. " <td> 0.00366 </td>\n",
  377. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  378. " </tr>\n",
  379. " <tr>\n",
  380. " <th> a3 </th>\n",
  381. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  382. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  383. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  384. " <td> 1.2e-05 </td>\n",
  385. " </tr>\n",
  386. "</table>"
  387. ],
  388. "text/plain": [
  389. "┌─────────────────────────────────────────────────────────────────────────┐\n",
  390. "│ Migrad │\n",
  391. "├──────────────────────────────────┬──────────────────────────────────────┤\n",
  392. "│ FCN = 3.719 │ Nfcn = 128 │\n",
  393. "│ EDM = 1.06e-17 (Goal: 0.0002) │ │\n",
  394. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  395. "│ Valid Minimum │ No Parameters at limit │\n",
  396. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  397. "│ Below EDM threshold (goal x 10) │ Below call limit │\n",
  398. "├───────────────┬──────────────────┼───────────┬─────────────┬────────────┤\n",
  399. "│ Covariance │ Hesse ok │ Accurate │ Pos. def. │ Not forced │\n",
  400. "└───────────────┴──────────────────┴───────────┴─────────────┴────────────┘\n",
  401. "┌───┬──────┬───────────┬───────────┬────────────┬────────────┬─────────┬─────────┬───────┐\n",
  402. "│ │ Name │ Value │ Hesse Err │ Minos Err- │ Minos Err+ │ Limit- │ Limit+ │ Fixed │\n",
  403. "├───┼──────┼───────────┼───────────┼────────────┼────────────┼─────────┼─────────┼───────┤\n",
  404. "│ 0 │ a0 │ -0.98 │ 0.34 │ │ │ │ │ │\n",
  405. "│ 1 │ a1 │ 2.52 │ 0.30 │ │ │ │ │ │\n",
  406. "│ 2 │ a2 │ -0.48 │ 0.06 │ │ │ │ │ │\n",
  407. "│ 3 │ a3 │ 0.0259 │ 0.0035 │ │ │ │ │ │\n",
  408. "└───┴──────┴───────────┴───────────┴────────────┴────────────┴─────────┴─────────┴───────┘\n",
  409. "┌────┬─────────────────────────────────────────┐\n",
  410. "│ │ a0 a1 a2 a3 │\n",
  411. "├────┼─────────────────────────────────────────┤\n",
  412. "│ a0 │ 0.119 -0.0961 0.0183 -0.000999 │\n",
  413. "│ a1 │ -0.0961 0.0895 -0.0179 0.000997 │\n",
  414. "│ a2 │ 0.0183 -0.0179 0.00366 -0.000208 │\n",
  415. "│ a3 │ -0.000999 0.000997 -0.000208 1.2e-05 │\n",
  416. "└────┴─────────────────────────────────────────┘"
  417. ]
  418. },
  419. "execution_count": 8,
  420. "metadata": {},
  421. "output_type": "execute_result"
  422. }
  423. ],
  424. "source": [
  425. "# run covariance \n",
  426. "m.hesse()"
  427. ]
  428. },
  429. {
  430. "cell_type": "code",
  431. "execution_count": 9,
  432. "metadata": {},
  433. "outputs": [
  434. {
  435. "data": {
  436. "text/html": [
  437. "<table>\n",
  438. " <tr>\n",
  439. " <td></td>\n",
  440. " <th> a0 </th>\n",
  441. " <th> a1 </th>\n",
  442. " <th> a2 </th>\n",
  443. " <th> a3 </th>\n",
  444. " </tr>\n",
  445. " <tr>\n",
  446. " <th> a0 </th>\n",
  447. " <td> 0.119 </td>\n",
  448. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  449. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  450. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  451. " </tr>\n",
  452. " <tr>\n",
  453. " <th> a1 </th>\n",
  454. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  455. " <td> 0.0895 </td>\n",
  456. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  457. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  458. " </tr>\n",
  459. " <tr>\n",
  460. " <th> a2 </th>\n",
  461. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  462. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  463. " <td> 0.00366 </td>\n",
  464. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  465. " </tr>\n",
  466. " <tr>\n",
  467. " <th> a3 </th>\n",
  468. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  469. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  470. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  471. " <td> 1.2e-05 </td>\n",
  472. " </tr>\n",
  473. "</table>"
  474. ],
  475. "text/plain": [
  476. "┌────┬─────────────────────────────────────────┐\n",
  477. "│ │ a0 a1 a2 a3 │\n",
  478. "├────┼─────────────────────────────────────────┤\n",
  479. "│ a0 │ 0.119 -0.0961 0.0183 -0.000999 │\n",
  480. "│ a1 │ -0.0961 0.0895 -0.0179 0.000997 │\n",
  481. "│ a2 │ 0.0183 -0.0179 0.00366 -0.000208 │\n",
  482. "│ a3 │ -0.000999 0.000997 -0.000208 1.2e-05 │\n",
  483. "└────┴─────────────────────────────────────────┘"
  484. ]
  485. },
  486. "execution_count": 9,
  487. "metadata": {},
  488. "output_type": "execute_result"
  489. }
  490. ],
  491. "source": [
  492. "#get covariance matrix\n",
  493. "m.covariance"
  494. ]
  495. },
  496. {
  497. "cell_type": "code",
  498. "execution_count": 10,
  499. "metadata": {},
  500. "outputs": [
  501. {
  502. "name": "stdout",
  503. "output_type": "stream",
  504. "text": [
  505. "┌────┬─────────────────────────────────────────┐\n",
  506. "│ │ a0 a1 a2 a3 │\n",
  507. "├────┼─────────────────────────────────────────┤\n",
  508. "│ a0 │ 0.119 -0.0961 0.0183 -0.000999 │\n",
  509. "│ a1 │ -0.0961 0.0895 -0.0179 0.000997 │\n",
  510. "│ a2 │ 0.0183 -0.0179 0.00366 -0.000208 │\n",
  511. "│ a3 │ -0.000999 0.000997 -0.000208 1.2e-05 │\n",
  512. "└────┴─────────────────────────────────────────┘\n"
  513. ]
  514. }
  515. ],
  516. "source": [
  517. "#get correlation matrix in numpy array\n",
  518. "cov = m.covariance\n",
  519. "print (cov)"
  520. ]
  521. },
  522. {
  523. "cell_type": "code",
  524. "execution_count": 11,
  525. "metadata": {},
  526. "outputs": [
  527. {
  528. "data": {
  529. "text/html": [
  530. "<table>\n",
  531. " <tr>\n",
  532. " <th colspan=\"5\" style=\"text-align:center\" title=\"Minimizer\"> Migrad </th>\n",
  533. " </tr>\n",
  534. " <tr>\n",
  535. " <td colspan=\"2\" style=\"text-align:left\" title=\"Minimum value of function\"> FCN = 3.719 </td>\n",
  536. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total number of function and (optional) gradient evaluations\"> Nfcn = 300 </td>\n",
  537. " </tr>\n",
  538. " <tr>\n",
  539. " <td colspan=\"2\" style=\"text-align:left\" title=\"Estimated distance to minimum and goal\"> EDM = 1.06e-17 (Goal: 0.0002) </td>\n",
  540. " <td colspan=\"3\" style=\"text-align:center\" title=\"Total run time of algorithms\"> </td>\n",
  541. " </tr>\n",
  542. " <tr>\n",
  543. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Valid Minimum </td>\n",
  544. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> No Parameters at limit </td>\n",
  545. " </tr>\n",
  546. " <tr>\n",
  547. " <td colspan=\"2\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below EDM threshold (goal x 10) </td>\n",
  548. " <td colspan=\"3\" style=\"text-align:center;background-color:#92CCA6;color:black\"> Below call limit </td>\n",
  549. " </tr>\n",
  550. " <tr>\n",
  551. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Covariance </td>\n",
  552. " <td style=\"text-align:center;background-color:#92CCA6;color:black\"> Hesse ok </td>\n",
  553. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix accurate?\"> Accurate </td>\n",
  554. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Is covariance matrix positive definite?\"> Pos. def. </td>\n",
  555. " <td style=\"text-align:center;background-color:#92CCA6;color:black\" title=\"Was positive definiteness enforced by Minuit?\"> Not forced </td>\n",
  556. " </tr>\n",
  557. "</table><table>\n",
  558. " <tr>\n",
  559. " <td></td>\n",
  560. " <th title=\"Variable name\"> Name </th>\n",
  561. " <th title=\"Value of parameter\"> Value </th>\n",
  562. " <th title=\"Hesse error\"> Hesse Error </th>\n",
  563. " <th title=\"Minos lower error\"> Minos Error- </th>\n",
  564. " <th title=\"Minos upper error\"> Minos Error+ </th>\n",
  565. " <th title=\"Lower limit of the parameter\"> Limit- </th>\n",
  566. " <th title=\"Upper limit of the parameter\"> Limit+ </th>\n",
  567. " <th title=\"Is the parameter fixed in the fit\"> Fixed </th>\n",
  568. " </tr>\n",
  569. " <tr>\n",
  570. " <th> 0 </th>\n",
  571. " <td> a0 </td>\n",
  572. " <td> -0.98 </td>\n",
  573. " <td> 0.35 </td>\n",
  574. " <td> -0.34 </td>\n",
  575. " <td> 0.34 </td>\n",
  576. " <td> </td>\n",
  577. " <td> </td>\n",
  578. " <td> </td>\n",
  579. " </tr>\n",
  580. " <tr>\n",
  581. " <th> 1 </th>\n",
  582. " <td> a1 </td>\n",
  583. " <td> 2.52 </td>\n",
  584. " <td> 0.30 </td>\n",
  585. " <td> -0.30 </td>\n",
  586. " <td> 0.30 </td>\n",
  587. " <td> </td>\n",
  588. " <td> </td>\n",
  589. " <td> </td>\n",
  590. " </tr>\n",
  591. " <tr>\n",
  592. " <th> 2 </th>\n",
  593. " <td> a2 </td>\n",
  594. " <td> -0.48 </td>\n",
  595. " <td> 0.06 </td>\n",
  596. " <td> -0.06 </td>\n",
  597. " <td> 0.06 </td>\n",
  598. " <td> </td>\n",
  599. " <td> </td>\n",
  600. " <td> </td>\n",
  601. " </tr>\n",
  602. " <tr>\n",
  603. " <th> 3 </th>\n",
  604. " <td> a3 </td>\n",
  605. " <td> 0.0259 </td>\n",
  606. " <td> 0.0035 </td>\n",
  607. " <td> -0.0035 </td>\n",
  608. " <td> 0.0035 </td>\n",
  609. " <td> </td>\n",
  610. " <td> </td>\n",
  611. " <td> </td>\n",
  612. " </tr>\n",
  613. "</table><table>\n",
  614. " <tr>\n",
  615. " <td></td>\n",
  616. " <th colspan=\"2\" style=\"text-align:center\" title=\"Parameter name\"> a0 </th>\n",
  617. " <th colspan=\"2\" style=\"text-align:center\" title=\"Parameter name\"> a1 </th>\n",
  618. " <th colspan=\"2\" style=\"text-align:center\" title=\"Parameter name\"> a2 </th>\n",
  619. " <th colspan=\"2\" style=\"text-align:center\" title=\"Parameter name\"> a3 </th>\n",
  620. " </tr>\n",
  621. " <tr>\n",
  622. " <th title=\"Lower and upper minos error of the parameter\"> Error </th>\n",
  623. " <td> -0.34 </td>\n",
  624. " <td> 0.34 </td>\n",
  625. " <td> -0.3 </td>\n",
  626. " <td> 0.3 </td>\n",
  627. " <td> -0.06 </td>\n",
  628. " <td> 0.06 </td>\n",
  629. " <td> -0.0035 </td>\n",
  630. " <td> 0.0035 </td>\n",
  631. " </tr>\n",
  632. " <tr>\n",
  633. " <th title=\"Validity of lower/upper minos error\"> Valid </th>\n",
  634. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  635. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  636. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  637. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  638. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  639. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  640. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  641. " <td style=\"background-color:#92CCA6;color:black\"> True </td>\n",
  642. " </tr>\n",
  643. " <tr>\n",
  644. " <th title=\"Did scan hit limit of any parameter?\"> At Limit </th>\n",
  645. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  646. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  647. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  648. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  649. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  650. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  651. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  652. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  653. " </tr>\n",
  654. " <tr>\n",
  655. " <th title=\"Did scan hit function call limit?\"> Max FCN </th>\n",
  656. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  657. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  658. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  659. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  660. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  661. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  662. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  663. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  664. " </tr>\n",
  665. " <tr>\n",
  666. " <th title=\"New minimum found when doing scan?\"> New Min </th>\n",
  667. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  668. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  669. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  670. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  671. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  672. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  673. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  674. " <td style=\"background-color:#92CCA6;color:black\"> False </td>\n",
  675. " </tr>\n",
  676. "</table><table>\n",
  677. " <tr>\n",
  678. " <td></td>\n",
  679. " <th> a0 </th>\n",
  680. " <th> a1 </th>\n",
  681. " <th> a2 </th>\n",
  682. " <th> a3 </th>\n",
  683. " </tr>\n",
  684. " <tr>\n",
  685. " <th> a0 </th>\n",
  686. " <td> 0.119 </td>\n",
  687. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  688. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  689. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  690. " </tr>\n",
  691. " <tr>\n",
  692. " <th> a1 </th>\n",
  693. " <td style=\"background-color:rgb(129,129,250);color:black\"> -0.0961 <strong>(-0.931)</strong> </td>\n",
  694. " <td> 0.0895 </td>\n",
  695. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  696. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  697. " </tr>\n",
  698. " <tr>\n",
  699. " <th> a2 </th>\n",
  700. " <td style=\"background-color:rgb(250,118,118);color:black\"> 0.0183 <strong>(0.878)</strong> </td>\n",
  701. " <td style=\"background-color:rgb(122,122,250);color:black\"> -0.0179 <strong>(-0.987)</strong> </td>\n",
  702. " <td> 0.00366 </td>\n",
  703. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  704. " </tr>\n",
  705. " <tr>\n",
  706. " <th> a3 </th>\n",
  707. " <td style=\"background-color:rgb(141,141,250);color:black\"> -0.000999 <strong>(-0.835)</strong> </td>\n",
  708. " <td style=\"background-color:rgb(250,106,106);color:black\"> 0.000997 <strong>(0.962)</strong> </td>\n",
  709. " <td style=\"background-color:rgb(121,121,250);color:black\"> -0.000208 <strong>(-0.993)</strong> </td>\n",
  710. " <td> 1.2e-05 </td>\n",
  711. " </tr>\n",
  712. "</table>"
  713. ],
  714. "text/plain": [
  715. "┌─────────────────────────────────────────────────────────────────────────┐\n",
  716. "│ Migrad │\n",
  717. "├──────────────────────────────────┬──────────────────────────────────────┤\n",
  718. "│ FCN = 3.719 │ Nfcn = 300 │\n",
  719. "│ EDM = 1.06e-17 (Goal: 0.0002) │ │\n",
  720. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  721. "│ Valid Minimum │ No Parameters at limit │\n",
  722. "├──────────────────────────────────┼──────────────────────────────────────┤\n",
  723. "│ Below EDM threshold (goal x 10) │ Below call limit │\n",
  724. "├───────────────┬──────────────────┼───────────┬─────────────┬────────────┤\n",
  725. "│ Covariance │ Hesse ok │ Accurate │ Pos. def. │ Not forced │\n",
  726. "└───────────────┴──────────────────┴───────────┴─────────────┴────────────┘\n",
  727. "┌───┬──────┬───────────┬───────────┬────────────┬────────────┬─────────┬─────────┬───────┐\n",
  728. "│ │ Name │ Value │ Hesse Err │ Minos Err- │ Minos Err+ │ Limit- │ Limit+ │ Fixed │\n",
  729. "├───┼──────┼───────────┼───────────┼────────────┼────────────┼─────────┼─────────┼───────┤\n",
  730. "│ 0 │ a0 │ -0.98 │ 0.35 │ -0.34 │ 0.34 │ │ │ │\n",
  731. "│ 1 │ a1 │ 2.52 │ 0.30 │ -0.30 │ 0.30 │ │ │ │\n",
  732. "│ 2 │ a2 │ -0.48 │ 0.06 │ -0.06 │ 0.06 │ │ │ │\n",
  733. "│ 3 │ a3 │ 0.0259 │ 0.0035 │ -0.0035 │ 0.0035 │ │ │ │\n",
  734. "└───┴──────┴───────────┴───────────┴────────────┴────────────┴─────────┴─────────┴───────┘\n",
  735. "┌──────────┬───────────────────────┬───────────────────────┬───────────────────────┬───────────────────────┐\n",
  736. "│ │ a0 │ a1 │ a2 │ a3 │\n",
  737. "├──────────┼───────────┬───────────┼───────────┬───────────┼───────────┬───────────┼───────────┬───────────┤\n",
  738. "│ Error │ -0.34 │ 0.34 │ -0.3 │ 0.3 │ -0.06 │ 0.06 │ -0.0035 │ 0.0035 │\n",
  739. "│ Valid │ True │ True │ True │ True │ True │ True │ True │ True │\n",
  740. "│ At Limit │ False │ False │ False │ False │ False │ False │ False │ False │\n",
  741. "│ Max FCN │ False │ False │ False │ False │ False │ False │ False │ False │\n",
  742. "│ New Min │ False │ False │ False │ False │ False │ False │ False │ False │\n",
  743. "└──────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┘\n",
  744. "┌────┬─────────────────────────────────────────┐\n",
  745. "│ │ a0 a1 a2 a3 │\n",
  746. "├────┼─────────────────────────────────────────┤\n",
  747. "│ a0 │ 0.119 -0.0961 0.0183 -0.000999 │\n",
  748. "│ a1 │ -0.0961 0.0895 -0.0179 0.000997 │\n",
  749. "│ a2 │ 0.0183 -0.0179 0.00366 -0.000208 │\n",
  750. "│ a3 │ -0.000999 0.000997 -0.000208 1.2e-05 │\n",
  751. "└────┴─────────────────────────────────────────┘"
  752. ]
  753. },
  754. "execution_count": 11,
  755. "metadata": {},
  756. "output_type": "execute_result"
  757. }
  758. ],
  759. "source": [
  760. "# run minos error analysis\n",
  761. "# The Minos algorithm uses the profile likelihood method to compute\n",
  762. "# (generally asymmetric) confidence intervals.\n",
  763. "m.minos()"
  764. ]
  765. },
  766. {
  767. "cell_type": "code",
  768. "execution_count": 12,
  769. "metadata": {},
  770. "outputs": [
  771. {
  772. "data": {
  773. "text/plain": [
  774. "<matplotlib.contour.ContourSet at 0x7fa018346ee0>"
  775. ]
  776. },
  777. "execution_count": 12,
  778. "metadata": {},
  779. "output_type": "execute_result"
  780. },
  781. {
  782. "data": {
  783. "image/png": "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
  784. "text/plain": [
  785. "<Figure size 640x480 with 1 Axes>"
  786. ]
  787. },
  788. "metadata": {},
  789. "output_type": "display_data"
  790. }
  791. ],
  792. "source": [
  793. "# Get a 2D contour of the function around the minimum for 2 parameters\n",
  794. "# and draw a 2 D contours up to 4 sigma of a1 and a2 \n",
  795. "#m.draw_profile(\"a1\")\n",
  796. "m.draw_mncontour(\"a2\", \"a3\", cl=[1, 2, 3, 4])"
  797. ]
  798. },
  799. {
  800. "cell_type": "code",
  801. "execution_count": 13,
  802. "metadata": {},
  803. "outputs": [
  804. {
  805. "name": "stdout",
  806. "output_type": "stream",
  807. "text": [
  808. "<ValueView a0=-0.9807363849012718 a1=2.520457666696189 a2=-0.484056651556402 a3=0.02590585286811066> <ErrorView a0=0.3452141046758837 a1=0.2991369099052406 a2=0.06052732413714454 a3=0.003463469704203838>\n"
  809. ]
  810. }
  811. ],
  812. "source": [
  813. "print(m.values,m.errors)\n",
  814. "a0_fit = m.values[\"a0\"]\n",
  815. "a1_fit = m.values[\"a1\"]\n",
  816. "a2_fit = m.values[\"a2\"]\n",
  817. "a3_fit = m.values[\"a3\"]"
  818. ]
  819. },
  820. {
  821. "cell_type": "code",
  822. "execution_count": 14,
  823. "metadata": {},
  824. "outputs": [],
  825. "source": [
  826. "# display fitted function \n",
  827. "x_plot = np.linspace( 0.1, 10.1 , 200 )\n",
  828. "y_fit = a0_fit + a1_fit * x_plot + a2_fit * x_plot**2 + a3_fit * x_plot**3"
  829. ]
  830. },
  831. {
  832. "cell_type": "code",
  833. "execution_count": 15,
  834. "metadata": {},
  835. "outputs": [
  836. {
  837. "data": {
  838. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAHvCAYAAACMtHGxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABgd0lEQVR4nO3dd3gU5f7+8femk4SE3kMnFEGQElFAegcRUCxUBQtHLEex/yTY0aOox/MVBRFUEERRRECkSQcJvffeewKkJ/P7Y8hCIAkpu5ndzf26rr12dnd25pPdbPbO88w8j80wDAMRERERcTgvqwsQERER8VQKWiIiIiJOoqAlIiIi4iQKWiIiIiJOoqAlIiIi4iQKWiIiIiJOoqAlIiIi4iQKWiIiIiJOoqAlIiIi4iQKWiK3ULlyZWw2GzabjYMHD1pdToYWL15sr7FVq1ZWl5NnrVq1sv88ixcvtrqcXDl48KD9Z6hcubLV5YiIRRS0REQycH3Yy8ll48aNltY9cuTIXNWd1UVEck9BS0Tc0vWBYuTIkVaXk2vu0GLqSjyhtVMKFh+rCxARcXVNmjQhIiIiW+uWLFnSydVkLSIigqeffjrLdb7//nsuXboEQNu2balVq1Z+lCZSICloidyCO7QytGrVCsMwrC7DYVytpaJLly45bjWrXLmyJe9Jly5d6NKlS5brzJo1yx60+vXrx6BBg/KhMpGCSV2HIiIiIk6ioCUiIiLiJApaIreQnYOVMzpA99ixY7z55pvUr1+fokWLEhAQQN26dXn77be5cuXKTdvYsWMHQ4cO5bbbbiM4OJiiRYtyzz33MHHixFt2QWVneIfMhhtYu3YtQ4YMITw8nMDAQIoWLUpERATvv/9+hnVmZ5tZye3reeNjb731lv2+t956K8Oz5azsEsvqtbn+sUOHDtnvr1KlSoY/h9VdqUlJSfzwww/06dOHqlWrUrhwYYKCgqhSpQoPP/wwv/32W7a7SaOiohg2bBgNGzakaNGi+Pr6UqxYMcLDw2nevDkvvPACf/31F3Fxcemel/ZaLFmyxH5f69atM3y9Jk6c6MgfXyRPdIyWiBP8+eef9O3blwsXLqS7f9u2bURGRvLrr7/y999/U7RoUcAMCm+//Tapqanp1l+2bBnLli1j1qxZ/PTTT3h7ezusRsMwGDlyJO+++266/cbFxREVFUVUVBTffPMNCxYsoGrVqg7br7iXxYsXM2TIEPbt23fTYwcPHuTgwYNMnTqVpk2b8ssvv1C+fPkMt5OcnMzTTz/N2LFjb3rswoULXLhwgT179rBixQo+/fRT3njjDd59912H/zwi+U1BS8TBNmzYwOuvv058fDyVK1fmrrvuIjAwkG3btrF69WoANm3axIMPPsi8efN477337AdaN2zYkHr16mGz2Vi+fDl79+4FYPr06YwaNYo33njDYXWmhTuABg0aUK9ePXx9fdm4cSPr168H4MCBA9x3332sW7cOX19fh+07L3r27EndunVZs2YNUVFRQOZnBTZt2jS/y8uWkJAQ+5mB158BOGDAAAoXLnzT+pmFF2f7+eef6du3L0lJSQAEBATQtGlTKleujLe3N7t372bVqlUkJyezevVq7rrrLqKioihduvRN2xo+fHi6kFW+fHkiIiIoUaIEhmFw7tw5tm/fzq5duzKsJe31+u233zh+/DgA9913X4avTe3atfP8s4s4jCEiWapUqZIBGIBx4MCBDNdp2bKlfR0/Pz/Dz8/PGDdunJGamppuvenTpxs+Pj72dUePHm14eXkZYWFhxooVK9Ktm5KSYrz00kv2dYODg43Lly9nuP+///7bvl7Lli0zXOfAgQPparTZbEa1atWMf/7556Z1p02bZvj6+trX/+677265zUqVKmW4zo1y+nr+/fffGa4TGRlpXycyMjJb+86J62vIzfaz+9pk5/VwtOv3OWHChAzX2bp1qxEYGGhf7/nnnzfOnTt303r79u0zmjdvbl+vc+fON61z5swZ+++9t7e3MXHixJs+G2mOHz9u/Pe//zW++eabDB/Pzu+GiCtRi5aIgyUmJjJx4kQGDhx402O9evVi8ODBfP311wC88MILBAYGMn/+fGrWrJluXS8vL0aNGsWsWbPYsWMHly9fZtasWTz44IMOqbF48eIsXbqUcuXK3fT4Aw88wJo1a/j4448BmDJlCgMGDMjzft3VnDlzOHv27C3Xe+211yxrfXK0Z599ltjYWADefffdTFtTq1atyty5c2nSpAk7duzgzz//5J9//uHOO++0r7N69WqSk5MBeOihhzL8bKQpW7YszzzzjAN/EhFrKWiJONgdd9yR5RfJgw8+aA9aAE899dRNISuNl5cXDzzwgL2LLyoqyiFBC+D111/PMGSleeyxx+xBK62LrqBKO2btVoYMGeIRQWvTpk0sWrQIgPDwcF599dUs1w8KCmLEiBE8/PDDAEyePDld0IqJibEvWz2gq0h+01mHIg7Wu3fvLB+vW7durtc/cOBA7gu7wQMPPJDl47Vq1aJQoUIAnDt3jsuXLzts3+La5syZY19+4IEHsnUSRps2bezLy5cvT/dYxYoV7cvTp0/n5MmTDqhSxD2oRUvEwW677bYsH0870zBNnTp1sr3+9S0DeREaGkpYWFiW69hsNooWLWo/zT46Oprg4GCH7N/dREZGuvV8ijm1atWqdMvDhg275XOM64Z3OHLkSLrH7rzzTipVqsShQ4c4cuQIt912GwMHDqR79+40bdrUHuhFPJGCloiDhYaGZvm4j0/6j11O1k87+yuvbrXPNNefaeiofYvrSzurD2DRokX2bsTsunFYE19fXyZNmkTXrl2JiYnh/PnzfPrpp3z66af4+fnRsGFD7rnnHrp27UqLFi2w2WwO+TlEXIG6DkUcLKdfElZ8qeiLTLISHR2dp+enpKTcdF/z5s3ZtGkTjz32GEFBQfb7ExMTWb16NR999BEtW7akVq1a/Pbbb3nav4grUdASkXx146Cs4nquD0IzZszAMIwcXzJSuXJlxo8fz5kzZ1iwYAEjRoygdevW6boOd+/eTa9evRg9erTTf06R/KCgJSK5dn3XYtrp+7eS19YScb7rBxzds2ePw7dfqFAh2rZty1tvvcWiRYs4d+4c06dPp379+vZ1XnvtNY4dO+bwfYvkNwUtEcm160cxv3Dhwi3nuzt8+LDDDuj3lO5PV/w5rh+a4a+//nL6/goVKkSvXr34+++/KVOmDGB2KWa0b1d8vUSyoqAlIrkWEhJCsWLFAIiNjWX37t1Zrj9t2jSH7TsgIMC+7M4H6rviz9GtWzf78sKFC9myZUu+7Ldo0aLcfffd9tunTp26aR1XfL1EsqKgJSJ5cv0cgxMnTsx0vaNHj/LBBx84bL/Fixe3L7tzF5Mr/hwRERG0atUKMIdt6NevX7ZbIhMTE2866/DcuXPZ3vfhw4ftyxkNbuqKr5dIVhS0RCRPHnnkEfvy6NGjmT59+k3rrF69mpYtW3LhwgWHTU5dr149+/Jff/3ltsd+Xf9zOLLFL6+++OIL+7hpmzdvJiIiggULFmS6/t69e3nvvfeoUqUKK1asuGlbDRo04Msvv+TEiRMZPv/SpUu88sorrF27FgBvb286dux403rXv16//PLLLburRaymcbREJE8efvhhPvnkEzZt2kRiYiL3338/DRs2pEGDBqSkpLB582Y2bNgAwMiRI5kwYQKHDh3K836bNGlCxYoVOXz4MCdPnqRWrVp06NCBEiVK2I/jadKkicOmLHKW3r1789VXXwEwZswY1q9fT8OGDQkMDLSvM3ToUKpVq5avddWtW5cpU6bw4IMPEhsby65du2jfvj1hYWE0adKEEiVKkJiYyJkzZ9i0aRNHjx7NcnubNm3i6aefZtiwYVSrVo26detSokQJkpKSOH78OCtXruTKlSv29V999dUMB9Xt1asXr732GoZhMHv2bG6//XbuvvvudMcLPvTQQzRu3NhxL4ZIHihoiUie+Pj48Ntvv9GuXTv2798PwPr161m/fr19HZvNxuuvv86IESOYMGGCQ/br5eXFmDFj6NW
  839. "text/plain": [
  840. "<Figure size 640x480 with 1 Axes>"
  841. ]
  842. },
  843. "metadata": {},
  844. "output_type": "display_data"
  845. }
  846. ],
  847. "source": [
  848. "# plot data \n",
  849. "plt.figure()\n",
  850. "plt.errorbar(x, y, dy , dx, fmt=\"o\")\n",
  851. "plt.plot(x_plot,y_fit )\n",
  852. "plt.title(\"iminuit Fit Test\")\n",
  853. "plt.xlabel('x')\n",
  854. "plt.ylabel('f(x)')\n",
  855. "plt.xlim(-0.1, 10.1)\n",
  856. "\n",
  857. "# show the plot\n",
  858. "plt.show()"
  859. ]
  860. },
  861. {
  862. "cell_type": "code",
  863. "execution_count": null,
  864. "metadata": {},
  865. "outputs": [],
  866. "source": []
  867. }
  868. ],
  869. "metadata": {
  870. "kernelspec": {
  871. "display_name": "Python 3 (ipykernel)",
  872. "language": "python",
  873. "name": "python3"
  874. },
  875. "language_info": {
  876. "codemirror_mode": {
  877. "name": "ipython",
  878. "version": 3
  879. },
  880. "file_extension": ".py",
  881. "mimetype": "text/x-python",
  882. "name": "python",
  883. "nbconvert_exporter": "python",
  884. "pygments_lexer": "ipython3",
  885. "version": "3.8.16"
  886. }
  887. },
  888. "nbformat": 4,
  889. "nbformat_minor": 4
  890. }