Руководство программиста

Программа предназначена для численного решение алгебраических уравнений, комбинированным методом хорд и касательных.

В программе содержится поля для ввода данных, поля для вывода данных, таблица и две кнопки решение, очистить.

Если не заполнить хоть одно значение, вылезет предупреждение.

После запуска программы будет происходить:

1) Выбор пункта меню.

2) Переход к основной части программы.

3) Ввод данных запроса

4) Обработка запроса

5) Выдача результатов решения на экран

6) Выход

Руководство оператора

Программа «Численное решение алгебраических уравнений. Метод касательных» предназначена для автоматизированного решения методом касательных, и выдача ответа пользователю.

При запуске программы выводится форма, в которой осуществляется выбор метода численного решение алгебраических уравнений, имеющая следующий вид: руководство программиста - student2.ru

При выборе метода выводится форма имеющая следующий вид:

руководство программиста - student2.ru

Форма содержит семь полей для ввода данных выделено оваломи, и одно поле для вывода ответа выдилено прямоугольником

руководство программиста - student2.ru

Если не вести хоть одно поля для ввода данных и нажать на решение появиться предупреждение, имеющий следующий вид:

руководство программиста - student2.ru

При нажатии на кнопку “ОК” программа автоматически переходит обратно.

Когда ведены все значение нужна нажать кнопку решить.

Расчеты сводиться в таблицу и выводиться ответ:

руководство программиста - student2.ru

Так же есть кнопка очистить поля для набора значений.

Интерпретация и анализ результатов решения

Все результаты работы программы выводятся в той же форме в которой заводились значения, на которой расположено три панели, в которых выводятся введённые пользователем вводимые данные, ответ,и таблица, содержащие расчеты по запросу пользователя.

Заключение

Список используемой литературы

Лекции по предметам «Базы Данных» и «ТРПП», «Численные методы»

Приложения

Приложение 1

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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, jpeg, ExtCtrls,mmsystem;

type

TForm1 = class(TForm)

Image1: TImage;

Image2: TImage;

Image3: TImage;

Image4: TImage;

Image5: TImage;

procedure Image1Click(Sender: TObject);

procedure Image5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Image1Click(Sender: TObject);

begin

PlaySound('D:\learning\prog\Image\1.wav',0,SND_ASYNC);

end;

procedure TForm1.Image5Click(Sender: TObject);

begin

horcas.show;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, jpeg, ExtCtrls, ToolWin, ComCtrls;

type

Thorcas = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Button1: TButton;

Button2: TButton;

StringGrid1: TStringGrid;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit7: TEdit;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit8: TEdit;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

horcas: Thorcas;

x4,x5,x6,x7:real;

implementation

uses Unit1;

{$R *.dfm}

function f(var x:real):real;

begin

f:= x4*x*x*x+x5*x*x+x6*x+x7;

end;

function f1(var x:real):real;

begin

f1:= 3*x*x-x5*x+x6; {первая производная}

end;

function f2(var x:real):real;{вторая производная}

begin

f2:=6*x-x6;

end;

procedure Thorcas.FormCreate(Sender: TObject);

begin

with Stringgrid1 do

begin

RowCount:=2;

ColCount:=6;

DefaultColWidth:=100;

Width:=630;

Cells[0,0]:='Номер шага';

Cells[1,0]:='Xi левое';

Cells[2,0]:='Xi правое';

Cells[3,0]:='Xiп - Xiл';

Cells[4,0]:='F(Xiл)';

Cells[5,0]:='F(Xiп)';

end;

end;

procedure Thorcas.Button1Click(Sender: TObject);

var a,b:real;

e:real;

x1,x2:real;

k:integer;

begin

if (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') or (Edit5.Text='') or (Edit6.Text='') or (Edit7.Text='') or (Edit8.Text='') then

begin

Application.MessageBox('Для решение уравнения должно быть заполнено все значения','Предупреждение',mb_OK);

Exit;

end;

x4:=StrToFloat(Edit4.Text);

x5:=StrToFloat(Edit5.Text);

x6:=StrToFloat(Edit6.Text);

x7:=StrToFloat(Edit7.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit3.Text);

e:=StrToFloat(Edit8.Text);

k:=0;

StringGrid1.Cells[0,k+1]:=IntToStr(k);

StringGrid1.Cells[1,k+1]:=FloatToStrF(a,ffFixed,4,1);

StringGrid1.Cells[2,k+1]:=FloatToStrF(b,ffFixed,4,1);

StringGrid1.Cells[3,k+1]:=FloatToStrF(b-a,ffFixed,4,1);

StringGrid1.Cells[4,k+1]:=FloatToStrF(F(a),ffFixed,4,1);

StringGrid1.Cells[5,k+1]:=FloatToStrF(F(b),ffFixed,4,1);

repeat

k:=k+1;

if f1(a)*f2(a)>0 then

begin

x1:=a-(f(a)*(b-a))/(f(b)-f(a));

x2:=x1-(f(x1)*(b-x1)/(f(B)-f(x1)));

a:=x2;

end

else

begin

x1:=b-(f(b)*(b-a))/(f(b)-f(a));

x2:=x1-f(x1)*(x1-a)/(f(x1)-f(a));

b:=x2;

end;

StringGrid1.RowCount:=StringGrid1.RowCount+1;

StringGrid1.Cells[0,k]:=IntToStr(k-1);

StringGrid1.Cells[1,k]:=FloatToStrF(x1,ffFixed,7,4);

StringGrid1.Cells[2,k]:=FloatToStrF(x2,ffFixed,7,4);

StringGrid1.Cells[3,k]:=FloatToStrF(x2-x1,ffFixed,7,4);

StringGrid1.Cells[4,k]:=FloatToStrF(F(x1),ffFixed,7,4);

StringGrid1.Cells[5,k]:=FloatToStrF(F(x2),ffFixed,7,4);

until abs(x2-x1)<=e;

Edit1.Text:='Корень = '+FloatToStrF(x2,ffFixed,7,3);

end;

procedure Thorcas.Button2Click(Sender: TObject);

var

i:integer;

begin

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

Edit4.Text:='';

Edit5.Text:='';

Edit6.Text:='';

Edit7.Text:='';

Edit8.Text:='';

for i:=1 to StringGrid1.RowCount do

StringGrid1.Rows[i].Clear;

end;

end.

Приложение 2

Наши рекомендации