Язык: Фортран 90
Программа NINE (Newtonian Iteration for Nonlinear Equation) предназначена для
решения граничной задачи для обыкновенного нелинейного дифференциального
уравнения второго порядка
y"+f(x,y,y')=0, a ≤ x ≤ b,
α1*y'(a)+β1*y(a)=γ1,
α2*y'(a)+β2*y(a)=γ2,
на основе непрерывного аналога метода Ньютона (НАМН) (см. обзор [1]) с
использованием нумеровской аппроксимации четвертого порядка относительно шага
дискретизации по пространственной переменной и различных вариантов выбора
итерационного параметра (см.[1],[2]).
Подробное описание вычислительной схемы дано в [3].
Программа написана на языке Фортран 90. Используется подпрограмма PROGON4
из библиотеки "JINRLIB".
Обращение к программе NINЕ осуществляется оператором:
CALL NINE ( N, H, TOL, ALPHA1, ALPHA2, BETA1, BETA2, GAMMA1, GAMMA2, KEY_TAU0, TAUMIN, ITER_MAX,
X, YNEWTON, V, Fk, Gk, Uk, Y )
Входные параметры:
N (integer) |
- |
число узлов равномерной дискретной сетки по аргументу x; |
H (real*8) |
- |
шаг равномерной дискретной сетки по аргументу x; |
TOL (real*8) |
- |
положительное малое число, критерий сходимости итерационного
процесса, при выполнении которого происходит выход из
программы (см. описание [3]); |
ALPHA1,ALPHA2 (real*8) |
- |
коэффициенты перед первой производной в
граничных условиях; |
BETA1,BETA2 (real*8) |
- |
коэффициенты перед функцией в граничных условиях; |
GAMMA1,GAMMA2 (real*8) |
- |
коэффициенты в правой части граничных условий; |
KEY_TAU (integer) |
- |
параметр, определяющий выбор ньютоновского итерационного
параметра τ ; может принимать значения 1,2,3,4,5:
при KEY_TAU=1 TAU вычисляется по формулам (18),(17) из [3];
при KEY_TAU=2 TAU вычисляется по формулам (19),(17);
при KEY_TAU=3 начальное значение TAU=TAU0 вычисляется по
формулам (15),(17), далее TAU рассчитывается по формуле (17);
при KEY_TAU=4 TAU вычисляется по формуле (17) с начальным
значением TAU0=TAUMIN;
при KEY_TAU=5 TAU вычисляется по формуле (15); |
TAUMIN (real*8) |
- |
минимальное значение итерационного параметра; |
ITER_MAX (integer) |
- |
максимальное число итераций, после которого происходит
выход из программы; |
X (real*8) |
- |
массив узлов равномерной дискретной сетки по аргументу x
размерности N; |
YNEWTON,V,V1,Fk,Gk,
Uk,AV,BV,DY,D2Y (real*8) |
- |
рабочие массивы размерности N; |
Y (real*8) |
- |
массив решения y(x) размерности N в узлах дискретной сетки по х.
При обращении к программе NINE в этом массиве должно
находиться начальное приближение для решения граничной задачи.
Этот же массив Y является выходным параметром: после окончания
работы программы здесь находится полученное численное решение. |
Пользователь должен составить real*8 функции FF(X,Y,Z), FY(X,Y,Z), FDY(X,Y,Z)
для вычисления соответственно функций f(x,y,y'), df(x,y,y')/dy, df(x,y,y')/dy'.
Архив программы включает в себя программу NINE.f90, тесты, результаты,
а также подробное описание (в формате pdf).
Литература:
- Пузынин И.В. и др. О методах вычислительной физики для исследования
моделей сложных физических процессов. // Физика элементарных частиц и
атомного ядра, 2007. Т. 38. Вып. 1. - C. 144-232.
- Пузынин И. В., Пузынина Т. П., Тхак В. Ч. SLIPM - программа на языке
MAPLE для численного решения частичной проблемы Штурма-Лиувилля на
основе непрерывного аналога метода Ньютона.// Вестник РУДН. Серия
Математика. Информатика. Физика, 2010. Вып. 2(2). - С. 90-98.
- Батгэрэл Б., Земляная Е. В., Пузынин И. В. Программа NINE: численное
решение граничных задач для нелинейных дифференциальных уравнений
методом НАМН. Принято в печать в журнал Компьютерные Исследования и
Моделирование.