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

Листинг_№7

%Пример решения некорректного уравнения Фредгольма

%первого рода (54) с помощью метода регуляризации,

%т.е. путем сведения исходной задачи (54), (54') к

%решению корректного уравнения Фредгольма второго

%рода (55) с параметром регуляризации alpha > 0

function noncor

%Вводим число узлов сетки по переменным xi и eta

N=101; h=1.0/(N-1);

xi=0:h:1; eta=0:h:1;

%Определяем значения аналитического решения exp(xi)

%в узлах сетки xi

ya=exp(xi);

%Рисуем аналитическое решение пунктирной

%красной линией

subplot(1,2,1);

plot(xi,ya,'--','Color','red','LineWidth',4.5);

hold on

%Определяем набор параметров регуляризации alpha

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

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

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

for s=1:length(alpha)

%Согласно разностной схеме (56) определяем

%линейную систему уравнений Ay = b относительно

%неизвестного вектора y

for i=1:N

A(i,1)=0.5*h*Q(xi(i),eta(1));

A(i,N)=0.5*h*Q(xi(i),eta(N));

for j=2:(N-1)

A(i,j)=h*Q(xi(i),eta(j));

end

A(i,i)=A(i,i)+alpha(s);

b(i)=f(xi(i));

end

%Решаем линейную систему уравнений Ay = b

y=A\b';

%Оцениваем ошибку численного решения y путем

%оценки разности error=||y-ya|| в норме C, где

%ya - аналитическое решение задачи (54), (54')

for i=1:N

z(i)=abs(y(i)-ya(i));

end

error(s)=max(z);

%Рисуем регуляризированные решения y при

%различных значениях параметра alpha

subplot(1,2,1); plot(xi,y,'LineWidth',3.5/s);

hold on

end

%Рисуем график зависимости ошибки численного

%решения от параметра alpha

subplot(1,2,2); loglog(alpha,error,'LineWidth',3);

%Определяем функцию Q(xi,eta), заданную в (55')

function y=Q(xi,eta)

if (xi==0)&(eta==0)

y=1;

else

y=(exp(xi+eta)-1)/(xi+eta);

end

%Определяем функцию f(xi), заданную в (55')

function y=f(xi)

%Используем формулу трапеции для аппроксимации

%интеграла, входящего в определение f(xi) в (55')

y=0.005*(fi(0,xi)+fi(1,xi));

for i=2:100

y=y+0.01*fi(0.01*(i-1),xi);

end

function y=fi(x,xi)

y=exp(x*xi)*((exp(x+1)-1)/(x+1));

На рис.7 приведен итоговый график, генерируемый кодом программы листинга_№7. На левом рисунке приведены графики численного решения при различных значениях регуляризирующего значения. Видно, что как слишком большие значения, так и слишком малые значения приводят к большим отличиям от аналитического решения . Аналитическое решение представлено на левом рисунке в виде красной жирной пунктирной линии. На правом рисунке представлена зависимость ошибки численного решения error = от параметра регуляризации > 0. Из правого графика отчетливо видно наличие оптимального значения параметра opt регуляризации, при котором ошибка достигает минимума. В программе следующего листинга_№8 будет изучена зависимость оптимального значения параметра регуляризации opt от шага сетки h.

Рис.7. Численное решение некорректной задачи (54), (54) методом регуляризации, т.е. путем сведения ее к решению корректного уравнения Фредгольма второго рода (55)

На листинге_№8 приведено решение предыдущей некорректной задачи (54), (54) методом регуляризации с помощью решения корректного уравнения Фредгольма второго рода (55), (55). В этой программе нас будет интересовать зависимость оптимального значения параметра opt от шага сетки h. Напомним, что сетки были введены по переменным и для аппроксимации интеграла в интегральном уравнении (55) согласно разностной схеме (56). Необходимо убедиться, что при уменьшении шага сетки opt также уменьшается.

Листинг_№8

%На примере решения некорректного уравнения Фредгольма

%первого рода (54) с помощью метода регуляризации,

%т.е. путем сведения исходной задачи (54), (54') к

%решению корректного уравнения Фредгольма второго

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

%значения параметра alpha_opt от шага сетки h

function noncor2

global N h

%Вводим начальное число узлов сетки по

%переменным xi и eta

N=21;

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

for t=1:6

%Число узлов сетки по переменным xi и eta

%увеличиваем в арифметической прогрессии

N=N+20; h=1.0/(N-1);

xi=0:h:1; eta=0:h:1;

%Определяем значения аналитического решения exp(xi)

%в узлах сетки xi

ya=exp(xi);

%Определяем набор параметров регуляризации alpha

alph_l=1e-4; alph_r=1e-3; alph_h=(alph_r-alph_l)/20;

alpha=alph_l:alph_h:alph_r;

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

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

for s=1:length(alpha)

%Согласно разностной схеме (56) определяем

%линейную систему уравнений Ay = b относительно

%неизвестного вектора y

for i=1:N

A(i,1)=0.5*h*Q(xi(i),eta(1));

A(i,N)=0.5*h*Q(xi(i),eta(N));

for j=2:(N-1)

A(i,j)=h*Q(xi(i),eta(j));

end

A(i,i)=A(i,i)+alpha(s);

b(i)=f(xi(i));

end

%Решаем линейную систему уравнений Ay = b

y=A\b';

%Оцениваем ошибку численного решения y путем

%оценки разности error=||y-ya|| в норме C, где

%ya - аналитическое решение задачи (54), (54')

for i=1:N

z(i)=abs(y(i)-ya(i));

end

error(s)=max(z);

end

%Определяем значение alph_opt, при котором ошибка

%численного решения минимальна

ermin=min(error);

for s=1:length(alpha)

if ermin==error(s)

alph_opt(t)=alpha(s);

end

end

step(t)=h;

%Рисуем график зависимости ошибки численного

%решения от параметра alpha

subplot(1,2,1);

loglog(alpha,error,'LineWidth',0.75*t);

hold on

end

%Рисуем график зависимости оптимального значения

%параметра регуляризации alph_opt от шага сетки

subplot(1,2,2); plot(step,alph_opt);

%Определяем функцию Q(xi,eta), заданную в (55')

function y=Q(xi,eta)

if (xi==0)&(eta==0)

y=1;

else

y=(exp(xi+eta)-1)/(xi+eta);

end

%Определяем функцию f(xi), заданную в (55')

function y=f(xi)

global N h

%Используем формулу трапеции для аппроксимации

%интеграла, входящего в определение f(xi) в (55')

y=0.5*h*(fi(0,xi)+fi(1,xi));

for i=2:(N-1)

y=y+h*fi(h*(i-1),xi);

end

function y=fi(x,xi)

y=exp(x*xi)*((exp(x+1)-1)/(x+1));

Рис.8. Изучение зависимости оптимального значения параметра регуляризации opt от шага сетки h

На рис.8 приведен итог работы кода программы листинга_№8. На левом рисунке приведены графики зависимости ошибки численного решения в зависимости от значений регуляризирующего параметра , полученные на различных сетках, т.е. при разных шагах h по переменным и . На всех шести графиках отмечается наличие оптимального значения параметра регуляризации opt. На правом графике построен профиль зависимости opt от шага сетки h. Видно, что оптимальное значение параметра регуляризации стремится к нулю по мере стремления шага сетки к нулю.

Можно доказать еще ряд важных утверждений при n = 1. Во-первых, решение регуляризованное задачи (51) — (51) равномерно сходится к решению исходной задачи (39), во-вторых, метод регуляризации при n = 1 обеспечивает сильную регуляризацию. Приведем лишь формулировки соответствующих теорем, опуская доказательства (формулировки и доказательства данных теорем приведены в учебнике5).

Теорема №2. Пусть , тогда при n = 1 и положительном  0 решение задачи (51) — (51), соответствующее правой части , равномерно сходится к .

Теорема №3. Метод регуляризации (41), (42) при n = 1 обеспечивает сильную регуляризацию, т.е. регуляризованное решение сходится к искомому решению в норме .

Более подробно рассмотрим случай n = 1 на примере решения задачи (54) с ядром и правой частью вида:

. (57)

Задаче (54), (57) соответствует аналитическое решение u() = cos().

Согласно (51), (51), имеем (p0()  1, p1()  1):

, (58)

где функции Q(,), () с учетом (51), (57) имеют следующий вид:

. (58)

Для решения задачи (58), (58) введем сетки по переменным и : i = h(i  1), j = h(j  1), h = 1/(N  1), i,j = 1,2,…,N. Интеграл, входящий в (58), аппроксимируем по формуле трапеции, тогда

(59)

где yiu(i), i = 2,…,N. Недостающие два уравнения находятся из граничных условий, которые аппроксимируем со вторым порядком по h, т.е.

(60)

Находя соответствующие из уравнения (58) и подставляя в (60), получим граничные условия в следующем виде:

(61)

(61)

На листинге_№9 приведен код программы решения некорректной задачи (54), (57) методом регуляризации, т.е. путем сведения исходной задачи к решению корректного интегро-дифференциального уравнения (58), (58). Как и в предыдущих двух программах, выбор параметра регуляризации определяется его оптимальным значением opt, на котором реализуется минимум ошибки численного решения (при условии, конечно, что решение известно). В программе листинга_№9 исследуется зависимость оптимального значения параметра регуляризации opt от шага сетки h.

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