Блог Ильи Бирмана РСС

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

26 заметок с тегом

математика РСС

21 мая 2009, 10:35

Математика в дизайне Избранное

Некоторые видели, что происходит, если на Маке ввести неправильный пароль для входа в систему. Вместо того, чтобы показывать модальное окно с кнопкой OK, он просто немножко подёргивает окошко влево-вправо, как будто вертит головой. Кроме того, что это весело, это ещё и не заставляет пользователя нажимать кнопку ОК.

Задача: сделать такую же штуку в E2 (проверить пароль, не перезагружая страницу, не проблема; мы займёмся только анимацией).

Многие дизайнеры и даже программисты настолько плохо дружат с физикой и математикой, что когда нужно добавить элементу массы (т. е. инерции) или реализовать правдоподобное подёргивание окна, они не в состоянии ничего придумать. Это печально. Мне понадобилась минута, чтобы придумать формулу, ещё 5 — чтобы сделать рабочий скрипт, а потом ещё 5, чтобы подобрать удачные коэффициенты.

Для начала пойдём в Гугль и спросим у него, где можно в онлайне построить график функции. Интернет — великая вещь: первая же ссылка приведёт нас на подходящий сайт. Отличное место, чтобы придумать формулу зависимости горизонтальной координаты окна от времени.

Колебания естественно ассоциируются с синусом, но нам нужно, чтобы они постепенно затухали. Первое, что пришло мне в голову — домножить синусоиду на гиперболу: (1 / x) × sin x.

Синусоида, умноженная на гиперболу

Конечно, головой мы качаем совсем не так, зато так получится приятная пружинистость.

Предел sin x / x в нуле равен единице, что, конечно, лучше, чем бесконечность но всё-таки хочется, чтобы в точке 0 значение было нулевым, иначе в начале окно вдруг окажется на сто (например) пикселей правее, чем было до начала анимации. Нам нужно, чтобы гипербола в нуле получила конечное значение, тогда домножение на sin 0, равный нулю, даст ноль. Сдвинем гиперболу чуть левее, чтобы её точка разрыва уехала в неинтересующую нас отрицательную область: [1 / (x + 1)] × sin x.

Поскольку гипербола при увеличении x стремится к нулю, но никогда не достигает его, наши колебания, несмотря на затухание, будут продолжаться бесконечно. Можно, конечно, остановить их, когда они станут меньше пикселя, но намного проще чуть-чуть опустить гиперболу, чтобы она всё же достигла нуля через некоторое время: [1 / (x + 1) − 0,01] × sin x.

Чтобы было понятнее, взглянем на саму гиперболу, без синуса (1 / (x + 1) − 0,01):

Гипербола, сдвинутая так, чтобы пересекать оси

Сдвиги на 1 левее и на 0,01 ниже взяты от балды; после того, как скрипт уже написан, можно заниматься повышением реалистичности путём изменения этих чисел и примешивания всяческих коэффициентов.

Итоговая формула, с учётом перерисовки каждую 0,01 с, у меня получилась вот такая: [1 / (x1,25 / 20 + 0,5) − 0,05] × sin (x / 2) × 25.


Возведение в степень 1,25 понадобилось, чтобы слегка выгнуть гиперболу, которая затухает слишком стремительно (можно было просто сдвинуть её ещё левее, но так мне больше понравилось).

Дизайнер, который не знает математики, в два раза хуже дизайнера, который её знает. Естественно, на место математики тут можно поставить любой другой предмет — литературу, историю, русский язык, английский язык, биологию, географию, программирование, физику, химию. Кстати, большую половину из перечисленных предметов я знаю крайне плохо.

Будет классно, если читатели поделятся своими примерами того, как знание того или иного предмета помогло им сделать лучший дизайн.

10 февраля 2009, 19:33

Э литл бит оф комплексити

У меня вопрос. Вот формула умножения комплексных чисел с известными модулем и аргументом:

Формула умножения комплексных чисел с известными модулем и аргументом

Очевидно ли вам, что из неё следует формула возведения комплексного числа в целую положительную степень?

Формула возведения комплексного числа в целую положительную степень

Если да, как бы вы объяснили этот переход тому, кто сомневается в его правомерности? Если нет, что заставляет вас сомневаться в возможности такого перехода?

Спасибо.

5 декабря 2008, 16:40

Доказательство теоремы Пифагора

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

У Тафти в Envisioning Information (с. 84) приведено совершенно блестящее доказательство, отходящее от классической математической нотации в сторону внятной информационной графики:

