'Return solution to self*soln = rhs using given inversion method.
For a list of possible inversion methods, see the .inv() docstring.'

def solve(self, rhs, method='LDL'):

    if (not self.is_square):
        if (self.rows < self.cols):
            raise ValueError('Under-determined    system.')
        elif (self.rows > self.cols):
            raise ValueError('For    over-determined    system,    M,    having    more    rows    than    columns,    try    M.solve_least_squares(rhs).')
    else:
        return (self.inv(method=method) * rhs)
