Pull to refresh
  • by relevance
  • by date
  • by rating

У калькулятора Google проблемы с арифметикой

Mathematics *
Во встроенном калькуляторе на Google.com обнаружились проблемы с простейшими математическими вычислениями. Ошибки имеют необъяснимую природу, они действительно странные и проявляются только на очень больших числах. Например, если из 500 000 000 000 002 вычесть 500 000 000 000 001, то результат должен быть 1, но Google показывает ноль.



Опытном путём удалось установить, что проблемы именно с этой операцией у калькулятора начинаются после 333 трлн. То есть на 333 трлн ещё всё нормально, а вот на 334 трлн при вычитании уже показывается неправильный результат.

Есть и другие странности. Например, если чуть подкорерктировать вышеприведённый пример, и из 500 000 000 000 008 вычесть 500 000 000 000 003, то результат правильный: это 5.
Читать дальше →
Total votes 158: ↑113.5 and ↓44.5 +69
Views 1.4K
Comments 121

Математический язык для операций с бесконечностью

Popular science
47-летний профессор Нижегородского государственного университета имени Н.И.Лобачевского, доктор физико-математических наук Ярослав Сергеев получил международную премию Пифагора, которая считается одной из самых престижных наград в области математики.

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

В основе конструкции Сергеева лежит гросс-единица (grossone). Гросс-единица — это бесконечное число, равное по определению количеству элементов в множестве N натуральных чисел. Обозначается символом . Таким образом, множество натуральных чисел можно расширить так.


Читать дальше →
Total votes 22: ↑14 and ↓8 +6
Views 589
Comments 20

Что нужно знать про арифметику с плавающей запятой

C++ *
Sandbox


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Total votes 245: ↑242 and ↓3 +239
Views 671K
Comments 75

Как сделать из 123456789 число 100 или 0

Algorithms *
В «Занимательной арифметике» известного популяризатора наук Якова Исидоровича Перельмана в конце первой главы я нашел пример следующих «Арифметических курьезов»:

100 = 1+2+3+4+5+6+7+8*9
100 = 12+3-4+5+67+8+9
100 = 12-3-4+5-6+7+89
100 = 123+4-5+67-89
100 = 123-45-67+89

Первое из этих решений я нашел еще в начальной школе на олимпиаде по математике, и теперь подумав, что, может быть, та победа повлияла на мое будущее становление, я решил воздать должное этой задаче и найти все возможные решения, написав соответствующий скрипт на Python.
Читать дальше →
Total votes 184: ↑169 and ↓15 +154
Views 117K
Comments 113

Откуда берутся NaNы?

C++ *
Пользователь yruslan опубликовал хорошую статью про арифметику с плавающей запятой: «Что нужно знать про арифметику с плавающей запятой».

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

Возможно, я сейчас буду рассказывать прописные истины, но вызывает удивление частота, с которой люди забывают, что числа которые описывает стандарт IEEE754 это не то же самое, что вещественные числа.
Читать дальше →
Total votes 79: ↑77 and ↓2 +75
Views 3.2K
Comments 22

Как помочь ребенку выучить таблицу умножения

Lumber room
image

Недавно мне задали этот вопрос, и после моего рассказа как я научил таблице умножения одного моего знакомого мальчика, оказалось, что по этим советам еще один ученик довольно быстро выучил таблицу умножения без монотонного заучивания. Поэтому я подумал, что будет полезным рассказать и вам эти простые приемы, вдруг перед вами тоже встанет такая задача, например, при обучении своего ребенка.

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

Описанные приемы довольно просты, и, строго говоря, давно известны. Запоминание в моем рассказе происходит тоже через частые повторения примеров, но все они – лишь разные события одной игры в которой этим перемножения оживают. Я обобщил известные мне приемы и составил для своего ученика такое расписание, чтобы чуть более сложное чередовалось с простым. Ввиду занятности такого обучения, одновременно с запоминанием таблицы ребенок узнает и другие интересные вещи из мира арифметики и вообще математики: о простых числах, признаке деления на 3, степенях двойки и так далее.

