АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Блок схемы программы

Читайте также:
  1. II. Основные цели и задачи Программы, срок и этапы ее реализации, целевые индикаторы и показатели
  2. II. Требования к структуре образовательной программы дошкольного образования и ее объему
  3. VI. Ожидаемые результаты реализации Программы
  4. Аксонометрические схемы систем водоснабжения
  5. Анализ атрибутов во время выполнения программы
  6. Анализ классической схемы равновесия.
  7. БАЗОВЫЕ СХЕМЫ ВВЕДЕНИЯ ПРИКОРМОВ
  8. Базовые схемы логических элементов .
  9. Бел модель перехода к рынку и ее основные черты. Гос-ые программы соц-эконом развития.
  10. Биполярные транзисторы. Устройство и принцип действия. Схемы включения транзистора .
  11. Блок схемы для каждого метода решения

Цель работы

 

Исследование и реализация методов решения нелинейных уравнений с одним неизвестным.

 

Задание (1.6)

Задание состоит из двух основных частей, а именно:

· Отделения корня

· Уточнения корня

Функция, задающая уравнение:

 

В свою очередь, из курса математики мы помним, что уточнение корня можно произвести с помощью трёх методов:

· Метод деления отрезка пополам

· Метод Ньютона (метод касательных)

· Метод итераций (простых).

Краткая теория

Всякое уравнение с одним неизвестным может быть записано в виде: f(х)=0

Предполагаем, что f( х) — непрерывная функция. И задача решения такого уравнения сводится, таким образом, к поиску х, при котором f(х) обращается в нуль.

Нелинейные уравнения условно делятся на:

— алгебраические уравнения (f(х) - алгебраические функции)

— трансцендентные уравнения (тригонометрические, показательные, логарифмические и др.)

Методы решений нелинейных уравнений делят на:

прямые (когда корни получаются в виде конечной формулы)

итерационные (методы последовательных приближений)

Об итерационных методах и пойдет речь, (это и есть приближенные методы вычислений для решения нелинейных уравнений).

Поиск корня с помощью итерационного метода распадается на три этапа:

1) выбор отрезка [ а,b ], на котором имеется корень: по теореме Больцано – Коши, если f (а)*f (в)<0 (т. е. функция на разных концах отрезка имеет разные знаки), то существует с[a,b] и f(c) =0 (это — отделение корня)

2) выяснение того, что корень единственный: (это будет, если f(х) монотонна на [ a,b ], т. е. при f ' (х)>0 — монотонно возрастает, при f ' (х)<0 — монотонно убывает)

3) построение процесса, позволяющего сузить границы выделенного отрезка, то есть позволяющего найти приближенные значения корня с любой заданной точностью (это — уточнение корня)

 

Ход работы

|φ'(x)|<1;

φ(x)=f(x)*λ+x;

φ’(x)=f’(x)*λ+x;

-1<-λ(2sin(x)cos(x)+1)<+1, [0;1];

λ(2sin(x)cos(x)+1)>0, [0;1]; λ>0, [0;1];

λ(2sin(x)cos(x)+1)<2, [0;1];

λ<2/(2sin(x)cos(x)+1), [0;1]; λ<2/(sin(2x)+1), [0;1];

λ<1, [0;1];

положим λ=0,5

 

Блок схемы программы

Отделение корней:

Рисунок 1 – Отделение корней.


 

Метод деления отрезка пополам:

Рисунок 2 – Метод деления отрезка пополам.


Метод Ньютона:

Рисунок 3 – Метод Ньютона.


Метод итераций:

Рисунок 4 – Метод итераций.

 

 

Листинг программы:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Threading;

 

namespace nelin_ur

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

}

 

static int kol = 0;

static float[] XL = new float[10];

 

static float[] XP = new float[10];

 

float fun(float x)

{// функция, задающая уравнение

float y = (float)(Math.Pow(Math.Cos(x), 2) - x);

return (y);

}

 

