КП: Параметрические колебания — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
 
(не показано 19 промежуточных версий 2 участников)
Строка 44: Строка 44:
  
 
== Визуализация задачи==
 
== Визуализация задачи==
Примечание: менять частоту колебаний лучше в центральном положении.
 
  
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Filimonov/dl_example_Swing.html |width=830 |height=630 |border=0 }}
+
''Примечание: менять частоту необходимо во время прохождения нижнего положения.''
<div class="mw-collapsible mw-collapsed">
 
'''Текст программы на языке JavaScript:''' <div class="mw-collapsible-content">
 
Файл '''"dl_example_Swing.js"'''
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
function main_dl_example_Swing() {
 
 
number_input.oninput = function() {
 
        slider_input.value = number_input.value;
 
        mult2();
 
    };
 
    slider_input.oninput = function() {
 
        number_input.value = slider_input.value;
 
        mult2();
 
    };
 
 
    function mult2() {
 
        span_result.innerHTML =  Math.PI / number_input.value;
 
    }
 
 
    var ctx = canvas_Swing.getContext("2d");
 
    var width = canvas_Swing.width;
 
    var height = canvas_Swing.height;
 
 
var string_s_x = 400;
 
var string_s_y = 10;
 
var string_e_x = 400;
 
var string_e_y = 300;
 
var phi =  Math.PI / 2;
 
//var n = 6;
 
var phi_max = Math.PI / number_input.value;
 
var h = 20;
 
var m = 10;
 
var string_length = 290;
 
var direction = 1;
 
var speed = 1;
 
 
var board_s_x = string_s_x - 50;
 
var board_s_y = string_e_y;
 
var board_e_x = string_e_x + 50;
 
var board_e_y = string_e_y;
 
 
var head_x = string_e_x + 15;
 
var head_y = string_e_y - 50;
 
var head_r = 10;
 
 
var eye_left_x = head_x - 2;
 
var eye_left_y = head_y - 2;
 
var eye_right_x = head_x + 2;
 
var eye_right_y = head_y - 2;
 
 
var body_s_x = head_x + 4;
 
var body_s_y = head_y + head_r;
 
var body_e_x = body_s_x + 12;
 
var body_e_y = body_s_y + 25;
 
 
var legs_s_x = body_e_x;
 
var legs_s_y = body_e_y;
 
var legs_e_x = body_e_x - 20;
 
var legs_e_y = board_e_y + 10;
 
 
var arms_s_x = body_e_x - 5;
 
var arms_s_y = body_e_y - 8;
 
var arms_e_x = body_e_x - 25;
 
var arms_e_y = body_e_y - 15;
 
 
    function step() {                         
 
        tick();
 
        draw();
 
    }
 
 
    function tick() { 
 
phi_max = Math.PI / number_input.value;
 
 
        string_e_x = string_s_x  + string_length * Math.cos(phi);
 
string_e_y = string_s_y  + string_length * Math.sin(phi);
 
 
speed = 0.017 * Math.sqrt((Math.cos(phi - Math.PI / 2) - Math.cos(phi_max + 0.01)));
 
phi = phi + direction * speed;
 
 
if (phi >  Math.PI / 2 + phi_max) direction = - direction;
 
if (phi <  Math.PI / 2 - phi_max) direction = - direction;
 
 
board_s_x = string_s_x - 50;
 
board_s_y = string_e_y;
 
board_e_x = string_e_x + 50;
 
board_e_y = string_e_y;
 
 
head_x = string_e_x + 15;
 
head_y = string_e_y - 50;
 
head_r = 10;
 
 
eye_left_x = head_x - 2;
 
eye_left_y = head_y - 2;
 
eye_right_x = head_x + 2;
 
eye_right_y = head_y - 2;
 
 
body_s_x = head_x + 4;
 
body_s_y = head_y + head_r;
 
body_e_x = body_s_x + 12;
 
body_e_y = body_s_y + 25;
 
 
legs_s_x = body_e_x;
 
legs_s_y = body_e_y;
 
legs_e_x = body_e_x - 20;
 
legs_e_y = board_e_y + 10;
 
 
arms_s_x = body_e_x - 5;
 
arms_s_y = body_e_y - 8;
 
arms_e_x = body_e_x - 25;
 
arms_e_y = body_e_y - 15;
 
 
    }
 
 
    function draw() {                         
 
        ctx.clearRect(0, 0, width, height);   
 
        ctx.beginPath();
 
     
 
ctx.lineWidth="1";
 
ctx.strokeStyle="#080101";
 
 
ctx.moveTo(string_s_x, string_s_y);                           
 
ctx.lineTo(string_e_x, string_e_y);                         
 
ctx.stroke(); 
 
 
ctx.lineWidth="2";
 
ctx.strokeStyle="#DED5D5";
 
ctx.beginPath();
 
ctx.arc(head_x, head_y, head_r, 0, 2 * Math.PI);
 
ctx.stroke();
 
 
ctx.fillStyle="#080101";
 
ctx.beginPath();
 
ctx.arc(eye_left_x, eye_left_y, 1, 0, 2 * Math.PI);
 
ctx.arc(eye_right_x, eye_right_y, 1, 0, 2 * Math.PI);
 
ctx.fill();
 
 
ctx.beginPath();
 
ctx.strokeStyle="#DED5D5";
 
ctx.moveTo(body_s_x, body_s_y);                           
 
ctx.lineTo(body_e_x, body_e_y);                           
 
ctx.lineWidth="6";
 
ctx.stroke();
 
 
ctx.beginPath();
 
ctx.strokeStyle="#DED5D5";
 
ctx.moveTo(legs_s_x, legs_s_y);                           
 
ctx.lineTo(legs_e_x, legs_e_y);                         
 
ctx.lineWidth="6";
 
ctx.stroke();
 
 
ctx.beginPath();
 
ctx.strokeStyle="#DED5D5";
 
ctx.moveTo(arms_s_x, arms_s_y);                           
 
ctx.lineTo(arms_e_x, arms_e_y);                         
 
ctx.lineWidth="6";
 
ctx.stroke();
 
 
ctx.fillStyle="#F31C1C";
 
ctx.beginPath();
 
ctx.arc(string_e_x, string_e_y, head_r, 0, 2 * Math.PI);
 
ctx.fill();
 
 
ctx.lineWidth="2";
 
ctx.strokeStyle="#080101";
 
ctx.beginPath();
 
ctx.arc(string_e_x, string_e_y, head_r, 0, 2 * Math.PI);
 
ctx.stroke();
 
    }
 
 
    setInterval(step, 1000 / 60);             
 
 
 
}
 
