29 сент. 2011 г.

Вспоминаем тригонометрию

Почти все задачи, которые мы решаем в течение жизни, не являются настоящими. В каком смысле? Сейчас поясню.

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

Вот какой, например, смысл, имеет задачка про получение натуральных чисел из трёх двоек? Да никакой пользы для народного хозяйства от такой задачки быть не может! А зачем она тогда нужна? Естественно, исключительно в учебных целях:
- сначала она работает как автобусные билетики (развитие быстрого счёта, памяти и так далее),
- потом кроме «тупой перебиралки» может подключиться мозг — вспомнив функции одного аргумента, найдёт способ получать произвольное количество натуральных чисел,
- далее можно уже решить исследовательскую задачу — попробовать получить все возможные натуральные числа (а потом можно попробовать ещё усилить задачу, что мы и сделаем в последнем абзаце этой заметки).

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

Если же в этот момент изучают тригонометрию, то тоже есть куда развернуться. В хороших школах учитель добивается не банального решения ограниченного набора типовых задачек, а понимания темы. Например, осваивая тригонометрию, не надо заучивать правила sin(-x)=-sin(x), не надо запоминать cos(0)=1 и так далее. А надо всего лишь разобраться с соответствием углов точкам единичной окружности, а тригонометрических функций точкам нескольких прямых. Если с этим разобраться, то все те «сложные для запоминания правила» станут простыми и естественными (и как будто сами «запомнятся»).

Но давайте на секундочку отойдём от игр с единичной окружностью, есть же ещё прямоугольный треугольник. В самом деле, слово тригонометрия образовано от двух греческих слов trigōnon «треугольник» + metron «измерять». В хороших школах кроме игр с единичной окружностью ещё обязательно играют с прямоугольным треугольником. Полезным бывает анализ функций arcsin(sin(x)), cos(arccos(x)), ctg(arctg(x)), cos(arctg(x)) и так далее. А для него стоит вспомнить определения тригонометрических функций острых углов: синусом/косинусом угла a называется отношение противолежащего/прилежащего катета к гипотенузе (в любом прямоугольном треугольнике, один из углов которого равен a).

