...

среда, 10 сентября 2014 г.

[Из песочницы] Уравнение или всё же наблюдение?


Запятошка: Устраивайся поудобнее, Жучок, мы будем с тобой сегодня проводить мысленные эксперименты со свободно падающими телами.

Жучок: А это как? Тела будут падать в моём воображении? Прямо так и вижу: обнажённые тела, летящие на фоне звёздного неба…

Запятошка: Тела, конечно, воображаемые, но не настолько большие, чтобы быть обнажёнными. Вообще, речь пойдёт о свободном падении тел в однородном гравитационном поле.




Жучок: Что это ещё за проектор снов такой?

Запятошка: Это мой экспериментальный проект. Пока что это куча страшного кода на Python с использованием IPython для связки. Ну, да вернёмся к нашему разговору. Итак, тело, падающее свободно с начальной скоростью движется с ускорением…

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

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


Жучок: Ого, салют!

Запятошка: Правда, похоже? А ещё что-нибудь замечаешь?

Жучок: Хм-м, похоже, что кусочки образуют круг… всегда… любопытная картинка. А почему так происходит?

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


А теперь попробую объяснить, почему получается такая картинка. Представь, что ты — один из маленьких кусочков, летящих вместе с остальными. Однако, тебя не швырнули вместе со всеми, тебе удалось ускользнуть и ты выпал из гнезда без начальной скорости. Немного придя в себя ты начинаешь смотреть вокруг и наблюдать за остальными кусочками. Как, по-твоему, на что будет похоже их поведение?

Жучок: Ну, они наверное будут от меня удаляться, так как их-то вышвырнули из гнезда.

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

Жучок: Ух, как ты опять начала умничать. Но суть я уловил: кусочки будут от меня убегать как по спицам велосипеда, и в целом будут образовывать круг как велосипедное колесо. А это можно «увидеть» в твоём проекторе?

Запятошка: Можно, и это тебе будет упражнением на дом. А ещё попробуй доказать формально, что кусочки будут всегда образовывать круг, используя формулы для свободного падения.


Жучок: Ладно, ладно. А что ещё интересного можно посмотреть в твоём проекторе?

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

Жучок: Так вот что у тебя там рисуется как хвост у звёздочек в проекторе! Да, что-то у меня про параболы осталось в памяти.

Зпятошка: Очень хорошо! Давай посмотрим в энциклопедии какими интересными свойствами обладает парабола. Для начала, посмотрим какая получится картинка, если пометить вершины траекторий кусочков, полётом которых мы любовались выше.

Жучок: А как ты объяснишь проектору в каком месте ставить метку?

Запятошка: Ну, мы можем это сделать двумя способами. Если бы мы исследовали неизвестный феномен, то можно было бы просто объяснить проектору как найти локальный максимум траектории. Но мы-то знаем как движется тело в поле земли, поэтому попробуем подобрать формулу для координат вершины, и одновременно посмотрим как нам в этом может помочь пакет sympy, который умеет решать всевозможные задачки в символьном виде.


Инициализация


import numpy as np
from IPython.core.display import Image
from sympy import *
init_printing()



x,y,z = symbols('x y z')
v_0, alpha, g, t = symbols('v_0, alpha, g, t', real=True)






v_x = v_0 * cos(alpha)
v_y = v_0 * sin(alpha) - g * t
(Eq(Symbol('v_x'), v_x), Eq(Symbol('v_y'), v_y))





Запятошка: теперь вычислим координаты кусочка, учитывая, что запустили мы его из точки (0,0). Для этого необходимо проинтегрировать скорость по времени



x_t = integrate(v_x, t)
y_t = integrate(v_y, t)
(Eq(x, x_t),Eq(y, y_t))





Жучок: постой, постой! Я запутался немного. Почему ты пишешь Symbol('v_x')? Почему нельзя просто указать переменную v_x, чтобы увидеть результирующее уравнение? Да и сами уравнения ты как-то странно выводишь…

Запятошка: ты очень наблюдательный, Жучок, молодец! Это потому, что переменная v_х и символ v_х — это разные сущности. Подробнее можешь почитать вот здесь.

