Итеративное уточнение
Итеративное уточнение — итерационный метод, предложенный Джеймсом Х. Уилкинсоном для повышения точности численных решений систем линейных уравнений . [1] [2]
При решении линейной системы из-за совокупного накопления ошибок округления вычисленное решение иногда может отклоняться от точного решения Начиная с итеративное уточнение вычисляет последовательность который сходится к когда выполняются определенные предположения.
Описание
[ редактировать ]Для -я итерация m итеративного уточнения состоит из трех шагов:
- Вычислить остаточную ошибку r m
- Решите систему коррекции c m , которая удаляет остаточную ошибку.
- Добавьте исправление, чтобы получить исправленное следующее решение x m +1.
хотя решение для cm Важнейшим аргументом в пользу алгоритма уточнения является то, что , на этапе (ii) действительно может содержать те же ошибки, что и первое решение, , расчет остатка r m на этапе (i) для сравнения численно почти точен: вы можете не очень хорошо знать правильный ответ, но вы достаточно точно знаете, насколько далеко имеющееся у вас решение находится от получения правильный результат ( б ). Если невязка в каком-то смысле мала, то поправка также должна быть небольшой и должна, по крайней мере, приближать текущую оценку ответа x m к желаемой,
Итерации остановятся сами по себе, когда невязка r m равна нулю или достаточно близка к нулю, чтобы соответствующая поправка c m была слишком мала, чтобы изменить решение x m , которое ее создало; в качестве альтернативы алгоритм останавливается, когда r m становится слишком мал, чтобы убедить линейного алгебраиста, наблюдающего за ходом работы, что стоит продолжать дальнейшие уточнения.
Обратите внимание, что матричное уравнение, решенное на этапе (ii), использует ту же матрицу для каждой итерации. Если матричное уравнение решено прямым методом, например Холецкого или LU Разложение , численная дорогостоящая факторизация выполняется один раз и повторно используется для относительно недорогой прямой и обратной замены для вычисления на cm каждой итерации. [2]
Анализ ошибок
[ редактировать ]Как правило, итеративное уточнение для исключения Гаусса дает решение, правильное к рабочей точности, если при вычислении r используется удвоенная рабочая точность , например, с использованием учетверенной или двойной расширенной точности IEEE 754 с плавающей запятой , и если A не слишком плохо обусловлен (а итерация и скорость сходимости определяются числом обусловленности A ). [3]
Более формально, предполагая, что каждый шаг (ii) может быть решен достаточно точно, т. е. в математических терминах, для каждого m мы имеем
где ‖F m ‖ ∞ < 1 , относительная ошибка на m -й итерации итеративного уточнения удовлетворяет условию
где
- ‖·‖ ∞ обозначает ∞ -норму вектора,
- κ (A) ∞ - число обусловленности A — ,
- n — порядок A ,
- ε 1 и ε 2 — единичные округления арифметических операций с плавающей запятой ,
- σ , µ 1 и µ 2 — константы, зависящие от A , ε 1 и ε 2.
если A «не слишком плохо обусловлено», что в данном контексте означает
и означает, что µ 1 и µ 2 имеют порядок единицы.
Различие ε 1 и ε 2 предназначено для обеспечения оценки r m со смешанной точностью , когда промежуточные результаты вычисляются с единичным округлением ε 2 перед тем, как конечный результат округляется (или усекается) с единичным округлением ε 1 . Предполагается, что все остальные вычисления выполняются с единичным округлением ε 1 .
Ссылки
[ редактировать ]- ^ Уилкинсон, Джеймс Х. (1963). Ошибки округления в алгебраических процессах . Энглвуд Клиффс, Нью-Джерси: Прентис Холл .
- ^ Jump up to: Перейти обратно: а б Молер, Клив Б. (апрель 1967 г.). «Итеративное уточнение в числах с плавающей запятой» . Журнал АКМ . 14 (2). Нью-Йорк, штат Нью-Йорк: Ассоциация вычислительной техники : 316–321. дои : 10.1145/321386.321394 .
- ^ Хайэм, Николас (2002). Точность и устойчивость численных алгоритмов (2-е изд.). СИАМ. п. 232.