Автоматизация решения алгебраических уравнений. Метод половинного деления

Автор работы: Пользователь скрыл имя, 05 Декабря 2011 в 16:37, курсовая работа

Краткое описание

В курсовом проекте рассмотрена автоматизация решений алгебраических уравнений. Автоматизация решений алгебраических уравнений методом половинного деления основана на нахождении абсолютной погрешности приближения и выявлении условий окончания итерационного процесса на каком-либо шаге при вычислении корня с точностью.

Содержание

Введение
1.Общая часть
1.1 Постановка задачи
1.2 Описание математической модели
1.3 Обоснование и описание метода реализации
2.Специальная часть
2.1 Описание алгоритма
2.2 Описание программы
2.3 Руководство системного программиста
2.4 Руководство программиста
2.5 Руководство оператора
2.6 Интерпретация и анализ результатов
Заключение
Список используемой литературы
Приложение
1.Листинг программы
2.Результат решения программы 3.Контрольный пример

Прикрепленные файлы: 1 файл

Документ Microsoft Office Word (2).docx

— 150.63 Кб (Скачать документ)

  Panel3.Visible:=true;

end;

Exit:

krr1:=kr1;

krr2:=kr2;

end; 

procedure TForm1.Panel1Click(Sender: TObject);

begin

Button2.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button5.Enabled:=true;

Button7.Enabled:=true;

panel1.Color:=clYellow;

panel2.Color:=clWindow;

panel3.Color:=clWindow;

a1:=StrToFloat(edit5.Text);

b1:=StrToFloat(edit6.Text);

p1:=1;

p2:=0;

p3:=0;

end; 

procedure TForm1.Panel2Click(Sender: TObject);

begin

Button2.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button5.Enabled:=true;

Button7.Enabled:=true;

panel2.Color:=clYellow;

panel1.Color:=clWindow;

panel3.Color:=clWindow;

a1:=StrToFloat(edit7.Text);

b1:=StrToFloat(edit8.Text);

p1:=0;

p2:=1;

p3:=0;

end; 

procedure TForm1.Panel3Click(Sender: TObject);

begin

Button2.Enabled:=true;

Button3.Enabled:=true;

Button4.Enabled:=true;

Button5.Enabled:=true;

Button7.Enabled:=true;

panel3.Color:=clYellow;

panel2.Color:=clWindow;

panel1.Color:=clWindow;

a1:=StrToFloat(edit9.Text);

b1:=StrToFloat(edit10.Text);

p1:=0;

p2:=0;

p3:=1;

end; 

procedure TForm1.Button6Click(Sender: TObject);

Label GR;

label Rg;

begin

if (kr1=0) and (kr2=0) or (kr1=kr2) then  begin

                            Application.MessageBox(PChar('Границы графика не заданны,задайте их двойным и одинарным кликом по значениям отрезков'),'Построение графика',mb_OK);

                             goto Rg;

                             end;

Series1.Clear;

Series2.Clear;

Series3.Clear;

if kr1<kr2 then begin

kx:=kr1;

kx2:=kr2;

end;

if kr1>kr2 then begin

kx:=kr2;

kx2:=kr1;

end; 

GR:

kx:=kx+0.001;

ky:=a*(kx*kx*kx)+b*(kx*kx)+c*kx+d;

kfx:=3*a*(kx*kx)+2*b*kx+c;

kfx2:=(6*a*kx)+2*b;

Series1.AddXY(kx,ky,'',clRed);

Series2.AddXY(kx,kfx,'',clGreen);

Series3.AddXY(kx,kfx2,'',clAqua);

if kx<=kx2 then goto GR;

Rg:

end; 

procedure TForm1.Edit5Click(Sender: TObject);

begin

edit5.Color:=clLime;

kr1:=StrToFloat(edit5.text);

if edit6.Color<>clred then edit6.Color:=clWhite;

if edit7.Color<>clred then edit7.Color:=clWhite;

if edit10.Color<>clred then edit10.Color:=clWhite;

