Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:3_теориЛеготкина / выч методы / RUNGA4
.PAS Uses
Crt;
{Type Real = Extended;}
Const
A = 1;
a0 = 1;
a1 = 6;
a2 = 2;
a3 = 5;
time = 100;
N = 200;
h = Time / N ;
omegaN = 2;
Nomega = 200;
homega = omegaN / Nomega;
Var
Fomega,
Ftime,
Ffunc : Text;
i, k : Longint;
omega,
k1,
k2,
k3,
k4,
tm,
zm, zm1,
ym, ym1,
xm, xm1 : Real;
Function f1(A,w,t,z,y,x : Real) : Real;
Begin
f1 := (A*sin(w*t) - a2 * z - a1 * y - a0 * x)/a3 ;
end;
Function f2(t,z : Real) : Real;
Begin
f2 := z;
end;
Function f3(t,y : Real) : Real;
Begin
f3 := y;
end;
Begin
clrscr;
Assign( Fomega, 'Omega.txt' );
Assign( Ftime, 'Time.txt' );
Assign( Ffunc, 'Function.txt ');
Rewrite( Fomega );
Rewrite( Ftime );
Rewrite( Ffunc );
Append( Fomega );
Append( Ftime );
Append( Ffunc );
For k := 0 to Nomega-1 Do
Begin
zm := 0;
ym := 0;
xm := 0;
omega := k*homega;
if k = 0 Then Write( Ffunc, xm : 7 :7, ' ' );
WriteLn( Fomega, omega : 7 :7, ' ' );
For i := 0 to N-1 do
Begin
tm := i * h;
if k = 0 then WriteLn( Ftime, tm : 7 : 7, ' ' );
k1 := f1( A, omega, tm, zm, ym, xm ) ;
k2 := f1( A, omega, tm + h/2 , zm + h*k1/2 , ym, xm ) ;
k3 := f1( A, omega, tm + h/2 , zm + h*k2/2 , ym, xm ) ;
k4 := f1( A, omega, tm + h , zm + h*k3 , ym, xm ) ;
zm1 := zm + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
zm:=zm1;
k1 := f2( tm, zm ) ;
k2 := f2( tm + h/2 , zm + h*k1/2 ) ;
k3 := f2( tm + h/2 , zm + h*k2/2 ) ;
k4 := f2( tm + h , zm + h*k3 ) ;
ym1 := ym + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
ym:=ym1;
k1 := f3( tm, ym ) ;
k2 := f3( tm + h/2 , ym + h*k1/2 ) ;
k3 := f3( tm + h/2 , ym + h*k2/2 ) ;
k4 := f3( tm + h , ym + h*k3 ) ;
xm1 := xm + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
xm:=xm1;
{output xm1}
Write( Ffunc, xm1 : 7 : 7, ' ' );
{ xm := xm1;
ym := ym1;
zm := zm1;}
end;
Writeln( Ffunc );
end;
Close( Ffunc );
Close( Ftime );
Close( Fomega );
end.
Crt;
{Type Real = Extended;}
Const
A = 1;
a0 = 1;
a1 = 6;
a2 = 2;
a3 = 5;
time = 100;
N = 200;
h = Time / N ;
omegaN = 2;
Nomega = 200;
homega = omegaN / Nomega;
Var
Fomega,
Ftime,
Ffunc : Text;
i, k : Longint;
omega,
k1,
k2,
k3,
k4,
tm,
zm, zm1,
ym, ym1,
xm, xm1 : Real;
Function f1(A,w,t,z,y,x : Real) : Real;
Begin
f1 := (A*sin(w*t) - a2 * z - a1 * y - a0 * x)/a3 ;
end;
Function f2(t,z : Real) : Real;
Begin
f2 := z;
end;
Function f3(t,y : Real) : Real;
Begin
f3 := y;
end;
Begin
clrscr;
Assign( Fomega, 'Omega.txt' );
Assign( Ftime, 'Time.txt' );
Assign( Ffunc, 'Function.txt ');
Rewrite( Fomega );
Rewrite( Ftime );
Rewrite( Ffunc );
Append( Fomega );
Append( Ftime );
Append( Ffunc );
For k := 0 to Nomega-1 Do
Begin
zm := 0;
ym := 0;
xm := 0;
omega := k*homega;
if k = 0 Then Write( Ffunc, xm : 7 :7, ' ' );
WriteLn( Fomega, omega : 7 :7, ' ' );
For i := 0 to N-1 do
Begin
tm := i * h;
if k = 0 then WriteLn( Ftime, tm : 7 : 7, ' ' );
k1 := f1( A, omega, tm, zm, ym, xm ) ;
k2 := f1( A, omega, tm + h/2 , zm + h*k1/2 , ym, xm ) ;
k3 := f1( A, omega, tm + h/2 , zm + h*k2/2 , ym, xm ) ;
k4 := f1( A, omega, tm + h , zm + h*k3 , ym, xm ) ;
zm1 := zm + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
zm:=zm1;
k1 := f2( tm, zm ) ;
k2 := f2( tm + h/2 , zm + h*k1/2 ) ;
k3 := f2( tm + h/2 , zm + h*k2/2 ) ;
k4 := f2( tm + h , zm + h*k3 ) ;
ym1 := ym + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
ym:=ym1;
k1 := f3( tm, ym ) ;
k2 := f3( tm + h/2 , ym + h*k1/2 ) ;
k3 := f3( tm + h/2 , ym + h*k2/2 ) ;
k4 := f3( tm + h , ym + h*k3 ) ;
xm1 := xm + h * (k1 + 2*k2 + 2*k3 + k4) / 6 ;
xm:=xm1;
{output xm1}
Write( Ffunc, xm1 : 7 : 7, ' ' );
{ xm := xm1;
ym := ym1;
zm := zm1;}
end;
Writeln( Ffunc );
end;
Close( Ffunc );
Close( Ftime );
Close( Fomega );
end.
Соседние файлы в папке выч методы