Доказательство теоремы Пифагора

Автору не потребовалось ни называть точки, ни комментировать построения, ни нумеровать формулы и рисунки.

Если кто-то может привести другие примеры красивых доказательств чего бы то ни было, приводите.

22 января 2008, 2:04

Необходимый признак

Меня ещё раздражает терминология «необходимый признак» и «достаточный признак». Это придумал какой-то умник-заумник, который хотел, чтобы математика казалась очень сложной штукой, постижимой только теми, у кого есть борода (т. н. консилиумом бородатых дядек). Из этой же когорты (или плеяды) был человек, придумавший понятие конгруэнтности.

У нас в школе это называлось «свойство» и «признак». Свойство — это то, что свойственно объекту, а признак — это то, по чему его можно признать. Термин «необходимый признак» идиотичен хотя бы потому, что признать, например, ряд сходящимся, используя необходимый признак — нельзя. То есть необходимый признак не является признаком вовсе. Это делает его чем-то вроде телефонной трубки, отбойного молотка и стола справок.

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

Например, «необходимый признак» равенства треугольников — это попарное равенство углов. Но это необходимый, но не достаточный признак! То есть признать треугольники равными ещё нельзя. То есть — бессмысленная информация.

Эта же информация приобретает смысл при формулировании её нормальным образом, например:
Свойство равных треугольников. У равных треугольников попарно равны все углы.
Теперь, решая какую-то задачу, и дойдя до того, что какие-то треугольники равны, мы сможем сделать выводы о равенстве углов. Или:
Признак неравенства треугольников. Треугольники не равны, если не равны попарно все их углы.
Теперь мы знаем, что если у треугольников попарно не равны все углы, то треугольники не могут быть равны.

Нет, это не та заметка, предисловием к которой была предыдущая.

18 января 2008, 2:55

О теоремах, данных без доказательств Избранное

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

Однажды для меня стало большим откровением, что в обычных школах некоторые теоремы и формулы давались без доказательства. То есть, людям просто говорили, что есть теорема Фалеса, а есть — формула Герона. А потом сразу давали задачи, которые можно было решить с их использованием. Это для меня было абсолютным разрывом мозга. Это не укладывалось в голове. Я совершенно не мог понять, какой смысл в том, чтобы проходить формулу, не выводя её — это же тогда просто бессмысленный набор букв и знаков. Ну или максимум «занимательный факт»: британские учёные выяснили, что.

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

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

Экзамены по математике в университете я сдавал на 4, 4, 4 и 5 (в четвёртом семестре была теория функции комплексного переменного, которую я обожаю).

Каждый раз, когда я сдавал листочек с ответами Олегу Геннадьевичу, напротив большинства пунктов задания он ставил минус. Потом, когда он вызывал меня отвечать, он спрашивал: почему не решили эту задачу? Я говорил: забыл формулу такую-то и откуда она берётся. Он говорил: ну, а если бы знали формулу, что бы делали? Я отвечал: нашёл бы то-то, подставил бы в формулу, выразил бы это через это и получил бы ответ. Он подсказывал: ну, вот если вы возьмёте то-то, представите это как сумму этого и этого, а потом домножите на то-то, то вы увидите, как вывести формулу. Я садился, выводил формулу, и он ставил мне плюсик, не дожидаясь, пока я решу собственно задачу. Потом мы переходили к следующему пункту... Почему, спрашивал он, не доказали теорему? Я говорил: я знаю, что при соблюдении таких-то условий она вытекает из того-то через то-то и то-то, но совершенно не помню, как от вот этой формулы делается переход дальше. Он говорил: ну дак дальше из того-то следует, что так-то и так-то... А! перебивал его я, ну точно же, и тогда мы сможем заменить это на это, и там то-то то-то сократится и останется как раз то, что нам нужно!

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

Теорема и её доказательство, формула и её вывод, данные в неразрывной связке, воспитывают навык видеть во всём здравый смысл. Не обязательно знать это всё наизусть, чтобы сформировать правильное отношение к математике. Важно, что математика существовала бы, даже если бы не было Пифагора и Фалеса, Эйлера и Коши, Остроградского и Гаусса. Всё работает так, как работает, с неизбежностью, а не потому, что кто-то так придумал.

