Руководство программиста
Программа предназначена для численного решение алгебраических уравнений, комбинированным методом хорд и касательных.
В программе содержится поля для ввода данных, поля для вывода данных, таблица и две кнопки решение, очистить.
Если не заполнить хоть одно значение, вылезет предупреждение.
После запуска программы будет происходить:
1) Выбор пункта меню.
2) Переход к основной части программы.
3) Ввод данных запроса
4) Обработка запроса
5) Выдача результатов решения на экран
6) Выход
Руководство оператора
Программа «Численное решение алгебраических уравнений. Метод касательных» предназначена для автоматизированного решения методом касательных, и выдача ответа пользователю.
При запуске программы выводится форма, в которой осуществляется выбор метода численного решение алгебраических уравнений, имеющая следующий вид:
При выборе метода выводится форма имеющая следующий вид:
Форма содержит семь полей для ввода данных выделено оваломи, и одно поле для вывода ответа выдилено прямоугольником
Если не вести хоть одно поля для ввода данных и нажать на решение появиться предупреждение, имеющий следующий вид:
При нажатии на кнопку “ОК” программа автоматически переходит обратно.
Когда ведены все значение нужна нажать кнопку решить.
Расчеты сводиться в таблицу и выводиться ответ:
Так же есть кнопка очистить поля для набора значений.
Интерпретация и анализ результатов решения
Все результаты работы программы выводятся в той же форме в которой заводились значения, на которой расположено три панели, в которых выводятся введённые пользователем вводимые данные, ответ,и таблица, содержащие расчеты по запросу пользователя.
Заключение
Список используемой литературы
Лекции по предметам «Базы Данных» и «ТРПП», «Численные методы»
Приложения
Приложение 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