Запятошка: На вершине траектории вертикальная скорость , откуда находим момент времени когда это происходит.



solution=solve(v_y, t)
t_h = solution[0]; t_h





Запятошка: Наконец, координаты вершины параболы:



x_h = x_t.subs(t, t_h);x_h






y_h = y_t.subs(t, t_h);y_h





Запятошка: Обучаем наш проектор этому знанию и смотрим что получается.


Жучок: Обалдеть! Это же… это же… Эллипс! Ну очень похож!

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

Жучок: Запятошка, я кажется начинаю понимать зачем ты возишься со своим проектором. А мы будем доказывать, что это реально эллипс, а не фикция нашего воображения?

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



solve([x-x_h, y-y_h], [y, alpha])




Запятошка: то получится абракадабра (проверь дома сам). А всё потому, что sympy ещё маленький, не умеет элегантно манипулировать тригонометрическими выражениями. Но мы ему поможем. Для начала:

x_h = trigsimp(x_h); x_h





Запятошка: далее заметим, что в выражении для можно сделать замену . Делаем подстановку и получаем:



y_h = y_h.subs(sin(alpha)**2, (1-cos(2*alpha))/2);y_h





Жучок: Что-то мне подсказывает, что ты хочешь воспользоваться равенством

Запятошка: Сразу видно, что долгие ночи подготовки не прошли для тебя даром. Выражаем и через и .



s = solve([x-x_h, y-y_h], [sin(2*alpha), cos(2*alpha)]);s





Запятошка: и подставляем в подмеченное тобой равенство:



Eq(s[sin(2*alpha)]**2 + s[cos(2*alpha)]**2, 1)





Запятошка: Получаем ни что иное, как уравнение эллипса!

Жучок: М-да…

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


Жучок: Ладно-ладно, не ты одна такая умная, разберусь как-нибудь. Ты лучше ещё что-нибудь покажи, а то нашла какой-то эллипс и радуешься как ребёнок…

Запятошка: А вот и покажу! Читаем упомянутую выше энциклопедию дальше и обнаруживаем там описание фокуса параболы. Какой у нас сразу возникает вопрос? По твоей кислой мине сразу понятно, что мы хотим пометить фокусы всех наших парабол и посмотреть, что получится.

Жучок: Что, опять эллипс?

Запятошка: Почём мне знать? Давай посмотрим. В виду симметрии, абсцисса фокуса совпадает с абсциссой вершины параболы. А вот ординату надо будет найти по формуле согласно энциклопедии. Для этого найдём сначала уравнение параболы через и , избавишься для этого от .



ss = solve([x-x_t,y-y_t], [y,t], dict=True);ss





Запятошка: Следовательно, коэффициенты квадратичного трёхчлена:



a,b,c = ss[0][y].as_poly(x).all_coeffs(); a,b,c





Запятошка: Дальше попробуй сам.

Жучок: Хорошо, значит дискриминант получится вот таким:



D = b**2 - 4*a*c; D





Жучок: и ордината фокуса:



y_f=(1-D)/(4*a);y_f





Жучок: Что получится, если это подставить в твой проектор, Запятошка?

Запятошка: А вот что!


Жучок: У меня нет слов! Чем-то смахивает на какой-то сакральный знак… Вспомнил! Око Ра!

Запятошка: Ну у тебя и воображение, Жучок. Попробуешь доказать, что фокусы ложатся на круг?

Жучок: Так, значит сначала пробуем упростить:



y_f = trigsimp(y_f); y_f





Жучок: Э, да тут всё просто получается! Даже потеть не надо, просто складываем квадраты абсциссы и ординаты:



Eq(x**2 + y**2, simplify(x_h**2 + y_f**2))





Запятошка: Ну, раз уж ты у нас такой молодец, то вот тебе ещё одна задачка на дом. Изучи, как ведут себя директрисы наших парабол.

Жучок: А что если у меня возникнут трудности?

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


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


Вот тебе ещё парочка ресурсов для вдохновения.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий