Приветствую Вас Гость | RSS

ПРАКТИКУМ ПО ТЕХНОЛОГИЯМ СОЗДАНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ПРОЕКТОВ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ ЗАДАЧ В DELPHI

Четверг, 10.07.2025, 01:18
Меню сайта
Наш опрос
Оцените наш сайт?
Всего ответов: 118
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Модуль реализации краевых задач - основной, возмущенной, сопряженной

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;

Вход на сайт
Поиск
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Copyright MyCorp © 2025
Сделать бесплатный сайт с uCoz