/// <summary> /// Predictive distribution at a given list of points /// </summary> /// <param name="XList">List of inputs</param> /// <returns>Predictive distribution</returns> public VectorGaussian Joint(IList <Vector> XList) { if (IsUniform()) { return(VectorGaussian.Uniform(XList.Count)); } else { PositiveDefiniteMatrix kXX = FixedParameters.Prior.Covariance(XList); Matrix kXB = FixedParameters.KernelOf_X_B(XList); kXX.SetToDifference(kXX, kXB * Beta * kXB.Transpose()); VectorGaussian result = new VectorGaussian(kXB * Alpha + FixedParameters.Prior.Mean(XList), kXX); return(result); } }
/// <summary> /// Predictive coariance at a given list of points /// </summary> /// <param name="XList">List of inputs</param> /// <returns>Predictive covariance</returns> public PositiveDefiniteMatrix Covariance(IList <Vector> XList) { if (IsUniform()) { VectorGaussian temp = new VectorGaussian(XList.Count); temp.SetToUniform(); return(temp.GetVariance()); } else { PositiveDefiniteMatrix kXX = FixedParameters.Prior.Covariance(XList); Matrix kXB = FixedParameters.KernelOf_X_B(XList); kXX.SetToDifference(kXX, kXB * Beta * kXB.Transpose()); return(kXX); } }