Академический Документы
Профессиональный Документы
Культура Документы
Карчевский
Численные методы
решения интегральных уравнений
и комплекс программ
на языке Matlab
Учебное пособие
Казанский университет
2017
Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
§ 1. Метод квадратур
подробнее,
1 − A1 K11 y1 f1
−A K 1 − A2 K22 y2 f2
1 21
.. .. ... .. = .. .
. . . .
−A1 Kn1 −A2 Kn2 · · · 1 − An Knn yn fn
Хорошо видно, что матрица коэффициентов этой системы — тре-
угольная. Если все диагональные элементы матрицы отличны от ну-
ля, то значения y1 , y2 , . . . , yn можно последовательно найти по ре-
куррентной формуле
à i−1
!
X
yi = (1 − Ai Kii )−1 fi + Aj Kij yj , i = 1, 2, ..., n. (8)
j=1
y2=transp(y_approx);
plot(x,y2,’or’);
axis([a,b,0.99,1.01]);
h=0.05;
x = a:h:b;
y_approx=Volt_II_Rect(K,f,a,b,h)
y3=transp(y_approx);
plot(x,y3,’sr’);
xlabel(’x’);
ylabel(’y’);
hold off;
Упражнения
1.01
1.008
1.006
1.004
1.002
1
y
0.998
0.996
0.994
0.992
0.99
0 0.2 0.4 0.6 0.8 1
x
b−a
xi = a + h(i − 1), i = 1, 2, . . . , n, h= ,
n−1
где n = 2m + 1, m = 1, 2, . . . Решите с помощью новой функции
уравнение (11) и сравните эффективность использования фор-
мул Симпсона и трапеций.
§ 2. Метод квадратур для нелинейного уравнения 11
Точное решение этого уравнения y ≡ 1 (см. пример 1.10, с. 40, [3]). Это
уравнение относится к более узкому классу нелинейных уравнений
с подынтегральными выражениями вида K(x, s)y 2 (s). Равенства (2)
принимают следующий вид:
Zxi
y(xi ) − e−(xi −s) y 2 (s)ds = e−xi , i = 1, 2, ..., n. (6)
0
1.1
1.08
1.06
1.04
1.02
1
y
0.98
0.96
0.94
0.92
0.9
0 0.02 0.04 0.06 0.08 0.1
x
format long;
K = @(x,s)exp(-(x-s));
f = @(x)exp(-x);
y_approx=Nonlin_Volt_II_Rect(a,b,h,K,f);
y_exact=@(x)1;
plots(a,b,h,y_exact,y_approx);
Упражнения
Если правая часть f (x) непрерывна на отрезке [a, b], а ядро K(x, s)
непрерывно в замкнутом треугольнике a 6 s 6 x 6 b, эта последо-
вательность сходится при любом начальном приближении y0 (x) (см.,
напр., [2], с. 613). Скорость сходимости зависит от свойств ядра и
правой части уравнения. Ясно, что число итерационных шагов для
получения аппроксимации необходимой точности зависит от степени
близости начального приближения к искомому решению. В качестве
начального приближения часто выбирают f (x), если нет дополни-
тельной информации о решении.
При численной реализации итерационных методов интеграл вы-
числяется посредством квадратурных формул. Воспользуемся квад-
ратурной формулой трапеций с равномерной сеткой и шагом h. Узлы
сетки обозначим xi , i = 0, 1,. . . , n, пусть Kij = K(xi , xj ), yki = yk (xi ).
Получим расчетное выражение
Zxi
yk+1 (xi ) = f (xi ) + K(xi , s)yk (s)ds ≈ (3)
0
h
≈ f (xi ) + [Ki0 yk0 + 2 (Ki1 yk1 + Ki2 yk2 + · · · + Ki,i−1 yk,i−1 ) + Kii yki ] ,
2
где i = 0, 1, . . . , n. Для окончания итерационного процесса, как обыч-
но, будем использовать условие
||yk − yk−1 ||
6 ε, (4)
||yk ||
18 Глава 1. Методы решения уравнений Вольтерра второго рода
clc
f = @(x) x*0 + 1;
K = @(x,s) x*0 + s*0 + 1;
a = 0;
b = 7;
h = 0.07;
eps = 1e-03;
Его точное решение y(x) = sin x (см. пример 1.18., с. 72, [3]).
4) Напишите функцию, реализующую метод последовательных
приближений, на основе квадратурной формулы Симпсона (12),
с. 9. Решите с помощью этой функции уравнения из этого пара-
графа и сравните эффективность применения метода Симпсона
с использованием метода трапеций.
§ 3. Метод простой итерации 21
1200
1000
800
600
y
400
200
0
0 1 2 3 4 5 6 7
x
§ 1. Метод квадратур
18
16
14
12
10
y
0
−4 −3 −2 −1 0 1 2 3 4
x
plots(a,b,h,y_exact,y_approx);
Упражнения
или
m
X Zb Zb
ci − λ cj αj (s)βi (s)ds = βi (s)f (s)ds, i = 1, 2, . . . , m. (8)
j=1 a a
Обозначим
Zb
aij = αj (s)βi (s)ds, i, j = 1, 2, . . . , m. (9)
a
Zb
fi = βi (s)f (s)ds, i = 1, 2, . . . , m. (10)
a
Запишем равенства (8) в виде системы линейных алгебраических
уравнений относительно неизвестных ci :
m
X
ci − λ aij cj = fi , i = 1, 2, . . . , m, (11)
j=1
подробнее,
1 − λa11 −λa12 · · · −λa1m c1 f1
−λa21 1 − λa22
· · · −λa2m c2 f2
=
··· ··· ··· ··· ··· ··· . (12)
−λam1 −λam2 · · · 1 − λamm cm fm
Если число λ регулярное, то определитель матрицы этой системы
отличен от нуля, и она имеет единственное решение.
Таким образом, алгоритм решения интегрального уравнения с вы-
рожденным ядром (2) состоит в вычислении интегралов (9), (10) и
решении системы линейных алгебраических уравнений (12). Решение
уравнения (2) затем записывается аналитически в виде (5).
§ 2. Метод вырожденных ядер 29
ans =
s*x^2+1/2*s^2*x^3+1/6*s^3*x^4
4589889984855 2 24810467431825 3
1 - ---------------- x - ----------------- x -
4503599627370496 54043195528445952
14994606363791 4
- ------------------ x
108086391056891904
Эта функция на отрезке [0, 1] достаточно хорошо аппроксимирует
точное решение y ≡ 1.
Упражнения
1) Решите уравнение с вырожденным ядром (см. пример 1, с. 347, [5]):
Z1
y(x) = x2 + λ (x + s)y(s)ds, x ∈ [−1, 1].
−1
22λx + 4λ2 /3
y(x) = x + .
3 − 4λ2
2) Приближенно решите уравнение (см. пример 3, с. 352, [5])
Z1/2
y(x) − exp(−x2 s2 )y(s)ds = 1, x ∈ [0, 1/2]. (14)
0
sh(x + s) = sh x ch s + ch x sh s,
y(x) = x2 + α sh x + β ch x,
где
µ ¶
6 sh 1 − 4 ch 1 sh 2
α= ¡ sh 2 ¢2 = −0.6821, β=α −1 = −0.5548.
2− 2 2
34 Глава 2. Методы решения уравнений Фредгольма второго рода
Если y(x) — точное решение уравнения (1), с. 22, невязка равна нулю.
Его приближенное решение ye(x) будем искать в виде
n
X
ye(x) = ci ϕi (x). (2)
i=1
ε(x, c) = Re
y (x).
ε(x, c) = ci ϕi (x) − λ K(x, s)ϕi (s)ds − f (x), x ∈ [a, b]. (3)
i=1 a
т.е. из условий
∂J
= 0, i = 1, 2, . . . , n. (5)
∂ci
Подставим (3) в (4):
2
Z b X n Zb
J(c) = ci ϕi (x) − λ K(x, s)ϕi (s)ds − f (x) dx.
a i=1 a
§ 3. Метод наименьших квадратов 35
где
Zb Zb
aij = ϕj (x) − λ K(x, s)ϕj (s)ds ×
a a
Zb
× ϕi (x) − λ K(x, s)ϕi (s)ds dx, i, j = 1, 2, . . . , n.
a
Zb Zb
bi = f (x) ϕi (x) − λ K(x, s)ϕi (s)ds dx, i = 1, 2, . . . , n.
a a
Решим эту систему и запишем приближенное решение исходного ин-
тегрального уравнения в виде (2). Теоретически этот метод обосно-
ван, например, в [12], с. 453.
2. Компьютерные программы. Напишем на языке Matlab
функцию CoefMNK.m, реализующую этот метод.
clear all
close all
clc
syms x s;
a=-1;
b=1;
K=@(x,s) x*s; % ядро
f=@(x) x; % правая часть
y_exact=@(x) 3*x; %точное решение
lambda=1;
n=2; % число координатных функций
m=20; % число узлов сетки
[y,c]=CoefMNK( a,b,K,lambda,f,n,m );
c %коэф-ты
x = linspace(a,b,m); % сетка для построения графиков
figure(1)
plot(x,y_exact(x),’b’) % график точного решения
hold on
plot(x,y,’ro’) % график приближенного решения
xlabel(’x’);
ylabel(’y’);
Результатами работы этого сценария являются графики точного и
приближенного решений (см. рис. 2), а также вектор искомых коэф-
фициентов:
c =
0
3
38 Глава 2. Методы решения уравнений Фредгольма второго рода
0
y
−1
−2
−3
−1 −0.5 0 0.5 1
x
Рис. 2. Результаты решения задачи 3.24, с. 206, из книги [3]. Непрерывной линией обо-
значено точное решение, кружочками — приближенное решение.
Упражнения
y(x) = c1 + c2 x + c3 x2 .
y(x) = c1 x2 + c2 sh x + c3 ch x.
Здесь
Zb Zb Zb
aij = ϕj (x)ψi (x)dx − λ ψi (x) K(x, s)ϕj (s)dsdx,
a a a
Zb Zb
bi = λ ψi (x) K(x, s)f (s)dsdx.
a a
Решив систему (3), найдем коэффициенты в представлении прибли-
женного решения (1). В наиболее общем виде этот метод обоснован,
например, в [7], с. 190.
§ 4. Метод Галеркина — Петрова 41
4
y
1
−1 −0.5 0 0.5 1
x
Упражнения
ye(x) = 1 + c1 x + c2 x2 ,
§ 5. Метод коллокации
syms x
for i=1:n+1
for j=1:n+1
% вычисляем интеграл
integr=quadl(@(s) lambda*K(xx(i),s).*Fi(s, j-1),a,b);
% вычисляем значение функции Psi_j в точке x(i)
M(i,j)=Fi(xx(i), j-1)-integr;
end
end
CondNumb=cond(M,inf); % число обусловленности
C=M\ff’; % решение СЛАУ
y=0;
% Решение уравнения в символьном виде
for i=1:n+1
y=y+C(i)*Fi(x, i-1);
end
% Решение уравнения в узлах сетки
y_f=0;
x=linspace(a,b,m);
for i=1:n+1
y_f=y_f+C(i)*Fi(x, i-1);
end
end
% Полином Лежандра
% Входные данные: x - независимая переменная,
% n - степень полинома,
% Результат: P - значение полинома
48 Глава 2. Методы решения уравнений Фредгольма второго рода
% Автор: Ганиева Э.
function P = Fi(x,n)
if n==0
P=1;
else
if n==1
P=x;
else
P=(2*n-1)./n.*x.*Fi(x,n-1) - (n-1)./n.*Fi(x,n-2);
end
end
end
clc
clear all
close all
4
y
−1 −0.5 0 0.5 1
x
n=3;
m=20;
K= @(x,s) x*s+x^2; % ядро уравнения
f= @(x) 1 + 0*x; % правая часть
lambda=1;
a=-1;
50 Глава 2. Методы решения уравнений Фредгольма второго рода
b=1;
[y, y_f,condNumb]=Fredgolm_II_Colloc(a,b,lambda,K,f,n,m);
x=linspace(a,b,m);
y_exact=@(x) 6*x.^2+1; % точное решение
pretty(y) % решение в удобном виде
figure
ezplot(y,a,b) % приближенное решение
title(’ ’)
hold on
plot(x, y_exact(x),’or’)
xlabel(’x’);
ylabel(’y’);
hold off
94237822202727589 x 2
- -------------------------------- + 6 x + 1
60847228810955011271841753858048
Напомним, что точное решение уравнения (4), с. 42, имеет вид
y(x) = 6x2 + 1.
Ясно, что приближенное решение на отрезке [−1, 1] хорошо аппрок-
симирует точное. В сценарии вычисляется относительная ошибка ре-
шения:
§ 5. Метод коллокации 51
error =
3.806478941571965e-016
На рис. 4 показаны графики точного решения этого уравнения и при-
ближенного, полученного методом коллокации.
Упражнения
π Zπ
1+e
y(x) = ex − + (1 − eπ ) cos(x) + (sin(s) + cos(x)) y(s)ds,
2
0
где x ∈ [0, π]. Убедитесь в том, что точное решение этого уравне-
ния y(x) = ex . Используйте в качестве координатных функций
полиномы Лежандра. Увеличивайте число координатных функ-
ций до тех пор, пока число обусловленности матрицы системы
метода коллокации не станет больше 1016 . Постройте графики
зависимости числа обусловленности и относительной ошибки ре-
шения от числа координатных функций.
3) Напишите функции, реализующие построение коордиинатных
функций на основе ортогональных полиномов Чебышева (см.,
напр., [6], с. 141),
T0 (x) ≡ 1, T1 (x) = x,
§ 7. Метод моментов
§ 1. Вырожденные ядра
m
X Zb
y(x) − λ αi (x) βi (s)y(s)ds = 0, x ∈ [a, b]. (2)
i=1 a
54 Глава 3. Однородное уравнение Фредгольма второго рода
8
λ2 = , y2 = c2 cos(3x).
π
% Сценарий решения упражнения 3.13, с. 172, из книги
% Верлань А.Ф, Сизиков В.С. <<Интегральные уравнения...>>
% Автор: Журавлева А.
close all
clear all
clc
%начальные данные---
syms x s;
a = 0;
b = pi;
alpha=[(cos(x))^2 cos(3*x)];
beta=[cos(2*s) (cos(s))^3];
%ход решения---
syms lambda;
m=length(alpha);
%заменяем в alpha переменную x на s ф-ей subs
for i=1:m
alpha(i) = subs(alpha(i),x,s);
end;
%считаем коэф-ты а
for i=1:m
for j=1:m
A(i,j)=int(alpha(j)*beta(i),a,b);
end;
end;
%выполним обратную замену в alpha переменной s на x
for i=1:m
alpha(i)=subs(alpha(i),s,x);
end;
%создаем столбец постоянных С
C=sym([1:m]);
for i=1:m
C(i)=strcat(’c’,int2str(i));
end;
%составляем матрицу D(lambda) алгебраической
56 Глава 3. Однородное уравнение Фредгольма второго рода
for i=1:m
lambda=lambdak(i)
Y=y(i)
disp(’ ’)
end;
Результат работы сценария совпадает с точным решением задачи:
lambda =
4/pi
Y =
c1*cos(x)^2
lambda =
8/pi
Y =
c2*cos(3*x)
Упражнения
1) Модифицируйте сценарий так, чтобы решить уравнение из при-
мера 3.27, с. 210, [3].
2) Решите с помощью предложенного сценария уравнение из при-
мера 3.33, с. 220, [3].
3) Решите с помощью предложенного сценария уравнение из при-
мера 3.34, с. 221, [3].
4) Решите с помощью предложенного сценария уравнение из при-
мера 3.35, с. 225, [3].
§ 3. Метод Ритца
§ 4. Метод следов
§ 5. Метод Келлога