tprak

Theoretical Physics Practical Training
git clone git://popovic.xyz/tprak.git
Log | Files | Refs

commit 69fac7f5314d23d2ad5492846f036a6ccb7f85ec
parent c39b561596629c34b66ddd1bcf7675e589631fff
Author: miksa <milutin@popovic.xyz>
Date:   Thu,  8 Apr 2021 12:54:36 +0200

forgot to add sigma values now added

Diffstat:
Msesh1/prog/Untitled Folder/Untitled.ipynb | 19+++++++++++--------
Msesh1/prog/fit_single.py | 6+++---
Dsesh1/prog/tp51py | 41-----------------------------------------
3 files changed, 14 insertions(+), 52 deletions(-)

diff --git a/sesh1/prog/Untitled Folder/Untitled.ipynb b/sesh1/prog/Untitled Folder/Untitled.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": 23, "id": "automatic-recommendation", "metadata": {}, "outputs": [], @@ -16,14 +16,14 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 31, "id": "demographic-distributor", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fdcefe067eeb404086e0067ef6450be9", + "model_id": "6d9961d305ea48e0b650fda599667a73", "version_major": 2, "version_minor": 0 }, @@ -37,10 +37,10 @@ { "data": { "text/plain": [ - "<function __main__.somefunc(m_q=0.7, g_q=0.2, m_w=0.8, g_w=0.2, e_w=0.002, a=-500, b=200, c=0.2)>" + "<function __main__.somefunc(m_q=0.7, g_q=0.2, m_w=1, g_w=0.2, e_w=0.002, a=-500, b=200, c=0.2)>" ] }, - "execution_count": 22, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -55,11 +55,14 @@ " part3 = c*(1 + a*s + b*s**2)**2\n", " return part1 * part2 * part3\n", "\n", - "def somefunc(m_q=0.7, g_q=0.2, m_w=0.8, g_w=0.2, e_w=2e-3, a=-500, b=200, c=0.2): data = np.loadtxt('../data/SND-VFF.txt') s = data[:,0]\n", + "def somefunc(m_q=0.7, g_q=0.2, m_w=1, g_w=0.2, e_w=2e-3, a=-500, b=200, c=0.2): \n", + " data = np.loadtxt('../data/SND-VFF.txt')\n", + " s = data[:,0]\n", " F2 = data[:, 1]\n", + " sigma = data[:, 2]\n", "\n", " p0 = [m_q, g_q, m_w, g_w, e_w, a, b, c] # in GeV\n", - " popt, pcov = curve_fit(model, s, F2, p0)\n", + " popt, pcov = curve_fit(model, s, F2, p0, sigma=np.sqrt(sigma))\n", " popt, uncert = np.round(popt, 3), np.round(np.sqrt(np.diagonal(pcov)), 3)\n", "\n", " plt.figure(figsize=[10, 7])\n", @@ -75,7 +78,7 @@ " plt.annotate(r'$\\Gamma_{\\omega} = $' + f'({popt[3]}' + r'$\\pm$' + f'{uncert[3]}) GeV', (0.7, 32))\n", " \n", "interact(somefunc, m_q=(0, 1, 0.1), g_q=(0, 1, 0.1), m_w=(0, 1, 0.1), g_w=(0, 1, 0.1), e_w=(2e-3, 2e-2, 5e-3),\\\n", - " a=(-1000, 1000, 0.1), b=(-1000, 1000, 0.1), c=(0, 100, 0.1))\n" + " a=(-100, 100, 0.1), b=(-100, 100, 0.1), c=(0, 100, 0.1))\n" ] }, { diff --git a/sesh1/prog/fit_single.py b/sesh1/prog/fit_single.py @@ -19,9 +19,10 @@ def main(): data = np.loadtxt('./data/SND-VFF.txt') s = data[:,0] F2 = data[:, 1] + sigma = np.sqrt(data[:, 2]) - p0 = [0.7, 0.2, 0.8, 0.2, 2e-3, -522.90, 191.40, 0.5] # in GeV - popt, pcov = curve_fit(model, s, F2, p0) + p0 = [0.7, 0.2, 1, 0.2, 2e-3, 13.4, 45.3, 8.5] # in GeV + popt, pcov = curve_fit(model, s, F2, p0, sigma=sigma) popt, uncert = np.round(popt, 3), np.round(np.sqrt(np.diagonal(pcov)), 3) s_model = np.linspace(s[0], s[-1], 500) @@ -30,7 +31,6 @@ def main(): plt.title('SND DATA FIT') plt.scatter(s, F2, marker='.', c='black') plt.plot(s_model, model(s_model, *popt), color='red') - plt.annotate('A guessing game with the parameters', (0.15, 40)) plt.annotate(r'$\Gamma_{\omega}$ bad fit', (0.15, 38)) plt.annotate(r'$M_{\rho} = $' + f'({popt[0]}' + r'$\pm$' + f'{uncert[0]}) GeV', (0.7, 40)) diff --git a/sesh1/prog/tp51py b/sesh1/prog/tp51py @@ -1,41 +0,0 @@ -#!/usr/bin/env python3.9 - -import numpy as np - -def main(): - - # one experiment - sig = 0.2; s = 0.2 - p0 = 0.9 # guess - - y0 = np.array([0.8, 1.2]) - A = np.array([1, 1]) - cov_sta = np.array([[sig**2, 0], [0, sig**2]]) - - for i in range(10): - cov_sys = np.array([[s**2*p0**2, s**2*p0**2], [s**2*p0**2, s**2*p0**2]]) - P = np.linalg.inv(cov_sys+cov_sta) - p0 = (A.T@P@A)**(-1) * A.T@P@y0 - - dp = (A.T@P@A)**(-1/2) - - print('One Experiment') - print(f'p = {p0} \pm {round(dp, 2)}\n') - - # two experiments - - p0 = 0.9 # guess - - for i in range(10): - cov_sys = np.array([[s**2*p0**2, 0], [0, s**2*p0**2]]) - P = np.linalg.inv(cov_sys+cov_sta) - p0 = (A.T@P@A)**(-1) * A.T@P@y0 - - dp = (A.T@P@A)**(-1/2) - - print('Two Experiments') - print(f'p = {p0} \pm {round(dp, 2)}\n') - - -if __name__ == "__main__": - main()