{[i] = psi1[i + 1] + psi1[i + 1] * (1 - u[i]) * h + psi2[i + 1] * u[i] * h;[i] = psi2[i + 1];}(int i = 0; i <= q - 1; i++)
{if (psi1[i + 1] >= psi2[i + 1])[i] = 0;u1[i] = 1;}_1[0] = 1;(int i = 0; i <= q - 1; i++)_1[i + 1] = x1_1[i] + (1 - u1[i]) * x1_1[i] * h;_1[0] = 0;(int i = 0; i <= q - 1; i++)_1[i + 1] = x2_1[i] + u1[i] * x1_1[i] * h;= -x2_1[q];(J1 < J){(Math.Abs(J1 - J) <= epsJ)(q, t, x1_1, x2_1, u1,J1);{J = J1;(int i = 0; i <= q; i++)
{x1[i] = x1_1[i];[i] = x2_1[i];}(int i = 0; i <= q - 1; i++)[i] = u1[i];label; }Out(q, t, x1, x2, u,J);}void button2_Click(object sender, EventArgs e)
{ double T;= Convert.ToDouble(textBox2.Text);q;q = 1000;double epsJ;=0.0001;double h;= T / q;
double x1, x2, k1, k2, k3, k4, m1, m2, m3, m4, U;[] t = new double[q + 1];[] x1 = new double[q + 1];[] x2 = new double[q + 1];[] u = new double[q]; ;[] x1_1 = new double[q + 1];[] x2_1 = new double[q + 1];[] u1 = new double[q]; ;[] psi1 = new double[q + 1];[] psi2 = new double[q + 1];J, J1;t[0] = 0;[q] = 0; psi2[q] = 1;(int i = q - 1; i >= 1; i--)
{[i] = psi1[i + 1] + psi1[i + 1] *
(1 - u[i]) * h + psi2[i + 1] * u[i] * h;[i] = psi2[i + 1];}(int i = 0; i <= q - 1; i++)
{if (psi1[i + 1] >= psi2[i + 1])[i] = 0;u1[i] = 1;}_1[0] = 1;(int i = 0; i <= q - 1; i++)
k1 = x1_shtr(t, x1, alfa, U);= x1_shtr(t + tau / 2, x1 + tau / 4 * k1, alfa, U);= x1_shtr(t + tau / 2, x1 + tau / 2 * k2, alfa, U);= x1_shtr(t + tau, x1 + tau * k1 - 2 * tau * k2 + 2 ** k3, alfa, U);_1[i+1] = x1_1[i] + tau / 6 * (k1 + 2 * k2 + 2 * k3 + k4);}= t + tau;x2_1[0] = 0;(int i = 0; i <= q - 1; i++)
{
k1 = x1_shtr(t, x1, alfa, U);= x1_shtr(t + tau / 2, x1 + tau / 4 * k1, alfa, U);= x1_shtr(t + tau / 2, x1 + tau / 2 * k2, alfa, U);= x1_shtr(t + tau, x1 + tau * k1 - 2 * tau * k2 + 2 ** k3, alfa, U);_1[i+1] = x2_1[i] + tau / 6 * (k1 + 2 * k2 + 2 * k3 + k4);
}
J1 = -x2_1[q];(J1 < J){(Math.Abs(J1 - J) <= epsJ)(q, t, x1_1, x2_1, u1,J1);{J = J1;(int i = 0; i <= q; i++)
{x1[i] = x1_1[i];[i] = x2_1[i];}(int i = 0; i <= q - 1; i++)[i] = u1[i];label; }Out(q, t, x1, x2, u,J);
//ТОЧНОЕ РЕШЕНИЕ 1= 0; k = 0;(t < T){if ((t >= 0) && (t <= (T - 2 / alfa)))
{x1_shtr_tochnoe = alfa1 * Math.Exp(alfa * t);.Rows[k].Cells[2].Value =_shtr_tochnoe;= t + tau;++; chart1.Series[1].Points.AddXY(t,_shtr_tochnoe);}{_shtr_tochnoe = alfa1 * Math.Exp(alfa * T - 2);.Rows[k].Cells[2].Value =_shtr_tochnoe;= t + tau;k++;.Series[1].Points.AddXY(t,_shtr_tochnoe);}}
//ТОЧНОЕ РЕШЕНИЕ 2t = 0; {q1 = q1 / 10; k++;}.Series.Clear();.Series.Clear().Series.Add("x1(t)");.Series.Add("x2(t)");.Series.Add("u(t)"); chart1.Series["x1(t)"].ChartType = SeriesChartType.Line; chart1.Series["x2(t)"].ChartType = SeriesChartType.Line;.Series["u(t)"].ChartType = SeriesChartType.Line;.Series["x1(t)"].BorderWidth = 2;.Series["x2(t)"].BorderWidth = 2;.Series["u(t)"].BorderWidth = 2;(int i = 0; i <= q; i++){.Series["x1(t)"].Points.AddXY(t[i], x1[i]); chart1.Series["x2(t)"].Points.AddXY(t[i], x2[i]); }(int i = 0; i <= q - 1; i++).Series["u(t)"].Points.AddXY(t[i], u1[i]);.Text = Convert.ToString(J1);[] row = new string[5];[0] = "q";[1] = "t"; row[2] = "x(t)";[3] = "y(t)";[4] = "u(t)";.ColumnCount = 5;.RowCount = 1;.Rows.Add(row);(int i = 0; i <= q; i++){[0] = i.ToString();[1] = Math.Round(t[i], k).ToString();[2] = x1[i].ToString();[3] = x2[i].ToString();(i != q)
{row[4] = u1[i].ToString();}
{row[4] = "";}.Rows.Add(row);}}
double x1_shtr(double t, double x1,double alfa,double u)
{ return x1 * alfa*u}x2_shtr(double t, double x1, double alfa, double u)
{return x1 *(1-u)*alfa;}
private void button1_Click(object sender, EventArgs e)
{ double T;= Convert.ToDouble(textBox2.Text);q;q = 1000;double epsJ;=0.0001;double h;= T / q;[] t = new double[q + 1];[] x1 = new double[q + 1];[] x2 = new double[q + 1];[] u = new double[q]; ;[] x1_1 = new double[q + 1];[] x2_1 = new double[q + 1];(int i = 0; i <= q - 1; i++)[i + 1] = t[i] + h;(int i = 0; i <= q - 1; i++)[i] = 0.5;[0] = 1;(int i = 0; i <= q - 1; i++)
{
k1 = x1_shtr(t, x1[i], alfa, U[i]);= x1_shtr(t + tau / 3, x1[i] + tau / 3 * k1, alfa, U[i]);= x1_shtr(t + 2*tau / 3, x1[i] + 2*tau / 3 * k2, alfa, U[i]);[i+1] = x1[i] + tau / 4 * (k1 + 3 * k3);= t + tau;
}[0] = 0;(int i = 0; i <= q - 1; i++)
{
k1 = x2_shtr(t, x1[i], alfa, U[i]);= x2_shtr(t + tau / 3, x1[i] + tau / 3 * k1, alfa, U[i]);= x2_shtr(t + 2*tau / 3, x1[i] + 2*tau / 3 * k2, alfa, U[i]);[i+1] = x2[i] + tau / 4 * (k1 + 3 * k3);
}
J = -x2[q];label:[q] = 0; psi2[q] = 1;(int i = q - 1; i >= 1; i--)
{[i] = psi1[i + 1] + psi1[i + 1] * (1 - u[i]) * h + psi2[i + 1] * u[i] * h;[i] = psi2[i + 1];}(int i = 0; i <= q - 1; i++)
{if (psi1[i + 1] >= psi2[i + 1])[i] = 0;u1[i] = 1;}_1[0] = 1;(int i = 0; i <= q - 1; i++)
{
k1 = x1_shtr(t, x1[i]_1, alfa, U[i]);= x1_shtr(t + tau / 3, x1[i]_1 + tau / 3 * k1, alfa, U[i]);= x1_shtr(t + 2*tau / 3, x1[i]_1 + 2*tau / 3 * k2, alfa, U[i]);_1[i+1] = x1_1[i] + tau / 4 * (k1 + 3 * k3);x2_1[0] = 0;(int i = 0; i <= q - 1; i++)
{
k1 = x2_shtr(t, x1[i], alfa, U[i]);= x2_shtr(t + tau / 3, x1[i] + tau / 3 * k1, alfa, U[i]);= x2_shtr(t + 2*tau / 3, x1[i] + 2*tau / 3 * k2, alfa, U[i]);_1[i+1] = x2_1[i] + tau / 4 * (k1 + 3 * k3);
}
J1 = -x2_1[q];(J1 < J){(Math.Abs(J1 - J) <= epsJ)(q, t, x1_1, x2_1, u1,J1);{J = J1;(int i = 0; i <= q; i++)
{x1[i] = x1_1[i];[i] = x2_1[i];}(int i = 0; i <= q - 1; i++)[i] = u1[i];; }
x2[i+1] = x2[i] + tau / 6 * (k1 + 2 * k2 + 2 * k3 + k4);= t + tau;
}
J = -x2[q];label:
k = 0;
//погрешность между точным и
численным решением х1*max = Math.Abs(Convert.(dataGridView1.Rows[0].Cells[2].Value)
Convert.ToDouble(dataGridView1.Rows[0].Cells[0].));(int i = 1; i < n; i++){if (max < (Math.Abs(Convert
.ToDouble(dataGridView1.Rows[i]}