Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Оптимизация. Псевдообращение. Итерации и рекурсии. Учебное пособие
.pdf
⎧
𝑇
𝑇
𝐶
, 𝐶𝑘= (𝑡
𝑘
𝑇
𝑇
𝑘−1
𝑘−1
𝐼 − 𝐴
𝑘−1
𝑘−1𝑇𝑘−1)𝑎𝑘
, 𝐶𝑘= 0,
= 0,
где 𝐹𝑘=
⎨
⎩
𝑇
𝑎
𝑘
⎧
+ |𝑇
𝑇
𝐴
𝑘−1𝑇𝑘−1𝑎𝑘
𝑘
𝑘−1𝑎𝑘
, 𝐶𝑘= 0,
|2, 𝐶𝑘= 0.
𝑡𝑘=
⎨
⎩
𝑡
𝑘−1|𝑎𝑘
|2− 𝑎
2
𝑡
𝑘−1
𝑘 = 2, . . . , 𝑛.
Шаг 𝑛. 𝑇𝑛= 𝑇, 𝑡𝑛= 𝑡.
В результате подачи на вход алгоритма целочисленной матрицы 𝐴 получим целочисленную псевдоприсоединённую матрицу 𝑇 и целочисленный
𝑇
псевдоопределитель 𝑡, доставляющие 𝐴+=
.
𝑡
Основой построения целочисленных алгоритмов служат их обычные
аналоги.
§ 9. Примеры нахождения псевдообратных матриц
В качестве примера рассмотрим процедуры псевдообращения матрицы
⎛
⎞
1 2 0 0 −1
⎟
⎟
⎟
⎟
⎟
⎠
.
𝐴 =
⎜
⎜
1 2 0 1 −1
⎜
⎜
⎜
1 2 0 0 −1
⎝
1 2 1 0 0
Псевдообращение с помощью математических систем
Процедуры нахождения псевдооборатных по Муру-Пенроузу матриц
с использованием различных алгоритмов реализованы в большинстве существующих на сегодняшний день математических программных сред.
Например, в пакете программ Matlab присутствует функция pinv.
Приведём синтаксис этой функции [97]:
P = pinv(A).
Функция P = pinv(A) вычисляет матрицу, псевдообратную к матри-
це 𝐴, которая имеет такие же размеры, как и исходная матрица.
Рассмотрим пример работы этой функции.
81

>> A = [1 2 0 0 -1; 1 2 0 1 -1; 1 2 0 0 -1; 1 2 1 0 0]
>> A
A =
1 2 0 0 -1
1 2 0 1 -1
1 2 0 0 -1
1 2 1 0 0
>> A_preuso_inv = pinv(A)
>> A_preuso_inv
0.0455 0.0000 0.0455 0.0909
0.0909 -0.0000 0.0909 0.1818
-0.2273 -0.0000 -0.2273 0.5455
-0.5000 1.0000 -0.5000 0.0000
-0.2727 0.0000 -0.2727 0.4545
Аналогичную описанной выше процедуре реализует функция
pseudoinverse пакета corpcor среды R [145]:
p <- pseudoinverse(m).
Приведём пример формирования матрицы в среде R и поиска псевдо-
обратной к ней.
> library("corpcor")
> A <- rbind(c(1,2,0,0,-1), c(1,2,0,1,-1),
+c(1,2,0,0,-1), c(1,2,1,0,0))
> A_preuso_inv <- pseudoinverse(A)
> A_preuso_inv
[,1] [,2] [,3] [,4]
[1,] 0.04545455 1.850848e-15 0.04545455 9.090909e-02
[2,] 0.09090909 -7.849556e-16 0.09090909 1.818182e-01
[3,] -0.22727273 -3.353166e-16 -0.22727273 5.454545e-01
[4,] -0.50000000 1.000000e+00 -0.50000000 -1.122149e-17
[5,] -0.27272727 1.300907e-16 -0.27272727 4.545455e-01
Проверим некоторые из свойств найденной псевдообратной матрицы.
Например, (𝐴+)+= 4 (свойство 1):
> pseudoinverse(A_preuso_inv)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 5.551115e-17 -9.992007e-16 -1.000000e+00
82

