2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 логика математики для биолога
Сообщение20.07.2008, 23:58 


20/07/08
1
хотел округлить важное число в своей жизни, но не смог этого сделать.
читаю правила по арифметике:


Правило 3

Если отбрасывается цифра 5, а за ней нет и никогда не было значащих цифр, то последняя из сохраняемых цифр остаётся неизменной, если она чётная, и увеличивается на 1, если она нечётная.


(с) http://www.college.ru/mathematics/cours ... heory.html

и у меня возник интересный, как для не математика, вопрос: а чем нечетные цифры лучше четных? Число котороя я округлял действительно важное, и получается что меня подставила какая-то арифметика, а кому-то она наоборот помогла.

 Профиль  
                  
 
 Re: логика математики для биолога
Сообщение21.07.2008, 01:07 
Аватара пользователя


31/07/07
161
alex_kol писал(а):
и у меня возник интересный, как для не математика, вопрос: а чем нечетные цифры лучше четных?
В случае округления - предположу, что потому, что 0 - четное число.

Тип округления к ближайшему четному называется банковским округлением.

Если складывать много чисел, округляя .5 всегда в большую сторону, то возникнет перекос, который будет тем больше, чем больше чисел мы складываем. Банковское округление позволяет минимизировать этот перекос. В этом случае половина округляется к ближайшему четному.

 Профиль  
                  
 
 Re: логика математики для биолога
Сообщение21.07.2008, 01:23 
Заслуженный участник


11/05/08
32166
alex_kol писал(а):
Если отбрасывается цифра 5, а за ней нет и никогда не было значащих цифр, то последняя из сохраняемых цифр остаётся неизменной, если она чётная, и увеличивается на 1, если она нечётная.

Честно говоря, никогда этим не интересовался. С моей (сугубо практической) точки зрения -- округлять надобно до ближайшего целого, ну а выпадет судьба на пятёрку -- так какая разница. Обычно принято округлять в этом случае просто вверх.

Не уверен, что это правило имеет хоть какое-то практическое значение. Но, может, и имеет.

Тогда соотв. теорема должна выглядеть примерно так: при указанном способе округления матожидание результата ближе к истинному значению, чем при том вульгарном, которое я описывал.

Не уверен, что это имеет хоть какое-то практическое значение. И почти уверен: даже эта изысканная оценка не является несмещённой.

 Профиль  
                  
 
 Re: логика математики для биолога
Сообщение21.07.2008, 11:46 


29/06/06
13
Воронеж
alex_kol писал(а):
хотел округлить важное число в своей жизни, но не смог этого сделать.

Если это число такое вожное, зачем его округлять?
А сколько цифр в этом числе? Чем больше цифр, тем меньше губительный эффект округления.
Ну а правило округление в арифметике такое: если последней цифрой является 0,1,2,3 или 4, тогда она отбрасывается, если находится в дробной части и меняется на 0, если дробной части нет. Если же это число заканчивается на 5,6,7,8 или 9, тогда выполняется все тоже самое, только предпоследняя цифра исходного числа увеличивается на 1.

 Профиль  
                  
 
 Re: логика математики для биолога
Сообщение22.07.2008, 07:40 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
alex_kol писал(а):
Правило 3

Если отбрасывается цифра 5, а за ней нет и никогда не было значащих цифр, то последняя из сохраняемых цифр остаётся неизменной, если она чётная, и увеличивается на 1, если она нечётная.


Скажите, а давно это ввели? Нас вот в школе учили, что когда 5 на конце, то округляется всегда в большую сторону, вне зависимости от чётности или нечётности предыдущей цифры. То есть вот так:

PaulS писал(а):
Ну а правило округление в арифметике такое: если последней цифрой является 0,1,2,3 или 4, тогда она отбрасывается, если находится в дробной части и меняется на 0, если дробной части нет. Если же это число заканчивается на 5,6,7,8 или 9, тогда выполняется все то же самое, только предпоследняя цифра исходного числа увеличивается на 1.

 Профиль  
                  
 
 
Сообщение22.07.2008, 10:12 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Профессор Снэйп, см. http://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D1%80%D1%83%D0%B3%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5 http://www.college.ru/mathematics/courses/algebra/content/chapter1/section3/paragraph4/theory.html http://www.metrologie.ru/usefullinform-okrugl.htm

 Профиль  
                  
 
 
Сообщение22.07.2008, 10:53 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Brukvalub писал(а):


