- •Одесский национальный морской университет
- •1Идентификация обыкновенного дифференциального уравнения первого порядка
- •1.1 Исходные данные для идентификации
- •1.2 Методика идентификации
- •3. Моделирование работы динамической системы
- •3.1 Постановка задачи.
- •3.2 Приведение математической модели объекта к системе обыкновенных дифференциальных уравнений 1го порядка.
- •3.4 Выбор шага интегрирования для обеспечения устойчивого решения.
- •3 .6 Блок- схема алгоритма моделирования
- •3.7 Результаты моделирования.
- •1Использованные литературные источники
- •Приложение Приложение 1. Модули задачи идентификации.
- •Приложение 2. Модули задачи моделирования.
1Использованные литературные источники
Алабужев П.М.. Геронимус В.Б.. МинкевичЛ.М.. Шеховцов Б.А. Теория подобия и размерностей. Моделирование.-М.: Высшая школа. 1968.- 208 с.
Бронштейн И.Н.. Семендяев К.А. Справочник по математике для инженеров и учащихся втузовю -13-е изд.. исправленное.-М.: Наука. Гл.Ред. физ.-мат. лит.. 1986. -544 с.
Волков Е.А. Численнне методо: Учебное пособие. - М.: Наука. Главная редакция физико-математической литературьі. 1982. - 256 с.
Вычислительная техника и программирование. Часть 3 «Основы алгоритмизации. программирования и решения инженерньгх и зкономических задач на ЭВМ». Учебное пособие / Под общей редакцией проф. Меркта Р.В. - Одесса: ОГМУ.2001. -86 с.
Годунов С.К.. Рябенький В.С. Разностные схемы (введение в теорию). Учебное пособие. - М: Наука. 1973.- 400 с.
Кенту М. DELPHI 6 :для профессионалов. -СПб.:Питер. 2002. -1088 с.
Лебедев А.Н. Моделирование в научно-технических исследованиях. -М.: Радио и связь. 1989. -224 с.
Львовский Е.Н. Статистические метода построения змпирических формул: Учеб. пособие для втузов. - 2-е изд. .перераб. и доп. -М.:Вьісш. шк.. 1988. -239 с.
Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик. Фортран и Паскаль. - Томск: МП "Раско". 1991.-272 с.
Турчак Л.И. Основи численних методов: Учеб. Пособие. - М.: Наука. Гл.ред.физ.-мат. лит.. 1987. - 320 с.
Фаранов П.С. Программирование баз данньгх в DELPHI 6. Учебный курс. -СПб.:Питер. 2002. -374 с.
Методические указания разработанные кафедрой “Техническая кибернетика” и электронные документы – методуказания к лабораторным работам по курсам “Численные методы” и “Моделирование систем”.
Приложение Приложение 1. Модули задачи идентификации.
unit IdenMain;
interface
uses
Windows. Messages. SysUtils. Variants. Classes. Graphics. Controls. Forms.
Dialogs. StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button3: TButton;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Pproc1;
procedure TForm1.Button1Click(Sender: TObject);
var Ne.Ie.M.n.me.i.j : Integer;
T.X.Y.R.F : Vec;
C : array[0..10] of Real;
Ap.A : Mat;
f1.f2 : TextFile;
YY.s : Real;
Begin
if not(OpenDialog1.Execute) then Exit;
if not(SaveDialog1.Execute) then Exit;
AssignFile(f1.OpenDialog1.FileName);
AssignFile(f2.SaveDialog1.FileName);
ReSet(f1);
ReWrite(f2);
A[1.1]:=0;
A[1.2]:=0;
A[1.3]:=0;
A[2.1]:=0;
A[2.2]:=0;
A[2.3]:=0;
n:=4;
Readln(f1.Ne);
Writeln(f2.'Ne='.Ne:2);
for Ie:=1 to Ne do
begin
Readln(f1.me);
Writeln(f2.'me='.me);
for i:=1 to me do
begin
Readln(f1.T[i].X[i].Y[i]);
Writeln(f2.i:2.' '.T[i]:10:4.X[i]:10:4.Y[i]:10:4);
end;
Gram(me.Ap.T.Y.M.n);
Gauss(M.Ap.R.s);
for j:=0 to n do C[j]:=R[j+1];
for i:=1 to me do
begin
YY:=0;
for j:=1 to n do YY:=YY+j*C[j]*Power(T[i].j-1);
A[1.1]:=A[1.1]+sqr(YY);
A[1.2]:=A[1.2]-X[i]*YY;
A[1.3]:=A[1.3]-Y[i]*YY;
A[2.1]:=A[1.2];
A[2.2]:=A[2.2]+sqr(X[i]);
A[2.3]:=A[2.3]+Y[i]*X[i];
end;
end;
Gauss(2.A.F.s);
Writeln(f2.' B='.F[1]:10:4.' k='.f[2]:10:4);
CloseFile(f1);
CloseFile(f2);
Memo1.Lines.LoadFromFile(SaveDialog1.FileName);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.InitialDir := Application.ExeName;
SaveDialog1.InitialDir := Application.ExeName;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
end.
________________________________________________________________________________
unit Pproc1;
interface
type
Mat = array[1..20.1..21] of Real;
Vec = array[1..101] of Real;
Xfn = function(K1.K2.X:Real):Real;
procedure Gauss(N:Integer; A:Mat; var X:Vec; var S:Real);
procedure GRAM(N:Integer; var A:Mat; var X.Y:Vec; var M.K:Integer);
procedure Newton(var X:Real; K1.K2.E:Real; F_div_df:Xfn);
procedure Dix(A.B.K1.K2.E:Real; var X:Real; F:Xfn; var Kd:Integer);
function Power(Xx:Real; P:Integer):Real;
function Deg_Rad(Gr:Real):Real;
implementation
function Power(Xx:Real; P:Integer):Real;
var I:Integer; S:Real;
begin
if P=0 then Power:=1.0 else begin
S:=1.0;
for i:=1 to P do S:=S*Xx;
Power:=S;
end;
end;
function Deg_Rad(Gr:Real):Real;
begin Deg_rad:=Gr*Pi/180.;
end;
procedure Newton(var X:Real; K1.K2.E:Real; F_div_df : Xfn);
var D.S:Real;
begin
S:=X;
repeat
S:=S-F_div_df(K1.K2.X);
D:=Abs(S-X);
X:=S;
until D<=E
end;
procedure Dix(A.B.K1.K2.E:Real; var X:Real; F:Xfn; var Kd:Integer);
var
S.R:Real;
function Sgn(var X:Real):Integer;
begin Sgn:=0;
if X<0.0 then Sgn:=-1;
if X>0.0 then Sgn:=1;
end;
begin
Kd:=0;
Repeat
begin
X:=(A+B)/2.0; R:=F(K1.K2.X);
S:=F(K1.K2.A);
if Sgn(R)=Sgn(S) then A:=X else B:=X;
end;
Until abs(A-B)< E;
if((Abs(A-X)<=E) or (Abs(B-X)<=E)) and (Abs(R)>(2.*E)) then Kd:=1;
end;
procedure Gauss(N:Integer; A:Mat; var X:Vec; var S:Real);
Var
I.J.K.K1.N1:Integer;
R:real;
begin
N1:=N+1;
for K:=1 to N do
begin
K1:=K+1;
S:=A[K.K];
J:=K;
for I:=K1 to N do
begin
R:=A[I.K];
if Abs(R) > Abs(S) then begin
S:=R;
J:=I;
end;
end;
if S=0.0 then Exit;
if J<> K then for I:=K to N1 do
begin
R:=A[K.I];
A[K.I]:=A[J.I];
A[J.I]:=R
end;
for J:=K1 to N1 do A[K.J]:=A[K.J]/S;
for I:=K1 to N do
begin
R:=A[I.K];
for J:=K1 to N1 do A[I.J]:=A[I.J]-A[K.J]*R;
end;
end;
if S<>0.0 then for I:=N downto 1 do
begin
S:=A[I.N1];
for J:=I+1 to N do S:=S-A[I.J]*X[J];
X[I]:=S;
end;
end;
procedure Gram(N:Integer; var A:Mat; var X.Y:Vec; var M.K:Integer);
var
I1.Pp.I.J.L:Integer;
S:Real;
begin
M:=K+1;
for I:=1 to M do
begin
for J:=1 to M do
begin S:=0.0; Pp:=I+J-2;
for L:=1 to N do S:=S+Power(X[L].Pp);
A[I.J]:=S;
end;
I1:=I-1;
S:=0.0;
for L:=1 to N do S:=S+Y[L]*Power(X[L].I1);
A[I.M+1]:=S;
end;
end;
begin
end.