уравновеситься

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

Синтаксис

[P,R,C] = equilibrate(A)

Описание

пример

[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')

Используйте 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 в =d, где B=RPAC и d=RPb. В этой форме можно восстановить решение исходной системы с x=Сай.

Используйте gmres, чтобы решить =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

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

После того, как вы получите матричный 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

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

свернуть все

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

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

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

свернуть все

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

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

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

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

| | | | |

Введенный в R2019a

Для просмотра документации необходимо авторизоваться на сайте