Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MS_KP_Paskar.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
944 Кб
Скачать
☆

Использованные литературные источники

  1. Алабужев П.М.. Геронимус В.Б.. МинкевичЛ.М.. Шеховцов Б.А. Теория подобия и размерностей. Моделирование.-М.: Высшая школа. 1968.- 208 с.

  2. Бронштейн И.Н.. Семендяев К.А. Справочник по математике для инженеров и учащихся втузовю -13-е изд.. исправленное.-М.: Наука. Гл.Ред. физ.-мат. лит.. 1986. -544 с.

  3. Волков Е.А. Численнне методо: Учебное пособие. - М.: Наука. Главная редакция физико-математической литературьі. 1982. - 256 с.

  4. Вычислительная техника и программирование. Часть 3 «Основы алгоритмизации. программирования и решения инженерньгх и зкономических задач на ЭВМ». Учебное пособие / Под общей редакцией проф. Меркта Р.В. - Одесса: ОГМУ.2001. -86 с.

  5. Годунов С.К.. Рябенький В.С. Разностные схемы (введение в теорию). Учебное пособие. - М: Наука. 1973.- 400 с.

  6. Кенту М. DELPHI 6 :для профессионалов. -СПб.:Питер. 2002. -1088 с.

  7. Лебедев А.Н. Моделирование в научно-технических исследованиях. -М.: Радио и связь. 1989. -224 с.

  8. Львовский Е.Н. Статистические метода построения змпирических формул: Учеб. пособие для втузов. - 2-е изд. .перераб. и доп. -М.:Вьісш. шк.. 1988. -239 с.

  9. Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик. Фортран и Паскаль. - Томск: МП "Раско". 1991.-272 с.

  10. Турчак Л.И. Основи численних методов: Учеб. Пособие. - М.: Наука. Гл.ред.физ.-мат. лит.. 1987. - 320 с.

  11. Фаранов П.С. Программирование баз данньгх в DELPHI 6. Учебный курс. -СПб.:Питер. 2002. -374 с.

  12. Методические указания разработанные кафедрой “Техническая кибернетика” и электронные документы – методуказания к лабораторным работам по курсам “Численные методы” и “Моделирование систем”.

Приложение

unit MS;

interface

uses

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

Dialogs, StdCtrls, Grids,Math,ComObj;

type

TMainForm = class(TForm)

GroupBox1: TGroupBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit6: TEdit;

Label5: TLabel;

Edit7: TEdit;

Edit9: TEdit;

Label8: TLabel;

Edit11: TEdit;

Edit12: TEdit;

Label10: TLabel;

Label12: TLabel;

SaveDialog1: TSaveDialog;

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Edit10: TEdit;

Edit5: TEdit;

GroupBox2: TGroupBox;

Edit13: TEdit;

Label2: TLabel;

Label6: TLabel;

Label7: TLabel;

Label13: TLabel;

Edit14: TEdit;

Edit15: TEdit;

Label14: TLabel;

GroupBox3: TGroupBox;

Edit16: TEdit;

Edit17: TEdit;

Edit18: TEdit;

Label11: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Label18: TLabel;

GroupBox4: TGroupBox;

Edit19: TEdit;

Edit20: TEdit;

Edit21: TEdit;

GroupBox5: TGroupBox;

Label19: TLabel;

Label20: TLabel;

Label21: TLabel;

Memo1: TMemo;

GroupBox6: TGroupBox;

procedure FormCreate(Sender: TObject);

procedure Edit1Exit(Sender: TObject);

procedure Edit2Exit(Sender: TObject);

procedure Edit3Exit(Sender: TObject);

procedure Edit4Exit(Sender: TObject);

procedure Edit5Exit(Sender: TObject);

procedure Edit6Exit(Sender: TObject);

procedure Edit7Exit(Sender: TObject);

procedure Edit9Exit(Sender: TObject);

procedure Edit11Exit(Sender: TObject);

procedure Edit19Exit(Sender: TObject);

procedure EditKeyPress(Sender: TObject; var Key: Char);

procedure Edit10Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Edit13Exit(Sender: TObject);

procedure Edit14Exit(Sender: TObject);

procedure Edit15exit(Sender: TObject);

procedure Edit16Exit(Sender: TObject);

procedure Edit17Exit(Sender: TObject);

procedure Edit18Exit(Sender: TObject);

procedure Edit12Exit(Sender: TObject);

