public void Compute_Success()
        {
            //Arrange
            //Устанавливаем сетку 3x3 с единичными начальными и граничными условиями
            //1 0 1
            //1 0 1
            //1 1 1
            var net = new MathNet2(2, 2, 1, 1);

            //Начальные и граничные условия условия
            for (var i = 0; i <= net.Width; i++)
            {
                net.Set(i, 0, 1);
                net.Set(0, i, 1);
                net.Set(net.Width, i, 1);
            }

            double Func(double x, double t) => x + t * 10;

            var method = new ExplicitMethod(Func);

            //Act
            method.Compute(net);

            //Assert
            Assert.Equal(2, net.Get(1, 1));
            Assert.Equal(11, net.Get(1, 2));
        }
Пример #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            int n = Convert.ToInt32(textBox1.Text);
            int m = Convert.ToInt32(textBox2.Text);
            int s = Convert.ToInt32(textBox3.Text);

            if (otherSeries == true)
            {
                chart1.Series["1"].Points.Clear();
                chart1.Series["2"].Points.Clear();
                chart1.Series["3"].Points.Clear();
                chart1.Series["4"].Points.Clear();
                chart1.Series["5"].Points.Clear();
                chart1.Series["6"].Points.Clear();
                chart1.Series["7"].Points.Clear();
                chart1.Series["8"].Points.Clear();
                chart1.Series["9"].Points.Clear();
                chart1.Series["10"].Points.Clear();
            }
            ThermalCondEq eq = new TestTask();

            if (radioButton4.Checked == true)
            {
                eq = new TestTask2();
            }
            SolvingThermalCondEq task = new ExplicitMethod(eq, n, m);;

            if (radioButton2.Checked == true)
            {
                task = new ImplicitMethod(eq, n, m);
            }
            if (radioButton1.Checked == true)
            {
                if (task.Tgrid.h >= task.Xgrid.h * task.Xgrid.h / 2.0)
                {
                    MessageBox.Show("Error!");
                    return;
                }
            }
            label5.Text = "k = " + task.Tgrid.h;
            label6.Text = "h = " + task.Xgrid.h;
            bool b = task.convergence();

            label4.Text = "Error = " + task.Norma();
            label8.Text = "h^2+k = " + (task.Xgrid.h * task.Xgrid.h + task.Tgrid.h).ToString();
            chart1.ChartAreas[0].AxisX.Minimum  = 0;
            chart1.ChartAreas[0].AxisX.Maximum  = 1;
            chart1.ChartAreas[0].AxisX.Interval = 0.2;
            chart1.Series[0].Points.Clear();
            chart1.Series[1].Points.Clear();
            for (int i = 0; i <= n; i++)
            {
                chart1.Series[1].Points.AddXY(task.Xgrid.points[i], eq.analiticRes(task.Xgrid.points[i], task.Tgrid.points[s]));
                chart1.Series[0].Points.AddXY(task.Xgrid.points[i], task.result[i, s]);
            }



            int tableI = Convert.ToInt32(textBox4.Text);
            int tableJ = Convert.ToInt32(textBox5.Text);

            dataGridView1.ColumnCount = n + 1;
            dataGridView1.RowCount    = tableJ - tableI + 1;
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                {
                    dataGridView1[j, i].Value = task.result[j, tableI + i];
                }
            }
        }