Текст подпрограммы и версий ( Фортран ) ec01r.zip |
Тексты тестовых примеров ( Фортран ) tec01r.zip |
Текст подпрограммы и версий ( Си ) ec01r_c.zip |
Тексты тестовых примеров ( Си ) tec01r_c.zip |
Текст подпрограммы и версий ( Паскаль ) ec01r_p.zip |
Тексты тестовых примеров ( Паскаль ) tec01r_p.zip |
Решение одномерного интегрального уравнения первого рода с разностным ядром на прямой (- ∞, + ∞) методом регуляризации с применением алгоритма быстрого преобразования Фурье и с выбором регуляризации по невязке.
Приближенное решение одномерного интегрального уравнения I рода типа свертки
+∞ (1) Ax ≡ ∫ k(t - τ) x(τ) dτ = y(t) , -∞ < t < +∞ , -∞
с гладким ядром k осуществляется методом регуляризации А.Н. Тихонова [1] путем сведения задачи к минимизации по x сглаживающего функционала
(2) Mα [x, y] = || Ax - y ||2 + α Ω[x] = min x , где : +∞ || Ax - y ||2 = 1/2π ∫ | K(λ) X(λ) - Y(λ) |2 dλ - квадрат невязки, -∞ α > 0 - параметр регуляризации, +∞ Ω[x] = 1/2π ∫ | λ |2p | X(λ) |2 dλ - стабилизирующий функционал -∞ порядка p ≥ 0 (p не предполагается целым);
K (λ), X (λ), Y (λ) -
преобразования Фурье ядра k, решения x и приближенной
правой части y.
Значение параметра α определяется
из условия
(3) ρ(α) = ε || y || , ρ(α) ≡ || Axα - y || ,
где xα -
регуляризированное решение задачи (2),
ε - заданный
относительный уровень невязки.
Считается, что k (t) , x (t), y (t) → 0 при t → ±∞ и функции k (t), y (t) заданы на конечном отрезке [-Т/2, Т/2] в узлах равномерной сетки по t :
ts = s Δt , s = -N/2, -N/2 + 1, ... , -1, 0, 1, ... , N/2 - 1 ,
где N - четное число узлов, Δ (t) = T/N - шаг сетки.
Численный алгоритм для решения уравнения типа свертки с дискретным ядром и правой частью методом регуляризации основан на применении дискретного преобразования Фурье временных рядов [2].
B связи с этим выполняются преобразования, заключающиеся в вычислении ДПФ функций ks = k (ts) и ys = y (ts), приводящие исходную точку к "каноническому" виду.
Приближенные значения xsα регуляризованных решений в узлах ts определяются путем минимизации в спектральной области дискретной аппроксимации сглаживающего функционала и последующего выполнения обратного ДПФ. Для приближенного решения уравнения (3) используется метод касательных Ньютона в соответствии с вычислительной схемой [3].
Качество регуляризованного решения xα при значении параметра α, удовлетворяющем критерию (3), оценивается следующими числовыми характеристиками :
1) невязкой ρ(α) = || Axα - y || , 2) Ω - нормой решения γ(α) = Ω1/2 [ xα ] , 3) значением регуляризирующего функционала φ(α) = [ ρ2(α) + αγ2(α) ]1/2 , 4) функцией "чувствительности" τ(α) = α Ω1/2 [ dxα/dα ] , где Ω [x] ≡ Ω [x] при p = 1/2 (для вычисления "квазиоптимальных" значений параметра регуляризации), 5) найденным значением α как решением уравнения (3), 6) числом итераций при решении уравнения (3), 7) практически достигнутым относительным уpовнем невязки ε0.
Вычисление всех критериальных функций ρ (α), γ (α), φ (α), τ (α) происходит в спектральной области λ и требует порядка N операций.
Возможны следующие режимы вычислений (в зависимости от значения параметра L).
I. Решение интегрального уравнения с приведением
задачи к "каноническому" виду (L = 1).
II. Решение интегрального уравнения при условии, что задача
приведена к "каноническому" виду (L = 2).
III. Решение интегрального уравнения при условии, что ДПФ
ядра вычислено (L = 3).
Эти режимы целесообразно использовать, например, при повторном решении того же интегрального уравнения (L = 2) или при решении уравнения с тем же ядром, но с другой правой частью (L = 3), а также в случае, когда известно аналитическое преобразование Фурье ядра K (λ) (L = 3).
Для оптимального вычисления прямого и обратного ДПФ применяется алгоритм быстрого преобразования Фурье, за счет которого реализованный алгоритм численного решения задачи является эффективным в смысле быстродействия, экономии памяти ЭВМ и влияния ошибок округления, при этом время вычислений пропорционально N log2 N, а объем памяти пропорционален N.
1. | А.Н.Тихонов. O регуляризации некоppектно поставленных задач. ДАН CCCP, 1963, т.153, N 1, 49 - 52. |
2. | В.А.Морозов, Н.Н.Кирсанова, А.Ф.Сысоев. Комплекс алгоритмов быстрого преобразования Фурье дискретных рядов, сб. "Численный анализ на ФОРТРАНе", вып.15. Изд - во МГУ, M., 1976. |
3. | В.И.Гордонова, В.А.Морозов. Численные алгоритмы выбора параметра в методе регуляризации, ЖВМ и МФ, 1973, т.13, N 3, 539 - 545. |
SUBROUTINE EC01R (N, DT, A, Y, P, EPS, L, H, X, Z)
Параметры
N - | количество заданных значений ядра и правой части уравнения, N ≥ 4 - целая степень числа два (тип: целый); |
DT - | заданный шаг сетки по переменным t, τ, DT > 0 (тип: вещественный); |
A - | вещественный вектоp длины N, содержащий заданные значения ядра уравнения на сетке: A (I) = kI- N/2- 1, I = 1, 2, ..., N; |
Y - | вещественный вектоp длины N, содержащий заданные значения правой части уравнения на сетке Y (I) = YI- N/2- 1, I = 1, 2, ..., N; |
P - | заданное значение порядка регуляризации p, P ≥ 0 (тип: вещественный); |
EPS - | заданный относительный уровень невязки ε , 0 < EPS < 1 (тип: вещественный); |
L - | параметр, определяющий режим использования подпрограммы (тип: целый); |
L = 1 - | решение интегрального уравнения в режиме I, |
L = 2 - | решение интегрального уравнения в режиме II, |
L = 3 - | решение интегрального уравнения в режиме III; |
H - | вещественный вектоp длины 7, содержащий вычисленные характеристики решения при найденном значении α: H (1) = ρ(α), H (2) = γ(α), H (3) = φ(α), H (4) = τ(α); H (5) = α, H (6) - число итераций, H (7) - достигнутый относительный уровень невязки ε0; |
X - | вещественный вектоp длины N, содержащий вычисленные значения регуляризованного решения на сетке: X (I) = xI- N/2- 1, I = 1, 2, ..., N; |
Z - | вещественный вектоp длины N, используемый в подпрограмме как рабочий. |
Версии: нет
Вызываемые подпрограммы
FTF1C - | подпрограмма вычисления дискретного или обратного дискретного преобразования Фурье комплексного ряда длины, равной степени двух, методом быстрого преобразования Фурье. |
Замечания по использованию
1. |
В результате работы подпрограммы при L = 1 в массиве A содержится ДПФ ядра Km, а в массиве Y - ДПФ правой части Ym ("канонический" вид задачи). C учетом симметрии вещественной части и антисимметрии мнимой части
преобразований Фурье вещественных рядов относительно
центра m = N/2, хранятся только половины
значений K, Y,
m = 0, 1, ..., N/2. A(I) = Re KI-1 , I = 1, 2, ..., N/2 + 1 , A(I) = Im KI-N/2-1 , I = N/2 + 2, N/2 + 3, ..., N ; при этом учитывая также, что Im Km = 0, m = 0, N/2. | |
2. |
При первом обращении к подпрограмме (L = 1)
необходимо задать значения параметров N, DT, A, Y, P, EPS. | |
3. |
Если относительный уровень невязки ε таков, что ε ≥ ρ (∞)/|| y || , где ρ(∞) = lim ρ(α) , α → ∞ и величины ρ (∞), || y || вычисляются приближенно, то в подпрограмме строится приближение к предельному решению x∞ = lim xα ≡ 0 α → ∞ с характеристиками: H (1) = ρ (∞), H (2) = 0, H (3) = ρ (∞), H (4) = 0, H (5) = 1018, H (6) = 0, H (7) = ε0. | |
4. | Если относительный уровень невязки ε слишком мал и не может быть достигнут, то в подпрограмме вычисляется (если это возможно) нерегуляризованное pешение xsα при α = 0. |
Рассматривается решение интегрального уравнения типа свертки (1) с ядром k (t) = exp (- t2) и правой частью y (t) = (π/2) 1/2 exp (- t2/2) ( точное решение x (t) = exp (- t2) ) или y1 (t) = (π/3) 1/2 exp (- 2/3 t2) ( точное решение x1 (t) = exp (- 2t2) ).
Ниже приводится фрагмент программы, вычисляющей решения и соответствующие значения критериальных функций при заданном относительном уpовне невязки ε с использованием регуляризатора порядка p = 1 и равномерной на отрезке [- 1, 1] сетки из N = 8 точек.
REAL A(8), Y(8), H(7), X(8), Z(8), Y1(8) DATA N /8/, DT /0.25/, P /1./, PI /3.14159265359/ DO 1 I = 1, N T = DT*(-N/2 + I - 1) A(I) = EXP(-T*T) Y(I) = SQRT(PI/2.) * EXP(-T*T/2.) 1 Y1(I) = SQRT(PI/3.) * EXP(-T*T*2./3.) L = 1 EPS = 0.08 CALL EC01R (N, DT, A, Y, P, EPS, L, H, X, Z) Результаты: H = ( 0.122, 1.213, 0.164, 0.335, 0.008, 3, 0.080 ) X = ( 0.339, 0.447, 0.712, 0.991, 1.113, 0.991, 0.712, 0.447 ) L = 3 EPS = 0.085 CALL EC01R (N, DT, A, Y1, P, EPS, L, H, X, Z) Результаты: H = ( 0.102, 1.492, 0.149, 0.325, 0.005, 3, 0.085 ) X = ( 0.094, 0.225, 0.549, 0.893, 1.046, 0.893, 0.549, 0.225 )