Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы научных вычислений. Введение в численные методы для физиков и инженеров

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
2.4. Источники ошибок 41
7. Матрицы с диагональным преобладанием. Матрица A на-
зывается матрицей со строгим диагональным преобладанием, если
N
|a
nn
| >
|anm| = sumn,n=1,...,N.
m=1 m=n
Матрица A называется матрицей со слабым диагональным преоблада­нием, если
|a
| sumn,n=1,...,N,
nn
и, по крайней мере, одно из неравенств выполняется как строгое нера­венство.
2.4. Источники ошибок
Когда мы решаем задачу (2.1), используя какой-нибудь метод, мы
не получим точного ответа, так как в процессе решения возникают раз­личные ошибки. Предположим, что задача (2.1) поставлена точно, то есть мы пренебрегаем неизбежными ошибками, связанными с форму­лированием задачи как модели некоторого явления (ошибки измерений, недостаточно точные основные предположения и т. д.).
Вектор f в (2.1) обычно не задаётся точно, а вычисляется через
параметры исходной проблемы. Эти вычисления выполняются с опреде­лённой ошибкой, и вместо вектора f мы получаем некоторый «возмущён­ный» вектор f +δf . Тогда вместо задачи (2.1) мы получим «возмущённую» задачу
A(x + δx)=Ay = f + δf . (2.4)
Предположим, что эта система также может быть решена и y есть ре­шение этой системы. Тогда
e
= y − x∗
p
называется ошибкой возмущения.
Теперь нам необходимо решить возмущенную систему (2.4). Пред-
положим, что мы имеем некоторый алгоритм, который дает после конеч­ного числа операций или вектор y (если операции выполняются точно), или некоторый вектор z такой, что ошибка
= z − y
e
a
42 Глава 2
может быть сделана произвольно малой. Величина eaназывается ошиб­кой алгоритма.
Любой алгоритм включает в себя операции с плавающей точкой,
которые выполняются неточно. Ошибки, возникающие при таких опера­циях, приводят к тому, что вместо вектора z мы получаем некоторый другой вектор w,ивеличина
e
= w − z
r
называется ошибкой округления.
Окончательно, вместо точного решения x
∗
мы вычислим некоторый вектор w, который является приближенным решением задачи (2.1), и ошибка этого решения может быть оценена как
e = w − x
∗
ep+ ea+ er.
2.5. Число обусловленности
Как мы обсуждали раньше, мы имеем исходную задачу Ax = f и возмущенную задачу A(x + δx)=f + δf ,гдеδf представляет теперь суммарное возмущение вектора правой части и матрицы A. Наша за­дача состоит в том, чтобы выяснить, как возмущение δf передаётся в возмущение решения δx, то есть оценить величину
δx/x
δf /f
. (2.5)
Перепишем это выражение в виде
δx/x
δf /f
Из выражений (2.1) и (2.4) следует, что f= AxA·x и δx= A
−1
fA−1·δf.Еслиподставитьэтиоценкивпреды-
δx/f
=
δf /x
.
дущее выражение, мы получим
δx/x
δf /f
A·
−1
A
или
δx
x
A·
 
