Текст подпрограммы и версий ( Фортран ) iib9r.zip , iib9d.zip |
Тексты тестовых примеров ( Фортран ) tiib9r.zip , tiib9d.zip |
Текст подпрограммы и версий ( Си ) iib9r_c.zip , iib9d_c.zip |
Тексты тестовых примеров ( Си ) tiib9r_c.zip , tiib9d_c.zip |
Текст подпрограммы и версий ( Паскаль ) iib9r_p.zip , iib9e_p.zip |
Тексты тестовых примеров ( Паскаль ) tiib9r_p.zip , tiib9e_p.zip |
Вычисление значения в заданной точке интерполируемой функции двух переменных, определенной на прямоугольной неравномерной сетке, по известным значениям на этой сетке ее второй частной производной по второй переменной и по известным значениям ее первой частной производной по первому направлению в точках, лежащих на левой и правой сторонах сеточного прямоугольника с координатами по второй переменной, совпадающими со второй координатой заданной точки, методом бикубических сплайнов.
Пусть заданы узлы неравномерной прямоугольной сетки:
X1A = { x1(1), x2(1), ..., xM(1) } ; X2A = { x1(2), x2(2), ..., xN(2) } , значения интерполируемой функции f (x(1), x(2)) и ее второй частной производной ∂(2) f (x(1), x(2)) / ∂x(2) 2 в узлах этой сетки: YA(I, J) = f (X1A(I), X2A(J)) ; Y2A(I, J) = ∂2 f (X1A(I), X2A(J)) / ∂x(2) 2 , I = 1, 2, ..., M ; J = 1, 2, ..., N ,
а также следующие значения первой частной производной функции f по первой переменной:
YP1 = ∂ f (X1A(1), X2)) / ∂x(1) , YPM = ∂ f (X1A(M), X2) / ∂x(1) .
Здесь X2 - вторая координата заданной точки (X1, X2) внутри сеточного прямоугольника, в которой ищется значение интерполируемой функции: Y = f (X1, X2). Используется метод бикубических сплайнов.
Н.С.Бахвалов, Численные методы. Изд - во "Наука", 1973.
SUBROUTINE I IB9R (X1A, X2A, YA, Y2A, M, N, X1, X2, YP1, YPM, Y, YT, Y2T, YYT, U)
Параметры
X1A - X2A | вещественные векторы длины M и N, содержащие узлы {x1 (1), x2 (1), ...,xM (1)} и {x1 (2), x2 (2), ...,xN (2)} соответственно; |
YA - | вещественный двумерный массив размеров M на N, содержащий значения интерполируемой функции f (x (1), x (2)) двух переменных в узлах заданной сетки; |
Y2A - | вещественный двумерный массив размеров M и N, содержащий значения второй частной производной функции f по второй переменной в узлах заданной сетки; |
M, N - | длины векторов X1A и X2A соответственно (тип: целый); |
X1, X2 - | координаты заданной точки внутри сеточного прямоугольника, в которой ищется значение интерполируемой функции f (тип: вещественный); |
YP1 - YPM | заданные значения первой частной производной функции f по первой переменной в точках (X1A (1), X2) и (X1A (M), X2) соответственно (тип: вещественный); |
Y - | вещественная переменная, содержащая вычисленное значение интерполируемой функции f в точке (X1, X2); |
YT - | вещественный вектор длины N, используемый в подпрограмме в качестве рабочего; |
Y2T - | вещественный вектор длины max (M, N), используемый в подпрограмме в качестве рабочего; |
YYT, U - | вещественные векторы длины M, используемые в подпрограмме в качестве рабочих. |
Версии
I IB9D - | выполняет те же вычисления, что и подпрограмма I IB9R, однако в режиме удвоенной точности. При этом все формальные параметры, кроме M и N, должны иметь тип DOUBLE PRECISION. |
Вызываемые подпрограммы
IDS8R - IDS8D | вычисление вторых производных таблично - заданной функции в узлах неравномерной сетки методом кубических или натуральных кубических сплайнов при заданных первых производных функции в концевых узлах сетки в режиме одинарной и удвоенной точности соответственно; используются в подпрограммах I IB9R и I IB9D соответственно. |
I IS8R - I IS8D | вычисление значения в заданной точке интерполируемой табличной функции, определенной в узлах неравномерной сетки, упорядоченной по возрастанию, по известным значениям ее второй производной в узлах этой сетки методом кубических сплайнов в режиме одинарной и удвоенной точности соответственно; используются в подпрограммах I IB9R и I IB9D соответственно. |
Замечания по использованию: нет
REAL X1A(5), X2A(4), YA(5, 4), Y2A(5, 4), YT(4), Y2T(5), * YYT(5), U(5) M = 5 N = 4 R = 0.0 DO 1 I = 1, M X1A(I) = R 1 R = R + 0.1 R = 0.0 DO 2 I = 1, N X2A(I) = R 2 R = R + 0.1 DO 4 I = 1, M DO 4 J = 1, N YA(I, J) = SIN(X1A(I))*SIN(X2A(J)) 4 Y2A(I, J) = -YA(I, J) X1 = 0.55 X2 = 0.65 YP1 = COS(X1A(1))*SIN(X2) YPM = COS(X1A(M))*SIN(X2) CALL IIB9R (X1A, X2A, YA, Y2A, M, N, X1, X2, YP1, YPM, Y, YT, * Y2T, YYT, U) Результат: Y = 0.316370