Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция№14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
764.42 Кб
Скачать

Листинг_№10

%Программа сглаживания функции с помощью метода

%сильной регуляризации путем решения дифференциального

%уравнения второго порядка (62) согласно разностным

%схемам (63), (65), (65')

function smoothing

%Определяем область интегрирования

a=0; b=1;

%Определяем число узлов разностной схемы и ее шаг

N=101; h=(b-a)/(N-1);

%Определяем сетку по x

x=a:h:b;

%Определяем функцию, которая немного зашумлена

for i=1:N

f(i)=x(i)*sin(2*pi*x(i))+0.1*randn;

end

%Выбираем пару значений параметра регуляризации

alpha=[1e-3 1e-4];

%Организуем цикл расчетов с разными значениями

%параметра регуляризации

for s=1:length(alpha)

%Вычисляем начальные значения коэффициентов

%прогонки y(i-1)=c(i)y(i)+d(i), учитывая левое

%граничное условие (65)

c(2)=(alpha(s)*p1(x(1)))/...

(alpha(s)*p1(x(1))+0.5*h^2*(1+alpha(s)*p0(x(1))));

d(2)=(0.5*h^2*f(1))/...

(alpha(s)*p1(x(1))+0.5*h^2*(1+alpha(s)*p0(x(1))));

%Вычисляем коэффициенты прогонки

for i=2:(N-1)

c(i+1)=(alpha(s)*p1(x(i)+0.5*h))/...

(h^2*(1+alpha(s)*p0(x(i)))+alpha(s)*...

(p1(x(i)+0.5*h)+p1(x(i)-0.5*h))-...

alpha(s)*p1(x(i)-0.5*h)*c(i));

d(i+1)=(alpha(s)*p1(x(i)-0.5*h)*d(i)+h^2*f(i))/...

(h^2*(1+alpha(s)*p0(x(i)))+alpha(s)*...

(p1(x(i)+0.5*h)+p1(x(i)-0.5*h))-...

alpha(s)*p1(x(i)-0.5*h)*c(i));

end

%Учитывая правое граничное условие (65'),

%находим y(N) и далее вычисляем все решение y(i)

y(N)=(alpha(s)*p1(x(N))*d(N)+0.5*h^2*f(N))/...

(alpha(s)*p1(x(N))+0.5*h^2*(1+alpha(s)*...

p0(x(N)))-alpha(s)*p1(x(N))*c(N));

for i=N:-1:2

y(i-1)=c(i)*y(i)+d(i);

end

%Рисуем зашумленное решение f и сглаженное решение y

subplot(1,2,s); plot(x,f,x,y);

end

%Определяем функцию p0

function y=p0(x)

y=1+x^2;

%Определяем функцию p1

function y=p1(x)

y=1+x^2;

На рис.10 приведен итог работы кода программы листинга_№10. На левом рисунке представлена зашумленная функция f(x) и ее сглаженный вариант yi, полученный с помощью метода сильной регуляризации, т.е. путем решения дифференциального уравнения (62) по разностным схемам (63), (65), (65). В качестве параметра регуляризации выбиралось значение 103. На правом рисунке представлены аналогичные профили, но при параметре регуляризации, равном 104. Видно, что степень сглаживания на правом рисунке менее выражена по сравнению с аналогичным профилем на левом рисунке. Подбирая значение параметра регуляризации можно добиться нужной степени сглаживания искомой функции.

Рис.10. Сглаживание функции f(x) с помощью метода сильной регуляризации путем численного решения уравнения (62)

Дифференцирование функции. Задачу дифференцирования u(x) = f(x), x  [a,b] можно представить в виде уравнения Вольтерра первого рода:

,

которое в свою очередь может быть переписано в виде уравнения Фредгольма первого рода с разрывным ядром:

, (66)

где

(66)

Поскольку условие непрерывности ядра не является существенным, применим к данной задаче метод сильной регуляризации, тогда, учитывая (51), (66), (66), получим

(67)

Подставляя (67) в (51) и считая n = 1, получим следующее интегро-дифференциальное уравнение:

(68)

плюс пара граничных условий .

Для численного решения интегро-дифференциального уравнения (68) введем равномерные сетки по переменным и : i = a + h(i  1), j = a + h(j  1), i,j = 1,2,…,N, h = (ba)/(N  1). Аппроксимируем вторую производную в (68) симметричной второй разностью, а интегралы, входящие в левую часть уравнения, по формулам трапеции, тогда получим следующее разностное уравнение:

(69)

где , i = 2,…,N  1. Следуя схеме предыдущего примера (64), аппроксимируем граничные условий u(a) = u(b) = 0 со вторым порядком точности по h, тогда левое и правое граничные условия предстанут в виде:

(70)

. (70)

На листинге_№11 приведен код программы численного дифференцирования функции f(x) методом сильной регуляризации путем решения интегро-дифференциального уравнения (68) с помощью разностной схемы (69) — (70). Выбиралось следующее представление для функции f: f(x) = sin(x) + (x), где (x) — небольшая шумовая добавка. Численное решение y разностной задачи (69) — (70) сравнивалось с точным значением производной ya =  cos(x) в рамках оценки ошибки error = ||yya||C.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]