Новичок
Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.5.2012
Репутация: нет Всего: нет
|
| Код | public partial class Form1 : Form { static int m = 19; double[,] a; DataTable dtable; double l1; double l2 ; double mu1; double mu2; double mu2p; double del; double tetha12; double tetha21; double beta;
public Form1() { InitializeComponent(); reset(); dtable = new DataTable();
dtable.Columns.Add("Вероятность"); dtable.Columns.Add("Значение"); for (int i = 0; i < m+1; i++) dtable.Rows.Add(); dtable.Rows[0][0] = "P_001"; dtable.Rows[1][0] = "P_101"; dtable.Rows[2][0] = "P_121"; dtable.Rows[3][0] = "P_1*11"; dtable.Rows[4][0] = "P_1*31"; dtable.Rows[5][0] = "P_021"; dtable.Rows[6][0] = "P_011"; dtable.Rows[7][0] = "P_031"; dtable.Rows[8][0] = "P_11*1"; dtable.Rows[9][0] = "P_13*1"; dtable.Rows[10][0] = "P_002"; dtable.Rows[11][0] = "P_102"; dtable.Rows[12][0] = "P_122"; dtable.Rows[13][0] = "P_1*12"; dtable.Rows[14][0] = "P_1*32"; dtable.Rows[15][0] = "P_022"; dtable.Rows[16][0] = "P_012"; dtable.Rows[17][0] = "P_032"; dtable.Rows[18][0] = "P_11*2"; dtable.Rows[19][0] = "P_13*2"; //dataGridView1.RowCount = 19; //dataGridView1.ColumnCount = 2; dataGridView1.DataSource = dtable; lam1TB.Text="0,07"; lam2TB.Text="0,05"; mu1TB.Text="0,3"; mu2TB.Text="0,5"; mu2pTB.Text="0,2"; delTB.Text="0,1"; tetha12TB.Text="0,3"; tetha21TB.Text="0,3"; betaTB.Text = "0,6"; }
void reset() { a = new double[m + 1, m + 2]; for (int i = 0; i < m + 1; i++) for (int j = 0; j < m + 2; j++) a[i, j] = 0; for (int j = 0; j < m + 2; j++) a[m, j] = 1; }
void populate() { l1 = Convert.ToDouble(lam1TB.Text); l2 = Convert.ToDouble(lam2TB.Text); mu1 = Convert.ToDouble(mu1TB.Text); mu2 = Convert.ToDouble(mu2TB.Text); mu2p = Convert.ToDouble(mu2pTB.Text); del = Convert.ToDouble(delTB.Text); tetha12 = Convert.ToDouble(tetha12TB.Text); tetha21 = Convert.ToDouble(tetha21TB.Text); beta = Convert.ToDouble(betaTB.Text);
a[0, 0] = -(l1 + (1 - beta) * l2 + beta * l2); a[1, 1] = -(mu1 + (1 - beta) * l2 + beta * l2 + tetha12); a[2, 2] = -(del); a[3, 3] = -(mu1); a[4, 4] = -(mu1); a[5, 5] = -(del); a[6, 6] = -(mu2 + l1); a[7, 7] = -(mu2p + l1); a[8, 8] = -(mu2); a[9, 9] = -(mu2p); a[10, 10] = -(l1 + (1 - beta) * l2 + beta * l2); a[11, 11] = -(mu1 + (1 - beta) * l2 + beta * l2); a[12, 12] = -(del); a[13, 13] = -(mu1); a[14, 14] = -(mu1); a[15, 15] = -(del); a[16, 16] = -(mu2 + l1 + tetha21); a[17, 17] = -(mu2p + l1 + tetha21); a[18, 18] = -(mu2); //a[19, 19] = -(mu2p);
a[0, 1] = mu1; a[0, 6] = mu2; a[0, 7] = mu2p; a[1, 0] = l1; a[1, 8] = mu2; a[1, 9] = mu2p; a[2, 1] = (1 - beta) * l2; a[3, 1] = beta * l2; a[4, 2] = del; a[5, 0] = (1 - beta) * l2; a[6, 0] = beta * l2; a[6, 3] = mu1; a[6, 16] = tetha21; a[7, 4] = mu1; a[7, 5] = del; a[7, 17] = tetha21; a[8, 6] = l1; a[9, 7] = l1; a[10, 11] = mu1; a[10, 16] = mu2; a[10, 17] = mu2p; a[11, 1] = tetha12; a[11, 10] = l1; a[11, 18] = mu2; a[11, 19] = mu2p; a[12, 11] = (1 - beta) * l2; a[13, 11] = beta * l2; a[14, 12] = del; a[15, 10] = (1 - beta) * l2; a[16, 10] = beta * l2; a[16, 13] = mu1; a[17, 14] = mu1; a[17, 15] = del; a[18, 16] = l1; //a[19,17] = l1; }
private void button1_Click(object sender, EventArgs e) { reset(); populate();
GaussSLAU GSLAU = new GaussSLAU(); GSLAU.m = m; GSLAU.solve(a);
double kg = a[0, m + 1] + a[10, m + 1] + a[6, m + 1] + a[7, m + 1] + a[5, m + 1] + a[15, m + 1] + a[11, m + 1]; KgTB.Text = kg.ToString(); double ppot = a[6, m + 1] * (mu2 / (l1 + mu2)) + a[7, m + 1] * (mu2p / (l1 + mu2p)) + a[11, m + 1] * (mu1 / (l2 + mu1)) + a[16, m + 1] * (mu2 / (l1 + mu2 + tetha21)) + a[17, m + 1] * (mu2p / (l1 + mu2p+tetha21)) + a[11, m + 1] * (mu1 / (l2 + mu1 + tetha12)) + a[3, m + 1] + a[4, m + 1] + a[8, m + 1] + a[9, m + 1] + a[13, m + 1] + a[14, m + 1] + a[18, m + 1] + a[19, m + 1]; PpotTB.Text = ppot.ToString();
dtable.Rows[0][1] = a[0,m+1]; dtable.Rows[1][1] = a[1,m+1]; dtable.Rows[2][1] = a[2,m+1]; dtable.Rows[3][1] = a[3,m+1]; dtable.Rows[4][1] = a[4,m+1]; dtable.Rows[5][1] = a[5,m+1]; dtable.Rows[6][1] = a[6,m+1]; dtable.Rows[7][1] = a[7,m+1]; dtable.Rows[8][1] = a[8,m+1]; dtable.Rows[9][1] = a[9,m+1]; dtable.Rows[10][1] = a[10,m+1]; dtable.Rows[11][1] = a[11,m+1]; dtable.Rows[12][1] = a[12,m+1]; dtable.Rows[13][1] = a[13,m+1]; dtable.Rows[14][1] = a[14,m+1]; dtable.Rows[15][1] = a[15,m+1]; dtable.Rows[16][1] = a[16,m+1]; dtable.Rows[17][1] = a[17,m+1]; dtable.Rows[18][1] = a[18,m+1]; dtable.Rows[19][1] = a[19, m + 1]; }
}
class GaussSLAU { public int m; public void solve(double[,] a) { int i, j, k; for (k = 0; k <= m - 1; k++) { for (j = 0; j <= m + 1; j++) if (k != j) a[k, j] /= a[k, k]; a[k, k] = 1; for (i = k + 1; i <= m; i++) { for (j = 0; j <= m + 1; j++) if (k != j) a[i, j] -= a[i, k] * a[k, j]; a[i, k] = 0; } } k = m; for (j = 0; j <= m + 1; j++) if (k != j) a[k, j] /= a[k, k]; a[k, k] = 1;
for (k = m; k >= 1; k--) { for (i = k - 1; i >= 0; i--) { for (j = 0; j <= m + 1; j++) if (j != k) a[i, j] -= a[i, k] * a[k, j]; a[i, k] = 0; } }
} }
|
Это сообщение отредактировал(а) MeSasuke - 6.5.2012, 14:28
|