예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            A = double.Parse(textBox1.Text);
            B = double.Parse(textBox2.Text);
            h = double.Parse(textBox3.Text);
            E = double.Parse(textBox4.Text);

            List <pair> dot = new List <pair>();; // правые значения точек где меняется знак

            dot = HalfDivision.SignumShange(A, B, h);

            for (int i = 0; i < dot.Count; i++)//вывод этих точек
            {
                label5.Text += ("[" + (dot[i].x - h) + "  " + dot[i].x + "] ");
            }
            label5.Text += "\n";
            //рисуем просто график
            //Graphic graph = new Graphic(A, B , dot[0].x - h, dot[0].x);
            //graph.Show();
            new_dots.Add(new pair(A, B));
            //теперь рассматриваем только первый подозрительный отрезок
            A = dot[0].x - h;
            B = dot[0].x;
            new_dots.Add(new pair(A, B));
            Accurate();

            label5.Text += ("[" + A + "  " + B + "] - приближенно");
        }
예제 #2
0
        public static void Accurate()
        {
            while (B - A > E) // пока точность не достгнута
            {
                // берем первый наш подозрительный отрезк
                double C = A + (B - A) / 2;                             // это его середина
                                                                        //смотрим правую и левую часть
                                                                        // где точка
                if (HalfDivision.SignumShange(A, C, (C - A)).Count > 0) //в левой
                {
                    B = C;
                }
                else// в правой
                {
                    A = C;
                }

                new_dots.Add(new pair(A, B));// добавили точку
            }
            Print(new_dots);
        }
예제 #3
0
파일: Graphic.cs 프로젝트: AlkSt/AllForYou
        private void Graphic_Shown(object sender, EventArgs e)
        {
            for (int i = 0; i < _dots.Count - 1; i++)
            {
                MessageBox.Show("Сдедующий щаг?");
                graf.Clear(BackColor);
                //Thread.Sleep(700);

                _begin = _dots[i].x;
                _end   = _dots[i].y;

                _left  = _dots[i + 1].x;
                _right = _dots[i + 1].y;

                double LastPoint = _end;
                int    x1, y1, x2, y2;
                double step = 0.01, x = _begin, y = 0;
                int    X = 1000, Y = 1000;
                int    x0 = this.ClientSize.Height / 2, y0 = this.ClientSize.Height / 2;
                while (HalfDivision.GetDot(_end) * Y + y0 > ClientSize.Height || _end * X + x0 > ClientSize.Width * 0.8)
                {
                    X -= 1; //x1 / (ClientSize.Width / 2);
                    Y -= 1; // y1 / (ClientSize.Width / 2);
                }
                pen.Color = BackColor;


                graf.DrawLine(pen, x0 * X, 0, y0, ClientSize.Height);
                graf.DrawLine(pen, 0, y0, ClientSize.Width, y0 * Y);
                pen.Width = 1;
                //for (int i = 0; i < ClientSize.Width/X; i++)
                //{
                //    graf.DrawLine(pen, x0 - 3, Y * i, x0 + 3, Y * i);
                //    graf.DrawLine(pen, X * i, y0 + 3, X * i, y0 - 3);

                //}
                y         = HalfDivision.GetDot(x);
                x1        = this.ClientSize.Height; // (int)(X * x + x0);
                y1        = this.ClientSize.Height; //(int)(-1 * Y * y + y0);
                pen.Width = 2;


                while (x < LastPoint)
                {
                    x += step;
                    y  = HalfDivision.GetDot(x);
                    x2 = (int)(x0 + x * X);
                    y2 = (int)(y0 - y * Y);
                    graf.DrawLine(pen, x1, y1, x2, y2);
                    x1 = x2;
                    y1 = y2;
                    if (x > _left && x < _right)
                    {
                        pen.Color = Color.Red;
                    }
                    else
                    {
                        pen.Color = Color.Black;
                    }
                    Console.WriteLine(x + " " + y);
                }
            }
        }