Yoda писал(а):
Ключевой момент - может. Точнее, умножение даст погрешность только в случае возникновения переполнения. А деление даёт погрешность всегда, когда делитель не кратен степени двойки.
Ну давайте подумаем, почему деление предпочтительнее в общем случае?
Я думаю так: деление позволяет оставаться в рамках небольших чисел, тогда как умножение очень быстро выводит промежуточные результаты в большие числа. Нам проще оставить на диагонали единицы, чем какие-то большие числа, которые при вычитании друг из друга (на промежуточных шагах метода исключения) просто не будут вычитаться. Думаю, поэтому классическое описание метода Гаусса содержит деление.
Ещё такой вариант. Мне в бытность приходилось считать определители разными способами. Там были и LU-разложения матрицы и некоторые виды рекуррентных формул, какие-то из которых я сам выдумал. При этом возникают такие невероятные комбинации, что при расчёте этого всего в дробях погрешность неудивительна. Очень может быть, что разработчики Excel шли по какому-то из этих путей. Алгоритмы LU(P)-разложения наверняка встроены в какие-нибудь библиотеки, а там в классическом виде требуется, чтобы L содержала единицы на диагонали. Отсюда деление. Когда я лазил по коду Maple, заметил, что там многие вещи тоже делаются через LU-разложение, так что наверняка этот подход и реализован в Excel, а не метод Гаусса.