[2,] 1 2 3.608225e-16 1.000000e+00 -1.000000e+00
[3,] 1 2 4.163336e-16 -1.165734e-15 -1.000000e+00
[4,] 1 2 1.000000e+00 -7.216450e-16 1.554312e-15
выполняется (с достаточно большой точностью, определяемой настройками
используемого в R алгоритма псевдообращения).
+
Свойство𝐴
> options(digits=3)
> pseudoinverse(t(A))
[,1] [,2] [,3] [,4] [,5]
[1,] 4.55e-02 9.09e-02 -2.27e-01 -5.00e-01 -0.273
[2,] 1.04e-16 -3.47e-17 -1.94e-16 1.00e+00 0.000
[3,] 4.55e-02 9.09e-02 -2.27e-01 -5.00e-01 -0.273
[4,] 9.09e-02 1.82e-01 5.45e-01 1.94e-16 0.455
> t(pseudoinverse(A))
𝑇
= (𝐴+)𝑇(свойство 3):
[,1] [,2] [,3] [,4] [,5]
[1,] 4.55e-02 9.09e-02 -2.27e-01 -5.00e-01 -2.73e-01
[2,] 2.12e-15 -9.71e-16 2.78e-17 1.00e+00 -1.39e-16
[3,] 4.55e-02 9.09e-02 -2.27e-01 -5.00e-01 -2.73e-01
[4,] 9.09e-02 1.82e-01 5.45e-01 8.33e-17 4.55e-01
выполняется.
Проверим также выполнимость
𝐴+= 𝐴+(𝐴+)𝑇𝐴𝑇= 𝐴𝑇(𝐴+)𝑇𝐴+= (𝐴𝑇𝐴)+𝐴𝑇= 𝐴𝑇(𝐴𝐴𝑇)
> A_preuso_inv %*% t(A_preuso_inv) %*% t(A)
[,1] [,2] [,3] [,4]
[1,] 0.04545455 1.821460e-15 0.04545455 9.090909e-02
[2,] 0.09090909 -8.534840e-16 0.09090909 1.818182e-01
[3,] -0.22727273 -2.775558e-16 -0.22727273 5.454545e-01
[4,] -0.50000000 1.000000e+00 -0.50000000 1.110223e-16
+
(свойство 10) :
[5,] -0.27272727 1.665335e-16 -0.27272727 4.545455e-01
> t(A) %*% t(A_preuso_inv) %*% A_preuso_inv
[,1] [,2] [,3] [,4]
[1,] 0.04545455 -2.244964e-16 0.04545455 9.090909e-02
[2,] 0.09090909 -4.489928e-16 0.09090909 1.818182e-01
[3,] -0.22727273 -1.094496e-16 -0.22727273 5.454545e-01
83

[4,] -0.50000000 1.000000e+00 -0.50000000 -1.094496e-16
[5,] -0.27272727 1.150468e-16 -0.27272727 4.545455e-01
> pseudoinverse(t(A) %*% A) %*% t(A)
[,1] [,2] [,3] [,4]
[1,] 0.04545455 -3.469447e-17 0.04545455 9.090909e-02
[2,] 0.09090909 -3.469447e-17 0.09090909 1.818182e-01
[3,] -0.22727273 0.000000e+00 -0.22727273 5.454545e-01
[4,] -0.50000000 1.000000e+00 -0.50000000 -2.775558e-17
[5,] -0.27272727 0.000000e+00 -0.27272727 4.545455e-01
> t(A) %*% pseudoinverse(A %*% t(A))
[,1] [,2] [,3] [,4]
[1,] 0.04545455 1.175953e-16 0.04545455 9.090909e-02
[2,] 0.09090909 2.351906e-16 0.09090909 1.818182e-01
[3,] -0.22727273 -2.154716e-16 -0.22727273 5.454545e-01
[4,] -0.50000000 1.000000e+00 -0.50000000 1.214984e-16
[5,] -0.27272727 -3.330669e-16 -0.27272727 4.545455e-01
Таким образом, свойство 10 для приведённого численного примера вы-
полняется. Аналогично могут быть проверены и другие свойства.
Системы Maple и Mathematica пока не имеют специальных функций
для нахождения псевдообратных матриц. Однако возможно косвенное вычисление псевдообратной матрицы путём многократного обращения к имеющимся функциям в различных режимах. Принципы решения поставленной
задачи в Maple описаны, например, в [60].
Нахождение псевдообратной матрицы «ручным» счётом
В следующих ниже примерах проиллюстрируем работу целочисленных
алгоритмов с использованием «ручного» счёта.
Псевдообращение матрицы проведём целочисленным алгоритмом Фаддеева.
84