float fun1(float x)

{//первая производная

float y = (-2) * (float)Math.Cos(x) * (float)Math.Sin(x) - 1;

return (y);

}

float fun2(float x)

{//вторая производная

float y = 2 * ((float)(Math.Pow(Math.Sin(x), 2)) - (float)(Math.Pow(Math.Cos(x), 2)));

return (y);

}

float fun3(float x)

{//для метода итераций

float Lambda;

if (((-2) * (float)Math.Cos(x) * (float)Math.Sin(x) - 1) < 0) Lambda = 0.5f;

else Lambda=-0.5f;

float y = x + Lambda * ((float)(Math.Pow(Math.Cos(x), 2)) - x);

return (y);

}

 

 

private void button1_Click(object sender, EventArgs e)

{

//ОТДЕЛЕНИЕ корня

label4.Text = "";

int dx = -50;

//берем с формы (с полосы прокрутки)

// число микросекунд milSec для задержки изображения

// тем самым как бы регулируется скорость выполнения

int milSec = hScrollBar3.Maximum + 10 - hScrollBar3.Value;

 

//задаем граф.режим

System.Drawing.Pen myPen = System.Drawing.Pens.Green;

System.Drawing.Graphics g

= System.Drawing.Graphics.

FromHwnd(tabPage1.Handle);

//РИСОВАНИЕ блок-схемы

g.DrawEllipse(myPen, 250 + dx, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black,

275 + dx, 12);

g.DrawLine(myPen, 300 + dx, 30, 300 + dx, 40);

g.DrawRectangle(myPen, 250 + dx, 40, 100, 20);

g.DrawString("ввод a,b,h", this.Font,

Brushes.Black, 265 + dx, 42);

g.DrawLine(myPen, 300 + dx, 60, 300 + dx, 70);

g.DrawRectangle(myPen, 250 + dx, 70, 100, 35);

g.DrawString("x1:=a; x2:=x1+h; \ny1:=f(x1)",

this.Font, Brushes.Black, 255 + dx, 72);

g.DrawLine(myPen, 300 + dx, 105, 300 + dx, 110);

g.DrawRectangle(myPen, 250 + dx, 110, 100, 20);

g.DrawString("x2<=b", this.Font,

Brushes.Black, 265 + dx, 112);

g.DrawLine(myPen, 250 + dx, 120, 240 + dx, 120);

g.DrawLine(myPen, 240 + dx, 120, 240 + dx, 140);

g.DrawEllipse(myPen, 201 + dx, 140, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 235 + dx, 142);

g.DrawLine(myPen, 350 + dx, 120, 370 + dx, 120);

g.DrawLine(myPen, 370 + dx, 120, 370 + dx, 140);

g.DrawRectangle(myPen, 330 + dx, 140, 100, 20);

g.DrawString("y2:=f(x2)", this.Font,

Brushes.Black, 345 + dx, 142);

g.DrawLine(myPen, 370 + dx, 160, 370 + dx, 170);

g.DrawRectangle(myPen, 330 + dx, 170, 100, 20);

g.DrawString("y1*y2 < 0", this.Font,

Brushes.Black, 345 + dx, 172);

g.DrawLine(myPen, 330 + dx, 180, 320 + dx, 180);

g.DrawLine(myPen, 320 + dx, 180, 320 + dx, 230);

g.DrawLine(myPen, 430 + dx, 180, 440 + dx, 180);

g.DrawLine(myPen, 440 + dx, 180, 440 + dx, 200);

g.DrawRectangle(myPen, 420 + dx, 200, 100, 20);

g.DrawString(" вывод x1, x2", this.Font,

Brushes.Black, 435 + dx, 202);

g.DrawLine(myPen, 320 + dx, 230, 470 + dx, 230);

g.DrawLine(myPen, 470 + dx, 220, 470 + dx, 230);

g.DrawLine(myPen, 380 + dx, 230, 380 + dx, 240);

g.DrawRectangle(myPen, 330 + dx, 240, 100, 35);

g.DrawString("y1:=y2; x1:=x2; \nx2:=x1+h",

this.Font, Brushes.Black, 335 + dx, 242);

g.DrawLine(myPen, 380 + dx, 275, 380 + dx, 285);

g.DrawLine(myPen, 380 + dx, 285, 530 + dx, 285);

g.DrawLine(myPen, 530 + dx, 285, 530 + dx, 108);

g.DrawLine(myPen, 530 + dx, 108, 300 + dx, 108);

//задаем стили закрашивания: brush - красным цветом,

// brush2 - назад белым

System.Drawing.Brush brush =

//gcnew

System.Drawing.Brushes.Red;

System.Drawing.Brush brush2 =

//gcnew

System.Drawing.Brushes.White;

 

float a, b, h;

a = float.Parse(textBox1.Text);

b = float.Parse(textBox2.Text);

h = float.Parse(textBox3.Text);

float x1 = a, x2 = x1 + h; float y1 = fun(x1), y2;

//Закрашивание Начало и Ввод

g.FillEllipse(brush, 250 + dx, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black,

275 + dx, 12);

Thread.Sleep(milSec); //задержка на указанное число микросекунд

g.FillEllipse(brush2, 250 + dx, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black,

275 + dx, 12);

g.DrawEllipse(myPen, 250 + dx, 10, 100, 20);

 

g.FillRectangle(brush, 250 + dx, 40, 100, 20);

g.DrawString("ввод a,b,h", this.Font,

Brushes.Black, 265 + dx, 42);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250 + dx, 40, 100, 20);

