equilibrate

Матрица, масштабирующаяся для улучшенного создания условий

Синтаксис

Описание

пример

[P,R,C] = equilibrate(A) переставляет и перемасштабирует матричный A таким образом, что новый матричный B = R*P*A*C имеет диагональ с записями величины 1, и ее недиагональные записи не больше 1 в величине.

Примеры

свернуть все

Уравновесьте матрицу большим числом обусловленности, чтобы повысить эффективность и устойчивость решения для линейной системы с итеративным решателем gmres.

Загрузите west0479 матрица, которая является с действительным знаком 479 479 разреженная матрица. Используйте condest вычислить предполагаемое число обусловленности матрицы.

load west0479
A = west0479;
c1 = condest(A)
c1 = 1.4244e+12

Попытайтесь решить линейную систему Ax=b использование gmres с 450 итерациями и допуском 1e-11. Задайте пять выходных параметров так, чтобы gmres возвращает нормы невязки решения в каждой итерации (использующий ~ подавить ненужные выходные параметры). Постройте нормы невязки в полулогарифмическом графике. График показывает тот gmres не может достигнуть разумной нормы невязки, и таким образом, расчетное решение для x не надежно.

b = ones(size(A,1),1);
tol = 1e-11;
maxit = 450;
[x,flx,~,~,rvx] = gmres(A,b,[],tol,maxit);
semilogy(rvx)
title('Residual Norm at Each Iteration')

Figure contains an axes object. The axes object with title Residual Norm at Each Iteration contains an object of type line.

Используйте equilibrate переставлять и перемасштабировать A. Создайте новый матричный B = R*P*A*C, который имеет лучшее число обусловленности и диагональные элементы только 1 и-1.

[P,R,C] = equilibrate(A);
B = R*P*A*C;
c2 = condest(B)
c2 = 5.1036e+04

Используя выходные параметры, возвращенные equilibrate, можно переформулировать проблему Ax=b в By=d, где B=RPAC и d=RPb. В этой форме можно восстановить решение исходной системы с x=Cy.

Используйте gmres решить By=d для y, и затем повторно постройте нормы невязки в каждой итерации. График показывает, что уравновешивание матрицы улучшает устойчивость проблемы с gmres схождение к желаемому допуску 1e-11 меньше чем в 200 итерациях.

d = R*P*b;
[y,fly,~,~,rvy] = gmres(B,d,[],tol,maxit);
hold on
semilogy(rvy)
legend('Original', 'Equilibrated', 'Location', 'southeast')
title('Relative Residual Norms (No Preconditioner)')
hold off

Figure contains an axes object. The axes object with title Relative Residual Norms (No Preconditioner) contains 2 objects of type line. These objects represent Original, Equilibrated.

Улучшите решение с предварительным формирователем

После того, как вы получаете матричный B, можно улучшить устойчивость проблемы еще больше путем вычисления предварительного формирователя для использования с gmres. Числовые свойства B лучше, чем те из исходного матричного A, таким образом, необходимо использовать уравновешенную матрицу, чтобы вычислить предварительный формирователь.

Вычислите два различных предварительных формирователя с ilu, и используйте их в качестве входных параметров к gmres решать задачу снова. Постройте нормы невязки в каждой итерации на том же графике как уравновешенные нормы для сравнения. График показывает, что вычисление предварительных формирователей с уравновешенной матрицей значительно увеличивает устойчивость проблемы с gmres достижение желаемого допуска меньше чем в 30 итерациях.

semilogy(rvy)
hold on

[L1,U1] = ilu(B,struct('type','ilutp','droptol',1e-1,'thresh',0));
[yp1,flyp1,~,~,rvyp1] = gmres(B,d,[],tol,maxit,L1,U1);
semilogy(rvyp1)

[L2,U2] = ilu(B,struct('type','ilutp','droptol',1e-2,'thresh',0));
[yp2,flyp2,~,~,rvyp2] = gmres(B,d,[],tol,maxit,L2,U2);
semilogy(rvyp2)

legend('No preconditioner', 'ILUTP(1e-1)', 'ILUTP(1e-2)')
title('Relative Residual Norms with ILU Preconditioner (Equilibrated)')
hold off

Figure contains an axes object. The axes object with title Relative Residual Norms with ILU Preconditioner (Equilibrated) contains 3 objects of type line. These objects represent No preconditioner, ILUTP(1e-1), ILUTP(1e-2).

Входные параметры

свернуть все

Введите матрицу в виде квадратной матрицы. A может быть плотным или разреженным, но должен быть структурно несингулярным, как определено sprank.

Когда A разреженно, выходные параметры PR, и C также разреженны.

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Матрица перестановок, возвращенная как матрица. P*A сочетание A это максимизирует абсолютное значение продукта его диагональных элементов.

Масштабирование строки, возвращенное как диагональная матрица. Диагональные элементы в R и C действительны и положительны.

Масштабирование столбца, возвращенное как диагональная матрица. Диагональные элементы в R и C действительны и положительны.

Ссылки

[1] Подновите, я. S. и Дж. Костер. “На Алгоритмах Для Перестановки Больших Записей в Диагональ Разреженной матрицы”. SIAM Journal на Анализе матрицы и Приложения 22, № 4 (январь 2001): 973–96.

Расширенные возможности

Смотрите также

| | | | |

Введенный в R2019a