@classmethod
def approximate(Class, function, accuracy, *args, **kwargs):
    """
        Approximate the function of the given tensor arguments.

        :param function: the function to be approximated
        :type function: a callable that accepts a number of one-dimensional
            NumPy arrays of equal length and returns a one-dimensional NumPy
            array of the same length
        :param accuracy: an acceptable relative root mean squared error of the
            approximation
        :type accuracy: a non-negative number
        :param args: the arguments to be passed to `function`
        :type args: tensors of the same type and shape
        :param kwargs: optional keyword arguments to be passed to `function`
        :returns: an approximation of the function of the given tensor arguments
            with the specified accuracy
        :rtype: a tensor of the same type and shape as `args`
        :raises: :class:`AssertionError` if `accuracy` is negative,
            :class:`AssertionError` if `args` have different shapes, and
            :class:`RuntimeError` if the approximation process fails to converge

        .. seealso::
            :func:`tensors.tools.tensorize`
        """
    raise NotImplementedError
