def compute_residuals(self):
"""Compute residuals and stopping thresholds."""
if self.opt['AutoRho', 'StdResiduals']:
r = linalg.norm(self.rsdl_r(self.AXnr, self.Y))
s = linalg.norm(self.rsdl_s(self.Yprev, self.Y))
epri = scipy.sqrt(self.Nc)*self.opt['AbsStopTol'] + \
self.rsdl_rn(self.AXnr, self.Y)*self.opt['RelStopTol']
edua = scipy.sqrt(self.Nx)*self.opt['AbsStopTol'] + \
self.rsdl_sn(self.U)*self.opt['RelStopTol']
else:
rn = self.rsdl_rn(self.AXnr, self.Y)
if rn == 0.0:
rn = 1.0
sn = self.rsdl_sn(self.U)
if sn == 0.0:
sn = 1.0
r = linalg.norm(self.rsdl_r(self.AXnr, self.Y)) / rn
s = linalg.norm(self.rsdl_s(self.Yprev, self.Y)) / sn
epri = scipy.sqrt(self.Nc)*self.opt['AbsStopTol']/rn + \
self.opt['RelStopTol']
edua = scipy.sqrt(self.Nx)*self.opt['AbsStopTol']/sn + \
self.opt['RelStopTol']
return r, s, epri, edua
评论列表
文章目录