A
−1
δf
f
.
2.5. Число обусловленности 43
Величина
cond(A)=A·
−1
A
называется стандартным числом обусловленности. Это число оценивает максимальный коэффициент усиления возмущения δf.Еслиcond(A) от­носительно мало, тогда система (2.1) хорошо обусловлена и возмущение решения δx также относительно мало. Например, если δf /f ∼10
−14
и нас удовлетворяет δx/x∼10−6,тогдаcond(A) ∼ 108вполне при­емлемо. Если cond(A) относительно большое, тогда мы сталкиваемся с плохо обусловленной системой и требуются специальные методы, для того чтобы получить приемлемый результат.
РИМЕР 2.1 (ПЛОХО ОБУСЛОВЛЕННАЯ СИСТЕМА). Рассмотрим следу-
П ющую систему линейных уравнений:
⎞
⎞
⎟ ⎟ ⎟
, f =
⎟ ⎟ ⎠
A =
⎛
1 −1 ...−1
⎜
1 −1 ..−1
⎜ ⎜ ⎜ ⎜ ⎝
..
..
01−1
1
Точное решение этой системы x =(0,...,0, 1) ко последняя компонента вектора f возмущена: δf =(0,...,0,δ)
⎛
−1
⎟
⎜
.
⎟
⎜
.
⎟
⎜ ⎜ ⎜ ⎝
, det(A)=1. (2.6)
⎟
.
⎟ ⎠
−1 1
T
. Предположим, что толь-
T
.Мат­рица A верхняя треугольная, поэтому система (2.4) может быть легко решена относительно вектора δx. Учитывая, что Ax = f,система(2.4) преобразуется в Aδx = δf .Распишемэтусистемуболееподробно(δx =
,...,pN)T):
=(p
1
− p2− ...− pN=0
p
1
p
− ...− pN=0
2
........................
− pN=0
p
N−1
= δ.
p
N
Данная система просто решается обратной подстановкой, которая
дает следующее решение:
= δ
p
N
= δ
p
N−1
p
=2δ
N−2
...............
N−2
=2
p
1
δ.
44 Глава 2
Теперь мы имеем все вектора, чтобы вычислить коэффициент уси-
ления, определенный в (2.5). Выберем векторную норму ·
||δx||
N−2
=2
∞
|δ|, ||x||∞=1, ||δf ||∞= |δ|, ||f||∞=1
∞
,тогда
и
Например, если N =10
cond(A) 2
2
и δ =10
N−2
.
−14
,тогдаcond(A) ∼ 10
30
и δx∞∼ 1016x∞. Система (2.6) является примером очень плохо обусловленной системы.
Непосредственное вычисление числа обусловленности весьма за­труднительно, так как требует вычисления обратной матрицы. Поэтому обычно прибегают к оценке этого числа.
В некоторых случаях оценка для числа обусловленности может быть получена довольно просто. Пусть матрица A может быть представлена вследующемвиде:
A = I + H, (2.7)
где H
и
< 1.Тогда
∞
(I + H)
 
(I + H)
−1
−1
= I +
 
∞
∞
k=1
1 −H
(−H)
1
k
.
∞
Следовательно,
cond(A)
I + H
1 −H
∞
∞
1+H
1 −H
∞
.
∞
Матрицы со строгим диагональным преобладанием могут быть представлены в виде (2.7).
2.6. Прямые методы
В этой части мы рассмотрим прямые методы. Отличительная осо­бенность этих методов состоит в том, что, пренебрегая ошибками округ­лений, они дают точное решение после конечного числа операций. Далее мы обсудим лишь основные принципы прямых методов.
2.6. Прямые методы 45
2.6.1. Основные принципы прямых методов
На первом этапе решения систем линейных уравнений матрица A представляется в виде произведения двух треугольных матриц. Эта опе­рация называется разложением матрицы, и форма разложения зависит от свойств матрицы A. Для матриц общего вида используется LU­разложение
A = LU,
где L — нижняя треугольная матрица с единицами на диагонали и U — верхняя треугольная матрица. Для SPD-матриц используется разложе­ние Холеского:
A = LL
T
,
где L — нижняя треугольная матрица. После разложения матрицы A исходная система Ax = f может быть представлена в виде двух систем уравнений:
Ly = f, Ux = y или Ly = f, L
T
x = y. (2.8)
Применяя прямую, а потом обратную подстановки, можно вычислить решениеисходнойсистемы(смотри(2.2)и(2.3)).Притакомподхо­де, суммарная ошибка полученного решения состоит из ошибки воз­мущения в множителях L и U и ошибки округлений при решении си­стем (2.8). Вычислительные затраты для метода LU-разложения состав­ляют N
∼ N3(для матриц общего вида), а для разложения Холеского
ops
требуется в два раза меньше вычислений и оперативной памяти, чем для метода LU-разложения.
Существует ещё одно полезное разложение: найти ортогональную матрицу Q иверхнюютреугольнуюматрицуR,такчтоQAx = Rx = = Qf.Тогдарешениеx может быть получено обратной подстановкой при векторе правой части, равном Qf .Ортогональноеразложениепри­влекательно тем, что умножение A или f на Q не увеличивает ошибки округления или возмущения, связанные с матрицей A или вектором f . Длятогочтобыубедитьсявэтом,заметим,что
T
(Qx)=xTQTQx = xTx,
так как Q
(Qx, Qx)=(Qx)
T
Q = I. Преимущество такого подхода состоит в том, что он дает вычислительно-устойчивый метод. Однако этот метод требует в два раза больше вычислений по сравнению с методом LU-разложения. Поэтому ортогональные разложения применяются для решения систем
46 Глава 2
линейных уравнений только в некоторых специальных случаях. Орто­гональные разложения также находят применение для вычисления соб­ственных значений.
Далее мы рассмотрим более подробно простой и эффективный метод для решения систем линейных уравнений, называемый методом прогон­ки. Этот метод основан на специальном разложении, которое применимо к системам уравнений с ленточной матрицей. Мы ограничимся случаем, когда матрица системы (2.1) трехдиагональная. Общая структура метода прогонки может быть представлена в следующем виде:
−→
⎛
∗∗ 0 ∗∗∗
⎜ ⎜
...
⎜ ⎝
∗∗∗
0 ∗∗
⎛
1+ 0
..
⎜ ⎜ ⎜ ⎝
..
. +
⎞
⎟ ⎟ ⎟ ⎠
01
⎛
⎜ ⎜ ⎜ ⎝
⎞
⎟ ⎟ ⎟ ⎠
⎛
⎜ ⎜ ⎜ ⎝
x
1
. . .
x
N
⎞
⎟ ⎟ ⎟ ⎠
⎞
x
1
.
⎟ ⎟
.
=
⎟ ⎠
.
x
N
⎛
⎜ ⎜
=
⎜ ⎝
⎞
⎛
∗
.
⎟
⎜
⎟
⎜
.
прямой ход −→
⎟
⎜
⎠
⎝
.
∗
⎞
+
.
⎟ ⎟
.
обратный ход −→
⎟ ⎠
.
+
⎛
⎜ ⎜ ⎜ ⎝
⎞
x
1
.
⎟ ⎟
.
⎟ ⎠
.
x
N
Для удобства запишем систему уравнений с трехдиагональной мат­рицей в виде:
.
b
+ c1x2= f1,
1x1
a
nxn−1
a
NxN−1
+ bnxn+ cnx
+ bNxN= fN.
= fn,n=2,...,N − 1,
n+1
(2.9)
Предположим, что мы можем записать следующее рекуррентное со­отношение для компонент вектора решения:
x
n
= αnx
+ βn, (2.10)
n+1
по крайней мере, это возможно для первого уравнения. Пусть коэффи­циенты α
После исключения x
n−1
и β
известны, тогда мы можем записать
n−1
x
= α
n−1
a
= −
x
n
nxn−1
n−1
anα
n−1
+ bnxn+ cnx
из этих двух соотношений мы получим
c
n
n−1xn
+ b
n
x
+ β
n+1
n−1
+
n+1
f anα
,
n
= fn.
− anβ
n−1
n−1
+ b
.
n
2.6. Прямые методы 47
Сравнивая это соотношение с (2.10), мы видим, что коэффициенты
и βnмогут быть вычислены по формулам:
α
n
c
α
= −
n
f
β
=
n
anα
α
= −
1
anα
− anβ
n
n−1
c
1
,β1=
b
1
n−1
n
,
+ b
n
n−1
,n=2,...,N,
+ b
n
f
1
.
b
1
После того как параметры α
и βnвычислены, решение системы
n
(2.9) может быть легко получено. Вначале запишем соотношение (2.10) для n = N −1 и последнее уравнение (2.9):
x
N−1
a
NxN−1
Исключение x
N−1
дает
x
N
Остальные компоненты x
= α
N−1xN
+ bNxN= fN.
f
N
=
aNα
вычисляются с использованием форму-
n
− aNβ
N−1
+ β
N−1
+ b
N−1
N
,
.
лы (2.10) для n = N − 1,...,1. Метод прогонки в полной мере учиты­вает ленточную структуру матрицы, поэтому этот метод требует всего лишь N
=8N −6. Следующая теорема описывает условия, при кото-
ops
рых метод прогонки устойчив.
Теорема 2.1. Предположим, что коэффициенты системы (2.9) удовлетворяют условиям
=0,bN=0,
b
1
a
=0,cn=0 (n =2,...,N − 1),
n
| |an| + |cn|,n=2,...,N − 1,
|b
n
|b
| |c1|, |bN| |aN|,
1
(2.11)
где, по крайней мере, одно из неравенств из последней строки есть строгое неравенство. Тогда выполняются следующие неравенства:
| 1(n =2,...,N)
|α
n
48 Глава 2
и
|a
+ bn|  minn|cn|.
nαn−1
Таким образом, условия (2.11) достаточны для устойчивости метода прогонки.
2.6.2. Оценка ошибки приближенного решения
Непосредственно вычислить вектор ошибки e = x − x
∗
мы не мо­жем, так как точное решение нам не известно. Мы можем, по крайней мере, с машиной точностью вычислить вектор невязки r = Ax −f, кото­рый обращается в нулевой вектор, когда e = o. Однако малая величина вектора невязки не гарантирует, что вектор ошибки также мал. Проана­лизируем взаимосвязь между e и r более подробно. Вначале заметим, что r = Ax − Ax
∗
= A(x − x∗)=Ae,тоестьe = A−1r.Тогдаотноше-
ние e|/fпримет вид
e
=
f
Учиты ва я, ч то Ax
−1
r
=
A
Ax∗
e
Ax∗
∗
A·x∗, мы можем заменить знаменатель
 
A
−1
Ax∗
·r
.
в левой части неравенства и, умножая на A, получим оценку
e
x∗
A·
 
A
−1
r
f
= cond(A)
r f
.
Это неравенство показывает, что относительная ошибка мала, когда относительная величина вектора невязки мала и число обусловленности не слишком велико.
2.6.3. Заключительные замечания
Начиная с середины 50-х годов был достигнут значительный про­гресс в области вычислительной линейной алгебры. Это подтверждается наличием эффективного и надёжного программного обеспечения, реали­зующего различные прямые методы для решения систем линейных урав­нений. Это обеспечение доступно или в виде библиотеки подпрограмм
(IMSL программирования (например, MATLAB
,NAG, LAPACK), или в виде встроенных функций системы
). Эти программы реализуют
различные формы разложения, которые мы обсуждали, для различных
2.7. Итерационные методы 49
типов матриц, таких как общие, ленточные, симметричные, разрежен­ные и SPD-матрицы. На практике накопление ошибок округления может приводить к значительному искажению вычисленного решения. Поэтому все алгоритмы в пакетах программ включают в себя специальные меры (такие как выбор ведущего элемента и балансировка матриц) для того, чтобы уменьшить влияние этого эффекта. В стандартном программном обеспечении также обеспечивается оценка числа обусловленности, что даёт возможность оценить ошибку вычисленного решения. В дополне­ние, библиотеки подпрограмм включают в себя пакет BLAS (Basic Linear Algebra Subprograms, основные подпрограммы линейной алгебры). Этот пакет реализует различные операции над векторами и матрицами, и он широко используется при создании прикладного программного обеспе­чения для научных и инженерных вычислений.
2.7. Итерационные методы
Итерационные методы для задачи Ax = f требуют бесконечного числа операций для получения точного решения (если предположить, что вычисления производятся точно). Конечно, на практике мы произво­дим конечное число шагов и в результате получаем некоторое прибли­женное решение. Итерационные методы легко конструируются и могут быть очень эффективны. Однако они требуют дополнительного анализа свойств матрицы для того, чтобы выбрать подходящий метод.
2.7.1. Основные принципы итерационных методов
Итерационные методы обычно основываются на следующей эквива­лентной форме системы (2.1):
x = Bx + g, (2.12)
где B называется итерационной матрицей. Эта форма системы линейных уравнений образуется по аналогии с (1.1), мы просто применили тот же подход к системе (2.1). Компоненты итерационной матрицы выражают­ся через компоненты матрицы A.Векторg выражается через вектор f икомпонентыматрицыA.МатрицаB в явном виде обычно не вычис­ляется, но мы будем подразумевать, что, в принципе, это может быть сделано. Итерационный процесс формулируется на основе эквивалент­ной формы (2.12) в следующем виде.
1) Зададим начальное приближение (вектор) x
(0)
.
50 Глава 2
2) Для каждого значения k будем вычислять последующие приближе- ния, такие как
или
x
(k+1)
(k+1)
x
= Bkx
(k)
(k)
= Bx
+ g (2.13)
+ gk,k=0, 1,... . (2.14)
3) Если
или
 
 
(k+1)
r
(k+1)
x
 
x
 
=
(k+1
 
x
(k+1)
  
− x
Ax
 
(k)
 
(k+1)
(k+1)
x
 
ε
− f
 εp,
p
  
тогда итерационный процесс завершён и
 
x
(k+1)
x∗
− x
∗
ε
.
p
Итерационный процесс (2.13) называется стационарным, а про-
цесс (2.14), соответственно, нестационарным. Как последовательные приближения x того чтобы ответить на этот вопрос, проведем простой анализ. Каждое приближение x
(k)
где e
—векторошибкиk-го приближения. Подставив (2.15) в (2.13)
(k)
соотносятся с точным решением задачи (2.1)? Для
(k)
может быть представлено в следующем виде:
x
(k)
x
(k+1)
= x∗+ e
= x∗+ e
(k)
,
(k+1)
,
(2.15)
и учитывая (2.12), мы получим
= Be
(k)
или e
(k)
= Bke
(0)
,k=0, 1,... . (2.16)
(k+1)
e
Если
lim
k→∞
(k)
e
тогда итерационный процесс сходится и
(k)
x
lim
k→∞
= x∗.
=0,
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]