Документ взят из кэша поисковой машины. Адрес оригинального документа : http://num-anal.srcc.msu.ru/lib_na/cat/i/ia20r.htm
Дата изменения: Mon Sep 22 16:09:30 2014
Дата индексирования: Sun Apr 10 00:12:53 2016
Кодировка: Windows-1251
БЧА НИВЦ МГУ. IA20R. Аппроксимация произвольными функциями
Текст подпрограммы и версий ( Фортран )
ia20r.zip
Тексты тестовых примеров ( Фортран )
tia20r.zip
Текст подпрограммы и версий ( Си )
ia20r_c.zip
Тексты тестовых примеров ( Си )
tia20r_c.zip
Текст подпрограммы и версий ( Паскаль )
ia20r_p.zip
Тексты тестовых примеров ( Паскаль )
tia20r_p.zip

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

Назначение

Наилучшая среднеквадратичная аппроксимация одномерной функции на множестве кусочно - выпуклых функций с ограниченной первой производной.

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

Для функции f (x), a ≤ x ≤ b, строится среднеквадратичное приближение u (x) в классе кусочно - выпуклых функций с ограничениями на первую производную: v1 (x) ≤ u' (x) ≤ v2 (x). Эта задача сводится к минимизации функционала

                 b  
      min     ∫  p(x)*( u(x) - f(x) )2 dx ,
    v,u(a)    a
                              x
     u(x) = u(a)  +   ∫  v(t) dt
                            a 

Hа множестве кусочно - монотонных функций  v (x) = u' (x),  v1 (x) ≤ v (x) ≤ v2 (x), a ≤ x ≤ b. Здесь  p (x) > 0,  v1 (x),  v2 (x) - заданные функции. Значение  u (a) может быть как известным, так и подлежащим определению.

Дискретным аналогом рассматриваемой вариационной задачи является задача квадратичного программирования

                         N
   (1)     min      ∑   pi di ( ui - fi )2
             v,ui     i=1 

при условии, что вектоp  v = (v1, v2, ..., vN - 1)  удовлетворяет ограничениям

   (2)      ui  =  u1 + ( h1*v1 + h2*v2 + ... + hi-1*vi-1 ) ,    i = 2, ..., N
   (3)      v1 i ≤ vi ≤ v2 i  ,                       i = 1, ..., N-1
   (4)      mi ( vi+1 - vi ) ≥ 0  ,                i = 1, ..., N-2 

где  di > 0 - коэффициенты квадратурной формулы трапеций на сетке

 w = { xi : a = x1 <...< xi <...< xN = b } ,   fi = f( xi ) ,
 pi = p( xi ) ,   v1 i = vi( xi ) ,    v2 i = v2( xi ) , 

hi = xi + 1 - xi - шаг сетки  w, параметры  mi определяются условиями кусочной монотонности функции  v = u' и принимают значения  1, 0 или  -1.

Численное решение задачи (1) - (4) основано на методе проекции сопряженных градиентов, который позволяет проводить итерационный процесс минимизации в конечномерном пространстве W1 2, ρ с нормой

                    N-1
   || v ||   =  [  ∑   pi di vi2  +
                    i=1   
                                         N-1
                                     +  ∑   ρi ( vi - vi-1 )2 ]1/2 ,
                                         i=2 

ρi ≥ 0 - заданные числа. В случае достаточной гладкости функции  v (x) задание параметров  ρi > 0 позволяет увеличить точность и улучшить качество приближения для производной. Итерационный процесс считается оконченным после выполнения заданного числа итераций или после достижения заданной точности.

1. В.А.Моpозов, Н.Л.Гольдман, М.К.Самарин. Метод дескриптивной
   регуляризации и качество приближенных решений,  ИФЖ, T.33,
   N6, 1977.

2. Н.Л.Гольдман. Приближенное решение интегрального уравнения
   Фредгольма I рода в классе кусочно - выпуклых функций
   с ограниченной  первой  производной. Сб. "Численный  анализ на
   ФОРТРАНе, Методы и алгоритмы." Изд-во МГУ, 1978.

3. Ф.П.Васильев. Лекции по методам решения  экстремальных задач.
   Изд-во МГУ, 1974.

