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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

                         if (fa*fc)<0 then b11:=c1

                                      else a11:=c1;

                          goto Q;

                          end;

  Application.MessageBox(PChar('Ответ ='+FloatToStr((c1))+'    Количество шагов '+FloatToStr(s)),'Метод половинного деления',mb_OK);

end; 

procedure TForm1.Button3Click(Sender: TObject);

label R;

begin

e:=StrToFloat(Edit11.Text);

a11:=a1;

b11:=b1;

s:=1;

R:

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

fb:=a*(b11*b11*b11)+b*(b11*b11)+c*b11+d;

if abs(b11-a11)>e then  begin

                         a11:=b11-(b11-a11)*fb/(fb-fa);

                         b11:=a11-(a11-b11)*fa/(fa-fb);

                         s:=s+1;

                         goto R;

                        end;

Application.MessageBox(PChar('Ответ ='+FloatToStr(b11)+'    Количество шагов '+FloatToStr(s)),'Метод Хорд',mb_OK);

end; 

procedure TForm1.Button4Click(Sender: TObject);

label Z;

Label K;

begin

e:=StrToFloat(Edit11.Text);

fx:=3*a*(a1*a1)+b*a1+c;

fpx2:=(6*a*a1)+2*b;

s:=0;

if (fx*fpx2)<0 then x[0]:=a1

else x[0]:=b1;

fx:=a*(x[0]*x[0]*x[0])+b*(x[0]*x[0])+c*x[0]+d;

K: if (Abs(fx)>e) then begin

fx:=a*(x[s]*x[s]*x[s])+b*(x[s]*x[s])+c*x[s]+d;

fpx:=(3*a*(x[s]*x[s]))+(2*b*x[s])+c;

x[s+1]:=x[s]-fx/fpx;

  s:=s+1;

goto K;

end;

x[s]:=RoundTo(x[s],-6);

Application.MessageBox(PChar('Ваш результат t='+FloatToStr((x[s]))+'    Количество шагов '+FloatToStr(s+1)),'Метод Касательных',mb_OK);

end; 

procedure TForm1.Button5Click(Sender: TObject);

label Exi;

begin

e:=StrToFloat(Edit11.Text);

fx:=3*a*(a1*a1)+b*a1+c;

fpx2:=(6*a*a1)+2*b;

s:=0;

if (fx*fpx2)>0 then x0:=a1

else x0:=b1;

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

fb:=a*(b1*b1*b1)+b*(b1*b1)+c*b1+d;

             s:=1;

             fx:=a*(x0*x0*x0)+b*(x0*x0)+c*x0+d;

             fpx0:=(3*a*(x0*x0))+(2*b*x0)+c;

             fpx:=(3*a*(a1*a1))+(2*b*a1)+c;

  if (fb-fa=0) or (fx=0) or (fpx0=0) then begin

               Application.MessageBox(PChar('Ответ ='+FloatToStr(x0)+' Количечтво шагов 1'),'Комбинированный метод',mb_OK);

          goto Exi;

          end;

  x11:=x0-(fx/fpx0);

  x12:=a1-((b1-a1)*(fa/(fb-fa)));

  e1:=(x11+x12)/2;

  a11:=a1;

  b11:=b1;

   while  abs(x12-x11)>2*e do

    begin

    s:=s+1;

    a11:=x11;

    b11:=x12;

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

    fb:=a*(b11*b11*b11)+b*(b11*b11)+c*b11+d;

    fpx:=(3*a*(a11*a11))+(2*b*a11)+c;

    x11:= a11-(fa/fpx);

    x12:= a11-((b11-a11)*(fa/(fb-fa)));

    e1:=(x11+x12)/2;

end;

e1:=RoundTo(e1,-6);

Application.MessageBox(PChar('Ответ ='+FloatToStr(e1)+'  Количечтво шагов'+FloatToStr(s)),'Комбинированный метод',mb_OK);

Exi:

end; 

procedure TForm1.Edit1Change(Sender: TObject);

begin

Button2.Enabled:=false;

Button3.Enabled:=false;

Button4.Enabled:=false;

Button5.Enabled:=false;

Button6.Enabled:=false;

Button7.Enabled:=false;

panel1.visible:=false;

panel2.visible:=false;

panel3.visible:=false;

end; 

procedure TForm1.Edit2Change(Sender: TObject);

begin

Button2.Enabled:=false;

Button3.Enabled:=false;

Button4.Enabled:=false;

Button5.Enabled:=false;

Button6.Enabled:=false;

Button7.Enabled:=false;

panel1.visible:=false;

panel2.visible:=false;

panel3.visible:=false;

end; 

procedure TForm1.Edit3Change(Sender: TObject);

begin

Button2.Enabled:=false;

Button3.Enabled:=false;

Button4.Enabled:=false;

Button5.Enabled:=false;

Button6.Enabled:=false;

Button7.Enabled:=false;

panel1.visible:=false;

panel2.visible:=false;

panel3.visible:=false;

end; 

procedure TForm1.Edit4Change(Sender: TObject);

begin

Button2.Enabled:=false;

Button3.Enabled:=false;

Button4.Enabled:=false;

Button5.Enabled:=false;

Button6.Enabled:=false;

Button7.Enabled:=false;

panel1.visible:=false;

panel2.visible:=false;

panel3.visible:=false;

end; 

procedure TForm1.Button8Click(Sender: TObject);

begin

Application.MessageBox(PChar('Студенты руппы ПМ-4-1: Абрамов Сергей, Иванов Евгений, Кашина Анна, Короткова Марина'),'Создатели',mb_OK);

end;

end.  

Приложение 2

Результаты  работы программы

 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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