diff options
Diffstat (limited to 'praklib.py')
-rwxr-xr-x | praklib.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/praklib.py b/praklib.py new file mode 100755 index 0000000..dfa4bdc --- /dev/null +++ b/praklib.py @@ -0,0 +1,43 @@ +#!/home/main/coding/py/venv/bin/python3 + +import math +import numpy as np + +PI = 3.141592657 # Doom forever + +def getvarbyval(var, ls): + for name, value in ls.items(): + if value is var: + return name + +def avg(l): + return sum(l)/len(l) + +def stddev(l): + s = len(l) + a = avg(l) + return math.sqrt(sum(( (i - a)**2 for i in l )) / (s * (s-1))) + +def sigsum(stddev, sig_sist): + return math.sqrt(stddev**2 + sig_sist**2) + +def sigma(func, args, sigmas): + s = 0 + dx = 1e-7 + for i in range(len(args)): + argsdx = args.copy() + argsdx[i] += dx + s += ( sigmas[i] * (func(*argsdx) - func(*args))/dx )**2 + return math.sqrt(s) + +def mnk(xs, ys, ss): + sss = ss*ss + d = np.sum(xs*xs/sss)*np.sum(1/sss) - np.sum(xs/sss)**2 + da = np.sum(xs*ys/sss)*np.sum(1/sss) - np.sum(xs/sss)*np.sum(ys/sss) + db = np.sum(xs*xs/sss)*np.sum(ys/sss) - np.sum(xs/sss)*np.sum(xs*ys/sss) + a = da/d + b = db/d + sa = math.sqrt(np.sum(1/sss)/d) + sb = math.sqrt(np.sum(xs*xs/sss)/d) + return {"a": a, "b": b, "sa": sa, "sb": sb} + |