Текст подпрограммы и версий ( Фортран ) ef03r.zip |
Тексты тестовых примеров ( Фортран ) tef03r.zip |
Текст подпрограммы и версий ( Си ) ef03r_c.zip |
Тексты тестовых примеров ( Си ) tef03r_c.zip |
Текст подпрограммы и версий ( Паскаль ) ef03r_p.zip |
Тексты тестовых примеров ( Паскаль ) tef03r_p.zip |
Решение интегрального уравнения Фредгольма I рода методом поточечной невязки.
Решение интегрального уравнения Фредгольма I рода
b (1) Au ≡ ∫ K(x, y) u(y) dy = f(x) , c ≤ x ≤ d , a
с известными ядром K (x, y) и правой частью f (x) сводится методом поточечной невязки [1,2] к минимизации функционала
b (2) Ω(u) = ∫ ( p1 u2 + p2 (du/dy)2 + p3 (d2u/dy2) ) dy a при условии (3) | Au - f(x) | ≤ δ (x) ,
где δ (x) - заданная
погрешность правой части уравнения (1),
p1 > 0,
p2 ≥ 0,
p3 ≥ 0 - заданные
параметры.
Дискретный аналог задачи (2), (3) состоит в определении вектоpа u = (u1, ..., uN) ∈ EN, обладающего наименьшей C - нормой
(4) || u ||c2 = (C u, u) = min u (C u, u)
среди всех u = (u1, ..., uN) ∈ EN, для которых выполнены неpавенства
(5) | (K D u)i - fi | ≤ δi , i ∈ 1, M
Здесь C - ленточная положительно определенная матрица квадратичной формы, аппроксимирующей функционал Ω (u) на сетке { yj } :
a = y1 < y2 < ... < yj < ... < yN = b , yj + 1 - yj = hj с помощью разностных отношений:
du/dy [ в точке yj+1/2 ] = [ u(yj+1) - u(yj) ] / hj , d2u/dy2 [ в точке yj ] = [ du/dy [ в точке yj+1/2 ] - - du/dy [ в точке yj-1/2 ] ] / 0.5(hj + hj-1)
и квадратурной формулы трапеций. K - известная матрица порядка M * N с элементами ki j = k (xi, yj), {xi} - сетка узлов на [c, d]:
c = x1 < ... < xi < ... < xM = d , D - диагональная матрица коэффициентов квадратурной формулы dj ( j ∈ 1, N ), fi = f (xi) и δi = δ (xi) - значения правой части погрешности в узлах xi.
Для приближенного решения задачи (4), (5) в подпрограмме применяется метод последовательного проектирования [3], позволяющий определить элемент w = (w1, ..., wn) ∈ EN такой, что
|| u ||c ≤ || w ||c ≤ 2 || u ||c .
В случае пустоты множества (5) при заданных δi в подпрограмме находятся значения δi = δi + p4 δi (p4 > 0 - заданный параметр), при котоpом множество (5) непусто.
При необходимости повторного решения интегрального уравнения (1) с тем же ядром и функционалом Ω (u), но с другой правой частью подпрограмма реализует алгоритм численного решения задачи (4), (5) быстрее.
1. | Морозов B.A. O выборе параметра при решении функциональных уравнений методом регуляризации. ДАН CCCP 175, N 6, 1967. |
2. | Морозов B.A., Гольдман Н.Л. Численный алгоритм решения интегральных уравнений Фредгольма I рода методом поточечной невязки. B сб.: Методы и алгоритмы в численном анализе. - M.: Изд - во МГУ, 1981, стp.28 - 43. |
3. | Гурин Л.Г., Поляк Б.Т., Райк Э.В. Методы проекций для отыскания общей точки выпуклых множеств. ЖВМ и МФ 7, N 6, 1967. |
SUBROUTINE EF03R (M, N, A, F, DELTA, H, D, P1, P2, P3, P4, L, U, B)
Параметры
M - | заданная размерность вектоpа правой части f (тип: целый); |
N - | заданная размерность вектоpа искомого решения (тип: целый); |
A - | заданный вещественный двумерный массив размеpа M * N, содержащий элементы матрицы K: A (I, J) = ki j; |
F - | заданный вещественный вектоp длины M, содержащий компоненты вектоpа правой части: F (I) = fi; |
DELTA - | заданный вещественный вектоp длины M, содержащий компоненты вектоpа погрешности DELTA (I) = δi; |
H - | заданный вещественный вектоp длины N, первые N - 1 компонент которого содержат шаги hj разностной сетки на отрезке [a, b]; |
D - | заданный вещественный вектоp длины N, содержащий коэффициенты квадратурной формулы dj; |
P1 - P2 P3 | параметры, определяющие стабилизирующий функционал Ω (u) (тип: вещественный); |
P4 - | параметр, задающий уровень погрешности δi в случае пустоты множества (5) при исходном уpовне погрешности (тип: вещественный); |
L - | параметр, определяющий режим использования подпрограммы (тип: целый); |
L = 1 - | при первом обращении к подпрограмме, |
L = 2 - | при повторном обращении к подпрограмме; |
U - | вещественный вектоp длины N; в результате работы подпрограммы содержит вычисленное pешение w; |
B - | вещественный вектоp длины 5N + 3M, используемый как рабочий. |
Версии: нет
Вызываемые подпрограммы
AVZ2R - | нахождение максимальной по модулю компоненты и ее индекса из всего вектоpа или из заданного подмножества компонент этого вектоpа. |
Замечания по использованию
1. |
Подпрограмма EF03R обращается к вспомогательным подпрограммам с именами EF03R1, EF03R2, EF03R3, EF03R4. | |
2. |
B результате работы подпрограммы исходная информация, расположенная в массиве A, не сохраняется. | |
3. |
B результате работы подпрограммы массив DELTA содержит значения параметров δi, при которых фактически решена задача, т.е. обеспечивающих непустоту множества ограничений (5). | |
4. | При повторных обращениях к подпрограмме (L = 2) можно менять только значения F. Значения остальных паpаметpов должны сохраняться теми, какими они получены после первого обращения. |
Рассматривается интегральное уравнение
1 ∫ K(x, y) u(y) dy = f(x) -1
с ядром K (x, y) = ( 1 + (x - y)2 )- 1 , правой частью
f(x) = (2 - x2) ( arctg(1 - x) + arctg(1 + x) ) - 2 - - x ln( (1 + (1 - x)2) / (1 + (1 + x)2) )
и точным решением u (y) = 1 - y2.
Ниже приводится фрагмент программы, вычисляющей приближенное решение.
Для аппроксимации интеграла применяется квадратурная формула трапеции с использованием равномерной сетки по x на отрезке [- 2, 2] с шагом hi = 0.1 (число узлов M = 41) и равномерной сетки по y на отрезке [- 1, 1] с шагом hj = 0.05 (число узлов N = 41).
REAL A(41, 41), F(41), DELTA(41), HJ(41), D(41), U(41), B(328), * HI(41) DATA DELTA /41*0.001/ , HJ /40*0.05, 0./, HI /40*0.1, 0./, * M /41/, N /41/ DATA D /0.025, 39*0.05, 0.025/, P1 /1./, P2 /0./, P3 /0./, * P4 /1./, L /1/ B(1) = -2. B(M+1) = -1. DO 1 J = 2, N K = M + J 1 B(K) = B(K-1) + HJ(J-1) DO 2 I = 2, M 2 B(I) = B(I-1) + HI(I-1) DO 3 I = 1, M DO 3 J = 1, N K = M + J A(I, J) = 1. / (1. + (B(K)-B(I))**2) 3 CONTINUE DO 4 I = 1, M W = 1. + B(I) W1 = 1. - B(I) F(I) = (1. + W*W1)*( ATAN(W) + ATAN(W1) ) - 2. - * B(I)*ALOG( (1. + W1*W1) / (1. + W*W) ) 4 CONTINUE CALL EF03R (M, N, A, F, DELTA, HJ, D, P1, P2, P3, P4, L, U, B) Результаты: при J = 1 + 5K , K = 0, 1, ..., 8 U(J) = ( 0.104, 0.411, 0.715, 0.952, 1.041, 0.944, 0.707, 0.411, 0.119 )