Математическая ошибка в ППО «Пэтриот» привела к гибели 28 солдат США

|
Математическая ошибка в ППО «Пэтриот» привела к гибели 28 солдат США

25 февраля 1991 года казарма американских военнослужащих в Дахране, Саудовская Аравия, стала местом трагедии, которая шокировала мир. Война в Персидском заливе почти завершалась, солдаты готовились вернуться домой, чувствуя себя защищенными под прикрытием одного из самых современных противоракетных комплексов — «Пэтриот». Но в этот момент вражеская ракета «Скад» попала в цель, унеся жизни 28 военнослужащих и ранив еще около сотни.

Об этом сообщает KURAZH

Причины катастрофы: невидимая ошибка в коде

Расследование установило, что система «Пэтриот» зафиксировала ракету, но не осуществила перехват. Причиной стало не тактическое просчет и не поломка оборудования, а малозаметная неточность в математических расчетах, заложенных в программный код устройства.

Чтобы точно определять траекторию ракет, «Пэтриот» использовал внутренние электронные часы, которые измеряли время с интервалом 0,1 секунды. Однако для компьютера число 0,1 в двоичной системе выглядит как бесконечная дробь — 0.0001100110011…, которую из-за ограничений памяти приходилось обрезать после 24-го знака. В результате этого каждая десятая доля секунды рассчитывалась неточно — отставание составляло всего 0,000000095 секунды. Казалось бы, это незначительная ошибка, но она накапливалась с каждой секундой работы системы.

Накопление ошибки и фатальные последствия

Разработчики были осведомлены об этой несоответствии, однако считали, что из-за постоянных перемещений и перезагрузок комплекс не будет работать настолько долго, чтобы ошибка стала критической. Но во время войны батарея «Пэтриот» в Дахране функционировала более 100 часов без остановки. За это время внутренние часы отстали от реального времени уже на 0,34 секунды.

Это отставание стало критическим: для ракеты «Скад», движущейся со скоростью 1,7 км/с, даже доли секунды были решающими. Из-за неточности в расчетах система искала цель в месте, где ракета уже не находилась — ошибка в 0,34 секунды означала пространственную ошибку более чем в 600 метров.

«Пэтриот» смотрел в пустое небо, а в это время «Скад» поразил казарму.

Иронично, что на момент трагедии программисты уже подготовили обновление, которое должно было исправить эту многолетнюю ошибку, но обновление не успело дойти до нужной батареи.

Это событие стало печальным напоминанием для мира технологий: даже самые мелкие ошибки в программном обеспечении могут иметь катастрофические последствия. В эпоху, когда человеческая жизнь зависит от точности кода, не существует незначительных деталей.