tprak

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

tp51.py (901B)


      1 #!/usr/bin/env python3.9
      2 
      3 import numpy as np
      4 
      5 def main():
      6 
      7     # one experiment
      8     sig = 0.2; s = 0.2
      9     p0 = 0.9            # guess
     10 
     11     y0 = np.array([0.8, 1.2])
     12     A = np.array([1, 1])
     13     cov_sta = np.array([[sig**2, 0], [0, sig**2]])
     14 
     15     for i in range(10):
     16         cov_sys = np.array([[s**2*p0**2, s**2*p0**2], [s**2*p0**2, s**2*p0**2]])
     17         P = np.linalg.inv(cov_sys+cov_sta)
     18         p0 = (A.T@P@A)**(-1) * A.T@P@y0
     19 
     20     dp = (A.T@P@A)**(-1/2)
     21 
     22     print('One Experiment')
     23     print(f'p = {p0} \pm {round(dp, 2)}\n')
     24 
     25     # two experiments
     26 
     27     p0 = 0.9            # guess
     28 
     29     for i in range(10):
     30         cov_sys = np.array([[s**2*p0**2, 0], [0, s**2*p0**2]])
     31         P = np.linalg.inv(cov_sys+cov_sta)
     32         p0 = (A.T@P@A)**(-1) * A.T@P@y0
     33 
     34     dp = (A.T@P@A)**(-1/2)
     35 
     36     print('Two Experiments')
     37     print(f'p = {p0} \pm {round(dp, 2)}\n')
     38 
     39 
     40 if __name__ == "__main__":
     41     main()