Методы решения обычных дифференциальных уравнений (Лабораторная работа № 7), страница 9

С (ВХОДНАЯ ВЕЛИЧИНА).

C  МАКСИМАЛЬНОЕ КОЛИЧЕСТВО УРАВНЕНИЙ СИСТЕМЫ

C  ПРИНЯТО В ПРОГРАММЕ РАВНОЕ 16, НО ЭТО ОГРАНИЧЕНИЕ

C  СВЯЗАНА ТОЛЬКО С ПРИНЯТЫМИ В ПРОГРАММЕ

С РАЗМЕРНОСТЯМИ МАССИВОВ Y(0), Y0(0) И РАЗМЕРАМИ ТАБЛИЦ

C  РЕЗУЛЬТАТОВ AAAA.REZ I AAAA.GRF

C INTWR - ИНТЕРВАЛ ПЕЧАТИ - КОЛИЧ. ШАГОВ ПО

С НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ x,

C  КОТОРЫЕ ПРОПУСК. ПРИ ВЫВОДЕ РЕЗУЛЬТАТА РЕШЕНИЯ НА

C  ЭКРАН ИЛИ ПРИНТЕР (ВХОДН. ВЕЛИЧИНА).

С  Напр., ПРИ X0=0, XKAN=0.1, H=0.0001 РЕШЕНИЯ

C  СИСТЕМЫ УРАВН.БУДУТ ВЫСЧИТ.В

С  (XKAN-XO)/H=(0.1-0.0)/0.0001=1000

C  УЗЛАХ ОСИ  ПЕРЕМ. x. НО ДЛЯ АНАЛИЗА ПЕРЕХ. ПРОЦЕССА

C  ИССЛЕДОВАТЕЛЬ СЧИТАЕТ ДОСТАТ.СДЕЛАТЬ ВЫВОД

С  РЕШЕНИЯ СИСТЕМЫ В 100 УЗЛАХ.ТОГДА INTWR=1000/100=10

C  (БУДЕТ СДЕЛ. ВЫВОД РЕЗУЛЬТАТОВ РАСЧЕТА

C  В КАЖДОМ ДЕСЯТОМ УЗЛЕ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ x);

C X - НЕЗАВИСИМАЯ ПЕРЕМЕННАЯ x (РАБОЧАЯ И ВЫХОДНАЯ

С ВЕЛИЧИНА)

C X0 - НАЧАЛЬН. ЗНАЧЕНИЕ НЕЗАВИС.ПЕРЕМ. x (ВХОДНАЯ

С ВЕЛИЧИНА);

C XKAN - КОНЕЧН.ЗНАЧ. НЕЗАВИС.ПЕРЕМЕННОЙ x

С (ВХОДНАЯ ВЕЛИЧИНА);

C H - ШАГ ИЗМЕНЕНИЯ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ x (ВХОД.

С ВЕЛИЧИНА);

C Y0(16) - МАССИВ НАЧАЛЬН.ЗНАЧ. ВЕКТОРА Y(x),

С КОМПОНЕНТАМИ КОТОРОГО ЯВЛЯЮТСЯ

C  ЗАВИСИМЫЕ ПЕРЕМЕННЫЕ y(1), y(2),y(3)…(ВХОДНЫЕ

C  ВЕЛИЧИНЫ); 

C Y(16) - МАССИВ ТЕКУЩИХ ЗНАЧ. ВЕКТОРА Y(x), КОТОРЫЕ

С ВЫСЧИТ. В КОНЦЕ КАЖДОГО ШАГА МЕТОДОМ РУНГЕ-КУТТА

C  (РАБОЧИЕ ПЕРЕМЕННЫЕ И ВЫХОДНЫЯ ВЕЛИЧИНЫ);

C Z1,Z2,Z3 - СИМВОЛЬНЫЕ ПЕРЕМ., КОТОРЫЕ ИСПОЛЬЗ. ДЛЯ

C    СОХРАНЕНИЯ В ОПЕРАТ.ПАМЯТИ ИМЕН ВХОДН.И

C    ВЫХОДН.ДАННЫХ (РАБОЧИЕ  ПЕРЕМЕННЫЕ)

C NREZ - СЧЕТЧИК КОЛИЧ. ЗАПИСЕЙ, КОТОРЫЕ ВЫВОДЯТСЯ В

С ВЫХОДН. ФАЙЛЫ

C PRAV - ИМЯ ФАЙЛА, В КОТОРОМ НАХОД. ПОДПРОГР.

С ВЫЧИСЛЕНИЯ ПРАВЫХ ЧАСТЕЙ f(x,Y) СIСТЭМЫ

C  ДИФФЕРЕНЦИАЛЬНЫХ  УРАВНЕНИЙ. ЭТО ИМЯ ВКЛЮЧЕНО  В

C  СПИСОК ФАКТ. ПАРАМЕТРОВ ОПЕРАТОРА CALL

C  RNGKT4(...,PRAV) ЭТОЙ ПРОГРАММЫ. ПО ПРИЧИНЕ ТОГО, ЧТО В

С СПИСКЕ ФОРМАЛЬНЫХ ПАРАМЕТРОВ ОПЕРАТОРА

C  SUBROUTINE RNGKT(...,FNC) ИДЕНТИФ.PRAV СООТВЕТСТВУЕТ

