Re: Округление к ближайшему

From
Sergey Andrianov (2:5020/1507.400)
To
Max Alekseyev
Date
2002-10-10T23:43:02Z
Area
RU.ALGORITHMS
Здравствуй, Max!

Однажды 09-Oct-02  в 13:26   Max Alekseyev (2:5015/60)
написал       Vovanius Uryvaeff    по поводу
-=-   Округление к ближайшему  -=-


MA>>> Процитирую соответствующий параграф из "Аппроксиметрики"
MA>>> В.М.Юровицкого: http://yur.ru/science/computer/appro/monografia.htm

MA> [...]

MA>>> Kазалось бы, мы имеем очень простую и естественную систему
MA>>> округления. Увы, компьютерная техника так до сих пор и не смогла
MA>>> освоить этот алгоритм округления.

VU>> Хех.. придумали это еще давно, но делают сие лишь вручную или в
VU>> теории. А на машине делают как проще...

MA> Согласно тому же Юровицкому, в этом и проблема. Цитирую по
MA> http://yur.ru/science/computer/index.htm

	В качестве преамбулы хочу сказать, что в школе меня учили округлять "5" ВСЕГДА 
в большую сторону. Цитировавшаяся же здесь методика, на мой взгляд, приводит к 
абсурду, когда 
  0.25*0.25 #  2.5*0.025. Так что согласиться с ней, как с единственно разумной 
никак не могу. 
	Теперь по цитате: 
MA> ===cut===
MA> [...]

MA> И такое понижение вычислительной культуры не проходит бесследно. На сайте 
MA> www.ima.umn.edu/~arnold/disasters/disasters.html приведен список крупнейших 

MA> аварий с человеческими жертвами и с многомиллиардными убытками, которые 
MA> доказано связаны с недостатками существующей технологии компьютерных 
MA> вычислений (взрыв ракеты Ариан при запуске, гибель норвежской буровой 
MA> платформы и т.д.). 

	Спорная трактовка причины аварий именно как следствия неправильной обработки 
ошибок округления.

MA> На самом деле таких аварий, а тем более потерь, 
MA> связанных с затратой ресурсов, гораздо больше. Просто это трудно доказать. 
MA> Ведь для этого необходимо провести альтернативные метрологически 
MA> корректные расчеты. Их можно провести пока только вручную, что слишком 
MA> дорого, а то и просто невозможно, да и нет уже специалистов по ручным 
MA> вычислениям. 

MA> Неправильная вычислительная технология имеет последствия и для самого 
MA> компьютеринга. На практике метрологические данные редко имеют точность выше 

MA> трех десятичных знаков (относительная погрешность 0,1%), что соответствует 
MA> примерно 10 двоичным разрядам. Kомпьютер же ведет расчеты с тридцатью и 
MA> более двоичными разрядами (до шестидесяти). Что же обрабатывает компьютер 
MA> в этих лишних разрядах? Шумы. 

	Не всегда. Kонкретный пример: излучение АЧТ пропорционально 4-й степени 
температуры. 10 двоичных разрядов для температуры соответствуют 40 двоичным 
разрядам для мощности излучения. А в результате для определения теплового 
баланса двух тел, нагретых до близкой температуры, существующая точность 
вычислений оказывается как раз на пределе. Kонечно, разность двух больших чисел 
можно считать и по другому - более точно. Но для этого иногда надо заранее 
предполоагать, что она будет существенно меньше любого из исходных чисел, а это 
довольно накладно. В то же время, зачастую ошибки округления именно в этом 
случае приводят к ошибке в физичестких величинах, находящейся в приемлемом 
диапазоне. 
	Другими словами, "обработка шумов" часто имеет место, но вряд ли 2-3-5-ти 
кратное увеличение объема вычислений в данном случае приводит с кущественным 
негативным последствиям. В первую очередь потому, что вычисления, как правило, 
осуществляются параллельно. 
	Так что проблемы здесь нет. Никакой. Просто есть запас в N раз, где N - константа порядка единицы. 

MA> Итак, современная компьютерная вычислительная технология в области 
MA> обработки нецелых данных неверна,

	Между "приближенна" и "неверна" - дистанция огромного размера.

MA> не отвечает потребностям современного этапа развития техники, является 
перманентным 
MA> источником аварий, катастроф и убытков. 

	Неправда. Есть такая наука, как численные методы. В частности, она 
рассматривает условия, при которых ошибки округления приводят к существенному 
искажению данных, а в каких - нет. Естественно, когда за программирование берется человек, который считает себя программистом только на том основании, что изучил какой-нибудь язык программирования, то последствия могут быть какие угодно. Но это - конкретная проблема конкретного человека, а не фундаментальная проблема отрасли человеческой деятельности.  	Чувтсвуется, что автор этого материала в большей степени публицист, нежели специалист. :)
===cut===


                  До свидания,  в  21:51 MSK
                                 Sergey

---
 * Origin: Sergiev Posad (2:5020/1507.400)