aboutsummaryrefslogtreecommitdiffstats
path: root/praklib.py
diff options
context:
space:
mode:
Diffstat (limited to 'praklib.py')
-rwxr-xr-xpraklib.py43
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}
+