diff options
author | justanothercatgirl <sotov@twistea.su> | 2024-10-26 20:03:08 +0300 |
---|---|---|
committer | justanothercatgirl <sotov@twistea.su> | 2024-10-26 20:03:08 +0300 |
commit | 5e81acb1a514231dc704f8e19f1a4c6e06318135 (patch) | |
tree | d0137411b2c94e63bee43b3d581fb73558ac3637 /praklib.py | |
parent | 52d8f03d0657df15cf0fc320d03aea76d17ae4f8 (diff) |
Structurization + 120 and 117 prak
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} + |