Отчет проекта МатФизика по проделанной работе

Руководители проекта: Березин Андрей Всеволодович, Петухов Матвей Андреевич.

Участники: Подоляко Федор Сергеевич (10 класс), Бурукин Максим Сергеевич (10 класс).

Особая благодарность: Воронцов Александр Сергеевич, Алексеев Вадим Юрьевич, Лысов Иван Дмитриевич, Стрекаловский Александр Олегович.

Место проведения: г. Переславль, Ярославская область.

Время проведения: июль-август 2006 года.

Проект МатФизика занимался реализацией математических моделей на компьютере. При этом сплошное физическое тело заменялось моделью, состоящей из массивных узлов, соединенных невесомыми жесткими стержнями. Вычисления проводились пошагово с использованием математических методов первого порядка (например: x = x0 + vx·Dt).

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

  1. Независимо пересчитываются координаты обоих шариков после первого шага.
  2. Расстояние между шарами сравнивается с длиной палки L.
  3. Находим центр масс в данный момент времени и сдвигаем шарики по направлению к центру масс так, чтобы длина палки сохранялась.
  4. Пересчитываются ускорения, скорости и координаты шариков.

При таком способе моделирования выполняются законы сохранения импульса и момента импульса.

Исходники программы: palka.pas

Логическим продолжением данной программы стало моделирование полета плоского тела на плоскости. В качестве модели плоского тела была выбрана конструкция из 4х шариков, образующих квадрат. С экрана задавались следующие величины: массы шариков, длина стороны и первоначальные скорости каждого шарика по двум осям. Для реализации этой задачи необходимо было учесть не только силу упругости, но и законы сохранения импульса и момента импульса (кинетического момента) (
L= n
S
i=1
[ripi]= n
S
i=1
[rimivi]
). Алгоритм этой программы аналогичен алгоритму расчета полета коробки приведенному ниже.

Исходники программы: kvadr.pas

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

Основной алгоритм программы:

  1. Исходя из начальных данных (координат и скоростей) получаем новое положение трёхмерного объекта через малый промежуток времени. Эти координаты отныне и впредь мы будем называть "реальными".

    x = x0 + vx·Dt

    y = y0 + vy·Dt

    z = z0 + vz·Dt

  2. Так как шарики движутся независимо друг от друга, получившийся через малый промежуток времени объект коробкой быть не обязан. Вследствие этого, нам необходимо построить по полученным координатам изначально заданную фигуру. Мы выбираем 1-ый шарик и направление на 2-ой, строим на этом луче отрезок, длина которого равна стороне коробки (l1), затем строим векторы от второго шарика к третьему и первому. Векторно перемножив их, получаем вектор, направленный из 2 точки к точке 6. Откладываем на луче, содержащем этот вектор, длину стороны коробки (l3). Перемножив полученный вектор с вектором 2-1, получаем вектор, направленный из точки 2. Откладываем на нем длину l2. Далее, путём сложения полученных векторов, получаем координаты оставшихся 4 точек.
  3. В результате построения правильной коробки изменились её координаты, а скорости остались прежними. Вследствие закона сохранения импульса, сумма всех внутренних сил (сил упругости) должна быть равна нулю. Если сумма сил отлична от нуля, смещаем коробку так, чтобы уравновесить силы (во избежание "разрыва" коробки):
    Fx = Dx·m

    Dt2

    (сила пропорциональна расстоянию между положениями шариков: чем дальше они находятся, тем больше сила, стремящаяся вернуть их назад).
    x = x0-
    S
    Fx·Dt2

    S
    m
    ,

    где Dx - расстояние от реального положения шарика до его положения в построенной нами коробке, Fx - проекция силы упругости на ось (x), m - задаваемая масса, Dt - шаг по времени, x - координата правильного положения каждого шарика, x0 - координаты каждого шарика в получившейся фигуре.

    Аналогично действуем для проекций на другие оси.

  4. В результате смещения коробки изменились силы, следовательно, нам необходимо вновь пересчитать скорости.
    Fx = Dx·m

    Dt2
    ax=ax0+ Fx

    m
    vx=vx0+ ax·Dt

    где Dx - расстояние от реального положения шарика до его положения в построенной нами коробке (после её смещения), Fx - проекция силы упругости на ось (x), m - задаваемая масса, Dt - шаг по времени. Аналогично действуем для проекций на другие оси.
  5. Вследствие закона сохранения момента импульса, кинетический момент в начальном положении шариков должен быть равен кинетическому моменту в данном положении. Исходя из разности моментов, добавляем угловые скорости шарикам (для сохранения кинетического момента).

    Решаем следующее уравнение относительно омеги; получаем угловую скорость, которой не хватает для сохранения кинетического момента.
    DL = n
    S
    i=1
    [rimi[wri]]

    -DL - изменение кинетического момента после смещений шариков.

    Переводим угловую скорость в линейную: v = [wr] и добавляем её к каждому шарику.
    vx = vx0 + wy·rz - wz·ry
    vy = vy0 + wz·rx - wx·rz
    vz = vz0 + wx·ry - wy·rx

    vi - проекции скоростей на оси координат, vi0 - начальные проекции скоростей, wi - проекции угловых скоростей, ri - проекции вектора направленного из центра масс к реальному положению шариков.

  6. Повторяем данные расчёты необходимое количество раз.

