C ВЫВОД ИНФОРМ.НА ЭКРАН ДИСПЛЕЯ ДЛЯ ТЕКУЩЕГО
С КОНТРОЛЯ РЕШЕНИЯ
WRITE(5,106)X,NREZ
106 FORMAT(1X,'X=',F8.4,' NREZ=',I4)
C ОБРАЩЕНИЕ К ПОДПРОГРАММЕ РЕШЕНИЯ
С ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
6 CALL RNGKT2(N,X,H,Y,PRAV)
C НАДО ЛИ ПРОДОЛЖАТЬ РАСЧЕТ?
9 IF(NREZ.LT.501)GO TO 10
WRITE(5,*)'DIF1: РАСЧЕТ ПРИОСТАНОВЛЕН ПО ПРИЧИНЕ
*' ЗАПОЛНЕНИЯ ВЫХОДНЫХ ФАЙЛОВ (NREZ>501)'
GO TO 11
10 IF ((X-XKAN).GT.0.)GO TO 11
C УВЕЛИЧЕНИЕ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ НА ВЕЛИЧИНУ
С ШАГА
X=X+H
GO TO 4
C ЗАКРЫТИЕ ВЫХОДНЫХ ФАЙЛОВ
11 CLOSE(UNIT=3)
CLOSE(UNIT=4)
WRITE(5,101) Z2,Z3
101 FORMAT(1X,'DIFRK2: РАБОТА ЗАКОНЧЕНА. Р-ТЫ ЗАПИСАНЫ',
*' В ФАЙЛЫ ',A8, ' I ',A8) 422
STOP
END
C
SUBROUTINE RNGKT2(N,X,H,Y,FNC)
C ПОДПРОГРАММА РЕШЕНИЯ СИСТЕМЫ ДИФФЕРЕНЦ.
C УРАВНЕНИЙ dY/dx=F(x,Y) С НАЧАЛЬНЫМИ УСЛОВИЯМИ
С (ЗАДАЧА КАШИ) МЕТОДОМ РУНГЕ-КУТТА ВТОРОГО ПОРЯДКА
C НА ОДНОМ ВРЕМЕННОМ ШАГЕ ПО АЛГОРИТМУ:
C y(i+1)=y(i)+(h/2)*(k1+k2),
C k1=f(x(i),y(i)),
C k2=f(x(i)+h,y(i)+h*k1).
C РАЗРАБОТАНА НА КАФЕДРЕ ЭЛЕКТРИЧЕСКИХ СТАНЦИЙ 20.09.93.
C ОБОЗНАЧЕНИЯ ПЕРЕМЕННЫХ:
C N - КОЛИЧЕСТВО УРАВНЕНИЙ В СИСТЕМЕ (ВХОДНАЯ
С ВЕЛИЧИНА)
C X - ТЕКУЩЕЕ ЗНАЧЕНИЕ НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ x
C (РАБОЧАЯ И ВЫХОДНАЯ ВЕЛИЧИНА)
C H - ШАГ ИЗМЕНЕНИЯ НЕЗАВИС. ПЕРЕМЕННОЙ x
С (ВХОДН.ВЕЛИЧИНА)
C Y(N) - МАССИВ ТЕКУЩИХ ЗНАЧЕНИЙ ИНТЕГРИРУЕМЫХ
C ПЕРЕМЕННЫХ Y (РАБОЧИЙ МАССИВ)
C YF(N) - МАССИВ ЗНАЧЭНИЙ IНТЕГРИРУЕМЫХ ПЕРЕМЕННЫХ
С y(i)+h*k1,
C ИСПОЛЬЗ.КАК АРГУМЕНТЫ ПРИ ВЫЧИСЛ.ПРАВЫХ ЧАСТЕЙ
С СИСТЕМЫ
C k2=f(x(i)+h,y(i)+h*k1) В ПРАВОМ УЗЛЕ ИНТЕРВАЛА h
C F1(N),F2(N) - МАССИВЫ ЗНАЧЕНИЙ k1 I k2 ФУНКЦИЙ F(x,Y)
C АНАЛОГ. В ЛЕВОМ И ПРАВОМ УЗЛАХ ИНТЕРВАЛА h
С (РАБОЧИЕ МАСIВЫ).
C ЗНАЧЕНИЯI ФУНКЦИЙ F(x,Y) ВЫСЧИТЫВАЮТСЯ В ВНЕШНЕЙ
C ПОДПРОГРАММЕ FNC, КОТОРАЯ ЦЕЛИКОМ ВЫСЧИТ. ВИДОМ
C ПРАВОЙ ЧАСТИ СИСТЕМЫ УРАВНЕНИЙ И ДЛЯ КАЖДОЙ
C НОВОЙ СИСТЕМЫ СКЛАДЫВАЕТСЯ ПОЛЬЗОВАТЕЛЕМ
С ЗАНОВО
C FNC - ИМЯ ВНЕШНЕЙ ПОДПРОГРАММЫ, В КОТОРОЙ
C ВЫСЧИТЫВАЮТСЯ ЗНАЧЕНИЯ ФУНКЦИЙ F(x,Y) В ПРАВОЙ
С ЧАСТИ СИСТЭМЫ. ИМЯ ЭТОЙ ПОДПР. В СПИСКЕ ФОРМАЛЬНЫХ
C ПАРАМЕТРОВ ОПЕРАТОРА SUBROUTINE ЭТОЙ
C ПОДПРОГРАММЫ И В СПИСКЕ ФАКТИЧЕСКИХ ПАРАМЕТРОВ
C ОПЕРАТОРА CALL ПРОГРАММЫ, КОТОРАЯ ЕЕ ВЫЗЫВАЕТ,
С МОЖЕТ БЫТЬ РАЗНЫМ, В ТАКОМ СЛУЧАЕ В
C ПРОГРАММЕ, КОТОРАЯ ЕЕ ВЫЗЫВАЕТ, ЭТО ИМЯ ДОЛЖНО
C БЫТЬ ОПИСАНО В ОПЕРАТОРЕ EXTERNAL
DIMENSION Y(16),YF(16),F1(16),F2(16)
C ВЫЧИСЛ. ЗНАЧЭНИЙ ФУНКЦИЙ f(x,Y) В ЛЕВОМ КОНЦЕ ИНТЕРВ.h
C ПО ФОРМУЛЕ к1=f(x(i),y(i))
CALL FNC(X,Y,F1)
C ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ФУНКЦЫИ f(x,Y) В ПРАВОМ КОНЦЕ
C ИНТЕРВАЛА ПО ФОРМУЛЕ k2=f(x(i)+h,y(i)+h*k2)
XF=X+H
DO 1 I=1,N
1 YF(I)=Y(I)+H*F1(I)
CALL FNC(XF,YF,F2)
C ВЫЧИСЛЕНИЕ ЗНАЧЕНИЙ ИНТЕГРИРУЕМЫХ ПЕРЕМЕННЫХ Y НА
C НОВОМ ШАГЕ ПО ФОРМУЛЕ y(i+1)=y(i)+(k1+k2)*(h/2)
DO 6 I=1,N
6 Y(I)=Y(I)+H*(F1(I)+F2(I))/2.
11 RETURN
END
C
C ПОДПРОГРАММА ВЫЧИСЛЕНИЯ ПРАВЫХ ЧАСТЕЙ
C ДЛЯ СЛЕДУЮЩЕЙ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ
С УРАВНЕНИЙ 3-ГА ПОРЯДКА
C dy1/dt=f1(y1,y2,y3,x); где: f1(y1,y2,y3,x)=cos(x)-exp(-x)-y3
C dy1/dt=f2(y1,y2,y3,x); f2(y1,y2,y3,x)=y3
C dy1/dt=f3(y1,y2,y3,x); f3(y1,y2,y3,x)=-y2
SUBROUTINE PRAV(X,Y,F)
DIMENSION Y(*),F(*)
F(1)=COS(X)-EXP(-X)-Y(3)
F(2)=Y(3)
F(3)=-Y(2)
RETURN
END
Дополнение 3
C ПРОГРАММА 'DIFRK4' 16.09.94
C РЕШЕНИЕ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ
C dY/dx = f(x,Y) МЕТОДАМ РУНГЕ-КУУТТА ЧЕТВЕРТОГО
C ПОРЯДКА С ПОСТОЯННЫМ ШАГОМ ИЗМЕНЕНИЯ
С НЕЗАВИСИМОЙ ПЕРЕМЕННОЙ. АЛГОРИТМ
C НА ОДНОМ ВРЕМЕННОМ ШАГЕ ВИД:
C y(i+1)=y(i)+(h/6)*(k1+2*k2+2*k3+k4),
C k1=f(x(i),y(i),
C k2=f(x(i)+h/2,y(i)+(h/2)*k1),
C k3=f(x(i)+h/2,y(i)+(h/2)*k2),
C k4=f(x(i)+h,y(i)+h*k3),
C i=0,1,2, ... ,m-1 (m-КОЛИЧЕСТВО КРОКАУ ПО ВОСI x)
C
C ОБОЗНАЧЕНИЯ ПЕРЕМЕННЫХ В ПРОГРАММЕ:
C N - КОЛИЧЕСТВО ДИФФЕРЕНЦ.УРАВНЕНИЙ В СИСТЕМЕ
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.