C  ВТОРОЕ ИМЯ FNC, ТО ИМЯ PRAV ОПИСАНО В ОПЕРАТОРЕ

С EXTERNAL

DIMENSION Y(16),Y0(16)

EXTERNAL PRAV

CHARACTER Z1*8,Z2*8,Z3*8

C ЧТЕНИЕ ИМЕНИ ФАЙЛА ВХОДНЫХ ДАНЫХ С ЭКРАНА ДИСПЛЕЯ

WRITE(5,*)'DIFRK4: ВВЕДИТЕ ИМЯ ФАЙЛА ВХОДНЫХ',

*' ДАННЫХ В ВИДЕ AAAA.DAT'

READ 1,Z1

1 FORMAT(A8)

WRITE(5,*)'DIFRK4: ИМЯ ФАЙЛА ВХОДНЫХ ДАНЫХ ВВЕДЕНО'

C  ОТКРЫТИЕ ФАЙЛА ВХОДНЫХ ДАННЫХ НА ДИСКЕ И ЧТЕНИЕ

C  ВХОДНЫХ ДАННЫХ В ОПЕРАТИВНУЮ ПАМЯТЬ

OPEN(UNIT=1,FILE=Z1,STATUS='OLD') 

READ(1,*)N,INTWR,X0,XKAN,H

READ(1,*)(Y0(I),I=1,N)

CLOSE(UNIT=1)

WRITE(5,*)'DIFRK4: ВХОДНЫЕ ДАНЫЯ ПРОЧИТАНЫ С ДИСКА'

C ОБРАЗОВАНИЕ ИМЕН ДВУХ ФАЙЛОВ РЕЗУЛЬТАТОВ В ВИДЕ

C AAAA.REZ I, AAAA.GRF, ГДЕ AAAA - ИМЯ ФАЙЛА ВХОДНЫХ ДАНЫХ. В ФАЙЛ AAAA.REZ

C ПРОГРАММА DIFRA ЗАСЫЛАЕТ ВХОДН. ДАННЫЕ И ТАБЛИЦУ

С  ЗНАЧЕНИЙ ЗАВИСИМЫХ ПЕРЕМЕННЫХ,

C КОТОРЫЕ ОБЕСПЕЧ. "ШАПКАМИ". В ФАЙЛ AAAA.GRF ЗАСЫЛАC ЕТСЯ ТОЛЬКО ТАБЛИЦА Y(x) (ВЫХОДНАЯ ИНФОРМАЦИЯ В

С  ТАКОМ ВИДЕ ЯВЛЯЕТСЯ УДОБНОЙ ДЛЯ ПРОГРАММ,

C КОТОРЫЕ СТРОЯТ РЕШЕНИЯ СИСТЕМЫ НА

C ЭКРАНЕ ДИСПЛЕЯ В ВИДЕ ГРАФИКОВ)

Z2(1:4)=Z1(1:4)

Z3(1:4)=Z1(1:4)

Z2(5:8)='.REZ'

Z3(5:8)='.GRF'

C        ОТКРЫТИЕ ФАЙЛОВ РЕЗУЛЬТАТОВ НА ДИСКЕ

OPEN(UNIT=3,FILE=Z2,STATUS='NEW')

OPEN(UNIT=4,FILE=Z3,STATUS='NEW')

C  ЗАПИСЬ ВХОДНЫХ ДАНЫХ В ВЫХОДНОЙ ФАЙЛ С ИМЕНЕМ

С  AAAA.REZ

WRITE(3,*)'DIFRK4 - РЕШЕНИЕ СИСТЕМЫ ДИФЕР. УРАВНЕНИЙ

WRITE(3,*)'ВХОДНЫЕ ДАННЫЕ'

WRITE(3,*)N,INTWR,X0,XKAN,H

WRITE(3,*)(Y0(I),I=1,N)

C        ПОДГОТОВКА К РЕАЛИЗАЦИИ АЛГОРИТМА РУНГЕ-КУТТА

X=X0

NREZ=0

C ПЕРЕСЫЛКА НАЧАЛЬН.ЗНАЧЕНИЙ Y0 ИНТЕГРИРУЕМЫХ

С  ПЕРЕМЕННЫХ В МАССИВ Y

DO 3 I=1,N

3 Y(I)=Y0(I)

C ВЫДАЧА ЗАГАЛОВКА ТАБЛИЦЫ РЕЗУЛЬТ. В ВЫХ. ФАЙЛ С

С  ИМЕНЕМ AAAA.REZ

WRITE(3,*)'           РЕЗУЛЬТАТЫ РАСЧЕТА'

WRITE(3,*)'      x    y(1)    y(2)    y(3)    y(4)    y(5)',

*'    y(6)    y(7)    y(8)'                                                  252

IF(N.LE.8)GO TO 4

WRITE(3,*)'           y(9)   y(10)   y(11)   y(12)   y(13)',

*'   y(14)    y(15)   y(16)'                                                  254

C НАЧАЛО ЦИКЛИЧЕСКОЙ ЧАСТИ РЕШЕНИЯ СИСТЭМЫ УРАВНЕН.

C НАДО ЛИ ЗАПИСЫВАТЬ ЗНАЧЕНИЯ ТЕКУЩЕГО ШАГА В