if edit8.Color<>clred then edit8.Color:=clWhite;

if edit9.Color<>clred then edit9.Color:=clWhite;

end; 

procedure TForm1.Edit6Click(Sender: TObject);

begin

edit6.Color:=clLime;

kr1:=StrToFloat(edit6.text);

if edit5.Color<>clred then edit5.Color:=clWhite;

if edit7.Color<>clred then edit7.Color:=clWhite;

if edit10.Color<>clred then edit10.Color:=clWhite;

if edit9.Color<>clred then edit9.Color:=clWhite;

if edit8.Color<>clred then edit8.Color:=clWhite;

end; 

procedure TForm1.Edit7Click(Sender: TObject);

begin

edit7.Color:=clLime;

kr1:=StrToFloat(edit7.Text);

if edit5.Color<>clred then edit5.Color:=clWhite;

if edit6.Color<>clred then edit6.Color:=clWhite;

if edit10.Color<>clred then edit10.Color:=clWhite;

if edit9.Color<>clred then edit9.Color:=clWhite;

if edit8.Color<>clred then edit8.Color:=clWhite;

end; 

procedure TForm1.Edit8Click(Sender: TObject);

begin

edit8.Color:=clLime;

kr1:=StrToFloat(edit8.text);

if edit5.Color<>clred then edit5.Color:=clWhite;

if edit7.Color<>clred then edit7.Color:=clWhite;

if edit10.Color<>clred then edit10.Color:=clWhite;

if edit9.Color<>clred then edit9.Color:=clWhite;

if edit6.Color<>clred then edit6.Color:=clWhite;

end; 

procedure TForm1.Edit9Click(Sender: TObject);

begin

edit9.Color:=clLime;

kr1:=StrToFloat(edit9.Text);

if edit5.Color<>clred then edit5.Color:=clWhite;

if edit7.Color<>clred then edit7.Color:=clWhite;

if edit10.Color<>clred then edit10.Color:=clWhite;

if edit6.Color<>clred then edit6.Color:=clWhite;

if edit8.Color<>clred then edit8.Color:=clWhite;

end; 

procedure TForm1.Edit10Click(Sender: TObject);

begin

edit10.Color:=clLime;

kr1:=StrToFloat(edit10.text);

if edit5.Color<>clred then edit5.Color:=clWhite;

if edit7.Color<>clred then edit7.Color:=clWhite;

if edit6.Color<>clred then edit6.Color:=clWhite;

if edit9.Color<>clred then edit9.Color:=clWhite;

if edit8.Color<>clred then edit8.Color:=clWhite;

end; 

procedure TForm1.Edit5DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit5.Text);

edit5.Color:=Clred;

if edit6.Color<>clLime then edit6.Color:=clWhite;

if edit7.Color<>clLime then edit7.Color:=clWhite;

if edit8.Color<>clLime then edit8.Color:=clWhite;

if edit9.Color<>clLime then edit9.Color:=clWhite;

if edit10.Color<>clLime then edit10.Color:=clWhite;

end; 

procedure TForm1.Edit6DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit6.Text);

edit6.Color:=Clred;

if edit5.Color<>clLime then edit5.Color:=clWhite;

if edit7.Color<>clLime then edit7.Color:=clWhite;

if edit8.Color<>clLime then edit8.Color:=clWhite;

if edit9.Color<>clLime then edit9.Color:=clWhite;

if edit10.Color<>clLime then edit10.Color:=clWhite;

end; 

procedure TForm1.Edit7DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit7.Text);

edit7.Color:=Clred;

if edit6.Color<>clLime then edit6.Color:=clWhite;

if edit5.Color<>clLime then edit5.Color:=clWhite;

if edit8.Color<>clLime then edit8.Color:=clWhite;

if edit9.Color<>clLime then edit9.Color:=clWhite;

if edit10.Color<>clLime then edit10.Color:=clWhite;

end; 

procedure TForm1.Edit8DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit8.Text);

edit8.Color:=Clred;

