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

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

C   ПЕРЕХОДНАГА ПРОЦЕССА ПОЛЬЗОВАТЕЛЬ  СЧИТАЕТ

С ДОСТАТОЧНЫМ СДЕЛАТЬ ВЫВОД РЕШЕНИЯ

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 Y(16) - МАССИВ ТЕКУЩИХ ЗНАЧЭНИЙ ВЕКТОРА Y(x), КОТОРЫЕ

С ВЫСЧИТЫВАЮТСЯ В КОНЦЕ КАЖДОГО ШАГА

C   МЕТОДОМ РУНГЕ-КУТТА (РАБ. И ВЫХ.ВЕЛИЧИНЫ);

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

С СОХРАНЕНИЯ В ОПЕРАТИВНОЙ ПАМЯТИ

C        ИМЕН ФАЙЛОВ ВХОДН. И ВЫХОДНЫХ ДАНЫХ

C        (РАБОЧИЕ ПЕРЕМЕННЫЕ)

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

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

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

С ВЫЧИСЛЕНИЯ ПРАВЫХ ЧАСТЕЙ

C        f(x,Y) СИСТЕМЫ ДИФФЕРЭНЦ. УРАВНЕНИЙ ЭТО ИМЯ

С ВКЛЮЧЕНО В СПИСОК ФАКТИЧ. ПАРАМ. ОПЕРАТОРА

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

C       ТОГО,  ЧТО В СПИСКЕ ФОРМАЛЬН.ПАРАМЕТРОВ

C        ОПЕРАТОРА SUBROUTINE RNGKT(...,FNC) ИДЕНТ. PRAV,

С        СООТВЕТСТВУЕТ ВТОРОЕ ИМЯ FNC,

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

DIMENSION Y(20),Y0(20)

EXTERNAL PRAV

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

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

С   ДИСПЛЕЯ

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

*' В ВИДЕ  AAAA.DAT'

READ 1,Z1 

1 FORMAT(A8) 

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

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

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,*)'DIFRK2: ВХОДНЫЕ ДАННЫЕ ПРОЧИТАНЫ С ДИСКА'

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

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

С  ДАННЫХ В ФАЙЛ AAAA.REZ

C ПРОГРАММА DIFRK2 ЗАСЫЛАЕТ ВХОДН. ДАННЫЕ И

С РЕЗУЛЬТАТЫ РЕШЕНИЙ СИТЕМЫ, КОТОРЫЕ ОБЕСПЕЧИВАЮТСЯ

C "ШАПКАМИ". В ФАЙЛ AAAA.GRF ЗАСЫЛАЕТСЯ ТОЛЬКО

C ТАБЛИЦА Y(N) (ВЫХОДНАЯ IНФОРМАЦИЯ В ТАКОМ ВИДЕ

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,*)'DIFRK2 - РЕШЕНИЕ СИСТЭМЫ ДИФЕРЕНЦИАЛЬНЫХ',

*' УРАВНЕНИЙ МЕТОДОМ ЭЙЛЕРА'

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

110 FORMAT(1X,'ВХОДНЫЕ ДАННЫЕ'/1X,'       N   INTWR      X0',

*'    XKAN       H'/1X,2I10,3F10.5)

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

111 FORMAT(1X,'  Y0(N)'/(8G10.5))

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  НАДО ЛИ ЗАПИСЫВАТЬ РЕШЕНИЯ ТЕКУЩЕГО ШАГА В

C     ВЫХОДНЫЕ  ФАЙЛЫ AAAA.REZ I AAAA.GRF?

4 IF(X-H*REAL(NREZ*INTWR).LT.0.)GO TO 6

C        УВЕЛИЧЕНИЕ СЧЕТЧИКА ЗАПИСИ НА ЕДИНИЦУ

NREZ=NREZ+1          

C  ЗАПИСЬ РЕШЕН. ДЛЯ ВЫБР.УЗЛА В ВЫХОДНОЙ ФАЙЛ

С AAAA.REZ

WRITE(3,103)X,(Y(I),I=1,N)

C  ЗАПИСЬ РЕШЕН.ДЛЯ ВЫБР. УЗЛА В ВЫХОДНОЙ ФАЙЛ

С AAAA.GRF

WRITE(4,103)X,(Y(I),I=1,N)

103 FORMAT(10F8.4)