Ричард Фейнман - 1. Современная наука о природе, законы механики
x(t+e)=x(t)+ evx(t). (9.13)
Конечно, это выражение тем точнее, чем меньше e, но оно может быть достаточно точным, даже когда интервал e не исчезающе мал. Что теперь можно сказать о скорости? Чтобы определить скорость в момент t+e, очевидно, нужно знать, как она изменяется со временем, т. е. нужно знать ускорение. А как узнать его? Вот здесь-то нам на помощь приходят уравнения динамики. Именно они позволяют определить, чему равно ускорение. В нашей задаче уравнение динамики говорит, что ускорение равно -x. Поэтому
vx(t+e)=vx(t)+ eax(t), (9.14)
= vx(t)- ex(t). (9.15)
Уравнение (9.14) еще кинематическое; оно просто говорит о том, что из-за наличия ускорения скорость изменяется. Однако уравнение (9.15) уже динамическое, потому что оно связывает ускорение с силой. Оно говорит, что в данной частной задаче для данного момента времени ускорение можно заменить на -х(t). Следовательно, если в какой-то момент времени нам известны положение х и скорость vx, то мы знаем и ускорение, которое дает возможность найти скорость в следующий момент, а скорость в свою очередь определяет новое положение и т. д. Вот каким образом действует весь этот динамический механизм! Действующая сила немного изменяет скорость, а скорость приводит к небольшому изменению положения.
§ 5. Численнов решение уравнений
Давайте теперь действительно решим нашу задачу. Допустим, что мы взяли e=0,100 сек. (Если после того, как мы проделаем все вычисления, окажется, что этот интервал не достаточно мал, то необходимо повторить все сначала с меньшим интервалом времени, например 0,010 сек.) Чему будет равно х(0,1), если в начальный момент времени х (0) = 1? Оно равно старому положению х(0) плюс скорость в начальный момент (которая равна нулю), умноженная на 0,10 сек. Таким образом, х(0,1) равно 1,00, ибо грузик еще не начал двигаться. Но новая скорость в момент 0,10 сек будет равна старой скорости v (0)=0 плюс e, умноженное на ускорение. А само ускорение равно -х(0)=-1,00. Так что
v(0,1)=0,00+0,10·1,00=-0,10. В момент 0,20 сек
х(0,2)=х(0,1)+ev(0,1)=1,00-0,10·0,10=0,99
и
v(0,2)=v(0,1)+ ea(0,1) =-0,10-0,10·1,00 =-0,20.
Продолжая эту процедуру еще и еще, можно найти положение и скорость в любой момент времени, а это как раз то, что нам нужно. Однако практически мы используем нехитрый прием, который позволит увеличить точность вычислений. Если бы мы продолжали начатые нами расчеты, то они оказались бы довольно грубыми, поскольку интервал e=0,10 сек довольно большой. Пришлось бы уменьшить его, скажем, до 0,01 сек. Но тогда, чтобы проследить движение за какой-то разумный отрезок времени, потребовалось бы сделать множество шагов. Мы же организуем процесс таким образом, что сможем увеличить точность, используя тот же интервал e=0,10 сек. Этого можно достичь, несколько изменив метод расчета.
Заметьте, что новое положение тела равно старому плюс интервал времени e, умноженный на скорость. Но что это за скорость? В какой момент? В начале интервала одна скорость, а в конце она совсем другая. Прием состоит в том, чтобы брать скорость в середине интервала. Если известна скорость в настоящий момент и известно, что она меняется, как же можно надеяться получить удовлетворительный результат, считая, что тело все время движется с той же скоростью, что и в настоящий момент? Более разумно использовать какую-то среднюю скорость между началом и концом интервала. Те же рассуждения применимы к изменению самой скорости: для подсчета ее изменений нужно использовать ускорение в средней точке между двумя моментами времени, в которых необходимо найти скорость. Таким образом, реально мы будем пользоваться следующими уравнениями: положение в конце интервала равно положению в начале плюс интервал e, умноженный на скорость в середине интервала. Эта скорость в свою очередь равна скорости в середине предыдущего интервала (т. е. на отрезок e меньше) плюс ускорение в начале интервала, умноженное на e.
Таким образом, мы будем пользоваться уравнениями
Остается еще один небольшой вопрос: что такое v (e/2)? Вначале у нас было v (0), а не v (-e/2). Но теперь, чтобы начать наши вычисления, необходимо использовать дополнительное уравнение v(e/2)=v (0)+( e/2)а(0).
Таблица 9.1 · решение уравнения (dvx/dt)=-x Интервал e=0,10 сек
Ну, а теперь все готово для расчетов. Для удобства можно их выполнить в виде таблицы, в столбцах которой стоят время, положение, скорость и ускорение, причем скорость пишется в промежутках между строками (табл. 9.1). Такая таблица есть, конечно, просто удобный способ записи результатов, полученных из уравнений (9.16), и фактически полностью заменяет их. Мы просто заполняем одно за другим свободные места в ней и получаем очень интересную картину движения: сначала грузик находится в покое, затем понемногу приобретает отрицательную скорость (вверх), а это приводит к уменьшению его расстояния от точки равновесия. При этом хотя ускорение и становится меньше, оно все еще «подгоняет» скорость. Однако по мере приближения к положению равновесия (х=0) ускорение становится все меньше и меньше, скорость нарастает все медленней и медленней, но все же еще нарастает вплоть до точки x=0, которая достигается примерно через 1,5 сек. Скажем по секрету, что произойдет дальше. Грузик, конечно, не остановится в точке х=0, а пойдет дальше, но теперь все пойдет наоборот: его положение х станет отрицательным, а ускорение — положительным. Скорость начнет уменьшаться. Интересно сравнить полученные нами числа с функцией cost. Результат этого сравнения представлен на фиг. 9.4.
Фиг. 9.4. График движения грузика на пружинке.
Оказывается, что в пределах точности наших расчетов (три знака после запятой) совпадение полное! Позднее вы узнаете, что функция cos t — точное решение нашего уравнения, так что у вас теперь есть наглядное представление о мощи численного анализа: столь простой расчет дает столь точный результат.
§ 6. Движение планет
Приведенный анализ очень подходит к движению осциллирующей пружинки с грузиком, но можно ли таким же путем вычислять движение планеты вокруг Солнца? Давайте посмотрим, можно ли при некоторых приближениях получить эллиптическую орбиту. Предположим, что Солнце бесконечно тяжелое в том смысле, что его движение не будет приниматься в расчет.
Допустим, что в известной точке планета начала свое движение и имеет определенную скорость. Она движется вокруг Солнца по какой-то кривой, и мы попытаемся определить с помощью уравнений движения Ньютона и его же закона всемирного тяготения, что это за кривая. Как это сделать? В некоторый момент времени планета находится в каком-то определенном месте, на расстоянии r от Солнца; в этом случае известно, что на нее действует сила, направленная по прямой к Солнцу, которая, согласно закону тяготения, равна определенной постоянной, умноженной на произведение масс планеты и Солнца и деленной на квадрат расстояния между ними. Чтобы рассуждать дальше, нужно выяснить, какое ускорение вызывает эта сила.
Однако в отличие от предыдущей задачи нам потребуются теперь компоненты ускорения в двух направлениях, которые мы назовем х и у. Положение планеты в данный момент будет определяться координатами х и у, поскольку третья координата z всегда равна нулю.
Действительно, координатная плоскость ху выбрана нами таким образом, что z-компоненты как силы, так и начальной скорости равны нулю, а поэтому нет никаких причин, которые бы заставили планету выйти из этой плоскости. Сила при этом будет направлена по линии, соединяющей планету с Солнцем, как это показано на фиг. 9.5.
Фиг. 9.5. Сила притяжения, действующая на планету.
Из этого рисунка видно, что горизонтальная компонента силы так относится к полной ее величине, как координата х относится к расстоянию r. Это сразу следует из подобия треугольников. Кроме того, если х положительна, то Fx отрицательна, и наоборот.
Таким образом, FxъFъ=-x/r, или Fя=-ъFъxlr=-GM mx/r3 и соответственно Fy=-GMmy/r3. Теперь можно воспользоваться динамическими законами (9.7) и написать, что х- или y-компонента ускорения, умноженная на массу планеты, равна соответственно х- или y-компоненте силы:
Это именно та система уравнений, которую мы должны решить. Для того чтобы упростить вычисления, предположим, что либо единицы измерения времени или массы выбраны соответствующим образом, либо нам просто повезло, словом, получилось так, что GM=1. Для нашего случая предположим, что в начальный момент t=0 планета находилась в точке с координатами х=0,500 и у=0,000, а скорость ее в этот момент направлена параллельно оси у и равна 1,6300. Как же в этом случае делаются расчеты? Снова составляется таблица со столбцами для времени t, координаты х, x-компонент скорости vx и ускорения ах. Затем идут отделенные чертой три колонки: для координаты y, у-компонент скорости и ускорения. Однако, для того чтобы подсчитать ускорения, мы должны воспользоваться уравнением (9.17), согласно которому его компоненты равны —х/r3 и —у/r3, а r=Ц(x2+y2). Так что, получив х и у, мы должны где-то в сторонке провести небольшие вычисления — извлечь квадратный корень из суммы квадратов и получить расстояние. Удобно также отдельно вычислить и 1/r3.