procedure Edit20Exit(Sender: TObject);

procedure Edit21Exit(Sender: TObject);

private

procedure Check(Ed: TEdit; var V: Double; Pres: Integer=3);

procedure SaveToFile(Fn:String);

public

end;

var

MainForm: TMainForm;

implementation

{$R *.dfm}

var

n : Integer;

A,B,K1,K2,Y0,F0,C,K3,K4,Z0,A0,A1,A2,A3,A4,B0,B1,B2,dt,E: Double;

T,X,G,F,Y,Z : array of Double;

procedure TMainForm.Button1Click(Sender: TObject);

var

i,j : Integer;

D1,D2,D3,D4,D5,D6,D7,D8,D9 : Double;

YY,FF,ZZ : Double;

begin

E:=0.000001;

SetLength(T,n+1);

SetLength(X,n+1);

SetLength(G,n+1);

SetLength(F,n+1);

SetLength(Y,n+1);

SetLength(Z,n+1);

{ Calculattion of D1..D7 }

D1:=(A-b*dt)/A;

D2:=-dt/A;

D3:=(dt*K1)/A;

D4:=(dt*K2)/A;

D5:=(C-dt)/C;

D6:=((K3+K4)*dt)/C;

D7:=(-K4*dt)/C;

D8:=(-(K3+K4)*dt)/C;

D9:=(K4*dt)/C;

Memo1.Lines.add('D1='+FloatToStrF(D1,ffFixed,6,6)+' D2='+FloatToStrF(D2,ffFixed,6,6)+' D3='+FloatToStrF(D3,ffFixed,6,6)+' D4='+FloatToStrF(D4,ffFixed,6,6)+

' D5='+FloatToStrF(D5,ffFixed,6,6)+' D6='+FloatToStrF(D6,ffFixed,6,6)+' D7='+FloatToStrF(D7,ffFixed,6,6)+' D8='+FloatToStrF(D8,ffFixed,6,6)+' D9='+FloatToStrF(D9,ffFixed,6,6));

for I := 0 to N do begin

T[i]:=dt*i;

X[i]:=A0+(A1*T[i])+(A2*T[i]*T[i])+(A3*T[i]*T[i]*T[i])+(A4*T[i]*T[i]*T[i]*T[i]);

G[i]:=B0+(B1*T[i])+(B2*T[i]*T[i]);

end;

F[0]:=F0;

Y[0]:=Y0;

Z[0]:=Z0;

for I := 1 to N do begin

{ Prediction }

Y[i]:=Y[i-1];

F[i]:=F[i-1];

Z[i]:=Z[i-1];

Repeat

j:=0;

FF:=F[i-1]*D1+Y[i-1]*D2+X[i-1]*D3+Z[i-1]*D4;

YY:=Y[i-1]+dt*F[i-1];

ZZ:=D5*Z[i-1]+D6*Y[i]+D7*Y[i-1]+D8*G[i]+D9*G[i-1];

if abs(F[i]-FF)>E then j:=j+1;

if abs(Y[i]-YY)>E then j:=j+1;

if abs(Z[i]-ZZ)>E then j:=j+1;

F[i]:=FF;

Y[i]:=YY;

Z[i]:=ZZ;

Until j=0;

end;

{ Output results}

StringGrid1.RowCount := N + 2;

StringGrid1.Cells[0,0] := 'I';

StringGrid1.Cells[1,0] := 'T';

StringGrid1.Cells[2,0] := 'X';

StringGrid1.Cells[3,0] := 'G';

StringGrid1.Cells[4,0] := 'F';

StringGrid1.Cells[5,0] := 'Y';

StringGrid1.Cells[6,0] := 'Z';

for I := 0 to n do begin

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

StringGrid1.Cells[1,I+1] := FloatToStrF(T[I],ffFixed,3,3);

StringGrid1.Cells[2,I+1] := FloatToStrF(X[I],ffFixed,8,8);

StringGrid1.Cells[3,I+1] := FloatToStrF(G[I],ffFixed,8,8);

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

StringGrid1.Cells[5,I+1] := FloatToStrF(Y[I],ffFixed,8,8);

StringGrid1.Cells[6,I+1] := FloatToStrF(Z[I],ffFixed,8,8);

end;

end;

procedure TMainForm.Button2Click(Sender: TObject);

begin

// if SaveDialog1.Execute then SaveToFile(SaveDialog1.FileName);

SaveToFile('1');