Во второй ссылке сказано, что стандарт --- это округление первым способом (с учётом чётности/нечётности предыдущей цифры). В третьей ссылке говорится, что стандарт --- округление вторым способом (всегда в большую сторону, без учёта чётности/нечётности предпоследней цифры). В первой ссылке (статья из Википедии) указаны оба способа округление, причём округление первым способом называется банковским округлением, а округление вторым способом --- математическим округлением (и, насколько я понял, считается стандартным во всех областях, не связанных с банковской деятельностью).

Короче, путаница полная. Единого стандарта, я так понимаю, нет.

 Профиль  
                  
 
 
Сообщение22.07.2008, 21:42 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Профессор Снэйп в сообщении #134686 писал(а):
Короче, путаница полная. Единого стандарта, я так понимаю, нет.
Именно это я и хотел подчеркнуть ссылками:D

 Профиль  
                  
 
 
Сообщение22.07.2008, 22:11 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Brukvalub писал(а):
Профессор Снэйп в сообщении #134686 писал(а):
Короче, путаница полная. Единого стандарта, я так понимаю, нет.
Именно это я и хотел подчеркнуть ссылками:D


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

 Профиль  
                  
 
 Re: логика математики для биолога
Сообщение23.07.2008, 13:40 
Заслуженный участник


12/07/07
4438
Пусть в системе с основанием $p \ge 2$ выполняется округление числа с $t+r$ разрядами до числа с $t$ разрядами; $t>0$, $r>0$; $0 \le x < 1$. И пусть числа имеют равные веса. Тогда средняя ошибка округления задается выражением $\Delta = \frac {\sum \epsilon} {p^{t+r}}$. При любом фиксированном способе округления, определяемом лишь отбрасываемыми разрядами ошибка от округления до меньшего числа разрядов будет иметь систематическое смещение (т.е. $\Delta \ne 0$, — прим. GAA) при любой системе счисления с четным основанием. [1] Очевидно (и об этом говорит wiki: “This method is also known as unbiased rounding”), при использовании банковского округления средняя ошибка равна нулю.

В АЛУ процессоров операции, иногда, выполняются с $t+r$ разрядами, а при сохранении в регистре округляются до $t$ разрядов. Кроме того, при сохранении (выгрузке результатов в память) в переменные типа double или single вновь происходит округление (округление не происходит при сохранении в переменную типа extended). Так что описанная модель округления, в принципе, имеет смысл. Как модель, так и банковское правило округления, по-моему, имеет некоторое значение не только в банковских, но и в длительных геодезических расчетах с малым числом разрядов (считали раньше вручную). Возможно поэтому, банковское правило называют в естественных науках Гауссовым правилом округления (на русском см., например, [2]).

alex_kol писал(а):
... вопрос: а чем нечетные цифры лучше четных?
Округление к четному есть договоренность. Очевидно, можно правило изменить и округлять всегда к нечетному числу (это отмечается в [3]). Но так уж договорились.

Refs.
[1] Ильин В.А., Позняк Э.Г. Основы математического анализа. Т.1 — М.: Наука, 1982. Дополнение 2 «Об ошибках в округлении чисел в системе счисления с четным и нечетным основанием» [По-моему, после слов «и мы получим после несложных вычислений, что...» в записи суммы, допущена опечатка, но на результат она не влияет].
[2] Яворский В.А. Планирование научного эксперимента и обработка экспериментальных данных. Метод. ук. к выполн. лаб. работ — МФТИ, 2006. Раздел 7 «Учет погрешности в записи окончательного результата измерения» [К сожалению текст не особо строгий: при очень беглом прочтении обратил внимание на то, что определения некоторых понятий формулируются без указания того, что такие определения не являются общепринятыми].
[3] Выгодский М.Я. Справочник по элементарной математике. — М.: Наука, 1979. §35 «Правила округления».
[Добавлено 29.07.08]
В стандарте IEEE-754 имеется четыре режима округления:
1) к ближайшему четному;
2) к нулю;
3) к положительной и отрицательной бесконечности.
Эти режимы поддерживаются, например, сопроцессорами Intel x87 и FPU более поздних процессоров: 486, Pentium.

Из раздела 2.2.3 документа INTEL 80387 PROGRAMMER'S REFERENCE MANUAL, 1987:
Rounding occurs in arithmetic and store operations when the format of the destination cannot exactly represent the infinitely precise true result. For example, a real number may be rounded if it is stored in a shorter real format, or in an integer format. Or, the infinitely precise true result may be rounded when it is returned to a register.

