Текст подпрограммы и версий ( Фортран ) iam2r.zip , iam2d.zip |
Тексты тестовых примеров ( Фортран ) tiam2r.zip , tiam2d.zip |
Текст подпрограммы и версий ( Си ) iam2r_c.zip , iam2d_c.zip |
Тексты тестовых примеров ( Си ) tiam2r_c.zip , tiam2d_c.zip |
Текст подпрограммы и версий ( Паскаль ) iam2r_p.zip , iam2e_p.zip |
Тексты тестовых примеров ( Паскаль ) tiam2r_p.zip , tiam2e_p.zip |
Среднеквадратическая аппроксимация кусочно - линейной функции выпуклой кусочно - линейной функцией.
Пусть задана кусочно - постоянная функция f0 (x), x ∈ [x1, xN], имеющая узловые точки x1, ..., xN и узловые значения y1, ..., yN:
f0(x) = (yi+1 - y1) x / (xi+1 - x1) + (y1xi+1 - yi+1x1) / (xi+1 - x1) ,
x ∈ [x1,xi+1] , i = 1, ..., N-1
Строится среднеквадратическая аппроксимация функции f0 (x) в классе выпуклых функций по методу, разработанному в [1].
Основной процедурой в этом методе является построение интерполяционного кубического сплайна с нулевыми краевыми условиями.
Построенная аппроксимирующая функция является выпуклой кусочно - линейной функцией, узловые точки которой содержатся среди узловых точек исходной функции.
1. | Малышев В.А. Среднеквадратическая аппроксимация выпуклыми функциями. Сб."Численный анализ: методы, алгоритмы, приложения". Изд - во МГУ, 1985. |
SUBROUTINE IAM2R (N, X, Y, Z, I I, F0, F, A, B, C, H, V)
Параметры
N - | заданное число узловых точек аппроксимируемой кусочно - линейной функции (тип: целый); |
X - | вещественный вектор длины N заданных значений узловых точек; |
Y - | вещественный вектор длины N заданных значений аппроксимируемой кусочно - линейной функции; |
Z - | вещественный вектор длины N вычисленных в точках x1, ..., xN значений аппроксимирующей кусочно - линейной функции; |
I I - | целый вектор длины N, содержащий полученные номера i1, ...,iK (k ≤ N) узловых точек xi 1, ..., xi k аппроксимирующей кусочно - линейной функции; |
F0, F, - A, B, C, H, V | вещественные рабочие векторы длины N; |
Версии
IAM2D - | среднеквадратическая аппроксимация кусочно - линейной функции выпуклой кусочно - линейной функцией в режиме удвоенной точности. При этом параметры X, Y, Z, F0, F, A, B, C, H и V должны иметь тип DOUBLE PRECISION . |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Для среднеквадратической аппроксимации кусочно - линейной функции
f0(x) = (yi+1 - y1) x / (xi+1 - x1) + (y1xi+1 - yi+1x1) / (xi+1 - x1) ,
x ∈ [x1,xi+1] , i = 1, ..., 10
такой, что
X = ( 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10. )
Y = ( 8., 5., 6., 4., 3., 4., 5., 4., 7., 9., 8. )
Обращение к подпрограмме имеет вид:
DIMENSION X(11), Y(11), Z(11), I I(11), F0(11), F(11), A(11),
* B(11), C(11), H(11), V(11)
DATA X /0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10./
DATA Y /8., 5., 6., 4., 3., 4., 5., 4., 7., 9., 8./
N = 11
CALL IAM2R (N, X, Y, Z, I I, F0, F, A, B, C, H, V)
Результат:
Z = ( 7.59, 5.83, 5.01, 4.19, 3.38, 3.92, 4.46, 5.00, 6.54, 8.07, 9.61 )