</syntaxhighlight>
 
  
Файл '''"dl_example_Swing.html"'''
+
{{#widget:Iframe |url=http://tm.spbstu.ru/htmlets/Sizova/Swing/dl_example_Swing_2.html|width=900 |height=650 |border=0 }}
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<!DOCTYPE html>
 
<html>
 
<head>
 
    <title>SWING</title>
 
    <script src="dl_example_Swing.js">
 
function sizePic() {
 
number_input = document.getElementById("number_input").value;
 
 
}
 
</script>
 
</head>
 
<body onload="main_dl_example_Swing();">
 
    <canvas id="canvas_Swing" width="800" height="450" style="border: 1px solid #000000"></canvas>
 
<input type="range" id="slider_input" min=3 max=9 value=3 step=0.01 style="width: 150px;">
 
<div> Частота: PI : <input type="number" id="number_input" oninput ="n" min=3 max=9 value=3 step=0.01 style="width: 50px;">
 
    = <span id="span_result">1.0471975511965976</span> </div>
 
</body>
 
</html>
 
 
 
== Обсуждение результатов и выводы ==
 
 
 
 
 
 
 
== Ссылки по теме ==
 

Текущая версия на 14:52, 28 июня 2016

Качели

Курсовой проект по Теории колебаний

Исполнитель: Сизова Екатерина

Группа: 09 (33604)

Семестр: весна 2016

Аннотация проекта[править]

Колебания — это повторяющийся в той или иной степени во времени процесс изменения состояний системы около точки равновесия. По характеру взаимодействия с окружающей средой колебания делятся на вынужденные, свободные, автоколебания, случайные и параметрические, которым и посвящена данная работа.

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

Формулировка задачи[править]

Описать математически движение качелей и смоделировать их движение.


Решение[править]

Качели

Существует два способа раскачивания качелей: качели может раскачивать человек, находящийся вне качелей, а также человек, который сидит или стоит на них. В данной задаче будет рассматриваться второй случай - человек, стоящий на качелях, периодически, в нужные моменты приседает и встает. При этом периодически изменяются параметры самой колебательной системы, поэтому такие колебания можно назвать параметрическими. Простейшим уравнением, описывающим такие колебания, является уравнение гармонических колебаний, где [math] \omega ^2[/math]. является периодической функцией времени [math] a = -\omega^2(t)x[/math].

Зависимость параметра от времени может быть, например, представлена в виде [math] \omega ^2 = \omega_{0} ^2(1+\varepsilon cos \omega t)[/math], где постоянная [math] \omega_{0} ^2[/math] - собственная частота колебаний при неизменных средних значениях параметров системы(например, частота свободных колебаний качелей при неподвижно стоящем на них человеке), а второе слагаемое описывает периодическое изменение параметров системы.

Будем считать человека материальной точкой, расстояние от которой до оси вращения может изменяться в некоторых небольших пределах "сознательно", то есть в нужные моменты времени. Для того, чтобы максимально увеличить механическую энергию колебаний, человек должен вставать, когда для этого требуется приложить максимальное усилие, так как при этом будет совершена максимальная работа. Очевидно, это условие достигается, когда качели проходят нижнюю точку.

Итак, пусть начальный угол отклонения качелей равен [math] \varphi_{0} [/math] и при этом максимальном отклонении центр масс находится на максимальной удалении [math] l [/math] от точки подвеса [math] O [/math].

Когда качели опустятся под действием силы тяжести в нижнее положение, рассматриваемая материальная точка приобретет скорость [math] v_{0} [/math], которую можно найти на основании закона сохранения энергии [math] \frac{mv_{0}^2}{2} = mgl(1 - cos \varphi_{0})[/math], из которого следует [math] v_{0} = sqrt\ {2gl (1 - cos \varphi_{0}) } [/math].

Далее пусть в момент прохождения нижней точки центр масс очень быстро поднимается на малую высоту [math] h [/math], при этом его скорость возрастает до некоторой величины [math] v_{1} [/math]. На основании закона сохранения импульса [math] mv_{0}l = mv_{1}(l-h) [/math]. Из этого уравнения находим [math] v_{1} = v_{0} \frac{l}{l-h} \approx v_{0} (1+\frac{h}{l})[/math], учитывая, что высота подъема [math] h [/math] значительно меньше длины качелей [math] l [/math].

Теперь с помощью закона сохранения энергии [math] mg(l-h)(1-cos \varphi_{1}) = \frac{mv_{1} ^2}{2} = \frac{mv_{0} ^2}{2} (\frac{l}{l-h}) ^2 = mgl(1-cos \varphi_{0}) (\frac{l}{l-h}) ^2 [/math] можно найти максимальный угол отклонения качелей [math] \varphi_{1} [/math] в противоположном направлении, который удовлетворяет условию [math] (1-cos \varphi_{1}) = (1-cos \varphi_{0})(\frac{l}{l-h}) ^3 [/math].

Оценим изменение высоты подъема за этот же промежуток времени

[math] \bigtriangleup z = l(1-cos \varphi_{1})-(1-cos \varphi_{0}) = l((\frac{l}{l-h})^3 - 1) \approx 3l \frac{h}{l} [/math].

Визуализация задачи[править]

Примечание: менять частоту необходимо во время прохождения нижнего положения.