g.DrawString("ввод a,b,h", this.Font,

Brushes.Black, 265 + dx, 42);

g.DrawRectangle(myPen, 250 + dx, 40, 100, 20);

//Закрашивание x1=a...

g.FillRectangle(brush, 250 + dx, 70, 100, 35);

g.DrawString("x1:=a; x2:=x1+h; \ny1:=f(x1)",

this.Font, Brushes.Black, 255 + dx, 72);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250 + dx, 70, 100, 35);

g.DrawString("x1:=a; x2:=x1+h; \ny1:=f(x1)",

this.Font, Brushes.Black, 255 + dx, 72);

g.DrawRectangle(myPen, 250 + dx, 70, 100, 35);

 

while (x2 <= b)

{ //Закрашивание условия x2<=b

g.FillRectangle(brush, 250 + dx, 110, 100, 20);

g.DrawString("x2<=b", this.Font,

Brushes.Black, 265 + dx, 112);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250 + dx, 110, 100, 20);

g.DrawString("x2<=b", this.Font,

Brushes.Black, 265 + dx, 112);

g.DrawRectangle(myPen, 250 + dx, 110, 100, 20);

 

//Закрашивание y2:=f(x2)

g.FillRectangle(brush, 330 + dx, 140, 100, 20);

g.DrawString("y2:=f(x2)", this.Font,

Brushes.Black, 345 + dx, 142);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330 + dx, 140, 100, 20);

g.DrawString("y2:=f(x2)", this.Font,

Brushes.Black, 345 + dx, 142);

g.DrawRectangle(myPen, 330 + dx, 140, 100, 20);

 

y2 = fun(x2);

 

//закрашивание условия y1*y2<0

g.FillRectangle(brush, 330 + dx, 170, 100, 20);

g.DrawString("y1*y2 < 0", this.Font,

Brushes.Black, 345 + dx, 172);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330 + dx, 170, 100, 20);

g.DrawString("y1*y2 < 0", this.Font,

Brushes.Black, 345 + dx, 172);

g.DrawRectangle(myPen, 330 + dx, 170, 100, 20);

 

if (y1 * y2 < 0)

