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

Подпрограмма:  IAM2R

Назначение

Среднеквадратическая аппроксимация кусочно - линейной функции выпуклой кусочно - линейной функцией.

Математическое описание

Пусть задана кусочно - постоянная функция  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 )