def rsdl_s(self, Yprev, Y):
"""Compute dual residual vector."""
# Since s = rho A^T B (y^(k+1) - y^(k)) and B = -(I I I ...)^T,
# the correct calculation here would involve replicating (Yprev - Y)
# on the axis on which the blocks of X are stacked. Since this would
# require allocating additional memory, and since it is only the norm
# of s that is required, instead of replicating the vector it is
# scaled to have the same l2 norm as the replicated vector
return np.sqrt(self.Nb)*self.rho*(Yprev - Y)
评论列表
文章目录