tp5.1py (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()