Также косвенно в рассказе упоминаются и некоторые способы мотивации. Само наше обучение, как станет ясно из повествования, представляло собой игру. Уверен, в комментариях вы сможете дополнить мою историю своими интересными идеями и методами, о которых я не знал, что поможет сделать рассказ более полным для того, кто натолкнется на него в поисках ответа на вопрос заголовка статьи.
Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Views 1.4K
Comments 13

Мгновенное умножение

Lumber room
Некоторые приемы сокращенных вычислений знать очень полезно. Кроме того, эти приемы часто любопытны и сами по себе. Поэтому считаю не лишним познакомить с ними и читателей Хабра.

итак…
Читать дальше →
Total votes 105: ↑70 and ↓35 +35
Views 17K
Comments 24

Вычисления с фиксированной точкой. Основные принципы (ч.1)

Programming *
Sandbox

Введение или зачем этот топик


Читая Хабрахабр, я натолкнулся на два топика, «выводящие на чистую воду» вычисления с плавающей запятой.
В одном из них достаточно подробно и качественно дана выжимка из стандарта IEEE754 и основные проблемы при вычислениях с плавающей запятой, другой — короткий топик-заметка про то, что не все так хорошо при вычислениях на ПК. При этом даются рекомендации в случае, когда важна математическая точность результата, использовать целочисленные вычисления, «фиксировать запятую» или как минимум проверять результаты, выдаваемые платформой (компилятор + процессор).
Несмотря на то, что советы дельные, понять, как использовать целочисленные вычисления там, где до этого была плавающая запятая, не так просто, особенно без математической подготовки. Достаточно занимательна в этом смысле попытка одного из «хабровчан» разобраться с фиксированной точкой методом экспериментов.
Данный топик — краткое введение, которое должно дать представление о вычислениях с фиксированной точкой. Математика в данной статье не должна никого напугать — все очень примитивно. Сразу прошу простить: среди моих знакомых устоявшимся выражением является именно «фиксированная точка» (от англ., fixed-point), а не «запятая», поэтому я буду придерживаться именно этого термина.
Читать дальше →
Total votes 71: ↑71 and ↓0 +71
Views 72K
Comments 25

Ошибки вычислений в окрестностях машинного нуля

Programming *
Sandbox
Периодически на хабре возникают замечательные статьи о тонкостях арифметики с плавающей точкой. Собственно, упомянутая публикация стала одним из первых источников, прочитанных при попытках разобраться с проблемой. Яснее от этого сразу не стало, но тем не менее, организация нейронных связей как-то упорядочилась. Ближе к делу.

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

Читать дальше →
Total votes 44: ↑39 and ↓5 +34
Views 4.2K
Comments 39

Переводим числа между двоичной и десятичной системами «на лету», объяснение «на пальцах»

Programming *
Sandbox
Здравствуйте, Хабровцы.
Пост можно было бы назвать: «Для любителей посчитать на пальцах», но это мы узнаем дальше.

Вступление: А что-же тянуть. Все что будет дальше, пойдет на тему подсчета в двоичной системе на пальцах. Кто еще не знает, постараюсь обьяснить, что это, как и зачем это осваивать.
Начну, пожалуй, с преимуществ:
1. Удобно переводить любое число с десятичной в двоичную системы и наоборот, не используя калькулятор.
2. Развивается моторика пальцев.
3. Развивается визуальное восприятие двоичных чисел.
Минусы:
1. Немного тренировки.
2. Нельзя в публичных местах показывать числа 26,27,352,378 и 891.
Читать дальше →
Total votes 68: ↑42 and ↓26 +16
Views 68K
Comments 16

Drag-the-Digit для iPad. Как мы учились считать в уме или Наше первое приложение

Self Promo
«Первый проект… Он самый любимый!»


Привет, дорогие читатели хабра!

Предисловие.

