Dec. 1st, 2024

AoC

Dec. 1st, 2024 11:36 am
avva: (Default)
Напоминаю, что сегодня начинается Advent of Code - испытание в виде задачек на программирование, которые даются в течение 25 первых дней декабря. Каждый день в полночь открывается новое задание, в двух частях (вторая тяжелее первой). Первые несколько дней задания легкие, потом постепенно усложняются, но не до уровня крутых соревнований. Есть состязание между теми, кто присылает решение как можно быстрее, со списками лидеров, которые ждут полуночи и в течение пары минут шлют ответ, но я советую не обращать внимания на эти гонки, а просто решать в свое удовольствие.

Многие используют Advent of Code, чтобы научиться писать на новом для себя языке. Я так делал дважды в прошлом, и хочу попробовать и в этот раз, но пока не решил, на каком языке. Хотя я не писал нетривиальное количество кода на Rust и Go, мне кажется, что достаточно знаю о них из прочитанного с годами, что не хочется сейчас - лучше что-то более незнакомое. На Zig делал этот конкурс пару лет назад. Относительно известные "старые" языки: Lisp, Haskell, Forth, SmallTalk - когда-то знал или пробовал. Пока что размышляю между OCaml и Crystal. Хотите посоветовать мне что-то другое?
avva: (Default)
Интересная и немного странная новость: обнаружилось, что ChatGPT отказывается по неизвестной причине печатать целиком имя и фамилию David M
avva: (Default)
В блоге Джона Баэза интереснейшая запись об ученых 14 века в Оксфорде, которые за 300 лет до Галилея открыли и доказали "закон средней скорости": что тело, двигающееся с постоянным ускорением, проходит за промежуток времени такое же расстояние, какое прошло бы, если бы двигалась с постоянной скоростью, равной его скорости на середине промежутка.

В античности вообще не занимались исследованием движения с постоянным ускорением. Понятие скорости, по Аристотелю, было сформулировано только как средняя скорость на протяжении какого-то промежутка. Для того, чтобы обсуждать плавно меняющуюся скорость, нужно вообще понятие мгновенной скорости, а оно совсем не тривиально, как иллюстрирует известный анекдот ("Мадам, вы ехали со скоростью 100 километров в час!" - "Не может быть, я выехала из дома не больше пяти минут назад!").

По-настоящему основательно движением с ускорением занялись в 17 веке, и к концу его математический анализ, изобретенный Ньютоном и Лейбницем, дал теоретическую основу понятию мгновенной скорости. Но Галилей, доказывая закон о средней скорости, опирался на геометрическое доказательство французского философа Никола Оресма (14 век), а тот в свою очередь - на работы английских философов из Мертоновского колледжа в Оксфорде. Интересно, что при этом философы мертоновской школы не думали о своих доказательствах как о чем-то, имеющем практическое применение или относящемся к натуральной философии (тогдашнее название физики). Книга Уильяма Хейтсбери, о которой говорит Баэз, является учебником логики/риторики, и построена как пособие по опровержению софизмов - "хитрых" аргументов, притворяющихся парадоксами. Большая часть книги занимается опровержением чего-то вроде (реальный пример) - "Сократ знает 10 истин, а потом одну забывает. Значит, он теперь не знает 10 истин" - в ответ Хейтсбери подробно объясняет, что "не знает 10 истин" можно понять и как "не знает ни одной из 10 истин", так и "не знает целиком все 10 истин, но возможно знает часть из них", и софист специально стремится запутать читателя. Все это довольно скучно, но потом на фоне всего этого Хейтсбери вдруг первым определяет мгновенную скорость, рассматривает виды движения, включая постоянное ускорение, и доказывает закон средней скорости. Все это в виде чисто умозрительных рассуждений о том, что такое движение и каким оно может быть.

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

Пусть у нас есть тело, которое движется со скоростью, которая равномерно растет от 0 до 2X (для удобства) в течение часа. Докажем, что оно проходит то же расстояние, что тело, которое движется со скоростью X в течение часа.

1. Представим вначале две игрушечные машинки на очень длинной доске, которые начинают ехать в противоположных направлениях из одной точки O, и каждая из них наращивает свою скорость равномерно от 0 до X в течение получаса. Из симметрии ситуации очевидно, что они пройдут одинаковое расстояние (неважно пока, какое), и закончат свой путь в двух точках так, что О лежит посредине между ними.

2. Теперь запустим машинки таким же образом, но одновременно будем двигать всю доску вместе с ними в направлении движения одной из машинок, со скоростью X. Теперь относительно земли обе машинки движутся в одном направлении, но одна набирает скорость X->2X, а другая X->0, каждая за полчаса. Точки, в которых они закончат движение, все еще будут такими, что O (двигавшаяся вместе с доской) в середине между ними. Это значит, что сумма расстояний, которые пройдут две машинки, равна дважды расстоянию, которое прошла точка O, а именно X*1.

3. Теперь рассмотрим машинку, которая набирает скорость 0->2X в течение часа. Рассмотрев первую и вторую половину движения раздельно, видим, что расстояние, что она прошла, это сумма расстояний "0->X за полчаса" и "X->2X за полчаса". Более того, "0->X за полчаса" равно "X->0 за полчаса" (просто обратим время вспять, чтобы из одного получить другое). А значит, наша машинка "0->2X за час" проходит расстояние, равное сумме двух машинок из прошлого пункта, а мы доказали, что оно равно X*1. Но это и есть расстояние, которое проходит машинка с постоянной скоростью X за час. Что и требовалось доказать.

В оригинальном тексте Хейтсбери написано примерно то же самое похожими словами, кроме первого пункта, который делает совсем очевидным, что две машинки проходят одинаковое расстояние (на доске). Вместо этого Хейтсбери говорит что-то вроде "ясно, что каждую долю расстояния, которую X->2X проходит больше, чем постоянное-X, X->0 проходит меньше, так что в сумме получается дважды постоянное-X". Другие автор той же школы не были удолетворены ясностью этого пункта и пытались формулировать другие варианты доказательства, пока в итоге Оресм не предложил геометрический вариант.

April 2025

S M T W T F S
   1 2 3 45
6 7 89 10 11 12
1314 15 1617 1819
2021 2223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 10:22 am
Powered by Dreamwidth Studios