Использование

    SUBROUTINE  IA20R (N, F, NG, V1, V2, MU, H, P, R, E, ISP,
                                            LU, U, FU, KN, B) 

Параметры

N - заданное число значений приближаемой функции  f (тип: целый);
F - заданный вещественный вектоp длины N с компонентами  f ( xi ) ;
NG - заданный признак наличия ограничений на производную (тип: целый):
NG = 0 - если ограничения отсутствуют,
NG = 1 - если выполнены ограничения (3) ,
NG = 2 - если выполнены ограничения (4) ,
NG = 3 - если выполнены ограничения (3) и (4) ;
V1 - вещественный вектоp длины N, первые N - 1 компонент которого содержат нижние ограничения  v1 i ;
V2 - вещественный вектоp длины N, первые N - 1 компонент которого содержат верхние ограничения  v2 i ;
MU - целый вектоp длины N, первые N - 2 компонент которого содержат параметры  mi ;
H - вещественный вектоp длины N, первые N - 1 компонент которого содержат шаги  hi ;
P - вещественный вектоp длины N, содержащий весовые коэффициенты  pi > 0 ;
R - вещественный вектоp длины N + 1 значений параметров  ρi таких, что  R (1) = 0.,  R (J) = ρj ≥ 0,  j = 2, ..., N - 1,  R (N) = 0.,  R (N + 1) = 0.;
E - заданная точность вычислений по градиенту (тип: вещественный);
ISP - заданное максимально допустимое число итераций (тип: целый);
LU - параметр, задаваемый из условия (тип: целый);
LU = 1 - если значение  u (a) известно ,
LU = 0 - если значение  u (a) неизвестно ;
U - вещественный вектоp длины N, задающий произвольное начальное приближение; U (1) = U (a) в случае заданного значения  u (a); в результате работы подпрограммы U содержит искомое приближение   u = (u1, ..., un);
FU - вещественная переменная, содержащая вычисленное значение минимизируемого функционала ;
KN - целая переменная, указывающая причину выхода из подпрограммы:
KN = 0 - если выполнено заданное число итераций ,
KN = 1 - если достигнута точность по градиенту ,
KN = 2 - если достигнута точность по функционалу ,
KN = 3 - если достигнута точность по аргументу ;
B - вещественный рабочий вектоp длины 8N + 2 .

Версии: нет

Вызываемые подпрограммы

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

Замечания по использованию

  1. 

Kpоме искомого приближения функции  f (x) подпрограмма позволяет получить приближение для ее производной : компоненты вектоpа  v = (v1, ..., vN - 1) pасположены в B (1), ...,B (N - 1).

  2. 

B случае NG = 0 или NG = 2 массивы V1 и V2 в вычислениях не используются и для них не следует резирвировать память. Соответствующими фактическими параметрами могут быть произвольные идентификаторы. Это замечание относится и к массиву MU в случае NG = 0 или NG = 1.

  3.  Величины, определяющие точность вычисления по аргументу и по функционалу, заданы в самой подпрограмме согласованно с величиной E.

Пример использования

       DIMENSION  F(11), V1(11), V2(11), MU(11), H(11), P(11), R(12), 
      *                       U(11), B(100)
       DATA  V1 /11*0.0/,  V2 /10*1.1, 0./,  MU /5*1, 4*-1, 0, 0/
       DATA  H /10*0.1, 0./,  P /11*1.0/,  R /12*0.0/,  U /11*0.0/
       N = 11
       NG = 3
       LU = 1
       E = 1.E-5
       ISP = 20
       U(1) = -11./24.
       SF = 0.025
       Y = -0.5
       DO 1  J = 1, N
       S = SF*( 2.*SIN(123.456*J + 789.) )
       F(J) = Y - (Y**3)/3. + S
    1 Y = Y + H(J)
       CALL  IA20R (N, F, NG, V1, V2, MU, H, P, R, E, ISP, LU, U, FU,
      *                        KN, B)

Результат:

       U  =  (-4.58E-1,  -3.97E-1,  -3.00E-1,  -2.04E-1,  -1.07E-1,  4.87E-4,
                 1.08E-1,   2.02E-1,   2.96E-1,   3.91E-1,  4.13E-1)