Koide numpy
- Alejandro Rivero
- 14 jun 2021
- 1 Min. de lectura
He añadido ultimamente un par de recetas de Python3 al hilo https://www.physicsforums.com/threads/what-is-new-with-koide-sum-rules.551549/post-6502716 pero tambien he hecho un par de reponderaciones y por no sobrecargar el foro mejor las añado aqui en el blog de notas
import numpy as npdef rmass(mass,errors): scale = - errors[1]/errors[0] base = np.random.normal(mass, errors[0], 1000) if scale==1: calc = base else: calc = np.where(base < mass, base*scale, base) return np.where(calc < 0, 0, calc) def rkoide(triplet,signs): if signs[0]=="0": a=0 mb,mc = map(m.get,triplet) eb,ec = map(e.get,triplet) b,c = rmass(mb,eb), rmass(mc,ec) sign = 0 else: ma,mb,mc = map(m.get,triplet) ea,eb,ec = map(e.get,triplet) a,b,c = rmass(ma,ea), rmass(mb,eb), rmass(mc,ec) sign = +1 if signs[0]=="+" else -1 koide=(a+b+c)/np.square(sign*np.sqrt(a)+np.sqrt(b)+np.sqrt(c)) return np.mean(koide), np.std(koide ) #, np.std(koide, ddof=1)
e=dict()for line in p.split("\n")[1:-1]: d=line[32:].split() e[d[-2]+d[-1]]=[float(d[1]),float(d[2])]
%%timefor x in result: k,std=rkoide(x[1],x[3]) x[0]=max(abs(k+std-2/3),abs(max(k-std,0)-2/3))#print(f'{"|".join(x[1]):<40}',"\t{:.8f} +- {:.8f}".format(abs(k-2/3),std))



Comentarios