|
Текст подпрограммы и версий ( Фортран ) 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