end;

procedure TMainForm.Button3Click(Sender: TObject);

begin

Close;

end;

procedure TMainForm.Check(Ed: TEdit; var V: Double; Pres: Integer=3);

begin

try

V := StrToFloat(Ed.Text);

Ed.Text := FloatToStrF(V,ffFixed,8,Pres);

except

on E: EConvertError do begin

ShowMessage('Неверное число');

Ed.SetFocus;

end;

end;

end;

procedure TMainForm.Edit10Change(Sender: TObject);

begin

n := StrToInt(Edit10.Text);

end;

procedure TMainForm.Edit11Exit(Sender: TObject);

begin

Check(Edit11,dt);

end;

procedure TMainForm.Edit12Exit(Sender: TObject);

begin

Check(Edit12,A1);

end;

procedure TMainForm.Edit19Exit(Sender: TObject);

begin

Check(Edit19,B0);

end;

procedure TMainForm.Edit13Exit(Sender: TObject);

begin

Check(Edit13,F0);

end;

procedure TMainForm.Edit14Exit(Sender: TObject);

begin

Check(Edit14,C);

end;

procedure TMainForm.Edit15exit(Sender: TObject);

begin

Check(Edit15,Z0);

end;

procedure TMainForm.Edit16Exit(Sender: TObject);

begin

Check(Edit16,A2);

end;

procedure TMainForm.Edit17Exit(Sender: TObject);

begin

Check(Edit17,A3);

end;

procedure TMainForm.Edit18Exit(Sender: TObject);

begin

Check(Edit18,A4);

end;

procedure TMainForm.Edit1Exit(Sender: TObject);

begin

Check(Edit1,A);

end;

procedure TMainForm.Edit20Exit(Sender: TObject);

begin

Check(Edit20,B1);

end;

procedure TMainForm.Edit21Exit(Sender: TObject);

begin

Check(Edit21,B2);

end;

procedure TMainForm.Edit2Exit(Sender: TObject);

begin

Check(Edit2,K4);

end;

procedure TMainForm.Edit3Exit(Sender: TObject);

begin

Check(Edit3,B);

end;

procedure TMainForm.Edit4Exit(Sender: TObject);

begin

Check(Edit4,K1);

end;

procedure TMainForm.Edit5Exit(Sender: TObject);

begin

Check(Edit5,K2);

end;

procedure TMainForm.Edit6Exit(Sender: TObject);

begin

Check(Edit6,K3);

end;

procedure TMainForm.Edit7Exit(Sender: TObject);

begin

Check(Edit7,A0);

end;

procedure TMainForm.Edit9Exit(Sender: TObject);

begin

Check(Edit9,Y0);

end;

procedure TMainForm.EditKeyPress(Sender: TObject; var Key: Char);

var

Kt : Char;

begin

Kt := Key;

Key := #0;

if Kt in ['0'..'9',#3,#8,'-'] then Key := Kt;

if Kt in ['.',','] then Key := DecimalSeparator;

if Kt = #13 then SelectNext(ActiveControl,True,True);

end;

procedure TMainForm.FormCreate(Sender: TObject);

begin

Memo1.Clear;

SaveDialog1.InitialDir := Application.ExeName;

end;

procedure TMainForm.SaveToFile(Fn: String);

var Excel: Variant;

i:Integer;

begin

Excel := CreateOleObject('Excel.Application');

Excel.Workbooks.Add;

Excel.Range['A1']:='i';

Excel.Range['B1']:='T';

Excel.Range['C1']:='X';

Excel.Range['D1']:='G';

Excel.Range['E1']:='F';

Excel.Range['F1']:='Y';

Excel.Range['G1']:='Z';

for i:=0 to n do begin

Excel.Range['A'+IntToStr(i+2)]:=i;

Excel.Range['B'+IntToStr(i+2)]:=T[i];

Excel.Range['C'+IntToStr(i+2)]:=X[i];

Excel.Range['D'+IntToStr(i+2)]:=G[i];

Excel.Range['E'+IntToStr(i+2)]:=F[i];

Excel.Range['F'+IntToStr(i+2)]:=Y[i];

Excel.Range['G'+IntToStr(i+2)]:=Z[i];

end;

Excel.Range('A1'+':G'+IntToStr(n+2)).Select;

Excel.Selection.HorizontalAlignment:=3;

Excel.ActiveWorkbook.Close;

Excel.Application.Quit;

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]