Работа 1.2. Определение моментов инерции твёрдыхтел с помощью трифилярного подвеса

Цель работы: измерение момента инерции ряда тел и сравнение результатов с расчётами по теоретическим формулам; проверка аддитивности моментов инерции и справедливости формулы Гюйгенса-Штейнера.

В работе используются: трифилярный подвес, секундомер, счётчик числа колебаний, набор тел, момент инерции которых надлежит измерить (диск, стержень, полый цилиндр и другие).


In [1]:
import numpy as np
import scipy as ps
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

In [1]:
table_1 = pd.read_excel('lab-1-2.xlsx', 'table-1')
table_1.head(len(table_1))


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-a9b8ba9291b0> in <module>()
----> 1 table_1 = pd.read_excel('lab-1-2.xlsx', 'table-1')
      2 table_1[:,0].head(len(table_1))

NameError: name 'pd' is not defined

In [3]:
values = table_1.values[:, 1]
R, r, m, h, d, w, l, m1, m2, m3, z0 = tuple(values)
g = 9.8

In [4]:
table_2 = pd.read_excel('lab-1-2.xlsx', 'table-2')
table_2.head(len(table_2))


Out[4]:
N t, с T, c
0 10 44.268 4.4268
1 10 44.262 4.4262
2 10 44.405 4.4405
3 10 44.691 4.4691
4 10 44.183 4.4183

In [5]:
T = table_2.values[:, 2].mean()
N = 10
eps = 0.001 / (N * T)
print(T, 100 * eps)


4.43618 0.00225419166941

Оценим погрешность измрения времени в $\sigma_t = 0.1$ с. Тогда при $N=10$ измерениях погрешность будет $\varepsilon = \frac{\sigma_t}{NT} \approx 0.002\%$.


In [6]:
k = g * R * r / (4 * np.pi**2 * z0)
print(k)


0.0004026356758808959

Посчитаем $k = \frac{gRr}{4\pi^2 z_0} \approx 0.0004$ м²/c² - константу установки. Тогда момент инерции равен $I = k(m+m_1+m_2)T^2$.


In [7]:
I0 = k * m * T ** 2
print(I0)


0.00787224213694

In [38]:
table_3 = pd.read_excel('lab-1-2.xlsx', 'table-3')
table_3.head(len(table_3))


Out[38]:
h, м N t, с T, c I, кг⋅м²
0 0.000 10 30.538 3.0538 0.005737
1 0.005 10 30.920 3.0920 0.005882
2 0.010 10 31.600 3.1600 0.006143
3 0.015 10 32.091 3.2091 0.006336
4 0.020 10 32.860 3.2860 0.006643
5 0.025 10 33.732 3.3732 0.007000
6 0.030 10 34.771 3.4771 0.007438
7 0.035 10 35.781 3.5781 0.007877
8 0.040 10 37.044 3.7044 0.008443
9 0.045 10 38.227 3.8227 0.008990
10 0.050 10 39.490 3.9490 0.009594
11 0.055 10 40.890 4.0890 0.010287

In [39]:
x = table_3.values[:, 0] ** 2  # h^2
y = table_3.values[:, 4]  # I

In [40]:
k, b = np.polyfit(x, y, deg=1)

In [73]:
dx = np.array([2 ** 0.5 * 0.0005] * 12)
dy = [0.001 / 10] * 12

In [72]:
plt.figure(figsize=(15,6))
plt.grid(linestyle='--')

plt.title('Зависимость $I$ от $h^2$', fontweight='bold')
plt.ylabel('$I, \quad кг\cdotм^2$')
plt.xlabel('$h^2, \quad м^2$')

plt.scatter(x, y)
plt.plot(x, k * x + b)

plt.errorbar(x, y, xerr=dx, yerr=dy, fmt='o')

plt.xlim((-0.001, 0.004))
plt.ylim((0.0055, 0.0105))

plt.show()



In [65]:
print('Ic =', b)
print('m =', k)


Ic = 0.0059821816734
m = 1.46911163812

In [66]:
dk = 12 ** -0.5 * (((y * y).mean() - y.mean() ** 2) / ((x * x).mean() - x.mean() ** 2) - k*k) ** 0.5
print(dk)
print(100*dk/k)


0.0336249135117
2.28879226325

Таким образом, погрешность равна $2.29\%$.

Посчитаем теперь с бруском.


In [71]:
N = 10
t = 37.481
T = t / N
I = k * (m + m3) * T ** 2
print(I)


44.7565489018

Таким образом, с бруском момент инерции $I \approx 44.8$ кг$\cdot$м$^2$.