Мы очень не хотим, чтобы наш труд пропадал зря. Мы считаем, что проект будет полезен довольно большому числу пользователей. Именно поэтому мы делаем его абсолютно бесплатным и без рекламы. Тем не менее, планируем продолжать его поддержку, доработку и развитие.


Читать дальше →
Total votes 39: ↑26 and ↓13 +13
Views 12K
Comments 39

Загадка элементарной арифметики

Mathematics *
Sandbox
Математика — царица всех наук,
арифметика — царица математики.
К.Ф.Гаусс

Как связаны между собой четыре арифметических действия? Вы будете смеяться, но отсутствие всестороннего ответа на этот вопрос существенно замедляет развитие физики, химии и связанных с ними наук. Ученые, к сожалению, могут только догадываться об этом торможении. Если бы этот вопрос был своевременно исследован, у нас не возникло бы проблем с развитием идей Д.И. Менделеева, а по результатам работы адронного коллайдера, вероятнее всего, создавались бы компьютерные модели элементарных частиц и ядер атомов.
Читать дальше →
Total votes 58: ↑21 and ↓37 -16
Views 20K
Comments 29

Почему нельзя делить на ноль, даже если очень хочется?

Mathematics *
Tutorial
Недавно на Хабре появилась удивительная статья «Папа, а почему на ноль делить нельзя?», которая собрала массу не менее удивительных комментариев.

Детские вопросы обычно очень сложны («Почему небо ночью темное?», «Почему яблоки падают на землю?») и у взрослых обычно не хватает времени, чтобы их доходчиво объяснить. Да и не всегда взрослые знают ответ на эти вопросы.

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

image

Самые серьезные сомнения появляются, я думаю, после изучения рациональных чисел, когда для любого числа x, кроме нуля, вводится понятие обратного числа 1/x, и графика гиперболы y(x)=1/x.

Очевидно, что при делении 1 на очень маленькие числа появляются очень большие числа, и чем меньше мы берем x, тем больше становится 1/x. Почему же мы не можем сказать, что 1/x=∞ — есть некоторое число?

Алгебраическое возражение против этого состоит в следующем. Предположим, что ∞=1/x является числом. Тогда на это число должны распространяться все правила, которые имеют место быть для обычных чисел. В частности, с одной стороны должно быть верно соотношение 0⋅∞=1, а с другой стороны поскольку 0=1−1 должно быть выполнено 0⋅∞=1⋅∞−1⋅∞=0. Таким образом, имеем 1=0, а из этого уже следует, что все числа равны между собой и равны нулю. В самом деле, поскольку для любого числа x верно 1⋅x=x, то 1⋅x=0⋅x=0.

«Ну разве это не полная чушь?» — спросим себя, добравшись до этого места.

Разумеется, это полная чушь, если мы говорим об обычных числах. Но я недаром подчеркнул выше слово «правила». К ним мы вернемся чуть позже, после рассмотрения арифметического возражения против деления на ноль, и поможет нам в этом фасоль.

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

Для этого берем чашу с фасолью, символизирующую натуральный ряд, и высыпаем из нее какое-то количество зерен на разлинованный лист бумаги:

image

Тем самым, мы установили делимое на нашем бобовом калькуляторе.

Читать дальше →
Total votes 97: ↑81 and ↓16 +65
Views 100K
Comments 96

Приближенное сравнение чисел в Haskell

Programming *Haskell *Mathematics *
Наверное, все знают, что при вычислениях с ограниченной точностью два математически эквивалентных выражения могут оказаться не равны друг другу. Например, следующее очевидное математическое равенство при вычислении в Haskell неожиданно оказывается ложным:

ghci> 3 * sqrt(24 ^ 2 + 16 ^ 2) == sqrt(72 ^ 2 + 48 ^ 2)
False


Причина такого нарушения в том, что выражения в этом равенстве вычисляются лишь приближенно:

