Матрично-векторное умножение обладает лучшими свойствами числовой стабильности, чем матрично-матричное умножение, поэтому я ожидаю, что метод (1) будет более точным.
Более подробно, умножение матрицы на вектор имеет хороший результати обратная оценка ошибок.Если мы возьмем, например, умножение матрицы на вектор y = B u, то ошибка в y ограничена в 2n раз на единицу округления (1e-16 при использовании стандартных чисел двойной точности), умноженной на наибольшее число в матрице B разнаибольшее число в векторе u.Это ограничение прямой ошибки.
Оценка обратной ошибки состоит в том, что вычисленный y не является точно произведением B и u, но это точно произведение немного другой матрицы B 'и вектора u.Разница между B и B 'ограничена в 2n раз умножением на единицу, умноженным на наибольшее число в матрице B.
Для умножения матрицы на матрицу существует прямая погрешность, аналогичная той, что для матрицыумножение на вектор, но нет хорошей обратной ошибки.
Это общий принцип: вычисления с меньшим количеством выходных данных (например, умножение матрицы на вектор) с большей вероятностью будут обратно устойчивыми, чем вычисления с большим количествомвыходные данные (такие как матрично-матричные вычисления).
Однако, имеет ли это какое-то значение, это другая матрица.Может быть так, что метод (2) восстанавливает обратную стабильность из-за произведения матрицы на вектор, которое следует за произведением матрицы на матрицу.Может также случиться так, что для вашего конкретного приложения нет большой разницы, или даже этот метод (2) на самом деле более точен.
Но, учитывая, что метод (1), безусловно, быстрее, итакже, возможно, более точный, я бы определенно выбрал этот вариант.
Добавлено 29 сентября 2011: Мой любимый источник по этой теме - Николас Дж. Хайам, Точность и стабильность численных алгоритмов., SIAM, 2002. Но во многих учебниках по численному анализу обсуждается прямой и обратный анализ ошибок, особенно те, которые посвящены линейной алгебре.
Ошибка пересылки довольно интуитивна.Если вы знаете, что B и u верны, то вас интересует разница между вычисленным произведением B u и точным произведением;это то, что говорит вам прямой анализ ошибок.Обратная ошибка вступает в игру, когда матрица B неверна (это может быть результатом более ранних вычислений, которые допускают ошибку, или это в конечном итоге является результатом измерений, которые страдают от ошибок эксперимента или моделирования).Предположим, что ошибка в B равна 1e-10, а обратная ошибка в умножении меньше, чем, например, 1e-11.Это означает, что хотя результат умножения не верен для B, который вы дали алгоритму, он верен для другой матрицы B, которая настолько близка к исходной B, что с той же вероятностью будет правильным B, чемБ вы дали алгоритм.Так что в некотором смысле это так хорошо, как вы можете надеяться.
Прямой и обратный анализ ошибок имеют разные сильные стороны: иногда применяется один, иногда другой, иногда смесь.В идеале алгоритм должен иметь хорошие границы ошибок вперед и назад, но это случается не очень часто.