{

label4.Text = label4.Text +

x1.ToString() + " " +

x2.ToString() + "\n";

kol++;

XL[kol] = x1; XP[kol] = x2;

//Закрашивание "вывод x1,x2"

g.FillRectangle(brush, 420 + dx, 200, 100, 20);

g.DrawString(" вывод x1, x2", this.Font,

Brushes.Black, 435 + dx, 202);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 420 + dx, 200, 100, 20);

g.DrawString(" вывод x1, x2", this.Font,

Brushes.Black, 435 + dx, 202);

g.DrawRectangle(myPen, 420 + dx, 200, 100, 20);

// окно диалога (для вывода корня,

// остановки программы и запроса на продолжение)

MessageBox.Show("Следующий корень?", " Запрос ",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

 

}

//закрашивание y1:=y2...

g.FillRectangle(brush, 330 + dx, 240, 100, 35);

g.DrawString("y1:=y2; x1:=x2; \nx2:=x1+h",

this.Font, Brushes.Black, 335 + dx, 242);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330 + dx, 240, 100, 35);

g.DrawString("y1:=y2; x1:=x2; \nx2:=x1+h",

this.Font, Brushes.Black, 335 + dx, 242);

g.DrawRectangle(myPen, 330 + dx, 240, 100, 35);

 

y1 = y2; x1 = x2; x2 = x1 + h;

}

//Закрашивание "конец"

g.FillEllipse(brush, 201 + dx, 140, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 235 + dx, 142);

Thread.Sleep(milSec);

g.FillEllipse(brush2, 201 + dx, 140, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 235 + dx, 142);

g.DrawEllipse(myPen, 201 + dx, 140, 100, 20);

 

}

 

private void button2_Click(object sender, EventArgs e)