Прямоугольный треугольникКак, например, понять, как устроена функция sin(arctg(x))? Достаточно знать всего две вещи: теорему Пифагора и определение тригонометрических функций через отношение сторон в прямоугольном треугольнике. Давайте рассмотрим треугольник со сторонами 1, sqrt(n), sqrt(n+1). Синус верхнего угла в нём равен 1/sqrt(n+1), а тангенс того же угла равен 1/sqrt(n). Соответственно, sin(arctg(1/sqrt(n))=1/sqrt(n+1). Получается, что этой парой функций можно наезжать на 1/sqrt(n) сколько угодно раз, как бы увеличивая n под корнем — sin(arctg(sin(arctg(1/sqrt(n))))=1/sqrt(n+2) и т.д.

Что нам это даёт? Для задачки с тремя двойками нам как раз нужно было научиться увеличивать натуральное число на единицу произвольное число раз. Тут мы получили не совсем тот результат, но у нас ещё и не все двойки потрачены :)

В качестве n мы можем взять 2/2, тогда у нас останется одна двойка, чтобы получить x из 1/sqrt(x).

Так как 0 и 1 мы получать умеем ((2-2)*2 и (2/2)^2, например), то давайте разберёмся со всеми остальными натуральными числами:
2 = sin(arctg(2/2))^-2,
3 = sin(arctg(sin(arctg(2/2))))^-2,
4 = sin(arctg(sin(arctg(sin(arctg(2/2))))))^-2,
и так далее.

Опять же, этот результат совершенно не имеет значения для народного хозяйства. Но при освоении тригонометрии научиться оперировать такими «крокодилами» очень даже полезно. Хотите ещё полезнее? Тогда давайте откажемся от двух двоек — оставим только одну. Итак, задачка Московской математической олимпиады 2010 года за 10 класс: Можно ли, применяя к числу 2 функции sin, cos, tg, ctg, arcsin, arccos, arctg, arcctg в любом количестве и в любом порядке, получить число 2010? (спасибо автору, вовремя показавшему ссылку на эту задачу). На странице 28 документа с решениями приведён разбор. Как обычно, я рекомендую открывать его только после самостоятельного решения задачи.

Хорошего дня!

22 сент. 2011 г.

Вспоминаем логарифмы

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

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

Получается, что надо пробовать применять разные действия к трём двойкам, проверяя, не получили ли мы новое натуральное число. Если получили, то запоминаем его себе в отдельную табличку. Как только у нас запасено несколько никем не названных натуральных чисел (т.е. мы готовы сделать один из нескольких ходов), стоит начать изучение других подходов к игре.

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

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

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

Тут, правда, проявляется забавное ограничение: в правилах чётко сказано, что надо предъявить полученное натуральное число, если хочется сделать ход. Поэтому, например, ход (222)! невозможен (так как в его записи почти 26 миллионов цифр, а такие длинные комментарии недопустимы на этом блоге). Но если говорить о строгой математической постановке, то, конечно, подход, например, с факториалами, полностью уничтожает аукцион.

Остаётся искусственно усложнить игру — научиться получать любое натуральное число (или понять, какие натуральные числа невозможно получить из трёх двоек). Ранее мы уже поняли, что если пользоваться только функциями от двух аргументов, то удастся получить натуральные числа из очень ограниченного набора. Это значит, что для получения произвольного натурального числа придётся применять произвольное число раз функции одного аргумента. А какие такие функции знает школьник? Перечислим их:
  • Факториал,
  • Квадратный корень,
  • sin, cos, tg, ctg,
  • arcsin, arccos, arctg, arcctg.
Давайте попробуем что-нибудь сконструировать из них. С факториалом ничего хорошего в голову не приходит (уж больно неудобная функция для точных действий), поэтому давайте разберёмся с квадратным корнем. Вот если мы N раз «наехали» квадратным корнем на 2, то какое число получится?
sqrt(sqrt(...(sqrt(2)...)) = 2^(1/(2^N)) (т.е. корень из двойки 2N степени).

Что можно сделать с таким числом? Сразу чешутся руки применить к нему функцию log. Только как это лучше сделать? Можно взять логарифм по этому дикому основанию от двойки. Напомню, что логарифм числа b по основанию a определяется как показатель степени, в которую надо возвести основание a, чтобы получить число b.

Логарифм по основанию корень из корня из корня...Другими словами, из двух двоек, логарифма и N операций корня мы можем накрутить уже достаточно интересную конструкцию. Сколько корней мы поместим в основание логарифма, такую степень двойки и получим. Удобно? Не то слово! Из двух двоек мы научились получать 2N (для произвольного натурального N).

Это уже очень хорошо. Но можно попробовать продвинуться дальше — попробовать вытащить из 2N само число N. У нас же ещё осталась одна двойка, а логарифмом мы пользоваться не разучились, верно? Поэтому давайте «наедем» на это число 2N функцией логарифм по основанию 2. Она как раз и вернёт нам N. Получается, что мы можем из трёх двоек, двух логарифмов и N квадратных корней получить произвольное натуральное число N.

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

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

12 сент. 2011 г.

Дорога в никуда

Добрый день.

Давайте зайдём издалека. Вот почему многие люди знают, что 404 является кодом ошибки «Не найдено» в стандарте HTTP? Можно, например, задать любой поисковой системе вопрос «site:bash.org.ru/quote 404», чтобы увидеть цитаты с этим числом («сдал куртку в гардероб и получил номерок 404», «я понимаю, когда отдел ИТ отказывается устанавливать сервер в кабинете № 404», «До чего интернет довел - раньше люди боялись числа 666, теперь вздрагивают при виде числа 404» и так далее).

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

Забавно бывает в статье какой-нибудь ленты.ру или газеты.ру обнаружить ссылку на более раннюю их же статью (наверное, с близким по духу сюжетом), которая уже недоступна. Ну что за идиоты таланты?! Зачем каждый год менять формат адресов статей? Из-за этого ломаются все старые страницы, а лучше не становится. Мне регулярно в комментариях к старым заметкам пишут, что такая-то ссылка больше не работает. И тогда приходится редактировать свой старый текст (иногда удаётся найти новый адрес того материала, на который стояла ссылка, но чаще убираю, потому что уже не могу вспомнить, на что именно ссылался несколько лет назад). И это бывало с разными ресурсами: с новостными сайтами, с блогами, с интернет-магазинами (год назад Proball был спонсором конкурса, а с тех пор я уже несколько раз правил ссылку на главный приз, потому что они её постоянно меняли — теперь оставил только ссылки на главную страницу магазина).

К чему приводит эта манера из здоровой работающей страницы с полезным кому-то текстом/изображением делать ответ «404. Страница не найдена»? К тому, что ссылаться на чей-то материал хочется всё меньше, а скопировать его себе — всё больше. Давайте возьмём первую попавшуюся (не особенно популярную) историю о корявом переводе, которую легко найти по запросу «Кулверстукас и Крокодилас Генас». Гугл знает пару тысяч мест, куда её растиражировали! И если бы я захотел этой историей с вами поделиться, то я бы тоже не стал ставить ссылку ни на один из этих двух тысяч сайтов, так как в любой момент любой из таких адресов может смениться (плавали — знаем), из-за чего окажется, что уже я направляю вас в никуда.

Как решать это создателям сайтов? Да всё давно придумано (и нормальные администраторы сайтов так и делают): кроме ответа 404 есть же ещё ответ 301 («перемещено туда-то»). Другими словами, если владельцу сайта вдруг загорелось сменить адреса вида /2011/sent/12/ на /11/09/12/, то нет никакой сложности в организации 301-перенаправления со старых адресов на новые. И тогда люди, когда-то давно сделавшие глупость добавившие себе эту страничку в «Избранное» или поставившие на неё ссылку со своего сайта/блога, не окажутся внезапно у сообщения «Вам здесь не рады».

Дорога в никуда — это не только ссылка, установленная на несуществующую страницу. Дорога в никуда — это безудержное тиражирование текстов, изображений, видео- и аудиороликов. Объём данных, доступных для скачивания в сети, в тысячи раз превышает объём уникальных данных. Интернет давно стал свалкой (так как ценной информации всегда было относительно мало), но за последнее десятилетие развелось столько способов почти автоматически «перепостить» бесплатно online в кучу мест, что сеть прямо заросла копиями. Почти на любой поисковый запрос google/yandex/... предложит нам на выбор одну из нескольких одинаковых страниц. Но мы же хотим выбрать лучшую из нескольких разных! И это происходит не из-за ленивости поисковых машин (они многое делают для борьбы с дублями), а от привычного копирования чужих материалов вместо проставления ссылок на исходники.

Вопрос авторам и администраторам блогов/сайтов: как вы боретесь с тем, что ссылки с ваших ресурсов постепенно теряют актуальность? Я могу написать скрипт, который обнаружит все ссылки, ведущие на несуществующие страницы, но не всегда могу их исправить, так как достаточно трудно вспомнить, что же раньше было по тем адресам...

Хорошего дня!

9 сент. 2011 г.

Аукцион «Три двойки»

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

Например, бывает игра «аукцион скелетик», которая начинается с того, что ведущий называет несколько согласных букв, а игроки называют слова русского языка, состоящие только из этих же согласных (в том же количестве, но любом порядке) и произвольного числа букв, не являющихся согласными. Ведущий может дать тему «ТПР», а игроки будут называть «топор», «ропот», «пират», «партия» и так далее. Если возникает слишком большая пауза (например, более минуты), то игра останавливается, а последний назвавший слово объявляется победителем.

В таких играх можно сразу же называть новый корректный ответ, как только его придумал, а можно «придержать» его (надеясь, что никто другой до него не догадается). Т.е. есть резон называть свои варианты как можно позже, но при этом появляется риск, что кто-то другой их придумает и назовёт. Кстати, мы несколько лет назад рассматривали и другие игры со словами.

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

Сделать ход в комментариях к этой заметке очень просто — надо написать слово «Ход», после него получаемое натуральное число, знак равенства, а потом саму формулу.

Примеры корректных ходов:
  • Ход 0 = (2-2)*2
  • Ход 1 = 2 - cos(2-2).
  • Ход 2 = 2 + 2 - 2.
  • Ход 222 = 222.
  • Ход 16 = 2^(2+2).
  • Ход 26 = (2+2)!+2
  • Ход 20 = 22-2 (как видите, справа от знака равенства всегда появляются ровно три двойки)
Шаг аукциона — 5 часов (побеждает тот, после чьего правильного хода не было других правильных ходов в течение 5 часов). Получать одно и то же натуральное число разными способами не надо (засчитывается только первый способ). Заново получать числа из примеров тоже не надо (считайте, что я сделал первые 7 ходов).

Игра началась! Пусть победит сильнейший :)

В этой задачке, конечно, есть подвох, так уж здесь заведено :)
Если вы уже знаете, в чём хитрость, то, пожалуйста, не пишите этого в комментариях! А если очень хотите похвастаться, то не пишите идею явно, а ограничьтесь словами «я знаю эту задачку, поэтому в аукционе не участвую».

