Re^3: Минимальное число
- From
- Evgenij Masherov (2:5020/175.2)
- To
- Andrew Starsh
- Date
- 2002-11-25T20:01:35Z
- Area
- RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>
Sun Nov 24 2002 11:17, Andrew Starsh wrote to Evgenij Masherov:
IR>>>> Так а как найти это минимальное вещественное число (не равное 0)
IR>>>> , которое компьютер(компилятор) может различать?
AS>>> Поинтеpесуйтесь типами пеpеменных. Или - пpедставлением чисел в
AS>>> компилятоpе/интеpпpетатоpе.
EM>> Это вполне актуальная задача, если речь идет о разработке
EM>> машинно-независимого матобеспечения.
AS> Ну, если человек балуясь, выясняет пpеделы - это тоже вполне актуально.
AS> Пеpвая ступень, котоpой, большинству, как пpавило, хватает - это
AS> пользование стандаpтными сpедствами языка пpогpаммиpования. И нужно
AS> пpедставлять его пpеделы, что бы, когда задача выходит за них, лезть к
AS> железу.
Вот простенький пример, в котором весьма наглядно видны некоторые эффекты
арифметики конечной точности.
Производим суммирование гармонического ряда 1/х с миллиардом слагаемых.
(Одинарная точность 8086 процессоров)
Если суммируем в естественном порядке - получаем 15.40
Если от конца к началу - 18.80
Отмечу, что слагаемые не только не исчерпывают диапазон значений плавающих
чисел, но даже не достигли предела по точности 1+е=1
(На всякий случай напомню, что ряд расходящийся...)
Так что, как видите, при том же железе и компиляторе - эффект бывает
разителен. Есть красивый пример с расчетом корней квадратного уравнения, где
переход от формулы x=(-b+sqrt(b^2-4*a*c))/(2*a) к x=2*c/(b+sqrt(b^2-4*a*c))
b>0
дало драматический выигрыш в точности.
Евгений Машеров АКА СанитарЖеня
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)