if edit6.Color<>clLime then edit6.Color:=clWhite;

if edit7.Color<>clLime then edit7.Color:=clWhite;

if edit5.Color<>clLime then edit5.Color:=clWhite;

if edit9.Color<>clLime then edit9.Color:=clWhite;

if edit10.Color<>clLime then edit10.Color:=clWhite;

end; 

procedure TForm1.Edit9DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit9.Text);

edit9.Color:=Clred;

if edit6.Color<>clLime then edit6.Color:=clWhite;

if edit7.Color<>clLime then edit7.Color:=clWhite;

if edit8.Color<>clLime then edit8.Color:=clWhite;

if edit5.Color<>clLime then edit5.Color:=clWhite;

if edit10.Color<>clLime then edit10.Color:=clWhite;

end; 

procedure TForm1.Edit10DblClick(Sender: TObject);

begin

kr2:=strtofloat(edit10.Text);

edit10.Color:=Clred;

if edit6.Color<>clLime then edit6.Color:=clWhite;

if edit7.Color<>clLime then edit7.Color:=clWhite;

if edit8.Color<>clLime then edit8.Color:=clWhite;

if edit9.Color<>clLime then edit9.Color:=clWhite;

if edit5.Color<>clLime then edit5.Color:=clWhite;

end; 

procedure TForm1.Button7Click(Sender: TObject);

label breed;

label pr;

label EX;

begin

if (p1=0) and (p2=0) and (p3=0) then begin

                                      Application.MessageBox(PChar('Границы отрезка не заданны. Просим вас кликнуть одной из панелек расположенных в левой части программы. Желтый цвет показывает что отрезок заданн'),'Проверка отрезка',mb_OK);

                                     goto EX;

                                     end;

e:=StrToFloat(Edit11.Text);

bolt:=0;

a11:=a1;

b11:=b1;

breed:

if b11>a11 then begin

fp11:=3*a*(b11*b11)+2*b*b11+c;

fp12:=(6*a*b11)+2*b;

b11:=b11-e;

fp21:=3*a*(b11*b11)+2*b*b11+c;

fp22:=(6*a*b11)+2*b;

if (fp11*fp21)<0  then begin

                        bolt:=1;

                        b11:=b11+e;

                        goto pr;

                        end;

if (fp12*fp22)<0  then begin

                        bolt:=1;

                        b11:=b11+e;

                        goto pr;

                        end;

goto breed;

end;

pr:

  if bolt=1 then  begin

                  Application.MessageBox(PChar('Отрезки заданы не верно. Отрезок будет изменён'),'Проверка отрезка',mb_OK);

                  if p1=1 then begin

                               edit5.Text:=FloatToStr(b11); 

                               end;

                  if p2=1 then begin

                               edit7.Text:=FloatToStr(b11); 

                               end;

                  if p3=1 then begin

                               edit9.Text:=FloatToStr(b11); 

                               end;

                  end;

  a1:=b11;

  if bolt=0 then   Application.MessageBox(PChar('Поздравляем!!! Отрезок задан верно'),'Проверка отрезка',mb_OK);

  EX:

  edit9.Color:=clWindow;

  edit10.Color:=clwindow;

  edit7.Color:=clWindow;

  edit8.Color:=clwindow;

  edit5.Color:=clWindow;

  edit6.Color:=clwindow; 

  kr1:=krr1;

  kr2:=krr2;

end; 

procedure TForm1.Button2Click(Sender: TObject);

Label Q;

begin

a11:=a1;

b11:=b1;

s:=1;

  e:=StrToFloat(Edit11.Text);

  Q:  if Abs(b11-a11)>e  then begin

                         c1:=(a11+b11)/2;

                         s:=s+1;

                         fc:=a*(c1*c1*c1)+b*(c1*c1)+c*c1+d;

                         fa:=a*(a11*a11*a11)+b*(a11*a11)+c*a11+d;

Информация о работе Автоматизация решения алгебраических уравнений. Метод половинного деления