Хорошей игры и приятных выходных после!

7 сент. 2011 г.

Это невозможно и бессмысленно!

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

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

Давайте рассмотрим, например, такую задачку: Задержанный признался, что у него три сына, произведение их возрастов равно 36, а сумма равна числу окон дома, около которого произошло задержание. Милиционер сказал, что для определения возраста детей этого недостаточно. Когда задержанный добавил, что его старший сын рыжий, милиционер определил возрасты детей. Сколько им было лет?

Многие начинают возмущаться тем, что в условии не указано количество окон дома. Кто-то сразу отбрасывает очевидно ненужную информацию о рыжем сыне (при чём тут цвет волос?!), а бывают и люди, в ответ задающие свою задачку о том, что «летели два крокодила, один красный, а другой в Африку...» Но ведь в этой задачке о трёх сыновьях есть смысл!

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

Итак, диалог:
- Привет!
- Привет!
- Как дела?
- Хорошо. Растут два сына, но пока ещё в школу не ходят.
- А сколько им лет?
- Произведение их возрастов равно числу голубей около этой скамейки.
- Этой информации мне недостаточно…
- Старший похож на мать.
- Вот теперь я знаю ответ на свой вопрос.


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

Кстати, математика здесь, конечно, не очень сложная. Эта задачка была на олимпиаде для пятиклассников в середине прошлого десятилетия. А первая задачка о трёх детях взята из раздела «Задачи для семиклассников» из приложения к журналу «Квант» №4/2000 (А.В.Спивак, «Математический праздник», часть 2). Другими словами, сама математика очень простая, но важно правильно перевести на математический язык эти текстовые задачки.

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

