<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _matrix_sigma_eta(self, donor_catchments):
 """ Return model error coveriance matrix Sigma eta Methodology source: Kjelsen, Jones & Morris 2014, eqs 2 and 3 :param donor_catchments: Catchments to use as donors :type donor_catchments: list of :class:`Catchment` :return: 2-Dimensional, symmetric covariance matrix :rtype: :class:`numpy.ndarray` """

        p = len(donor_catchments)
        sigma = 0.1175 * np.ones((p, p))
        for i in range(p):
            for j in range(p):
                if i != j:
                    sigma[i, j] *= self._model_error_corr(donor_catchments[i], donor_catchments[j])
        return sigma