private static double I(double[][] matrix_pxandy) { var px = Lab1.Px(matrix_pxandy); Lab1.H(px, out var Hx); var py = Lab1.Py(matrix_pxandy); Lab1.H(py, out var Hy); var hXandY = Lab1.HXandY(matrix_pxandy); var res = Hx + Hy - hXandY; Console.WriteLine("I(X;Y) = " + Hx + " + " + Hy + " - " + hXandY + " = " + res); return(res); }
internal static double[][] PYifX(double[][] pXandY) { var result = new double[pXandY.Length][]; var px = Lab1.Px(pXandY); var precalculated = ""; var calculated = ""; var len = pXandY.Length; for (var i = 0; i < len; i++) { result[i] = new double[len]; for (var j = 0; j < len; j++) { var probability = Pxify(pXandY[i][j], px[i]); precalculated += pXandY[i][j] + " / " + px[i] + "\t"; calculated += Math.Round(probability, 2) + "\t"; result[i][j] = probability; } precalculated += "\n"; calculated += "\n"; } Console.WriteLine("P(Y|X) = "); for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { Console.Write("\t" + Math.Round(result[i][j], 2)); } Console.Write("\n"); } Console.WriteLine("P(Y|X) = \n" + precalculated + "\n=\n" + calculated); return(result); }