{

//метод БИСЕКЦИЙ

label7.Text = "";

//РИСОВАНИЕ блок-схемы

System.Drawing.Pen myPen = System.Drawing.Pens.Green;

System.Drawing.Graphics g

= System.Drawing.Graphics.

FromHwnd(tabPage2.Handle);

g.DrawEllipse(myPen, 250, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black, 275, 12);

g.DrawLine(myPen, 300, 30, 300, 40);

g.DrawRectangle(myPen, 250, 40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265, 42);

g.DrawLine(myPen, 300, 60, 300, 70);

g.DrawRectangle(myPen, 250, 70, 100, 20);

g.DrawString("c:=(a+b)/2", this.Font,

Brushes.Black, 265, 72);

g.DrawLine(myPen, 300, 90, 300, 100);

g.DrawRectangle(myPen, 250, 100, 100, 20);

g.DrawString("f(a)*f(c)<0", this.Font,

Brushes.Black, 265, 102);

g.DrawLine(myPen, 250, 110, 240, 110);

g.DrawLine(myPen, 240, 110, 240, 130);

g.DrawRectangle(myPen, 210, 130, 90, 20);

g.DrawString("a:=c", this.Font,

Brushes.Black, 230, 132);

g.DrawLine(myPen, 350, 110, 360, 110);

g.DrawLine(myPen, 360, 110, 360, 130);

g.DrawRectangle(myPen, 310, 130, 90, 20);

g.DrawString("b:=c", this.Font,

Brushes.Black, 330, 132);

g.DrawLine(myPen, 355, 150, 355, 170);

g.DrawLine(myPen, 255, 150, 255, 170);

g.DrawLine(myPen, 255, 170, 355, 170);

g.DrawLine(myPen, 305, 170, 305, 180);

g.DrawRectangle(myPen, 250, 180, 100, 20);

g.DrawString(" |f(c)|>E", this.Font,

Brushes.Black, 265, 182);

g.DrawLine(myPen, 350, 190, 410, 190);

g.DrawLine(myPen, 410, 190, 410, 65);

g.DrawLine(myPen, 410, 65, 300, 65);

g.DrawLine(myPen, 250, 190, 240, 190);

g.DrawLine(myPen, 240, 190, 240, 210);

g.DrawRectangle(myPen, 190, 210, 100, 20);

g.DrawString("вывод c ", this.Font,

Brushes.Black, 215, 212);

g.DrawLine(myPen, 240, 230, 240, 240);

g.DrawEllipse(myPen, 190, 240, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 215, 242);

 

timer1.Enabled = false;

 

System.Drawing.Brush brush =

//gcnew

System.Drawing.Brushes.Red;

System.Drawing.Brush brush2 =

//gcnew

System.Drawing.Brushes.White;

int milSec = hScrollBar4.Maximum + 10 - hScrollBar4.Value;

 

for (int i = 1; i <= kol; i++)

{

//закрашивание "начало " "ввод a,b,E"

g.FillEllipse(brush, 250, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black, 275, 12);

Thread.Sleep(milSec);

g.FillEllipse(brush2, 250, 10, 100, 20);

g.DrawString("начало", this.Font, Brushes.Black, 275, 12);

g.DrawEllipse(myPen, 250, 10, 100, 20);

g.FillRectangle(brush, 250, 40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265, 42);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250, 40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265, 42);

g.DrawRectangle(myPen, 250, 40, 100, 20);

 

textBox4.Text = XL[i].ToString();

textBox5.Text = XP[i].ToString();

float eps = float.Parse(textBox6.Text);

float a = XL[i];

float b = XP[i];

float c;

 

do

{//закрашивание c:=(a+b)/2;

g.FillRectangle(brush, 250, 70, 100, 20);

g.DrawString("c:=(a+b)/2", this.Font,

Brushes.Black, 265, 72);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250, 70, 100, 20);

g.DrawString("c:=(a+b)/2", this.Font,

Brushes.Black, 265, 72);

g.DrawRectangle(myPen, 250, 70, 100, 20);

c = (a + b) / 2;

//закрашивание условия f(a)*f(c)<0

g.FillRectangle(brush, 250, 100, 100, 20);

g.DrawString("f(a)*f(c)<0", this.Font,

Brushes.Black, 265, 102);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250, 100, 100, 20);

g.DrawString("f(a)*f(c)<0", this.Font,

Brushes.Black, 265, 102);

g.DrawRectangle(myPen, 250, 100, 100, 20);

 

if (fun(a) * fun(c) < 0)

{

b = c;

//закрашивание b:=c

g.FillRectangle(brush, 310, 130, 90, 20);

g.DrawString("b:=c", this.Font,

Brushes.Black, 330, 132);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 310, 130, 90, 20);

g.DrawString("b:=c", this.Font,

Brushes.Black, 330, 132);

g.DrawRectangle(myPen, 310, 130, 90, 20);

 

}

else

{

a = c;

//закрашивание a:=c

g.FillRectangle(brush, 210, 130, 90, 20);

g.DrawString("a:=c", this.Font,

Brushes.Black, 230, 132);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 210, 130, 90, 20);

g.DrawString("a:=c", this.Font,

Brushes.Black, 230, 132);

g.DrawRectangle(myPen, 210, 130, 90, 20);

}

 

//закрашивание |f(с)|>E

g.FillRectangle(brush, 250, 180, 100, 20);

g.DrawString(" |f(c)|>E", this.Font,

Brushes.Black, 265, 182);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250, 180, 100, 20);

g.DrawString(" |f(c)|>E", this.Font,

Brushes.Black, 265, 182);

g.DrawRectangle(myPen, 250, 180, 100, 20);

} while (Math.Abs(a - b) > eps);

 

label7.Text = label7.Text + "Корень=" + c.ToString() + "\n";

//закрашивание "вывод c"

g.FillRectangle(brush, 190, 210, 100, 20);

g.DrawString("вывод c ", this.Font,

Brushes.Black, 215, 212);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 190, 210, 100, 20);

