Литература / Козин Р.Г. Алгоритмы численных методов линейной алгебры и их программная реализация
.pdf
Список значений решения разностного уранения:
Список значений точного решения с узлах сетки:
Рис. 2.29. Результаты выполнения программы. Видно, что значения разностной задачи хорошо согласуются с точным решением (графически и численно)
2.3. Метод регуляризации для решения плохо обусловленных систем
Решение системы уравнений Ax b с плохо обусловленной матрицей существенно зависит от ошибок в исходных данных и ошибок округления (рис. 2.30, где для таких систем схематично показаны соответствующие области входных и выходных ошибок).
131
Рис. 2.30. К вопросу о соотношении ошибок в задании исходной системы уравнений и областью, в которой распологаются ее решения
Согласно методу регуляризации для уменьшения этой зависимости, т.е. сужения области поиска, на решение системы накладывается дополнительное вполне разумное требование, чтобы его норма наименее уклонялось от нуля – «принцип минимальных затрат». В такой постановке исходную систему можно свести к задаче минимизации следующего квадратичного функционала
min F(x) (Ax b, Ax b) (x, x) 0 , |
(2.50) |
x |
|
где 0 – весовой коэффициент, называемый параметром регуляризации. Его значение должно быть таким, чтобы с одной стороны обеспечить достаточную обусловленность системы, а с другой – хорошую аппроксимацию исходной задачи.
Для квадратичного функционала (2.50) решение, обеспечивающее минимум функционалу, находится аналитически из условия
dFdx 0 . Для этого распишем (2.50):
F(x) (x, AT Ax) 2(x, AT b) (b, b) (x, x) . |
(2.51) |
||
Отсюда, беря производную |
dF |
с учетом очевидного преобразо- |
|
|
dx |
|
|
вания
(x, AT Ax) (AT Ax, x) (x, (AT A)T x) (x, AT Ax)
и приравнивая ее нулю, получим новую систему уравнений
(AT A E)x AT b . |
(2.52) |
132
Ее решение x , называемое нормальным, зависит от параметра и
может быть получено любым рассмотренным ранее методом.
В заключение укажем способ выбора параметра . Обычно на практике проводится ряд вычислений с различными значениями . После этого оптимальным считают то его значение, при котором выполняется условие приближенного равенства невязки решения сумме погрешностей исходных данных:
|
(x ) |
|
|
|
|
|
|
|
Ax b |
|
|
|
|
|
|
|
b |
|
|
|
|
|
|
|
A x |
|
|
|
, |
(2.53) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
или то из них, для которого невязка минимальна (рис. 2.31). Соответствующее этому решение x принимается за нор-
мальное решение исходной системы.
Рис. 2.31. Зависимость навязки от параметра , где в зоне 1 преобладает ошибка, связанная с особенностью матрицы системы, а в зоне 2 – ошибки аппроксимации, связанные с изменением исходной системы
Далее приведем результаты работы программы, позволяющей использовать метод регуляризации для нахождения решения систем уравнений с плохо обусловленными матрицами (рис. 2.32 и 2.33).
133
Рис. 2.32. Получено нормальное решение системы с плохо обусловленной матрицей. Заметим, что точное решение исходной системы
равно (1; 1; 1). Видно, что решить непосредственно исходную систему методом Гаусса–Жордано не удалось
Рис. 2.33. Норма невязки исходной системы для нормального решения
134
2.4. Решение систем с прямоугольными матрицами
Системы уравнений Ax b , в которых матрица Am*n имеет прямоугольную форму, делятся на недоопределенные ( m n ) и переопределенные ( m n ). Решение таких систем имеет свою специфику. При дальнейших рассуждениях предполагается, что столбцы и строки матрицы A линейно независимы, поскольку толь-
ко в этом случаи матрицы AAT и AT A, которые используются при получении псевдорешений указанных сисием, не будут вырожденными. В подтверждение этого факта ниже приведен результат выполнения программы на Maxima:
kill(all);
numer:true;
A:matrix([1,2,3],[4,5,6],[2,3,4],[2,4,6]); /* 1 и 4 строки матрицы линейно зависимы */ At:transpose(A); At_A:At.A;
print("Определитель матрицы Аt*А = ",determinant(At_A));
A:matrix([1,7,2],[4,5,8],[2,4,4],[2,6,4]); /* 1 и 3 столбцы матрицы линейно зависимы */ At:transpose(A); At_A:At.A;
print("Определитель матрицы Аt*А = ",determinant(At_A));
B:matrix([1,2,3,4],[2,3,4,6],[2,4,6,8]); /* 2 и 4 столбцы матрицы линейно зависимы */ Bt:transpose(B); B_Bt:B.Bt;
print("Определитель матрицы B*Bt = ",determinant(B_Bt));
B:matrix([1,2,3,7],[2,3,4,7],[2,4,6,14]); /* 1 и 3 строки матрицы линейно зависимы */ Bt:transpose(B); B_Bt:B.Bt;
print("Определитель матрицы B*Bt = ",determinant(B_Bt));
135
2.4.1. Решение недоопределенных систем
Недоопределенные системы имеют множество решений. Например, их можно найти, фиксируя любые n m компонент неизвестного вектора x и определяя остальные его компоненты, как решение приведенной системы с квадратной матрицей размерности
( m * m ).
Итак, решений много, но какое из них следует считать оптимальным.
Эта задача решается в соответствии с принципом «минимальной достаточности», который всегда действует в природе. Следуя этиму принципу, предпочтение необходимо отдать решению с минимальной нормой. Такому требованию удовлетворяет нормальное псевдорешение
x AT (AAT ) 1b
или
( AAT ) y b, |
x AT y . |
Легко проверить, что оно является решением исходного уравнения
Ax AAT ( AAT ) 1 b b .
Для доказательства оптимальности этого решения (в указанном выше смысле) приведем результаты вычислительного эксперимента, в котором рассчитывались нормы нормального псевдорешения
136
и совокупности частных решений. Последние строились путем обнуления всевозможных комбинаций «лишних» компонент вектора x. Напомним, что число таких комбинаций равно числу сочетаний для n элементов по (n m) :
Cnn m |
n ! |
|
. |
|
m!(n m)! |
||||
|
|
|||
В эксперименте использовалась недоопределенная система со случайной матрицей размерности m 3, n 5 , для которой можно
построит десять частных решений. Листинг тестирующей программы на Maxima и результаты ее работы приведены на рис. 2.34
и 2.35.
kill(all);
numer:true;
fpprintprec:6;
ratprint:false;
/* недоопределенная система */ b:matrix([1],[2],[3]);
g[i,j]:=random(1.0); A:genmatrix(g,3,5); /* генерация случайной матрицы A(3,5) */ rank(A);
At:transpose(A);
xo:At.invert(A.At).b; /* находим нормальное псевдорешение и его норму */ L_norm:[sqrt(sum(xo[i,1]*xo[i,1],i,1,5))];
forithru 4 do /* определение всех возможных частных решений */ for j:i+1 thru 5 do
(
B:submatrix(A,i,j), /* удаляем i и j столбцы из матрицы А */ x1:zeromatrix(5,1),x1[i,1]:1, x1[j,1]:1, /* помечаем какие столбцы удалили */ x:invert(B).b,
norm:sqrt(sum(x[i,1]*x[i,1],i,1,3)), L_norm:append(L_norm,[norm]),
k1:1,
for k thru 5 do if x1[k,1]=0 then (x1[k,1]:x[k1,1],k1:k1+1) else x1[k,1]:0, xo:addcol(xo,x1)
);
print("Список норм нормального псевдорешения и10 частных решений:"); L_norm; print("Минимальная норма в списке = ",min_norm:lmin(L_norm));
print("Матрица, содержащая нормальное псевдорешение и 10 частные реше-
ния:");xo;
Рис. 2.34. Программа для выполнения вычислительного эксперимента по проверке минимальности нормы нормального псевдорешения
137
Рис. 2.35. Основные результаты численного эксперимента. Видно, что по сравнению со всеми частными решениями нормальное псевдорешение действительно имеет минимальную норму
2.4.2.Решение переопределенных систем
Вэтом случае в качестве решения переопределенной системы используется обобщенное псевдорешение, которое строится таким образом, чтобы обеспечить минимальное значение нормы невязки
для данной системы уравнений, т.е. минимизирует следующий функционал:
F(x) (Ax b, Ax b) .
Согласно формуле (2.5) обобщенным псевдорешением является решение уравнения
( AT A) x AT b |
|
или |
|
x ( AT A) 1 AT b . |
(2.54) |
Чтобы показать оптимальность обобщенного псевдорешения (в указанном выше смысле), был поставлен вычислительный эксперимент. В нем норма невязки обобщенного псевдорешения сравни-
138
вается с соответствующими нормами частных решений всевозможных систем, которые получаются из исходной системы путем отбрасывания «лишних» уравнений.
В эксперименте использовалась переопределенная система со случайной матрицей размерности m 5, n 3 . Она допускает по-
строение десяти частных решений. Листинг тестирующей программы на Maxima и результаты ее работы представлены на рис. 2.36 и 2.37.
kill(all);
/* подпрограмма формирует случайную матрицу размерности m*n */ rndA(m,n):=block
(
A:zeromatrix(m,n), for i thru m do
for j thru n do A[i,j]:random(1.0)
);
numer:true; |
|
|
|
|
|
fpprintprec:6; |
|
|
|
|
|
ratprint:false; |
|
|
|
|
|
/* переопределенная система */ |
|
|
|
|
|
b:matrix([1],[2],[3],[4],[5]); |
|
|
|
|
|
rndA(5,3); A; |
|
|
|
|
|
rank(A); At:transpose(A); |
|
|
|
|
|
xo:invert(At.A).At.b; |
|
|
|
|
|
nvo:b-A.xo; |
|
|
|
|
|
print("Норма |
невязки |
для |
обобщенного |
псевдорешения |
= |
",sqrt(sum(nvo[i,1]*nvo[i,1],i,1,5))); |
|
|
|
|
|
L_norm:[]; |
/* задаем нулевой список для сбора норм невязки частных решений */ |
|
|||
forithru 4 do |
/* определение норм невязки для всех возможных частных решений |
||||
*/ |
|
|
|
|
|
for j:i+1 thru 5 do
(
B:submatrix(i,j,A), bt:submatrix(i,j,b), x:invert(B).bt, nv:b-A.x, norm:sqrt(sum(nv[i,1]*nv[i,1],i,1,5)), L_norm:append(L_norm,[norm]), xo:addcol(xo,x)
);
print("Список норм невязки для частных решений:"); L_norm;
print("Минимальная норма невязки для частных решений = ",min_norm:lmin(L_norm)); print("Матрица, содержащая обобщенное псевдорешение и частные решения:"); xo;
Рис. 2.36. Листинг программы, сравнивающей нормы невязки для обобщенного псевдорешения и совокупности частных решений
139
Рис. 2.37. Некоторые результаты работа программы тестирования. Видно, что по сравнению со всей совокупностью частных решений обобщенное псевдорешение действительно дает минимальную нормуневязки для заданной системы уравнений
Рассмотрим практический пример, который приводит к переопределенной системе уравнений.
|
|
|
|
|
n |
|
Требуется |
построить полином |
n-й |
степени |
( pn (x) ci xi , |
|
|
|
|
|
i 0 |
ci |
? ), оптимально аппроксимирующий |
m ( n) |
точек, заданных |
||
на |
плоскости |
(x, y f (x)) . Эту |
задачу математически можно |
||
|
|
140 |
|
|
|
