exponenta event banner

Единицы измерения в физических расчетах

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

Введение

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

Результирующая сила, действующая на десантника, может быть выражена как

mass⋅acceleration=drag сила гравитационная сила,

m∂∂tv (t) = cdv (t) 2 − m g,

где

  • м - масса десантника

  • 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 действителен для всех значений t≥0. Аналитическое решение дифференциального уравнения с помощью 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)

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

Найдите единицу измерения SI константы перетаскивания cd.

Единица силы СИ - Ньютон (N). По базовым единицам Ньютон равен (kg⋅ms2). Так как они эквивалентны, они имеют единичный коэффициент преобразования 1.

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

Сила сопротивления cdv (t) 2 должна иметь ту же единицу измерения по Ньютону (N), что и сила тяжести мг. Используя размерный анализ, решите для единицы измерения 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."1*(symunit('kg')/symunit('m'))

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

Опишите движение парашютиста, определив следующие значения.

  • Масса десантника м = 70 кг

  • Гравитационное ускорение g = 9,81 м/с2

  • Коэффициент лобового сопротивления cd = 40 кг/м

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

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(40*(symunit('kg')/symunit('m')))*sqrt(sym(981/100)*(symunit('m')/symunit('s')^2)))/sqrt(70*symunit('kg')))*sqrt(70*symunit('kg'))*sqrt(sym(981/100)*(symunit('m')/symunit('s')^2)))/sqrt(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('s'))))/20)*(symunit('m')/symunit('s'))

Вычислите численное приближение скорости до 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')*t*(1/symunit('s')))*(symunit('m')/symunit('s'))

Парашютист приближается к постоянной скорости, когда гравитационная сила уравновешивается силой сопротивления. Это называется конечной скоростью и происходит, когда сила сопротивления с парашюта отменяет гравитационную силу (дальнейшего ускорения нет). Найдите конечную скорость, приняв предел 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('s'))

Преобразование скорости в британские единицы

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

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')*t*(1/symunit('s')))*(symunit('ft')/symunit('s'))

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

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('s'))

График скорости во времени

Чтобы построить график скорости как функции времени, выражайте время 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('s'))

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('s'))

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

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

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

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)])

Figure contains 2 axes. Axes 1 with title Velocity in SI Units contains an object of type functionline. Axes 2 with title Velocity in Imperial Units contains an object of type functionline.