g.DrawString("вывод c ", this.Font,

Brushes.Black, 215, 212);

g.DrawRectangle(myPen, 190, 210, 100, 20);

//закрашивание конец

g.FillEllipse(brush, 190, 240, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 215, 242);

Thread.Sleep(milSec);

g.FillEllipse(brush2, 190, 240, 100, 20);

g.DrawString("конец", this.Font,

Brushes.Black, 215, 242);

g.DrawEllipse(myPen, 190, 240, 100, 20);

 

 

if (i < kol)

{

MessageBox.Show(

"Следующий корень?", " Запрос ",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

 

}

 

}

 

 

static bool myColor = false;

 

private void timer1_Tick_1(object sender, EventArgs e)

{

// водсветка (мерцание) для ввода точности у метода бисекций

if (myColor == false)

{

label8.BackColor=BackColor;

myColor = true;

}

else

{

label8.BackColor = BackColor;

myColor = false;

}

}

 

private void button3_Click(object sender, EventArgs e)

{

//метод НЬЮТОНА

label10.Text="";

//РИСОВАНИЕ блок-схемы

System.Drawing.Pen myPen = System.Drawing.Pens.Green;

System.Drawing.Graphics g

= System.Drawing.Graphics.

FromHwnd(tabPage3.Handle);

g.DrawEllipse(myPen,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

g.DrawLine(myPen,300,30,300,40);

g.DrawRectangle(myPen, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

g.DrawLine(myPen,300,60,300,70);

g.DrawRectangle(myPen, 250,70, 100, 20);

g.DrawString("f(a)*f''(a)>0", this.Font,

Brushes.Black, 265,72);

g.DrawLine(myPen,250,80,240,80);

g.DrawLine(myPen,240,80,240,100);

g.DrawRectangle(myPen,201,100,100,20);

g.DrawString("c:=b", this.Font,

Brushes.Black, 235,102);

g.DrawLine(myPen,350,80,370,80);

g.DrawLine(myPen,370,80,370,100);

g.DrawRectangle(myPen, 330,100, 100, 20);

g.DrawString("c:=a", this.Font,

Brushes.Black, 345,102);

g.DrawLine(myPen,240,120,240,140);

g.DrawLine(myPen,370,120,370,140);

g.DrawLine(myPen,240,140,370,140);

g.DrawLine(myPen,300,140, 300,150);

 

g.DrawLine(myPen,300,150,300,160);

g.DrawRectangle(myPen, 250,160, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,162);

g.DrawLine(myPen,250,170,240,170);

g.DrawLine(myPen,240,170,240,190);

g.DrawRectangle(myPen,201,190,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,192);

g.DrawLine(myPen,350,170,370,170);

g.DrawLine(myPen,370,170,370,190);

g.DrawRectangle(myPen, 330,190, 100, 20);

g.DrawString("c:=c-f(c)/f'(c)", this.Font,

Brushes.Black, 345,192);

g.DrawLine(myPen,240,210,240,230);

g.DrawLine(myPen,370,210,370,230);

g.DrawLine(myPen,370,230, 440, 230);

g.DrawLine(myPen,440, 230, 440, 150);

g.DrawLine(myPen,440, 150, 300,150);

g.DrawEllipse(myPen,200,230,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,232);

 

int milSec= hScrollBar1.Maximum+10 - hScrollBar1.Value;

 

for (int i=1; i<=kol; i++)

{

//закрашивание"начало"

System.Drawing.Brush brush=

Brushes.Red;

g.FillEllipse(brush,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

//п а у з а на указанные миллисекунды

//System.Threading.Thread.

Thread.Sleep(milSec);

System.Drawing.Brush brush2=

Brushes.White;

g.FillEllipse(brush2,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

g.DrawEllipse(myPen,250,10,100,20);

//закрашивание "ввод"

g.FillRectangle(brush, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,40, 100, 20);

g.DrawRectangle(myPen, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

 

textBox8.Text=XL[i].ToString();

textBox9.Text=XP[i].ToString();

float eps=float.Parse(textBox7.Text);

float a=XL[i];

float b=XP[i];

float c;

//закрашивание "условие f(a)*f''(a)>0 "

g.FillRectangle(brush, 250,70, 100, 20);

g.DrawString("f(a)*f''(a)>0", this.Font,

Brushes.Black, 265,72);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,70, 100, 20);

g.DrawRectangle(myPen, 250,70, 100, 20);

g.DrawString("f(a)*f''(a)>0", this.Font,

Brushes.Black, 265,72);

 

if (fun(a)*fun2(a)>0)

{c=a;

//закрашивание "c=a"

g.FillRectangle(brush, 330,100, 100, 20);

g.DrawString("c:=a", this.Font,

Brushes.Black, 345,102);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330,100, 100, 20);

g.DrawString("c:=a", this.Font,

Brushes.Black, 345,102);

g.DrawRectangle(myPen, 330,100, 100, 20);

}

else

{c=b;

//закрашивание "c=a"

g.FillRectangle(brush,201,100,100,20);

g.DrawString("c:=b", this.Font,

Brushes.Black, 235,102);

Thread.Sleep(milSec);

g.FillRectangle(brush2,201,100,100,20);

g.DrawString("c:=b", this.Font,

Brushes.Black, 235,102);

g.DrawRectangle(myPen,201,100,100,20);

}

do

{// закрашивание |f(c)|>E

g.FillRectangle(brush, 250,160, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,162);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,160, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,162);

g.DrawRectangle(myPen, 250,160, 100, 20);

 

//закрашивание c:=c-f(c)/f'(c)

g.FillRectangle(brush, 330,190, 100, 20);

g.DrawString("c:=c-f(c)/f'(c)", this.Font,

Brushes.Black, 345,192);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330,190, 100, 20);

g.DrawString("c:=c-f(c)/f'(c)", this.Font,

Brushes.Black, 345,192);

g.DrawRectangle(myPen, 330,190, 100, 20);

 

c=c-fun(c)/fun1(c);

 

} while (Math.Abs(fun(c))>eps);

//закрашивание "вывод с"

g.FillRectangle(brush,201,190,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,192);

Thread.Sleep(milSec);

g.FillRectangle(brush2,201,190,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,192);

g.DrawRectangle(myPen,201,190,100,20);

 

label10.Text=label10.Text+"Корень="+c.ToString()+"\n";

 

//закрашивание "конец"

g.FillEllipse(brush,200,230,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,232);

Thread.Sleep(milSec);

g.FillEllipse(brush2,200,230,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,232);

g.DrawEllipse(myPen,200,230,100,20);

 

if (i<kol)

{

MessageBox.Show(

"Следующий корень?"," Запрос ",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

 

}

 

}

 

private void button4_Click(object sender, EventArgs e)

{

//метод ИТЕРАЦИЙ

label14.Text="";

 

//РИСОВАНИЕ блок-схемы

System.Drawing.Pen myPen = System.Drawing.Pens.Green;

System.Drawing.Graphics g

= System.Drawing.Graphics.

FromHwnd(tabPage4.Handle);

g.DrawEllipse(myPen,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

g.DrawLine(myPen,300,30,300,40);

g.DrawRectangle(myPen, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

g.DrawLine(myPen,300,60,300,80);

// g.DrawLine(myPen,300,80,300,100);

g.DrawRectangle(myPen, 250,80, 100, 20);

g.DrawString("с:=(a+b)/2", this.Font,

Brushes.Black, 265,82);

g.DrawLine(myPen,300,100,300,140);

 

g.DrawRectangle(myPen, 250,140, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,142);

g.DrawLine(myPen,250,150,240,150);

g.DrawLine(myPen,240,150,240,170);

g.DrawRectangle(myPen,201,170,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,172);

g.DrawLine(myPen,350,150,370,150);

g.DrawLine(myPen,370,150,370,170);

g.DrawRectangle(myPen, 330,170, 100, 20);

g.DrawString("c:=f3(c) ", this.Font,

Brushes.Black, 345,172);

g.DrawLine(myPen,240,190,240,210);

g.DrawLine(myPen,370,190,370,210);

g.DrawLine(myPen,370,210, 440, 210);

g.DrawLine(myPen,440, 210, 440, 130);

g.DrawLine(myPen,440, 130, 300,130);

g.DrawEllipse(myPen,200,210,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,212);

int milSec= hScrollBar2.Maximum+10 - hScrollBar2.Value;

System.Drawing.Brush brush=

Brushes.Red;

System.Drawing.Brush brush2=

Brushes.White;

 

for (int i=1; i<=kol; i++)

{

//закрашивание начало

g.FillEllipse(brush,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

Thread.Sleep(milSec);

g.FillEllipse(brush2,250,10,100,20);

g.DrawString("начало", this.Font, Brushes.Black, 275,12);

g.DrawEllipse(myPen,250,10,100,20);

//закрашивание ввод a,b,E

g.FillRectangle(brush, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,40, 100, 20);

g.DrawString("ввод a,b,E", this.Font,

Brushes.Black, 265,42);

g.DrawRectangle(myPen, 250,40, 100, 20);

// закрашивание c:=(a+b)/2

g.FillRectangle(brush, 250,80, 100, 20);

g.DrawString("с:=(a+b)/2", this.Font,

Brushes.Black, 265,82);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,80, 100, 20);

g.DrawString("с:=(a+b)/2", this.Font,

Brushes.Black, 265,82);

g.DrawRectangle(myPen, 250,80, 100, 20);

 

 

textBox11.Text=XL[i].ToString();

textBox12.Text=XP[i].ToString();

float eps=float.Parse(textBox10.Text);

float a=XL[i];

float b=XP[i];

float c;

c=(a+b)/2;

do

{

// закрашивание условия f(c)>E

g.FillRectangle(brush, 250,140, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,142);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 250,140, 100, 20);

g.DrawString("|f(c)|>E", this.Font,

Brushes.Black, 265,142);

g.DrawRectangle(myPen, 250,140, 100, 20);

 

c=fun3(c);

 

//закрашивание c:=f3(c)

g.FillRectangle(brush, 330,170, 100, 20);

g.DrawString("c:=f3(c) ", this.Font,

Brushes.Black, 345,172);

Thread.Sleep(milSec);

g.FillRectangle(brush2, 330,170, 100, 20);

g.DrawString("c:=f3(c) ", this.Font,

Brushes.Black, 345,172);

g.DrawRectangle(myPen, 330,170, 100, 20);

 

} while (Math.Abs(fun(c))>eps);

//закрашивание вывод С

g.FillRectangle(brush,201,170,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,172);

Thread.Sleep(milSec);

g.FillRectangle(brush2,201,170,100,20);

g.DrawString("вывод c", this.Font,

Brushes.Black, 235,172);

g.DrawRectangle(myPen,201,170,100,20);

//закрашивание Конец

g.FillEllipse(brush,200,210,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,212);

Thread.Sleep(milSec);

g.FillEllipse(brush2,200,210,100,20);

g.DrawString("конец", this.Font, Brushes.Black,230,212);

g.DrawEllipse(myPen,200,210,100,20);

label14.Text=label14.Text+"Корень="+c.ToString()+"\n";

if (i<kol)

{

MessageBox.Show(

"Следующий корень?"," Запрос ",

MessageBoxButtons.OK, MessageBoxIcon.Warning);

}

 

}

 

}

 

private void tabPage1_Click(object sender, EventArgs e)

{

 

}

}

}

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.129 сек.)