unit Uses_Progonka;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs,Progonka, Grids, StdCtrls, Buttons, Menus, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
StringGrid1: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
StringGrid2: TStringGrid;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Button5: TButton;
Button6: TButton;
Bevel1: TBevel;
Panel1: TPanel;
Label1: TLabel;
Label7: TLabel;
Label8: TLabel;
Bevel2: TBevel;
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Edit5Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
obj, outF: Progonka.TProg;
n, c: integer;
a, b, h: real;
am, bm, cm, dm, x, y, alfa, beta: array[0..1000] of real;
current: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
s: ShortString;
begin
{val(Edit5.Text, n, c);}
try
n:= StrToInt(Edit5.Text);
except
on EConvertError do ShowMessage('Ошибка в записи числа');
end;
begin
val(Edit5.Text, n, c);
val(Edit1.Text, a, c);
val(Edit2.Text, b, c);
Obj := Progonka.TProg.Create(a, b, n);
for i := 0 to n do
begin
cm[i] := obj.Ci(i);
bm[i] := obj.Bi(i);
am[i] := obj.Ai(i);
end;
for i := 0 to n do
for j := 0 to n do
begin
Str(0, s);
StringGrid1.Cells[i,j] := s;
end;
for i := 0 to n do
for j := 0 to n do
if i = j then
begin
str(obj.Ci(i):1:0, s);
StringGrid1.Cells[i,j] := s;
end;
for i := 0 to 5 do
for j := 0 to 5 do
if (i + 1) = j then
begin
str(obj.Bi(i):1:0, s);
StringGrid1.Cells[i,j] := s;
end;
for i := 0 to 5 do
for j := 0 to 5 do
if i = (j + 1) then
begin
str(obj.Ai(i):1:0, s);
StringGrid1.Cells[i,j] := s;
end ;
Edit5.Enabled:= False;
Label6.Enabled:=False;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i, j: integer;
s: string;
begin
h := (b-a)/n;
for i := 0 to n do
dm[i] := obj.DM1(x[i]);
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := obj.DM1(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
for i := 0 to n do
begin
str(x[i]:1:1, s);
StringGrid2.Cells[i, 0] := s;
str(y[i]:1:3, s);
StringGrid2.Cells[i, 1] := s;
end;
Edit5.Enabled:= False;
Label6.Enabled:=False;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i, j: integer;
s: string;
begin
h := (b-a)/n;
for i := 0 to n do
dm[i] := obj.DM2(x[i]);
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := obj.DM2(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
for i := 0 to n do
begin
str(x[i]:1:1, s);
StringGrid2.Cells[i, 0] := s;
str(y[i]:1:3, s);
StringGrid2.Cells[i, 1] := s;
end;
Edit5.Enabled:= False;
Label6.Enabled:=False;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i, j: integer;
s: string;
begin
h := (b-a)/n;
for i := 0 to n do
dm[i] := obj.DM3(x[i]);
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := obj.DM3(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
for i := 0 to n do
begin
str(x[i]:1:1, s);
StringGrid2.Cells[i, 0] := s;
str(y[i]:1:3, s);
StringGrid2.Cells[i, 1] := s;
end;
Edit5.Enabled:= False;
Label6.Enabled:=False;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, j: integer;
begin
n := 300;
h := (b-a)/n;
outF := Progonka.TProg.Create(a, b, n);
for i := 0 to n do
begin
cm[i] := outF.Ci(i);
bm[i] := outF.Bi(i);
am[i] := outF.Ai(i);
end;
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := outF.DM1(x[i]);
for i := 0 to n do
dm[i] := outF.DM1(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
outF.Show1(x, y);
Button1.Visible := false;
Button2.Visible := false;
Button3.Visible := false;
Button4.Visible := false;
StringGrid1.Visible := false;
StringGrid2.Visible := false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
var
i, j: integer;
begin
n := 300;
h := (b-a)/n;
outF := Progonka.TProg.Create(a, b, n);
for i := 0 to n do
begin
cm[i] := outF.Ci(i);
bm[i] := outF.Bi(i);
am[i] := outF.Ai(i);
end;
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := outF.DM2(x[i]);
for i := 0 to n do
dm[i] := outF.DM2(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
outF.Show2(x, y);
Button1.Visible := false;
Button2.Visible := false;
Button3.Visible := false;
Button4.Visible := false;
StringGrid1.Visible := false;
StringGrid2.Visible := false;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
var
i, j: integer;
begin
n := 300;
h := (b-a)/n;
outF := Progonka.TProg.Create(a, b, n);
for i := 0 to n do
begin
cm[i] := outF.Ci(i);
bm[i] := outF.Bi(i);
am[i] := outF.Ai(i);
end;
x[0]:=a;
for i:=1 to n-1 do
x[i]:=x[i-1]+h;
x[n]:=b;
for i := 0 to n do
dm[i] := outF.DM3(x[i]);
for i := 0 to n do
dm[i] := outF.DM3(x[i]);
val(Edit3.Text,y[0],c);
val(Edit4.Text,y[n],c);
alfa[1]:=0;
beta[1]:=0;
for i:=1 to n-1 do
begin
alfa[i+1]:=cm[i]/(bm[i]-am[i]*alfa[i]);
beta[i+1]:=(am[i]*beta[i]-dm[i])/(bm[i]-am[i]*alfa[i]);
end;
y[n]:=0;
for i:=n-1 downto 1 do
begin
y[i]:=alfa[i+1]*y[i+1]+beta[i+1];
end;
outF.Show3(x, y);
Button1.Visible := false;
Button2.Visible := false;
Button3.Visible := false;
Button4.Visible := false;
StringGrid1.Visible := false;
StringGrid2.Visible := false;
end;