Когда люди учат в школе теоремы без доказательств, они потом твердят, что факториал нуля равен 1 по определению. Знающие же то, что математика существует независимо от того, что написано в определениях, понимают, что факториал нуля равен 1 объективно, и он оставался бы равен 1, даже если бы об этом никто не написал в определении.

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

Всё это, кстати, предисловие к следующей заметке, которую я напишу тогда и только тогда, когда мне хватит на это терпения.

26 ноября 2006, 3:59

Математика и здравый смысл

Человек под псевдонимом Polymath когда-то давно написал целую серию заметок про то, что 0,(9)=1. Потом и я тоже написал кое-что на эту тему.

Через некоторое время после моей заметки про то, что 00=1, он тоже писал на эту тему (естественно, он думает так же, ибо это так и есть).

А в последней своей заметке он пишет про связь математики и здравого смысла.

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

10 сентября 2006, 10:31

Про вероятность

Как мы уже знаем, есть две интересных категории граждан:Не менее интересную категорию составляют те, кто не понимает, что:
  • событие, вероятность которого равна 1, в общем случае не является достоверным (то есть, может и не произойти);
  • событие, вероятность которого равна 0, в общем случае не является невозможным (то есть, может и произойти).
Чтобы как-то связать это с предыдущими двумя категориями, скажу, что, например, предел функции xy в точке 0, если мы не знаем с какой стороны точка (x; y) движется к нулю, равен единице с вероятностью 1. Некоторые могут сказать, что эта вероятность равна 0,(9), а не 1. Но мы-то знаем, что это одно и то же.

15 июля 2006, 13:29

Бесконечные периодические дроби Избранное

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

Поделим 237 на 5. Нет, не нужно запускать «Калькулятор». Давайте лучше вспомним среднюю (или даже начальную?) школу и просто поделим столбиком:

Делим 237 на 5 столбиком

Ну как, вспомнили? Тогда можно и к делу переходить.

Понятие «дробь» в математике имеет два значения:
  1. Нецелое число.
  2. Форма записи нецелого числа.
Существует два вида дробей — в смысле, две формы записи нецелых чисел:
  1. Простые (или вертикальные) дроби, вроде 1/2 или 237/5.
  2. Десятичные дроби, например, 0,5 или 47,4.
Заметим, что вообще само использование дроби-записи не означает, что записанное есть дробь-число, например 3/3 или 7,0 — не дроби в первом смысле слова, но во втором, конечно, дроби.
В математике, вообще искони принят счёт десятичный, а потому и десятичные дроби удобнее простых, т. е. дробь с десятичным знаменателем (Владимир Даль. Толковый словарь живого великорусского языка. «Десять»).
А раз так, то хочется всякую дробь вертикальную сделать десятичной («горизонтальной»). А для этого нужно просто-напросто числитель поделить на знаменатель. Возьмём, например, дробь 1/3 и попробуем сделать из неё десятичную.

Делим 1 на 3 столбиком

Даже совсем необразованный заметит: сколько ни дели — не разделится: так и будут тройки до бесконечности появляться. Так и запишем: 0,33... Имеем в виду при этом «число, которое получается, когда делишь 1 на 3», или, короче, «одна третья». Естественно, что одна третья — дробь в первом смысле слова, а «1/3» и «0,33...» — дроби во втором смысле слова, то есть формы записи числа, которое находится на числовой прямой на таком расстоянии от нуля, что если трижды его отложить, получится единица.

Теперь попробуем разделить 5 на 6:

Делим 5 на 6 столбиком

Снова запишем: 0,833... Имеем в виду «число, которое получается, когда делишь 5 на 6», или, короче, «пять шестых». Однако, тут возникает путаница: имеется ли в виду 0,83333 (и дальше тройки повторяются), или же 0,833833 (и дальше 833 повторяется). Поэтому запись с многоточием нас не устраивает: непонятно, откуда начинается повтряющаяся часть (она называется «период»). Поэтому период мы будем брать в скобки, вот так: 0,(3); 0,8(3).

0,(3) не просто равно одной третьей, это есть одна третья, ведь мы специально эту запись придумали, чтобы представлять это число в виде десятичной дроби.

Эта запись и называется бесконечной периодической дробью, или просто периодической дробью.

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

Делим 3 на 7 столбиком

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

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

Умножаем 3 на 0,(3) столбиком

И снова мы замечаем, что всё время будут после запятой появляться девятки, девятки и девятки. То есть, используя, обратно, скобочную запись, мы получим 0,(9). Поскольку мы знаем, что произведение одной трети и трёх есть единица, то 0,(9) — это такая вот причудливая форма записи единицы. Однако использовать такую форму записи нецелесообразно, ведь единица прекрасно записывается и без использования периода, вот так: 1.