Шаг 1. Φ1= 𝐼,
𝜙1= tr(𝐴𝑇𝐴) = tr
⎛
4 8 1 1 −3
⎜
⎜
8 16 2 2 −6
⎜
⎜
⎜
1 2 1 0 0
⎜
⎜
1 2 0 1 −1
⎝
−3 −6 0 −1 3
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
= 25.
Шаг 2.
𝜙2= div
Φ2= 𝜙1𝐼 − 𝐴𝑇𝐴 =
tr(𝐴𝑇𝐴Φ2)
2
= div
=
⎛
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎝
⎛
21 −8 −1 −1 3
⎜
⎜
−8 9 −2 −2 6
⎜
⎜
⎜
−1 −2 24 0 0
⎜
⎜
−1 −2 0 24 1
⎝
3 6 0 1 22
⎛
9 18 4 1 −5
⎜
⎜
18 36 8 2 −10
⎜
⎜
tr
⎜
4 8 19 −5 15
⎜
⎜
1 2 −5 18 −6
⎝
−5 −10 15 −6 20
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
,
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
/2
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
= 51.
Шаг 3.
Φ3= 𝜙2𝐼 − 𝐴𝑇𝐴Φ2=
𝜙3= div
tr(𝐴𝑇𝐴Φ3)
3
= div
⎛
42 −18 −4 −1 5
⎜
⎜
−18 15 −8 −2 10
⎜
⎜
⎜
−4 −8 32 5 −15
⎜
⎜
−1 −2 5 33 6
⎝
5 10 −15 6 31
⎛
⎛
4
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎝
tr
⎜
⎜
⎜
⎜
⎜
⎜
⎝
85
16
12
22
12
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
/3
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
,
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
= 22.

Шаг 4.
𝜙4= div
Φ4= 𝜙3𝐼 − 𝐴𝑇𝐴Φ3=
tr(𝐴𝑇𝐴Φ4)
= div
4
⎛
17 2 −2 2 2
⎜
⎜
−8 5 −16 0 4
⎜
⎜
⎜
−5 −40 10 0 −15
⎜
⎜
0 10 0 0 0
⎝
2 4 −10 0 10
⎛
⎛
−7
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎝
tr
⎜
⎜
⎜
⎜
⎜
⎜
⎝
28
−23
2
⎞
⎟
⎟
⎟
⎟
,
⎟
⎟
⎟
⎠
⎞
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎟
/4
⎟
⎟
⎟
⎠
= 0.
⎟
⎟
⎟
⎠
0
⎛
⎞
1 0 1 2
⎟
⎟
⎟
⎟
, 𝜎1= 𝜎 = 22,
⎟
⎟
⎟
⎠
Поэтому Φ3𝐴𝑇= Φ =
⎜
⎜
2 0 2 4
⎜
⎜
⎜
−5 0 −5 12
⎜
⎜
−11 22 −11 0
⎝
−6 0 −6 10
⎛
⎞
1 0 1 2
𝐴+=
⎜
⎜
2 0 2 4
⎜
1
⎜
⎜
−5 0 −5 12
⎜
22
⎜
−11 22 −11 0
⎝
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
.
−6 0 −6 10
Применим к этой матрице целочисленный алгоритм Гревиля.
Шаг 1. 𝑇1= 𝑎
Шаг 2. 𝐶2= 𝑡1𝑎2− 𝐴1𝑇1𝑎2= 0, 𝑡2= 𝑡
𝐹2= 𝑎
𝑇
2
𝑇
=
1
𝑇1𝑇1=
⎛
1 1 1 1
8 8 8 8
, 𝑡1= 𝑎
2
+ |𝑇1𝑎2|2= 80,
1
,
⎞
𝑇
𝑎1= 4.
1
64 −16 −16 −16
𝑡2𝐼 − 𝑎2𝐹2=
⎜
⎜
−16 64 −16 −16
⎜
⎜
⎜
−16 −16 64 −16
⎝
⎟
⎟
⎟
⎟
⎟
⎠
,
−16 −16 −16 64
86