ghci> 3 * sqrt(24 ^ 2 + 16 ^ 2)
86.53323061113574
ghci> sqrt(72 ^ 2 + 48 ^ 2)
86.53323061113575
ghci> sqrt(72 ^ 2 + 48 ^ 2) - 3 * sqrt(24 ^ 2 + 16 ^ 2)
1.4210854715202004e-14


Различие здесь только в последнем (четырнадцатом!) знаке после запятой, но этого уже достаточно, чтобы сравнение оказалось ложным.

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

Возникает вопрос: как проще всего описать проверку приблизительного равенства двух чисел, полученных в результате вычислений с ограниченной точностью? Для решения этой задачи в Haskell достаточно определить еще один оператор сравнения (скажем, ~=), который используется так же, как и обычный оператор равенства. Предлагаю рассмотреть реализацию такого оператора, которую можно оформить в виде достаточно простого модуля Circa.

Читать дальше →
Total votes 20: ↑15 and ↓5 +10
Views 6.9K
Comments 15

Оракул от арифметики

Mathematics *
Translation

В свои 28 лет Петер Шольце раскрывает глубинные связи между теорией чисел и геометрией




В 2010 году по сообществу людей, изучающих теорию чисел, прошёл поразительный слух – и дошёл до Джареда Вайнштейна [Jared Weinstein]. Якобы какой-то аспирант из Боннского университета в Германии опубликовал работу, в которой 288-страничное доказательство теоремы из теории чисел ужато всего до 37 страниц. 22-летний студент Петер Шольце нашёл способ обойти одну из самых сложных частей доказательства, сопоставив теорию чисел и геометрию.

«Просто невероятно, что такой молодой человек смог сделать нечто настолько революционное,- говорит Вайнштейн, 34-летний специалист по теории чисел из Бостонского университета. – Это несомненный повод для уважения».

Математики из Боннского университета, присвоившие Шольце звание профессора всего два года спустя, уже знали о его экстраординарных умственных способностях. После публикации работы его начали замечать эксперты и по теории чисел, и по геометрии.

С того момента Шольце, которому сейчас 28, дорос до высокого положения уже в более широком математическом сообществе. Его называют "одним из самых влиятельных математиков мира", и "редким талантом, появляющимся раз в несколько десятилетий". О нём говорят, как о фаворите среди претендентов на Филдсовскую премию, одну из высочайших наград для математика.

Ключевому нововведению Шольце – классу фрактальных структур, названных им перфектоидными пространствами – исполнилось всего несколько лет, но оно уже ведёт к далеко идущим последствиям в области арифметической геометрии, в которой сливаются теория чисел и геометрия. Вайнштейн говорит, что работа Шольце была провидческой. «Он смог увидеть последствия до того, как те начали происходить».
Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Views 33K
Comments 103

Видеозаписи лучших докладов .NET-конференции DotNext 2016 Piter

JUG Ru Group corporate blog .NET *


Пока подготовка к московскому DotNext идёт полным ходом, мы открыли доступ к видеозаписям докладов с прошедшей летом конференции. По ссылке — полный плейлист, а под катом — топ-5 докладов по отзывам участников. Говоря «топ», мы не имеем в виду наши любимые доклады или выбор каких-то «экспертов» — лучшие отобраны на основе взвешенной оценки от 80% участников конференции. Как думаете, чьё выступление зрители оценили выше — перфоманс-эксперта Саши Гольдштейна или харизматичного Дино Эспозито?
Читать дальше →
Total votes 34: ↑34 and ↓0 +34
Views 13K
Comments 10

Это очень просто

Sport programming *Entertaining tasks

Рассмотрим следующую задачу. Найти период дроби 1/81. Уверяю, что для решения не потребуется ни калькулятор, ни деление столбиком. Для начала вспомним чему равно 81*(Период). Пусть длина периода n, тогда исходная дробь запишется как:


$\frac{1}p=\frac{Период}{10^n}+\frac{Период}{10^{2n}}+\frac{Период}{10^{3n}}+...$


Перепишем данное представление в следующем виде:


$\frac{1}p=\frac{Период}{10^n}+\frac{1}{10^n} \cdot\left(\frac{Период}{10^{n}}+\frac{Период}{10^{2n}}+..\right) $


Последнее выражение можно представить так:


$\frac{1}p=\frac{Период}{10^n}+\frac{1}{10^n} \cdot\frac{1}p$


Ну а теперь то соотношение, которое мы искали:


$p\cdotПериод=10^n-1$


Для нашего случая это тождество будет следующим:


$81 \cdotПериод=10^n-1$


Разделим левую и правую часть на 9, получим:


$9 \cdotПериод=111...111$

Читать дальше →
Total votes 32: ↑24 and ↓8 +16
Views 16K
Comments 9

За последние десять веков продолжительность жизни слегка выросла

Crowdsourcing Infographics
Неоднократно натыкался на упоминание того факта, что мол раньше люди жили до 30 лет, рожали много-много детей, но почти все они умирали.
Как это могло происходить одновременно — непонятно, казалось бы чтоб родить и выкормить дюжину детей нужно довольно много времени, кормящая мать обычно не беременеет, биологически люди за тысячу лет сильно изменится не могли, но об арифметике мало кто задумывается.
Людям вообще свойственно верить в противоречащие самим себе утверждения, видимо в этом есть какой-то эволюционный смысл.
Решил проверить, правда ли всё было так плохо.
Оказалось, не совсем.

Для проверки залез в википедию, точнее на викидату. Там нашлось больше миллиона упоминаний людей с известными датами рождения и смерти. Зная их нетрудно вычислить возраст. Ошибок, конечно, хватает, на то она и вики, но общий тренд похож на правду.

image
Читать дальше →
Total votes 31: ↑14 and ↓17 -3
Views 8.3K
Comments 68

Красота чисел. Как быстро вычислять в уме

Popular science

Старинная запись на квитанции в уплате подати («ясака»). Она означает сумму 1232 руб. 24 коп. Иллюстрация из книги: Яков Перельман «Занимательная арифметика»

Ещё Ричард Фейнман в книге «Вы конечно шутите, мистер Фейнман!» поведал несколько приёмов устного счёта. Хотя это очень простые трюки, они не всегда входят в школьную программу.
Читать дальше →
Total votes 30: ↑26 and ↓4 +22
Views 49K
Comments 27

Медовая арифметика: сложение и вычитание в исполнении пчел

ua-hosting.company corporate blog Mathematics *Popular science Biotechnologies


Больше не всегда значит лучше. Этой фразой можно четко описать соотношение умственных способностей существа с размером его мозга. Рекордсменом в мире животных является кашалот, чей мозг весит порядка 9 кг. Среди сухопутных существ этот титул заслужил индийский слон с 5 кг мозгов в своем распоряжении. Мозг страуса меньше его глазного яблока и весит 26 грамм. А вот мозг одного из самых интеллектуальных видов пернатых — серых попугаев — весит примерно 118 грамм, то есть около 22 % от общего веса тела. У человека же мозг в среднем весит 1.3 кг, при этом именно человек является венцом эволюции. Эти цифры наглядно демонстрируют, что дело не в количестве, а в качестве, так сказать.

Но что, если мозг существа весит всего лишь около 0.065 грамм и состоит из 950 000 нейронов (для сравнения, у человека их порядка 100 миллиардов)? Сможет ли такое существо показать интеллектуальные способности, способные удивить ученых? Еще как сможет, и этим существом является медоносная пчела, которая дружит с арифметикой. Сегодня мы с вами ознакомимся с исследованием математических способностей пчел, открывающее новые сведения для понимания их индивидуального, а не коллективного интеллекта. Помимо этого ученые стали лучше понимать соотношения веса и структуры мозга с уровнем интеллекта. Как ученые заставили пчел считать без калькулятора, как хорошо справились пчелы с поставленной задачей, и что ученым удалось выяснить? Ответы найдем в докладе исследовательской группы. Поехали.
Total votes 35: ↑34 and ↓1 +33
Views 9.1K
Comments 35
1