Система двух тел связанных пружинками — различия между версиями
(→Скачать исходный код) |
|||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | '''''Задача:''''' С помощью языка программирования JavaScript смоделировать | + | '''''Задача:''''' С помощью языка программирования JavaScript смоделировать свободные колебания системы с двумя степенями свободы. |
'''Исполнитель:''' [[Тур Всеволод]] | '''Исполнитель:''' [[Тур Всеволод]] | ||
Строка 15: | Строка 15: | ||
* three.js | * three.js | ||
* dat.gui.js | * dat.gui.js | ||
− | * | + | |
+ | == Скачать исходный код == | ||
+ | |||
+ | * в формате .rar [[http://tm.spbstu.ru/File:Main_seva.rar Ссылка]] | ||
== Возможности программы == | == Возможности программы == | ||
− | * Изменение | + | * Изменение параметров системы(массы тел и жесткости пружин); |
− | * Изменение | + | * Изменение начальных условий(начальные положения и скорости двух тел); |
− | * | + | * Наличие паузы. |
== Подробное решение == | == Подробное решение == | ||
− | + | Даны массы тел m<sub>1</sub> и m<sub>2</sub>, жесткости пружин c<sub>1</sub>,c<sub>2</sub>,c<sub>3</sub>, а также начальные условия. Требуется найти уравнения движения тел в системе. | |
− | |||
− | |||
− | |||
− | |||
− | |||
+ | Кинетическая энергия системы T=3/4(m<sub>1</sub>ẋ<sub>1</sub>²+m<sub>2</sub>ẋ<sub>2</sub>²).<br /> | ||
+ | Потенциальная энергия П=1/2c<sub>1</sub>x<sub>1</sub>²+1/2c<sub>2</sub>(x<sub>2</sub>+x<sub>1</sub>)²+1/2c<sub>3</sub>x<sub>2</sub>².<br /> | ||
+ | Система уравнений Лагранжа:<br /> | ||
+ | 3/2m<sub>1</sub>ẍ<sub>1</sub>+(c<sub>1</sub>+c<sub>2</sub>)x<sub>1</sub>+c<sub>2</sub>x<sub>2</sub>=0;<br /> | ||
+ | 3/2m<sub>2</sub>ẍ<sub>2</sub>+(c<sub>2</sub>+c<sub>3</sub>)x<sub>2</sub>+c<sub>2</sub>x<sub>1</sub>=0;<br /> | ||
+ | Ищем решения в виде:<br /> | ||
+ | x<sub>1</sub>=A<sub>1</sub>sin(kt+a<sub>1</sub>)<br /> | ||
+ | x<sub>2</sub>=A<sub>2</sub>sin(kt+a<sub>2</sub>)<br /> | ||
+ | Подставляя x<sub>1</sub>и x<sub>2</sub> в систему дифференциальных уравнений, получаем систему алгебраических уравнений относительно A<sub>1</sub> и A<sub>2</sub>.<br /> | ||
+ | -3/2m<sub>1</sub>k²A<sub>1</sub>+(c<sub>1</sub>+c<sub>2</sub>)A<sub>1</sub>+c<sub>2</sub>A<sub>2</sub>=0;<br /> | ||
+ | -3/2m<sub>2</sub>k²A<sub>2</sub>+(c<sub>2</sub>+c<sub>3</sub>)A<sub>2</sub>+c<sub>2</sub>A<sub>1</sub>=0;<br /> | ||
+ | Для существования нетривиального решения этой однородной системы ее определитель должен быть нулевым.<br /> | ||
+ | 9/4m<sub>1</sub>m<sub>2</sub>k<sup>4</sup>-3/2(c<sub>1</sub>+c<sub>2</sub>)m<sub>2</sub>k<sup>2</sup>-3/2(c<sub>2</sub>+c<sub>3</sub>)m<sub>1</sub>k<sup>2</sup> | ||
+ | +c<sub>1</sub>c<sub>2</sub>+c<sub>2</sub>c<sub>3</sub>+c<sub>1</sub>c<sub>3</sub>=0<br /> | ||
+ | Это выражение является квадратным уравнением относительно k<sup>2</sup>. Решив его, находим собственные частоты системы.<br /> | ||
+ | Отношения амплитуд движения первого и второго тела могут быть найдены из однородной системы алгебраических уравнений.<br /> | ||
+ | g<sub>1</sub>=A<sub>2</sub><sup>(1)</sup>/A<sub>1</sub><sup>(1)</sup>=(3/2m<sub>1</sub>k<sub>1</sub><sup>2</sup>-c<sub>1</sub>-c<sub>2</sub>)/c<sub>2</sub><br /> | ||
+ | g<sub>2</sub>=A<sub>2</sub><sup>(2)</sup>/A<sub>1</sub><sup>(2)</sup>=(3/2m<sub>1</sub>k<sub>2</sub><sup>2</sup>-c<sub>1</sub>-c<sub>2</sub>)/c<sub>2</sub><br /> | ||
+ | Тогда решение однородного дифференциального уравнения:<br /> | ||
+ | x<sub>1</sub>=A<sub>1</sub><sup>(1)</sup>sin(k<sub>1</sub>t+a<sub>1</sub>)+A<sub>1</sub><sup>(2)</sup>sin(k<sub>2</sub>t+a<sub>2</sub>)<br /> | ||
+ | x<sub>2</sub>=g<sub>1</sub>A<sub>1</sub><sup>(1)</sup>sin(k<sub>1</sub>t+a<sub>1</sub>)+g<sub>2</sub>A<sub>1</sub><sup>(2)</sup>sin(k<sub>2</sub>t+a<sub>2</sub>)<br /> | ||
+ | А значения A<sub>1</sub><sup>(1)</sup>,A<sub>1</sub><sup>(2)</sup>,a<sub>1</sub>,a<sub>2</sub> могут быть найдены из начальных условий. | ||
== См. также == | == См. также == |
Текущая версия на 11:19, 25 мая 2018
Задача: С помощью языка программирования JavaScript смоделировать свободные колебания системы с двумя степенями свободы.
Исполнитель: Тур Всеволод
Группа: 23632/2
Семестр: весна 2018
Содержание
Реализация[править]
Используемые библиотеки[править]
- three.js
- dat.gui.js
Скачать исходный код[править]
- в формате .rar [Ссылка]
Возможности программы[править]
- Изменение параметров системы(массы тел и жесткости пружин);
- Изменение начальных условий(начальные положения и скорости двух тел);
- Наличие паузы.
Подробное решение[править]
Даны массы тел m1 и m2, жесткости пружин c1,c2,c3, а также начальные условия. Требуется найти уравнения движения тел в системе.
Кинетическая энергия системы T=3/4(m1ẋ1²+m2ẋ2²).
Потенциальная энергия П=1/2c1x1²+1/2c2(x2+x1)²+1/2c3x2².
Система уравнений Лагранжа:
3/2m1ẍ1+(c1+c2)x1+c2x2=0;
3/2m2ẍ2+(c2+c3)x2+c2x1=0;
Ищем решения в виде:
x1=A1sin(kt+a1)
x2=A2sin(kt+a2)
Подставляя x1и x2 в систему дифференциальных уравнений, получаем систему алгебраических уравнений относительно A1 и A2.
-3/2m1k²A1+(c1+c2)A1+c2A2=0;
-3/2m2k²A2+(c2+c3)A2+c2A1=0;
Для существования нетривиального решения этой однородной системы ее определитель должен быть нулевым.
9/4m1m2k4-3/2(c1+c2)m2k2-3/2(c2+c3)m1k2
+c1c2+c2c3+c1c3=0
Это выражение является квадратным уравнением относительно k2. Решив его, находим собственные частоты системы.
Отношения амплитуд движения первого и второго тела могут быть найдены из однородной системы алгебраических уравнений.
g1=A2(1)/A1(1)=(3/2m1k12-c1-c2)/c2
g2=A2(2)/A1(2)=(3/2m1k22-c1-c2)/c2
Тогда решение однородного дифференциального уравнения:
x1=A1(1)sin(k1t+a1)+A1(2)sin(k2t+a2)
x2=g1A1(1)sin(k1t+a1)+g2A1(2)sin(k2t+a2)
А значения A1(1),A1(2),a1,a2 могут быть найдены из начальных условий.