Таблицы Google Docs и нелинейная математика
Неужто нынче в школах не рассказывают о точности вычислений и возможных проблемах при переводе из десятичной системы в двоичную (и обратно)?
22.06.12 08:07 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cheechako
22.06.12 11:44 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Boroda
23.06.12 23:30 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Boroda
23.06.12 23:44 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cheechako
25.06.12 11:08 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Anomander
Это сообщение не направлено на оскорбление чувств верующих, неверующих, сексменьшинств, животных, разжигание межнациональной вражды и загрязнение природы.
27.06.12 10:56 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cheechako
Если для них это не открытие, то как объясняется тот факт, что Excel до сих пор ошибается в вычислениях, никак не учитывая это "известное"? Могли бы и написать формулы, учитывающие такую особенность и не дающие 50% неверных ответов. На вышеприводимом примере с десятичными числами (2 знака после запятой) - на 10 примерах 50% ошибок, на 100 примерах - 52% верных ответов.
Т.е. таблицы считают ровно, как блондинка из анекдота про вероятность встретить динозавра на улицах города - 50/50 - либо встречу, либо нет.
Программеры сего продукта наслаждаются своим сакральным знанием, но не принимают никаких действий к исправлению ситуации, почему?
27.06.12 20:45 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
28.06.12 08:22 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
28.06.12 11:36 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
Поэтому инженеры так не делают, и применяют имеющийся у них инструмент - грамотно. А приведенный вами пример сделан неграмотным человеком. Так что зачем вы говорите про инженеров - не понятно.
28.06.12 15:25 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
В общем все как обычно: инженеры (те самые) делают добротный, универсальный инструмент. В частности - MS Excel. Но, увы, грамотно пользоваться этим инструментом некоторые не хотят учиться. Предлагаю вернуться к калькулятору.
А в MS Excel все продумано.
Идем в Сервис -> Параметры (это для 2003 версии, про 2007 не знаю где, но точно где-то есть) Переключаемся на вкладку "Вычисления", включаем галочку "Точность как на экране".
Наслаждаемся. Правда, это относится ко всем расчетам, так что если где-то из-за округлений что-то "потеряется" - извините, вы сами этого хотели. Как сделать по другому - см. ссылки.
28.06.12 18:57 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
29.06.12 09:15 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя KSergey
29.06.12 09:19 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
В ответ на: А в MS Excel все продумано.
Идем в Сервис -> Параметры (это для 2003 версии, про 2007 не знаю где, но точно где-то есть) Переключаемся на вкладку "Вычисления", включаем галочку "Точность как на экране".
29.06.12 10:13 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
Knowledge itself is a power (F.Bacon)
29.06.12 10:29 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Mozepiy
Это сообщение не направлено на оскорбление чувств верующих, неверующих, сексменьшинств, животных, разжигание межнациональной вражды и загрязнение природы.
29.06.12 10:41 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
Проверил, разумеется. Не ваш конкретный пример, делать мне больше нечего, как именно ваш пример проверять. Давайте ваш xls-файл - погляжу именно на вашем примере.
29.06.12 10:47 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя pavelv
Knowledge itself is a power (F.Bacon)
29.06.12 12:14 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Mozepiy
Это сообщение не направлено на оскорбление чувств верующих, неверующих, сексменьшинств, животных, разжигание межнациональной вражды и загрязнение природы.
29.06.12 15:30 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
Сомнительно, чтобы кто-то предъявлял к тормозам требование работы в режиме 0/1 (полная свобода/полная блокировка колёс), без учёта пожеланий водителя
Аналогично в Excel'е (и вычислениях в общем случае): имеется множество функций округления, и их надлежащее использование - проблема не Excel'я, но квалификации пользователя, для которого понаписано множество статей вроде
Так, заказчик почти никогда не может явно сформулировать требования к применяемым в расчетах способам округления, и, зачастую, просто использует расчет, выполненный в Excel-е, как эталон, не задумываясь, как именно и почему именно так происходит округление в том или ином случае. В такой ситуации полезно:
точно представлять существующие стандартные методы округления, уметь по расчету Excel или другому <эталонному> расчету определять использованные в нем методы округления, уметь воспроизводить желаемый способ округления средствами языка, используемого для разработки.
29.06.12 16:07 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cheechako
29.06.12 16:56 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
30.06.12 15:38 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cel
02.07.12 15:04 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cheechako
Вы не в ту сторону забурились. Всё намного проще - реализовать отрабатывание функции правильно с учётом особенности счисления процессоров (она ведь заранее известна).
03.07.12 03:05 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cel
Как-то сразу не сообразил, что здесь имеет место некорректное использование логической функции IF фактически производит побитовое сравнение (что позволяет сравнивать, например, текстовые строки), для вещественных чисел проверка на равенство может быть проблематична - следует проверять на больше/меньше (тем более с учётом возможности появления машинного нуля) . Их возможных вариантов - сравнивать не разницы вида "(RC[-4]-RC[-3])" , но их округлённые (до нужного числа знаков) значения, по принципу
IF((ROUND(A;2) - (ROUND(B;2)) = 0);"равно";"не равно") где A=RC[-4]-RC[-3] B=RC[-2]-RC[-1] соответственно. В общем случае следует думать, какую из имеющихся функций округления дОлжно использовать. Если посмотреть результаты вычисления разницы с отображением достаточного количества знаков, хорошо видно, откуда берётся "странный" результат. К сожалению, в help'е по Excel'ю этого не нашёл (во всяком случае, сразу) - пожалуй, это можно отнести к серьёзному упущению, хотя не знаю, насколько это часто встречается. Относительно "автоматизации" - таки невозможно, ибо неизвестен характер проводимых вычислений/требуемая точность (грубый пример - те же тормоза: ступенчатое срабатывание в каких-то случаях может быть полезно, в каких-то безразлично, но может и привести к проблемам, потому делается "на усмотрение пользователя" ).
03.07.12 08:09 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cheechako
Да откуда берётся всё понятно и 100 раз расписано по ссылке на первой странице. Вопрос то в том почему? он вообще имеет право там появится. (Не имеет) Нам же не конкретный пример надо решить, а иметь универсальный инструмен, дающий одинаковые результаты при математических вычислениях с одинаковыми алгоритмами, составленными с математической логикой.
Опять же тут косяк Excel. Если следовать логике с неизвестным характером, то почему промежуточный результат, занесённый в ячейку без всяких ухищрений с округлением со стороны пользователя безжалостно округляется, независимо от "характера". При этом в данном примере сравнение результатов из ячеек (с большим количеством знаков после запятой) уже даёт правильный результат. Разве не следует вышепомянутую функцию сравненя реализовывать аналогично, с заданной точностью вычисления? Ведь всем известно, что "от перемены мест слагаемых сумма не меняется", а вот у Майкрософта получается по другому.
Можно долго оправдывать отсутствие логики тем, что это тоже своеобразная "логика", но результаты-то получаются неверными. Да и логика должна быть человеческой, а не машинной. С чего и начинал свои посты в этой теме.
03.07.12 12:05 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cel
В ответ на: . иметь универсальный инструмен, дающий одинаковые результаты при математических вычислениях.
. Разве не следует вышепомянутую функцию сравненя реализовывать аналогично, с заданной точностью вычисления.
Нельзя создать абсолютный универсальный инструмент - хотя бы по причине принципиальной невозможности вести вычисления с бесконечной точностью; заданную же точность кто-то должен задать, что и входит в обязанности конкретного пользователя Для компьютера не существует чисел вида "123,45"/"12,345" (чисто человеческая выдумка для "красоты") - в каждом случае это "0,12345E(соответствующая степень)": автоматически ограничить можно только количество значащих цифр, что способно привести к интересным эффектам вида 1000. - 1. = 1000. ; при этом для целых чисел результат будет-таки 999 Из простых примеров - результат (1/3)*3 равен единице только в том случае, если "вычислителю" известна формула; умножая на 3 полученное (откуда-то) число 0,3333, пользователь должен самостоятельно решать, следует ли результат округлить до единицы, или же оставить как есть, поскольку такое решение может существенно сказаться на некоем окончательном результате вычислений; никакой Microsoft ничего не изменит без патентованных предсказателей (вернее, без придания Excel'ю способностей предсказания).
Гипер-Excel, умеющий решать подобные проблемы, не будет нуждаться в нелепом биологическом придатке для давления кнопок
03.07.12 14:10 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cel
03.07.12 15:48 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
03.07.12 16:03 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя Cheechako
03.07.12 17:19 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
03.07.12 18:26 Ответ на сообщение Таблицы Google Docs и нелинейная математика пользователя Cheechako
04.07.12 09:02 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя KSergey
1. Операции с типов FLOAT (это то, что делал топикстартер и работает на обычных и variant типах Excel) - страдают проблемой перевода "туда-сюда-обратно" и неточностью операций сравнения. Это то, что здесь обсуждалось выше. Они везде страдают - это просто свойство таких чиселок.
Как бы, программисты - знают все. Не программисты, изучавшие информатику - вроде как тоже. информатику вроде как преподают уже как обязательный курс. ни понятно о чем стока копий.
2. Excel в частности (в пятом было точно, позднее - не знаю) имеет возможность выбора типа чисел в ячейках, там есть такой тип как Currency (кажется так), который представлялся (не знаю как сейчас) ДЕСЯТИЧНЫМИ числами и НЕ страдал от ошибок округлений или "приблизительным" сравнением. специально предназначен был для точных вычислений. в частности денежных. Там должон быть цельный раздел хелпа по этому поводу.
3. "Васик" завсегда имел вычисления в виде двоично-десятичного формата. щас - не так? о-о-о.
"Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин (а не на "вертикаль власти" надеяться)
04.07.12 14:48 Ответ на сообщение Re: Таблицы Google Docs и нелинейная математика пользователя tolstopuz
До сих пор непонятно? Именно о том, что "программисты - знают все", но ничего не сделали, чтоб это работало правильно в их инструменте во всех вариантах, а не специально подогнанных пользователем. Это всё равно, что прежде, чем крутить гайки ключом его нужно было подточить напильником. Если вы смотрели пример, то там формат ячеек именно числовой, но в логической операции на промежуточные значения ничто не влияет - ни выставление точности расчёта в настройках, не "как на экране". Это сродни, если бы вам приходилось каждый раз при переключении канала ТВ подстраивать его частоту, т.к. цифровая память тюнера не может помнить точно её аналоговое значение.
Если значения результатов промежуточной операции выводить в ячейки с заданной точностью 12-15 знаков после запятой (в настройках соответственно настроить), то они будут одинаковы. Так какого рожна эта точно не прменяется, если результаты не пишутся в ячейку? Вот именно про такие косяки программеров и споры. Большинству (из новых) просто не понять в силу ограниченности, что с прогой работаю обычные люди, а не программисты. Курирую один софт - мозоли можно заработать написанием баг-репортов. За 4 года они не исправили все понаписанные ошибки, которые отсутствовали в его ДОС-версии Пример из известного: если в ДОСе никак нельзя было повлиять на стандартное английское сообщение про "any key", то тут они тупо переводят как "любую кнопку", а это дополнительные 80-100 звонков за год, а можно было просто написать "пробел" или "ESC", чтоб не пудрить мозги. Так ведь ещё и упираются.