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 + "] - приближенно"); }
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); }
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); } } }