The NPX [Numeric Processor Extension] has four rounding modes, selectable by the RC field in the control word (see Figure 2-3). Given a true result b that cannot be represented by the target data type, the 80387 determines the two representable numbers a and c that most closely bracket b in value (a < b < c). The processor then rounds (changes) b to a or to c according to the mode selected by the RC field as shown in Table 2-5. Rounding introduces an error in a result that is less than one unit in the last place to which the result is rounded.
1. "Round to nearest" is the default mode and is suitable for most applications; it provides the most accurate and statistically unbiased estimate of the true result.
2. The "chop" or "round toward zero" mode is provided for integer arithmetic applications.
3. "Round up" and "round down" are termed directed rounding and can be used to implement interval arithmetic. Interval arithmetic generates a certifiable result independent of the occurrence of rounding and other errors. The upper and lower bounds of an interval may be computed by executing an algorithm twice, rounding up in one pass and down in the other.


Из раздела 3.2.2 документа Intel387™ SX MATH COPROCESSOR, 1995:
The rounding control (RC) field (bits 11–10) provide for directed rounding and true chop, as well as the unbiased round to nearest even mode specified in the IEEE standard. Rounding control affects only those instructions that perform rounding at the end of the operation (and thus can generate a precision exception); namely, FST, FSTP, FIST, all arithmetic instructions (except FPREM, FPREM1, FXTRACT, FABS, and FCHS) and all transcendental instructions.

Для иллюстрации выполним такой пример (Turbo Pascal 7, Delphi 5):
Код:
{$N+} {NPU On}
Var
s:  single;
begin
s:= -3/2;  writeln('Round(-1.5)=', Round(s));
s:= -1/2;  writeln('Round(-0.5)=', Round(s));
s:= +1/2;  writeln('Round(+0.5)=', Round(s));
s:= +3/2;  writeln('Round(+1.5)=', Round(s));
end.
Результат выполнения (TP7, Delphi на Intel Pentium III, AMD Athlon 64): -2, 0, 0, 2.
Т.е., действительно, выполняется округление к ближайшему четному (режим округления по умолчанию).

Просмотр ассемблерного кода в отладчике показывает, по существу, в TP7 округление реализуется загрузкой вещественной переменной в стек FPU и последующим сохранением целого в ячейке памяти:
1) fld s (загрузка переменной типа single в вершину стека перед вызовом Round)
2) fistp dword ptr [xxxx] (выгрузка целого во временную переменную по адресу [xxxx])
Другими словами округление осуществляет инструкцией fistp.

 Профиль  
                  
 
 
Сообщение28.07.2008, 16:10 
Заслуженный участник
Аватара пользователя


11/03/08
9489
Москва
alex_kol
Это так называемое "банковское округление". Оно введено для того, чтобы при округлении не возникало систематического завышения или занижения результата.
Если считать все последние цифры равновероятными, то у нас есть 4 цифры (1, 2, 3, 4), для которых округляют в меньшую сторону, 4 цифры (6, 7, 8, 9), для которых округляют в большую сторону и цифра 5. Если округлять числа, заканчивающиеся на "5", в бОльшую сторону, то в бОльшую сторону будет округляться 5 из 9 случаев округления, и результат будет завышаться. Если в меньшую - то 5 и 9 случаев будут представлять занижение. Это неустранимая проблема, поскольку вариантов нечётное число, 9. Разрешением её было бы округлять "5" иногда в большую, иногда в меньшую сторону с равной вероятностью. Но если предоставить это выбору вычисляющего, он может (не забываем, что это банковское округление) искажать результат в свою пользу. Поэтому предпоследняя цифра играет роль "генератора случайных чисел", если она нечётна - то округляют в бОльшую, чётна - в меньшую сторону. Так избавляются и от систематического искажения, и от возможности мошенничества. Для не-финансовых расчётов чаще применяют более простое правило, всегда округляя "5" в бОльшую сторону.

 Профиль  
                  
 
 
Сообщение28.07.2008, 16:48 


08/05/08
954
MSK
Евгений Машеров писал(а):
alex_kol
Разрешением её было бы округлять "5" иногда в большую, иногда в меньшую сторону с равной вероятностью.

Писал как то прогу ( денежки делили). Ну вот порешили сообща, что такие "ошибки" списывать на определенный счет. Все про него знали и никому обидно не было :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group