Исходники программы: box.pas

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

Затем программа была изменена таким образом, чтобы рисовать направление вектора угловой скорости и его изменение в процессе вращения коробки. Полученная траектория движения - система, состоящая из 2х эллипсоидов.

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

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


Отчет группы №2 проекта "Математическая физика"

Участники группы: Сергей Крылов(8-й класс), Сергей Дергунов(7-й класс).

Место: Переславль.

Время: 2006-08-04.

Задача 1. (полёт тела, брошенного вертикально вверх)

Первой поставленной задачей было моделирование полёта тела, брошенного вертикально вверх. Тело начинает движение из точки (у = 0) с известной скоростью (v0). Шаг по времени (dt) и ускорение свободного падения (g) являются параметрами задачи.

Уравнения движения за шаг по времени (dt) имеют вид:
v = v - g*dt;
y = y + v*dt.

Знак "-" перед (g) объясняется направлением оси (y) вертикально вверх (рис. 1). Когда (у) равно нулю, программа заканчивает свою работу.

Задача 2. (полёт тела, брошенного под углом к горизонту)

Второй поставленной задачей было моделирование полёта тела, брошенного под углом (a) к горизонту. Тело начинает движение из точки (x=0, у=у0) с известной скоростью (v0). Шаг по времени (dt) и ускорение свободного падения (g) являются параметрами задачи.

Уравнения движения за шаг по времени (dt) имеют вид:
vy = vy - g*dt;
y = y + vy*dt;
x = x + vx*dt;
vx = vx (Скорость по х остаётся постоянной).

Начальные скорости определяются по формулам:
vx0 = v0*cos(a);
vy0 = v0*sin(a).

Программа заканчивает свою работу, когда (у≤0) и (vy<0).

Задача 3. (одномерный пружинный маятник)

Третьей задачей было моделирование движения тела массой (m), прикреплённого к невесомой пружине. Пружина в нерастянутом состоянии имеет длину (l). В сжатом состоянии пружина действует с силой (F=k*dx) (рис.3), где (k) - коэффициент жёсткости, (dx) - деформация пружины.

Начальное положение тела характеризуется координатой (x) и начальной скоростью (v).

Уравнение для вычисления силы:
f = - k*(x - l).

Уравнение для вычисления ускорения:
a = f/m.

Уравнения движения:
v = v + a*dt;
x = x + v*dt.

Время меняется по формуле:
t = t + dt.

Программа заканчивает свою работу, когда время достигает заданной величины.

Задача 4. (двумерный пружинный маятник)

Четвёртой поставленной задачей было моделирование движения двух тел, прикреплённых к невесомой пружине. Пружина в нерастянутом состоянии имеет длину (L), в деформированном состоянии - (q). Начальными данными являются: массы тел (m1, m2), начальные скорости (v1, v2) и начальные координаты двух тел. Длина пружины (l), коэффициент жёсткости пружины (k) и шаг по времени (dt) являются параметрами задачи.

Координаты вектора, направленного из точки (x1, y1) в точку (x2, y2):
x = x2 - x1;
y = y2 - y1.

Длина пружины в деформированном состоянии:
q=
Ц
 

x2+y2
 

Сила натяжения пружины:
F = k(q - L).

Уравнения силы для первого тела:
F1 = F/2;
Fx1 = F1*x/q;
Fy1 = F1*y/q.

Уравнения силы для второго тела:
F2 = -F/2;
Fx2 = F2*x/q;
Fy2 = F2*y/q.

Уравнения ускорения для первого тела:
ax1 = Fx1/m1;
ay1 = Fy1/m1.

Уравнения ускорения для второго тела:
ax2 = Fx2/m2;
ay2 = Fy2/m2.

Уравнения скорости первого тела:
vx1 = vx1 + ax1*dt;
vy1 = vy1 + ay1*dt.

Уравнения скорости второго тела:
vx2 = vx2 + ax2*dt;
vy2 = vy2 + ay2*dt.

Координаты первого тела:
x1 = x1 + vx1*dt;
y1 = y1 + vy1*dt.

Координаты второго тела:
x2 = x2 + vx2*dt;
y2 = y2 + vy2*dt.

Далее расположены графики зависимости длины пружины от времени, полученные в четвёртой задаче.

В первом случае шарикам придали скорости, направленные вдоль пружины (по оси X). Средняя длина пружины в этом случае равна длине пружины в недеформированном состоянии.

Во втором случае шарикам придали противонаправленные скорости, перпендикулярные пружине (по оси Y). Пружина вращается, при этом её средняя длина больше длины в недеформированном состоянии.

Это объясняется тем, что для вращения шариков нужно, чтобы на них действовала центростремительная сила. В данном случае центростремительной является сила упругости, действующая на шарики со стороны пружины. Именно поэтому вращающаяся пружина удлинена относительно движущейся прямолинейно.


график 1


график 2