def invert_f_mt(y): xstar = np.zeros_like(y) for iy,yy in enumerate(y): if not isinstance(yy,np.ndarray): to_invert = lambda x: sim_utils.f_miller_troyer(x,1)-yy xstar[iy] = sop.root_scalar(to_invert,x0=yy,x1=0).root else: xstar[iy] = invert_f_mt(yy) return xstar
def invert_f_mt(y,s02=1,floor=-5): xstar = np.zeros_like(y) for iy,yy in enumerate(y): if not isinstance(yy,np.ndarray): to_invert = lambda x: sim_utils.f_miller_troyer(x,s02)-yy #xstar[iy] = sop.root_scalar(to_invert,x0=yy,x1=0).root xstar[iy] = sop.root_scalar(to_invert,x0=1,x1=0).root else: xstar[iy] = invert_f_mt(yy,s02=s02,floor=floor) return np.maximum(xstar,floor)
def compute_f_(Eta,Xi,s02): return sim_utils.f_miller_troyer(Eta,Xi**2+np.concatenate([s02 for ipixel in range(nS*nT)]))