private void ExportToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3, 3) == "csv") { ImportAndExportFiles.ExportFile(saveFileDialog1.FileName, 1); } else if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 4, 4) == "html") { ImportAndExportFiles.ExportFile(saveFileDialog1.FileName, 2); } else { ImportAndExportFiles.ExportFile(saveFileDialog1.FileName, 3); } } }
private void buttonImportData_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { buttonClear_Click(sender, e); using (var fs = new FileStream(openFileDialog1.FileName, FileMode.Open)) { ImportAndExportFiles.ImportFile(fs); for (var i = 0; i < Row.GetCount(); i++) { if (Row.GetByIndex(i).a != Row.GetByIndex(i).b) { listBoxRow.Items.Add("(" + Row.GetByIndex(i).a + "; " + Row.GetByIndex(i).b + ") | ni = " + Row.GetByIndex(i).n); } else { listBoxRow.Items.Add(Row.GetByIndex(i).a + " | ni = " + Row.GetByIndex(i).n); } } } } }
//Перевірка гіпотези про закон Пуассона public static void CheckPuassonLaw() { ImportAndExportFiles.Clear(); ImportAndExportFiles.WriteHTML("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/></head><body>"); ImportAndExportFiles.WriteHTML("<h2>Перевірка гіпотези про розподіл випадкової величини за законом Пуассона розподілу:</h2>"); ImportAndExportFiles.WriteText("Перевірка гіпотези про розподіл випадкової величини за законом Пуассона розподілу:"); ImportAndExportFiles.WriteHTML("<h3>Результати обчислень:</h3>"); ImportAndExportFiles.WriteText("Результати обчислень:\n"); double X = GetSampleMean(), S2 = GetSampleVariance(); int N = GetSampleSize(); ImportAndExportFiles.WriteHTML("N = " + N + "</br>"); ImportAndExportFiles.WriteText("N = " + N); ImportAndExportFiles.WriteHTML("X = " + Math.Round(X, 4) + "</br>"); ImportAndExportFiles.WriteText("X = " + Math.Round(X, 4)); ImportAndExportFiles.WriteHTML("S2 = " + Math.Round(S2, 4) + "</br>"); ImportAndExportFiles.WriteText("S2 = " + Math.Round(S2, 4)); double lambda = (X + S2) / 2; ImportAndExportFiles.WriteHTML("lambda = " + Math.Round(lambda, 4) + "</br></br>"); ImportAndExportFiles.WriteText("lambda = " + Math.Round(lambda, 4) + "\n"); //Обчислення теоретичних ймовірностей, що будуть заноситися в окремий список данних. ImportAndExportFiles.WriteHTML("<table border=\"1\" style=\"width:90%;\">"); ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>[ai; ai+1]</td>"); var str = "\"[ai; ai+1]\""; foreach (var i in Row.Values) { ImportAndExportFiles.WriteHTML("<td>(" + i.a + "; " + i.b + ")</td>"); str += ";\"(" + i.a + "; " + i.b + ")\""; } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>ni</td>"); str = "ni"; foreach (var i in Row.Values) { ImportAndExportFiles.WriteHTML("<td>" + i.n + "</td>"); str += ";" + i.n; } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); var TempCalculation = new List <double>(); //pi = [exp(-lam)*pow(lam, k)]/k! foreach (var i in Row.Values) { TempCalculation.Add((Math.Exp(-lambda) * Math.Pow(lambda, i.x)) / Functions.Factorial(Convert.ToInt32(i.x))); } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>pi</td>"); str = "pi"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); //ni=n*pi for (var i = 0; i < TempCalculation.Count; i++) { TempCalculation[i] = TempCalculation[i] * N; } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>ni = pi * n</td>"); str = "ni = pi * n"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); for (var i = 0; i < TempCalculation.Count; i++) { TempCalculation[i] = Math.Pow(Row.Values[i].n - TempCalculation[i], 2) / TempCalculation[i]; } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>((ni-ni')^2)/ni'</td>"); str = "((ni-ni')^2)/ni'"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteHTML("</table>"); ImportAndExportFiles.WriteText(str); double Hi2 = 0; foreach (var i in TempCalculation) { Hi2 += i; } ImportAndExportFiles.WriteHTML("</br>Hi2 = " + Math.Round(Hi2, 4)); ImportAndExportFiles.WriteText("Hi2 = " + Math.Round(Hi2, 4)); double Hi2Crit = GetHi2Crit(2); ImportAndExportFiles.WriteHTML("</br>Hi2Crit = " + Math.Round(Hi2Crit, 4)); ImportAndExportFiles.WriteText("Hi2Crit = " + Math.Round(Hi2Crit, 4)); if (Hi2 < Hi2Crit) { ImportAndExportFiles.WriteHTML("</br><h3>Гіпотеза про розподіл випадкової величини за законом Пуассона приймається.</h3>"); ImportAndExportFiles.WriteText("Гіпотеза про розподіл випадкової величини за законом Пуассона приймається."); } else { ImportAndExportFiles.WriteHTML("</br><h3>Гіпотеза про розподіл випадкової величини за законом Пуассона не приймається.</h3>"); ImportAndExportFiles.WriteText("Гіпотеза про розподіл випадкової величини за законом Пуассона не приймається."); } ImportAndExportFiles.WriteHTML("</body></html>"); }
//Перевірка гіпотези про нормальний закон public static void CheckNormalLaw() { ImportAndExportFiles.Clear(); ImportAndExportFiles.WriteHTML("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/></head><body>"); ImportAndExportFiles.WriteHTML("<h2>Перевірка гіпотези про розподіл випадкової величини за нормальним законом розподілу:</h2>"); ImportAndExportFiles.WriteText("Перевірка гіпотези про розподіл випадкової величини за нормальним законом розподілу:"); ImportAndExportFiles.WriteHTML("<h3>Результати обчислень:</h3>"); ImportAndExportFiles.WriteText("Результати обчислень:\n"); double X = GetSampleMean(), S = Math.Sqrt(GetSampleVariance()); int N = GetSampleSize(); ImportAndExportFiles.WriteHTML("N = " + N + "</br>"); ImportAndExportFiles.WriteText("N = " + N); ImportAndExportFiles.WriteHTML("X = " + Math.Round(X, 4) + "</br>"); ImportAndExportFiles.WriteText("X = " + Math.Round(X, 4)); ImportAndExportFiles.WriteHTML("S = " + Math.Round(S, 4) + "</br></br>"); ImportAndExportFiles.WriteText("S = " + Math.Round(S, 4) + "\n"); //Обчислення теоретичних ймовірностей, що будуть заноситися в окремий список данних. ImportAndExportFiles.WriteHTML("<table border=\"1\" style=\"width:90%;\">"); ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>[ai; ai+1]</td>"); var str = "\"[ai; ai+1]\""; foreach (var i in Row.Values) { ImportAndExportFiles.WriteHTML("<td>(" + i.a + "; " + i.b + ")</td>"); str += ";\"(" + i.a + "; " + i.b + ")\""; } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>ni</td>"); str = "ni"; foreach (var i in Row.Values) { ImportAndExportFiles.WriteHTML("<td>" + i.n + "</td>"); str += ";" + i.n; } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); var TempCalculation = new List <double>(); if (Row.Values[0].a == Row.Values[0].x) { //pi = fi(...) foreach (var i in Row.Values) { TempCalculation.Add((1 / (S * Math.Sqrt(2 * Math.PI))) * Math.Exp(-Math.Pow(i.x - X, 2) / (2 * S * S))); } } else { //pi = Ф[(b-X)/S] - Ф[(a-X)/S] foreach (var i in Row.Values) { TempCalculation.Add(Functions.Laplase((i.b - X) / S) - Functions.Laplase((i.a - X) / S)); } } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>pi</td>"); str = "pi"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); //ni=n*pi for (var i = 0; i < TempCalculation.Count; i++) { TempCalculation[i] = TempCalculation[i] * N; } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>ni = pi * n</td>"); str = "ni = pi * n"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteText(str); //Hi2 for (var i = 0; i < TempCalculation.Count; i++) { TempCalculation[i] = Math.Pow(Row.Values[i].n - TempCalculation[i], 2) / TempCalculation[i]; } ImportAndExportFiles.WriteHTML("<tr>"); ImportAndExportFiles.WriteHTML("<td>((ni-ni')^2)/ni'</td>"); str = "((ni-ni')^2)/ni'"; for (var i = 0; i < TempCalculation.Count; i++) { ImportAndExportFiles.WriteHTML("<td>" + Math.Round(TempCalculation[i], 4) + "</td>"); str += ";" + Math.Round(TempCalculation[i], 4); } ImportAndExportFiles.WriteHTML("</tr>"); ImportAndExportFiles.WriteHTML("</table>"); ImportAndExportFiles.WriteText(str); double Hi2 = 0; foreach (var i in TempCalculation) { Hi2 += i; } ImportAndExportFiles.WriteHTML("</br>Hi2 = " + Math.Round(Hi2, 4)); ImportAndExportFiles.WriteText("Hi2 = " + Math.Round(Hi2, 4)); double Hi2Crit = GetHi2Crit(2); ImportAndExportFiles.WriteHTML("</br>Hi2Crit = " + Math.Round(Hi2Crit, 4)); ImportAndExportFiles.WriteText("Hi2Crit = " + Math.Round(Hi2Crit, 4)); if (Hi2 < Hi2Crit) { ImportAndExportFiles.WriteHTML("</br><h3>Гіпотеза про розподіл випадкової величини за нормальним законом розподілу приймається.</h3>"); ImportAndExportFiles.WriteText("Гіпотеза про розподіл випадкової величини за нормальним законом розподілу приймається."); } else { ImportAndExportFiles.WriteHTML("</br><h3>Гіпотеза про розподіл випадкової величини за нормальним законом розподілу не приймається.</h3>"); ImportAndExportFiles.WriteText("Гіпотеза про розподіл випадкової величини за нормальним законом розподілу не приймається."); } ImportAndExportFiles.WriteHTML("</body></html>"); }