Уравнение Ньютона
Смысл уравнения .
Если задан закон для силы , то вектор координаты
, вектор скорости
и вектор ускорения
образуют замкнутую систему дифференциальных уравнений, которая для данных начальных условий
и
имеет единственное решение.
Принято выделять несколько особых случаев записи закона силы:
- Постоянное ускорение (например, свободное падение):
. Координата и скорость не зависят друг от друга.
- Закон Гука (гармоническая пружина):
. Возвращающая сила зависит от координаты.
- Зависящая от скорости вынуждающая сила
. Используется для описания сопротивления среды (например, воздуха): трение в осцилляторе, задача о парашюте, движение артиллерийского снаряда, капля масла в опыте Малликена (вязкое трение).
- Нелинейные силы, т. е. силы, пропорциональные какой-то (но не первой) степени:
или/и
. Пример – маятник. Зависящие от силы скорости могут приводить к несохранению энергии.
Уравнение Ньютона можно переписать как два ОДУ первого порядка (уравнения Гамильтона):
Если сила не зависит от координаты , делается так: сначала надо проинтегрировать второе уравнение, а затем – первое, взяв
в качестве входных данных.
Пример 4.2.1
Рассмотрим задачу о пушечном ядре с учетом сопротивления воздуха. Гравитация постоянна, т. е. не зависит от координаты (кстати: если ядро летит на большой высоте, то это не так). Сопротивление воздуха зависит только от скорости, а не от координаты.
Следовательно, в этой задаче вначале следует интегрировать как пару ОДУ для вертикальной и горизонтальной проекций импульса (скорости)
и
.
Пример 4.2.2
Решим уравнение Ньютона для свободного падения на поверхность планеты (ускорение постоянно).
- restart;
- NE:=m*diff(v(t),t)=m*g;
Вначале запишем интегралы в невычисляемом виде (пишется Int вместо int). Временно введем новую переменную s, чтобы не ошибиться с пределом интегрирования. Используем команды lhs и rhs, чтобы выделить части уравнения. Массу m вынесем, разделив уравнения на нее:
- NE1:=Int(lhs(NE/m),t=0..s)=Int(rhs(NE/m),t=0..s);
Интегрирование выполним с помощью команды value.
- NE1:=value(NE1);
Теперь введем зависимость скорости от координаты (в s сохраняется как зависимость от времени).
- NE2:=diff(x(s),s)=solve(NE1,v(s));
- NE2:=Int(lhs(NE2),s=0..t)=Int(rhs(NE2),s=0..t);
- sol:=value(NE2);
- solve(sol,x(t));
Чтобы выделить x(t), применим команду solve.
Встроенная в Maple система решения ДУ способна решить большинство линейных ДУ (см. [1; 2]).
Вначале переопределим NE, записав ее как ДУ для зависимости координаты от времени:
- NE:=m*diff(x(t),t$2)=m*g;
- sol:=dsolve(NE,x(t));
Поскольку граничные (или начальные) условия не задавались, результат получаем в общем виде с двумя постоянными интегрирования, так как не было указано x(t). Есть две возможности. Удобнее не задавать x(t), а записать решение в виде выражения:
- rhs(sol);
- x(t);
- assign(sol);
- x(t);
Вспомним особенность Maple: если нам для чего-то снова понадобится переменная x(t), ее придется заново переопределить, для чего выполняется расприсваивание, чтобы очистить старое содержание переменной (именно поэтому удобнее вообще не делать присваивание, чтобы потом не запутаться в том, что именно содержит x(t) в данный момент):
- x(t):='x(t)':
Можно получить особое решение, указав начальные условия (либо численно, либо символьно). Необходим дифференциальный оператор D, чтобы определить условия для производной:
- IC:=x(0)=x0,D(x)(0)=v0;
Решаем набор ДУ с начальными условиями и применяем к переменной команду dsolve:
- sol:=dsolve({NE,IC},x(t));
Такое присваивание удобно тем, что результат виден сразу: если возвращается пустой набор, то это означает, что решение не получено, а если его нет совсем, тогда получится пустая строка.
