def create_pfeffer_simplex(position, size_param=0.05):
    """Create a simplex according to the rule of Lawrence E. Pfeffer.

    This construction method is the default in Matlab's :func:`fminsearch`
    and SciPy's :func:`scipy.optimize.fmin`. According to [Fan2002]_, p. 73,
    this approach was proposed by Lawrence E. Pfeffer at Stanford.

    Parameters
    ----------
    position : iterable
        The position being used as location vector for the simplex. In this
        construction, `position` is the vertex in the simplex closest to
        the origin.
    size_param : float, optional
        For each coordinate, a fraction of itself is added to it. This value
        is the fraction.

    Returns
    -------
    simplex : list of list
        A list containing ``len(position) + 1`` points.

    References
    ----------
    .. [Fan2002] Ellen Fan (2002). Global optimization of Lennard-Jones
        atomic clusters. Master's thesis, McMaster University.
        http://www.cas.mcmaster.ca/~oplab/thesis/faneMS.pdf

    """
    assert len(position) > 0
    assert size_param > 0.0
    nonzero_delta = size_param
    zero_delta = 0.00025
    simplex = [list(position)]
    for i in range(len(position)):
        point = list(position)
        if point[i] != 0.0:
            point[i] *= 1.0 + nonzero_delta
        else:
            point[i] = zero_delta
        simplex.append(point)
    return simplex