𝑇2=
⎛
⎜
⎜
⎜
⎝
div
𝑇1(𝑡2𝐼 − 𝑎2𝐹2)
𝑡
1
...
𝐹
2
⎞
⎟
⎟
⎟
⎠
=
⎛
16
div
=
⎜
⎜
⎜
div
4
⎝
8 8 8 8
=
Так как 𝑡2и 𝑇2имеют общий множитель 4, то сократим его, не меняя
обозначения: 𝑡2= 20, 𝑇2=
Шаг 3. 𝐶3= 𝑡2𝑎3− 𝐴2𝑇2𝑎3=
16
div
4
... ...
4 4 4 4
8 8 8 8
1 1 1 1
2 2 2 2
16
4
⎛
⎜
⎜
⎜
⎜
⎜
⎝
.
.
−5
−5
−5
15
div
⎞
⎟
⎟
⎟
⎟
⎟
⎠
= 0,
16
4
⎞
⎟
⎟
⎟
⎠
=
𝑡3= 𝑡2|𝑎3|2− 𝑎
⎛
div
⎜
𝑇3=
⎜
⎜
⎝
𝑇
𝐴2𝑇2𝑎3= 15, 𝐹3= 𝐶
3
⎛
15 0 0 0
⎜
⎜
0 15 0 0
𝑡3𝐼 − 𝑎3𝐹3=
⎜
⎜
⎜
0 0 15 0
⎝
5 5 5 0
20 20 20 0
𝑇2(𝑡3𝐼 − 𝑎3𝐹3) =
40 40 40 0
⎞
𝑇2(𝑡3𝐼 − 𝑎3𝐹3)
⎟
⎟
⎟
⎠
...
𝐹
𝑡
2
3
𝑇
=
3
−5 −5 −5 15
⎞
⎟
⎟
⎟
⎟
⎟
⎠
⎛
1 1 1 0
⎜
⎜
=
2 2 2 0
⎝
−5 −5 −5 15
,
,
,
⎞
⎟
⎟
.
⎠
87

Шаг 4. 𝐶4= 𝑡3𝑎4− 𝐴3𝑇3𝑎4=
⎛
⎜
⎜
⎜
⎜
⎜
⎝
−5
10
−5
0
⎞
⎟
⎟
⎟
⎟
⎟
⎠
= 0,
𝑡4= 𝑡3|𝑎4|2− 𝑎
𝑇3(𝑡4𝐼 − 𝑎4𝐹4) =
⎛
div
⎜
𝑇4=
⎜
⎜
⎝
𝑇
𝐴3𝑇3𝑎4= 10, 𝐹4= 𝐶
4
⎛
10 0 0 0
⎜
⎜
5 0 5 0
𝑡4𝐼 − 𝑎4𝐹4=
⎜
⎜
⎜
0 0 10 0
⎝
0 0 0 10
⎛
15 0 15 0
⎜
⎜
30 0 30 0
⎝
−75 0 −75 −150
⎞
𝑇3(𝑡4𝐼 − 𝑎4𝐹4)
⎟
⎟
⎟
⎠
𝐹
...
𝑡
3
4
𝑇
=
4
−5 10 −5 0
⎞
⎟
⎟
⎟
⎟
⎟
⎠
⎛
1 0 1 0
⎜
⎜
2 0 2 0
⎜
=
⎜
⎜
−5 0 −5 10
⎝
−5 10 −5 0
,
,
⎞
⎟
⎟
,
⎠
⎞
⎟
⎟
⎟
.
⎟
⎟
⎠
Шаг 5. 𝐶5= 𝑡4𝑎5− 𝐴4𝑇4𝑎5= 0, 𝑡5= 𝑡
𝑇
𝐹4= 𝑎
𝑇
𝑇
𝑇4=
5
4
−60 0 −60 100
⎛
160 0 −60 100
⎜
⎜
−60 220 −60 100
𝑡5𝐼 − 𝑎5𝐹5=
⎜
⎜
⎜
−60 0 60 100
⎝
0 0 0 220
⎛
100 0 100 200
⎜
⎜
200 0 200 400
𝑇4(𝑡5𝐼 − 𝑎5𝐹5) =
⎜
⎜
⎜
−500 0 −500 −1200
⎝
−1100 2200 −1100 0
88
2
+ |𝑇4𝑎5|2= 220,
4
,
⎞
⎟
⎟
⎟
,
⎟
⎟
⎠
⎞
⎟
⎟
⎟
⎟
⎟
⎠
,

