def makeObjects(flat=None, ndim=None, seed=None): if seed is None: seed = randint(1, 1e6) numpy.random.seed(seed) randn = numpy.random.randn if ndim is None: ndim = randint(0, 20) shapes = { None:lambda :max(randint(-ndim, ndim), 0), True:lambda :randint(1, ndim), False:lambda :0, } triple = lambda x:[x, x, x] if flat in shapes: flat = [item() for item in triple(shapes[flat])] elif isinstance(flat, int): flat = triple(flat) assert all(f <= ndim for f in flat), "flatness can't be larger than ndim" rvec = lambda n=1, ndim=ndim:Matrix(randn(n ,ndim)) A,B,C = [ Mvn.rand([ndim-F, ndim]) for F in flat ] n = randint(1, 2*ndim) M = rvec(n).H M2 = rvec(n).H E = Matrix.eye(ndim) K1 = (numpy.random.randn()) K2 = (numpy.random.randn()) N = randint(-5, 5) return { 'ndim' : ndim, 'A' : A, 'B' : B, 'C' : C, 'M' : M, 'M2' : M2, 'E' : E, 'K1' : K1, 'K2' : K2, 'N' : N, }
def makeObjects(flat=None, ndim=None, seed=None): if seed is None: seed = randint(1, 1e6) numpy.random.seed(seed) randn = numpy.random.randn if ndim is None: ndim = randint(0, 20) shapes = { None: lambda: max(randint(-ndim, ndim), 0), True: lambda: randint(1, ndim), False: lambda: 0, } triple = lambda x: [x, x, x] if flat in shapes: flat = [item() for item in triple(shapes[flat])] elif isinstance(flat, int): flat = triple(flat) assert all(f <= ndim for f in flat), "flatness can't be larger than ndim" rvec = lambda n=1, ndim=ndim: Matrix(randn(n, ndim)) A, B, C = [Mvn.rand([ndim - F, ndim]) for F in flat] n = randint(1, 2 * ndim) M = rvec(n).H M2 = rvec(n).H E = Matrix.eye(ndim) K1 = (numpy.random.randn()) K2 = (numpy.random.randn()) N = randint(-5, 5) return { 'ndim': ndim, 'A': A, 'B': B, 'C': C, 'M': M, 'M2': M2, 'E': E, 'K1': K1, 'K2': K2, 'N': N, }
Nself = self.vectors.null() Nother = other.vectors.null() #and stack them null = numpy.vstack([ Nself, Nother, ]) mean = numpy.hstack([self.mean, other.mean]) #get length of the component of the means along each null vector r = numpy.vstack([Nself*self.mean.H, Nother*other.mean.H]) mean = (numpy.linalg.pinv(null, 1e-6)*r).H return type(self)(vectors= null.null(), mean=mean) if __debug__: ndim = helpers.randint(1, 10) A = Plane( mean = numpy.random.randn(1, ndim), vectors = numpy.random.randn(helpers.randint(1, ndim), ndim) ) if __name__ == '__main__': pass
""" plane intersection """ Nself = self.vectors.null() Nother = other.vectors.null() #and stack them null = numpy.vstack([ Nself, Nother, ]) mean = numpy.hstack([self.mean, other.mean]) #get length of the component of the means along each null vector r = numpy.vstack([Nself * self.mean.H, Nother * other.mean.H]) mean = (numpy.linalg.pinv(null, 1e-6) * r).H return type(self)(vectors=null.null(), mean=mean) if __debug__: ndim = helpers.randint(1, 10) A = Plane(mean=numpy.random.randn(1, ndim), vectors=numpy.random.randn(helpers.randint(1, ndim), ndim)) if __name__ == '__main__': pass