[Oo-discuss] Ошибка в вычислениях.

Сергей Александрович Лядов ladserg на mail.ru
Вт Июл 14 10:58:32 MSD 2009


Здравствуйте, drweb
Ответ на Ваше письмо от 07/13/2009 10:25 PM
> Можно от вас услышать пример?
> А пока приведу свой - тросовый датчик линейных перемещений имеет
> погрешность измерения 0.1 мм.
> Поэтому линейные перемещения 100,12 мм и 100,19 мм будут неразличимы
> системой управления.

Давайте не будем поспешны, если человеку нужна точность, то значит она
ему нужна, и тут вывод только один: что данное ПО не подходит для
решения его задач вот и все. Можно долго убеждать весь мир, что эта
погрешность - фигня, но на самом деле это будет не так.

Приведу пару фатальных примеров связанных с точностью:


http://www.pcweek.ru/themes/detail.php?ID=82178

> В 1991 г. ракетная установка MIM-104 Patriot не заметила вражескую
> ракету Scud, которая уничтожила в казарме г. Дахрен (Судовская Аравия)
> 28 американских солдат. Бортовая система Patriot работает с
> накапливаемой ошибкой в системных часах, и в процессе длительного
> нахождения на боевом дежурстве погрешность достигла 0,3 с, что привело
> к пропуску быстро двигавшейся ракеты.


http://www.ipmce.ru/about/press/popular/potencial4-2007/
> В 1991 году во время Войны в заливе (США против Ирака) батарея
> американских зенитных ракет «Пэтриот» не смогла перехватить запущенную
> иракцами ракету «Scud» советского производства. Ракета попала
> в казарму американских солдат, при этом погибло 28 человек. Причиной
> этого была погрешность вычисления времени. При вычислении нужно было
> умножать время, задаваемое тактовым генератором компьютера (оно
> измерялось в десятых долях секунды) на 1/10, но это десятичное число
> невозможно точно представить в двоичном виде. Для хранения этой
> константы использовался
>
> 24-разрядный регистр. Разница между точным значением
> 1/10 и ее неточным двоичным представлением составляет в двоичном виде
> 0,0000000000000000000000011001100…, или около 0,000000095 в десятичном
> виде. Компьютер был включен около 100 часов, за это время накопилась
> ошибка в измерении времени в 0,34 секунды. Скорость ракеты «Scud»
> составляла примерно 1700 м/сек, то есть за это время она прошла более
> 500 метров. Этого хватило для того, чтобы зенитные ракеты не смогли
> ее перехватить.
>

Прошу обратит внимание, что в последнем примере точность была высокой,
но результат фатальный. А если бы там была погрешность в 0,001 как у нас?


И последнее, если у бухгалтеров не сходится баланс даже на 0,000000001
чего нибудь, то им придется сидеть и корпеть, дабы искать куда делись
эти 0,000000001 чего то, даже если будут сидеть год или два. Не
рекомендую в этот момент говорить им, что разница несущественна :-)

-- 
С уважением, Сергей.




Подробная информация о списке рассылки Oo-discuss