Модули в вычислениях физики

В этом примере показано, как работать с модулями в вычислениях физики. Вычислите терминальную скорость падающего парашютиста-десантника и в SI и в имперских модулях. Решите движение парашютиста-десантника, учтя гравитационную силу и силу сопротивления.

Введение

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

Сетевая сила, действующая на парашютиста-десантника, может быть выражена как

massacceleration=dragforcegravitationalforce,

mtv(t)=cdv(t)2mg,

где

  • m масса парашютиста-десантника

  • g является гравитационным ускорением

  • v(t)скорость парашютиста-десантника

  • cd постоянное перетаскивание

Задайте и решите уравнение движения

Определите дифференциальное уравнение, описывающее уравнение движения.

syms g m c_d
syms v(t)
eq = m*diff(v(t),t) + m*g == c_d*v(t)^2
eq = 

mt v(t)+gm=cdv(t)2m*diff (v (t), t) + g*m == c_d*v (t) ^2

Примите, что парашют сразу открывается в t=0 так, чтобы уравнение eq допустимо для всех значений t0. Решите дифференциальное уравнение аналитически с помощью dsolve с начальным условием v(0)=0. Решение представляет скорость парашютиста-десантника как функция времени.

velocity = simplify(dsolve(eq, v(0) == 0))
velocity = 

-gmtanh(cdgtm)cd- (sqrt (g) *sqrt (m) *tanh ((sqrt (c_d) *sqrt (g) *t)/sqrt (m)))/sqrt (c_d)

Найдите модуль перетаскивания постоянным

Найдите единицу СИ перетаскивания постоянной cd.

Единицей СИ силы является Ньютон (N). В терминах основных единиц Ньютон (kgms2). Поскольку они эквивалентны, у них есть модульный коэффициент преобразования 1.

u = symunit;
unitConversionFactor(u.N, u.kg*u.m/u.s^2)
ans = 1sym (1)

Сила сопротивления cdv(t)2 должен иметь тот же модуль в Ньютоне (N) как гравитационная сила mg. Используя размерный анализ, решите для модуля cd.

syms drag_units_SI
drag_units_SI = simplify(solve(drag_units_SI * (u.m / u.s)^2 == u.N))
drag_units_SI = 

1kg"kilogram - a physical unit of mass."m"meter - a physical unit of length."sym (1) * (symunit ('kg')/symunit ('m'))

Оцените терминальную скорость

Опишите движение парашютиста-десантника путем определения следующих значений.

  • Масса парашютиста-десантника m=70kg

  • Гравитационное ускорение g=9.81m/s2

  • Коэффициент сопротивления cd=40kg/m

Замените этими значениями в скоростное уравнение и упростите результат.

vel_SI = subs(velocity,[g,m,c_d],[9.81*u.m/u.s^2, 70*u.kg, 40*drag_units_SI])
vel_SI = 

-tanh(t40kg"kilogram - a physical unit of mass."m"meter - a physical unit of length."981100m"meter - a physical unit of length."s"second - a physical unit of time."270kg"kilogram - a physical unit of mass.")70kg"kilogram - a physical unit of mass."981100m"meter - a physical unit of length."s"second - a physical unit of time."240kg"kilogram - a physical unit of mass."m"meter - a physical unit of length."-(tanh((t*sqrt(sym(40)*(symunit('kg')/symunit('m')))*sqrt(sym(981/100)*(symunit('m')/symunit('s')^sym(2))))/sqrt(sym(70)*symunit('kg')))*sqrt(sym(70)*symunit('kg'))*sqrt(sym(981/100)*(symunit('m')/symunit('s')^sym(2))))/sqrt(sym(40)*(symunit('kg')/symunit('m')))

vel_SI = simplify(vel_SI)
vel_SI = 

-3763tanh(3763t351s"second - a physical unit of time.")20m"meter - a physical unit of length."s"second - a physical unit of time."- ((3*sqrt (sym (763)) *tanh (((3*sqrt (sym (763)) *t)/35) * (1/symunit ('))))/20) * (symunit ('m')/symunit ('))

Вычислите числовое приближение скорости к 3 значительным цифрам.

digits(3)
vel_SI = vpa(vel_SI)
vel_SI = 

-4.14tanh(2.37t1s"second - a physical unit of time.")m"meter - a physical unit of length."s"second - a physical unit of time."- vpa ('4.14') *tanh (vpa ('2.37') т* (1/symunit ('))) * (symunit ('m')/symunit ('))

Парашютист-десантник приближается к постоянной скорости, когда гравитационная сила сбалансирована силой сопротивления. Это называется терминальной скоростью, и происходит, когда сила сопротивления от парашюта уравновешивает гравитационную силу (нет никакого дальнейшего ускорения). Найдите терминальную скорость путем взятия предела t.

vel_term_SI = limit(vel_SI, t, Inf)
vel_term_SI = 

-4.14m"meter - a physical unit of length."s"second - a physical unit of time."- vpa ('4.14') * (symunit ('m')/symunit ('))

Преобразуйте скорость в имперские модули

Наконец, преобразуйте функцию скорости от единиц СИ до имперских модулей.

vel_Imperial = rewrite(vel_SI,u.ft)
vel_Imperial = 

-13.6tanh(2.37t1s"second - a physical unit of time.")ft"foot - a physical unit of length."s"second - a physical unit of time."- vpa ('13.6') *tanh (vpa ('2.37') т* (1/symunit ('))) * (symunit ('ft')/symunit ('))

Преобразуйте терминальную скорость.

vel_term_Imperial = rewrite(vel_term_SI,u.ft)
vel_term_Imperial = 

-13.6ft"foot - a physical unit of length."s"second - a physical unit of time."- vpa ('13.6') * (symunit ('ft')/symunit ('))

Стройте скорость в зависимости от времени

Чтобы построить скорость как функцию времени, выразите время t в секундах и замене t T s, где T безразмерная символьная переменная.

syms T
vel_SI = subs(vel_SI, t, T*u.s)
vel_SI = 

-4.14tanh(2.37T)m"meter - a physical unit of length."s"second - a physical unit of time."- vpa ('4.14') *tanh (vpa ('2.37') *T) * (symunit ('m')/symunit ('))

vel_Imperial = rewrite(vel_SI, u.ft)
vel_Imperial = 

-13.6tanh(2.37T)ft"foot - a physical unit of length."s"second - a physical unit of time."- vpa ('13.6') *tanh (vpa ('2.37') *T) * (symunit ('ft')/symunit ('))

Разделите выражение от модулей при помощи separateUnits. Постройте выражение с помощью fplot. Преобразуйте единицы к строкам для использования в качестве использования меток графика symunit2str.

[data_SI, units_SI] = separateUnits(vel_SI);
[data_Imperial, units_Imperial] = separateUnits(vel_Imperial);

Скорость парашютиста-десантника приближается к устойчивому состоянию когда t>1. Покажите, как скорость приближается к терминальной скорости путем графического вывода скорости в области значений 0T2.

subplot(1,2,1)
fplot(data_SI,[0 2])
title('Velocity in SI Units')
xlabel('Time in s')
ylabel(['Velocity in ' symunit2str(units_SI)])
subplot(1,2,2)
fplot(data_Imperial,[0 2])
title('Velocity in Imperial Units')
xlabel('Time in s')
ylabel(['Velocity in ' symunit2str(units_Imperial)])