⎛
⎜
𝑇5=
⎜
⎜
⎝
Так как 𝑡5и 𝑇5имеют общий множитель 10, сократим его, не меняя
обозначения:
⎞
𝑇4(𝑡5𝐼 − 𝑎5𝐹5)
div
...
𝐹
𝑡
4
5
⎟
⎟
⎟
⎠
𝑡 = 𝑡5= 22, 𝑇 = 𝑇5=
⎛
10 0 10 20
⎜
⎜
20 0 20 40
⎜
⎜
=
⎜
−50 0 −50 −120
⎜
⎜
−110 220 −110 0
⎝
−60 0 −60 100
⎛
1 0 1 2
⎜
⎜
2 0 2 4
⎜
⎜
⎜
−5 0 −5 −12
⎜
⎜
−11 22 −11 0
⎝
−6 0 −6 10
⎞
⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎟
⎟
⎟
⎟
.
⎟
⎟
⎟
⎠
.
§ 10. Системы линейных уравнений и метод наименьших квадратов
В данном параграфе рассматривается применение псевдообращения к
исследованию и решению систем линейных уравнений.
Псевдообращение при решении
совместных систем линейных уравнений
Дана система 𝐴𝑥 = 𝑏, где 𝑥 ∈ R
матрица коэффициентов, 𝑏 ∈ R
𝑚×1
𝑛×1
– столбец неизвестных, 𝐴 ∈ R
– столбец свободных членов.
Система совместна (уравнение разрешимо) тогда и только тогда, ко-
гда выполняется критерий совместности:
𝐴𝐴+𝑏 = 𝑏 или (𝐼 − 𝐴𝐴+)𝑏 = 0,
общее решение совместной системы записывается в виде
𝑚×𝑛
𝑟
–
𝑥 = 𝐴+𝑏 + (𝐼 − 𝐴+𝐴)𝑦, 𝑦 – произвольный вектор.
Действительно, подставим выражение для 𝑥 в уравнение и воспользу-
емся определяющим соотношением (III) для псевдообратной матрицы; тогда
𝐴 (𝐴+𝑏 + (𝐼 − 𝐴+𝐴)𝑦) = 𝐴𝐴+𝑏 + (𝐴 −𝐴𝐴+𝐴)𝑦 = 𝐴𝐴+𝑏.
89

Если критерий выполнен, то заключаем, что 𝑥 удовлетворяет уравнению, так что система совместна: наоборот, если 𝑥 – решение, то 𝐴𝐴+𝑏 = 𝑏,
то есть критерий выполняется.
Подчёркиваем, что в проведённом рассуждении использовано только
одно из четырех соотношений Мура-Пенроуза: матрица, удовлетворяющая
только этому соотношению, называется обобщённой обратной к матрице
𝐴 и обозначается 𝐴−: 𝐴𝐴−𝐴 = 𝐴. Таким образом, наряду с критерием
Кронекера-Капелли, формулируемым в терминах рангов основаной 𝐴 и расширенной
𝐴 | 𝑏
матриц системы: rg
𝐴 | 𝑏
= rg𝐴 – установлен критерий
совместности системы линейных уравнений в терминах обобщённой обратной 𝐴−и, в частности, систематически изучаемой здесь псевдообратной 𝐴+.
В общем решении неоднородной системы выделяются:
– общее решение соответствующей однородной системы
𝑥о= (𝐼 − 𝐴+𝐴)𝑦,
– частное решение данной неоднородной системы
𝑥н= 𝐴+𝑏,
так что общее решение имеет структуру 𝑥 = 𝑥о+ 𝑥н.
Если выполняется дополнительное условие 𝐼 − 𝐴+𝐴 = 0, или 𝐴+𝐴 = 𝐼,
то решение системы единственно: 𝑥 = 𝑥н.
В дальнейшем несколько раз используется тот факт, что если два вектора 𝑝 и 𝑞 ортогональны: (𝑝, 𝑞) = 𝑝𝑇𝑞 = 0 – то норма каждого из них не
превосходит норму их суммы: |𝑝| ≤ |𝑝 + 𝑞|; действительно,
|𝑝 + 𝑞|2= (𝑝 + 𝑞)𝑇(𝑝 + 𝑞) = 𝑝𝑇𝑝 + 𝑝𝑇𝑞 + 𝑞𝑇𝑝 + 𝑞𝑇𝑞 = |𝑝|2+ |𝑞|2≥ |𝑝|2.
Решение 𝑥н= 𝐴+𝑏 обладает тем свойством, что имеет минимальную
норму среди всех решений системы 𝐴𝑥 = 𝑏:
|𝑥н| < |𝑥| для всех 𝑥 таких, что 𝐴𝑥 = 𝑏.
Действительно, в силу определяющих соотношений (II), (IV) для псевдообратной матрицы (𝐴+)𝑇= (𝐴+𝐴𝐴+)𝑇= (𝐴+)𝑇(𝐴+𝐴)𝑇= (𝐴+)𝑇𝐴+𝐴, так
что (𝐴+)𝑇(𝐼−𝐴+𝐴) = 0: отсюда для любых векторов 𝑏, 𝑦 получим 𝐶𝑇(𝐴+)𝑇(𝐼−
𝐴+𝐴)𝑦 = (𝐴+𝑏)𝑇(𝐼 − 𝐴+𝐴)𝑦 = 0, так что векторы 𝐴+𝑏 и (𝐼 − 𝐴+𝐴)𝑦 ортогональны; поэтому
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