А какие странно звучащие, но при этом очень осмысленные задачки знаете вы?

Хорошего дня!

2 сент. 2011 г.

Осмысленная ерунда

А кто-то может справедливо возразить: нельзя же всё время быть правильными, выверяя с линейкой и транспортиром каждое слово и дело! Да, я тоже думаю, что не получится, даже если очень хочется. Мы все иногда ошибаемся. Просто иногда глупости бывают осмысленными, а иногда совершенно бесполезными.

Как они могут быть осмысленными? Да легко! Помните, например, как в фильме «Терминатор 2» отрицательный герой из будущего почти мгновенно замёрз, оказавшись в луже жидкого азота? Умом мы прекрасно понимаем, что гораздо эффективнее было бы забирать тепло обычной водой, а не азотом. Но тем же умом мы осознаём, что с водой такой трюк не пройдёт. Ну не будет злой робот из будущего крошиться на льдинки, попав в воду. А с жидким азотом вроде более правдоподобно, хоть тоже нереалистично (любой человек, поигравший в детстве с термосом азота или интересовавшийся вопросом, прекрасно чувствует эту невозможность). Но поскольку мы говорим про фантастический фильм, то было бы странно критиковать его за нефизические моменты, верно?

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

Ладно, давайте я воздержусь от возобновления разговоров о том, что хотя бы крупные телеканалы должны распространять грамотную речь, а лучше поздравлю всех причастных с 1 сентября. Хорошего вам года! А родителям напоминаю о том, на что обращать внимание (речь не только об осанке, а о проблеме игнорирования тех вопросов, с которыми у самих родителей не было проблем).

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

А как вы отвечаете на этот вопрос?