Как видим, 0,(9) — это один из тех случаев, когда целое число записано в форме дроби, вроде 3/3 или 7,0. То есть, 0,(9) — это дробь лишь во втором смысле слова, но никак не в первом.

Вот так, безо всяких пределов и рядов мы разобрались с тем, что такое 0,(9) и как с ним бороться.

Но всё же вспомним о том, что на самом-то деле мы умные и изучали анализ. Действительно, трудно отрицать, что:

0,(9), представленное в виде суммы бесконечного ряда

Но, пожалуй, никто не будет спорить и с тем, что:

0,(9), представленное в виде удвоенного синуса 30 градусов

Или:

0,(9), представленное в виде натурального логарифма числа Эйлера

Всё это, конечно, верно. Действительно, 0,(9) является и суммой приведённого ряда, и удвоенным синусом указанного угла, и натуральным логарифмом числа Эйлера.

Но ни то, ни другое, ни третье не является определением.

Утверждать, что 0,(9) — сумма бесконечного ряда 9/(10n), при n от единицы, — это всё равно, что утверждать, что синус — это сумма бесконечного ряда Тейлора:

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

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

Дак вот, периодическая дробь — это всего навсего десятичная дробь, которая получается, когда при делении столбиком один и тот же набор цифр повторется. Анализа тут нет и в помине.

И вот тут-то возникает вопрос: откуда вообще мы взяли число 0,(9)? Что на что мы делим столбиком, чтобы его получить? Действительно, нет таких чисел, при делении которых друг на друга столбиком мы бы имели бесконечно появляющиеся девятки. Но нам же удалось получить это число, умножая столбиком 0,(3) на 3? Не совсем. Ведь умножать нужно справа налево, чтобы корректно учитывать переносы разрядов, а мы это делали слева направо, хитро воспользовавшись тем, что переносов нигде всё равно не возникает. Поэтому правомерность записи 0,(9) зависит от того, признаём ли мы правомерность такого умножения столбиком или нет.

Следовательно, можно вообще сказать, что запись 0,(9) некорректна — и в определённой степени быть правым. Однако, поскольку нотация a,(b) принята, то просто некрасиво отказываться от неё при b = 9; лучше определиться с тем, что такая запись означает. Так что, если мы вообще принимаем запись 0,(9), то эта запись, конечно, означает число один.

Осталось лишь добавить, что если бы мы использовали, скажем, троичную систему счисления, то при делении столбиком единицы (13) на тройку (103) получилось бы 0,13 (читается «ноль целых одна третья»), а при делении единицы на двойку получилось бы 0,(1)3.

Так что периодичность дроби-записи — это не объективная какая-то характеристика дроби-числа, а всего лишь побочный эффект использования той или иной системы счисления.

10 июля 2006, 10:48

0,(9) = 1 Избранное

Удивительно, что люди не понимают, что 0,(9) = 1, и знак равенства здесь используется в буквальном смысле.

Вчера Дмитрий Кирсанов прислал мне ссылку на подробное объяснение того, почему 0,(9) = 1 (на английском языке; автор развивает тему также в нескольких последующих заметках).

Развлекло меня в этой статье в первую очередь то, что когда я объяснял этот факт одному человеку где-то полгода назад, я использовал все те же самые доводы, причём в том же порядке. Ещё недавно я оставлял на эту тему комментарий у Реймонда Чена.

Насколько я вижу проблему, многие люди просто концептуально не понимают, как что-то может не стремиться, а «быть равным» бесконечности. Они говорят, что «0,(9) стремится, но не равно 1».

Но 0,(9) — это не последовательность и не функция, а число. Число не может никуда стремиться, оно стоит себе на месте на числовой прямой и не дёргается.

Действительно, последовательность 0,9; 0,99; 0,999; и т. д., при стремлении количества девяток к бесконечности, будет стремиться к единице. Но когда девяток станет ровно бесконечное количество — а именно это выражает запись 0,(9), — тогда это число станет ровно единицей.

Запись 0,(9) означает не то, что девяток в числе становится «всё больше и больше», а то, что их есть бесконечное количество прямо сейчас.

Естественно, что это то же самое число, что и 1.

Update: Продолжение темы.
Страницы     ←  предыдущая     Ctrl     следующая  →
1 2 3