Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
02_Наскрiз прогр. практ. МАШ09 (31.05.09).doc
Скачиваний:
1
Добавлен:
28.09.2019
Размер:
280.06 Кб
Скачать

Методом Рунге-Кутта четвертого порядка }

program RK4;

uses

crt;

const

N = 2; { Количество уравнений в системе }

M = 5100; { Количество элементов в каждом }

{ массиве X,Y1,Y2 }

type

Working_arrays = array [1..N] of Real;

Array_X = array [1..M] of Single;

Arrays_of_outcomes = array [1..N,1..M] of Single;

var

h,x,v,xk : Real;

i,j,l : Integer;

y,k,f,w : Working_arrays;

OX : Array_X;

OY : Arrays_of_outcomes;

{ Процедура системы уравнений }

procedure system_equations(var y,f:Working_arrays);

begin

f[1]:=y[2];

f[2]:=(y[1]/x-y[2])/x-y[1]

end;

{ Процедура алгоритма решения системы диф. уравнений }

procedure Runge_Kutt_4(var i : Integer;

var OX : Array_X;

var OY : Arrays_of_outcomes);

begin

for j:=1 to n do y[j]:=w[j];

i:=0;

Repeat

i:=i+1;

system_equations(y,f);

for j:=1 to n do

begin

v:=h*f[j];

k[j]:=v;

y[j]:=w[j]+v/2

end;

x:=x+h/2;

system_equations(y,f);

for j:=1 to n do

begin

v:=h*f[j];

k[j]:=k[j]+2*v;

y[j]:=w[j]+v/2

end;

system_equations(y,f);

for j:=1 to n do

begin

v:=h*f[j];

k[j]:=k[j]+2*v;

y[j]:=w[j]+v

end;

x:=x+h/2;

OX[i]:=x;

system_equations(y,f);

for j:=1 to n do

begin

y[j]:=w[j]+(k[j]+h*f[j])/6;

OY[j,i]:=y[j];

w[j]:=y[j]

end

Until ((x > xk) or (i = M))

end;

procedure output(device:string);

var

d : Text;

begin

assign(d,device);

rewrite(d);

writeln(d,' Решение системы уравнений:');

writeln(d);

for l:=1 to i do

begin

write(d,' x=',OX[l]:6:2);

for j:=1 to N do write(d,' y[',j:1,']=',

OY[j,l]:10:6);

writeln(d)

end;

writeln(d);

close(d)

end;

BEGIN { Основная программа }

{ 1. Ввод исходных данных }

ClrScr;

write('Введите шаг интегрирования h=> ');

readln(h);

write('Введите начальное значение переменной x=> ');

readln(x);

write('Введите конечное значение переменной x=> ');

readln(xk);

writeln('Введите начальные значения Y:');

for j:=1 to n do

begin

write(' Y[',j:1,']=> ');

readln(w[j])

end;

{ 2. Вызов процедуры алгоритма }

Runge_Kutt_4(i,OX,OY);

{ 3. Вывод результатов расчетов на дисплей и в файл }

ClrScr;

output('con');

output('result.txt');

write('Нажмите любую клавишу');

repeat until UpCase(ReadKey) <>#0

END.

НАВЧАЛЬНЕ ВИДАННЯ

Наскрiзна програма практик

(для студентiв спецiальностi 7.090216

“Гірниче обладнання” денної форми навчання)

Автори: Лисенко Микола Михайлович

Потапов Вячеслав Григорович

Тарасенко Владислав Адольфович

Стаднік Микола Іванович