Исследование и визуализация свободных колебаний системы с двумя степенями свободы

Исследование механической системы с двумя степенями свободы в случае свободных колебаний. Определение кинетической и потенциальной энергии системы. Вывод уравнений свободных колебаний; средства визуализации. Определение частот и форм колебаний системы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.01.2020
Размер файла 550,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Санкт-Петербургский политехнический университет Петра Великого

Институт прикладной математики и механики

Кафедра «Теоретическая механика»

КУРСОВая работа

по дисциплине «Языки программирования»

Исследование и визуализация свободных колебаний системы с двумя степенями свободы

Выполнил Д.А. Сызранцев

студент группы 23632/2

Руководитель асс. А.Ю. Панченко

Санкт-Петербург - 2018

Содержание

Введение

1. Вывод уравнений свободных колебаний системы

1.1 Средства визуализации

2. Решение задачи

2.1. Постановка задачи

2.2. Исследование свободных колебаний механической системы

3. Код программы

Заключение

Список использованной литературы

Введение

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

Выделение разных видов колебаний зависит от подчёркиваемых свойств систем с колебательными процессами.

По физической природе:

1. Механические (звук, вибрация).

2. Электромагнитные (свет, радиоволны, тепловые).

3. Смешанного типа -- комбинации вышеперечисленных.

По характеру взаимодействия с окружающей средой:

1. Вынужденные -- Колебания, которые вызываются переменным внешним воздействием, называют вынужденными колебаниями. Они характерны для неавтономных систем.

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

3. Автоколебания -- колебания, при которых система имеет запас потенциальной энергии, расходующейся на совершение колебаний (пример такой системы -- механические часы). Характерным отличием автоколебаний от вынужденных колебаний является то, что их амплитуда определяется свойствами самой системы, а не начальными условиями.

4. Параметрические -- колебания, которые вызываются изменением во времени параметров системы. Такие колебания возможны лишь в нестационарных системах.

5. Случайные -- колебания, при которых внешняя или параметрическая нагрузка является случайным процессом.

1. Вывод уравнений свободных колебаний системы

Пусть положение системы определяется обобщенными координатами и при система находится в устойчивом равновесии. Тогда кинетическую и потенциальную энергии системы с точностью до квадратов малых величин можно представить в виде:

где инерционные коэффициенты и квазиупругие коэффициенты -- величины постоянные.

Уравнения Лагранжа для рассматриваемой системы имеют вид:

Подставив в уравнения Лагранжа значения и получим следующие дифференциальные уравнения малых колебаний системы с двумя степенями свободы:

Будем искать решение уравнений в виде:

Уравнение частот, вытекающее из данной системы дифференциальных уравнений, имеет вид:

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

Определив значения из уравнения частот, находим два значения соответствующие каждому из главных колебаний:

Тогда уравнения, определяющие первое главное колебание, примут следующий вид:

Уравнения, определяющие второе главное колебание, примут вид:

Общее решение системы дифференциальных уравнений (2.2) получается путем суммирования частных решений:

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

1.1 Средства визуализации

JavaScript -- это полноценный динамический язык программирования, который применяется к HTML документу, и может обеспечить динамическую интерактивность на веб-сайтах. Его разработал Brendan Eich, сооснователь проекта Mozilla, Mozilla Foundation и Mozilla Corporation.

JavaScript невероятно универсален. Используя данный язык программирования, вы сможете создавать игры, анимированную 2D и 3D графику, полномасштабные приложения с базами данных и многое другое.

JavaScript сам по себе довольно компактный, но очень гибкий. Разработчиками написано большое количество инструментов поверх основного языка JavaScript. К ним относятся библиотеки three.js, dat.GUI и stats которые были использованы в данной работе.

three.js - кроссбраузерная библиотека, которая позволяет создавать ускоренную на GPU 3D графику, используя язык JavaScript. Построенная таким образом графика обрабатывается как часть сайта без подключения проприетарных плагинов для браузера. Это возможно благодаря использованию технологии WebGL.

dat.GUI - панель управления, которая может пригодится для быстрой настройки приложения путём изменения исходных параметров.

stats - вспомогательная библиотека, которая предоставляет информацию о частоте кадров, с которой работает анимация.

2. Решение задачи

2.1 Постановка задачи

Стержень покоится на трёх пружинах, жёсткости которых равны = 20 Н/см, = 30 Н/см и = 40 Н/см. Масса стержня = 6кг, длина стержня = 0,5 м. Определить частоты малых свободных колебаний и формы главных колебаний системы с двумя степенями свободы при выведении системы из состояния равновесия, пренебрегая силами сопротивления и массами пружин.

Рис. 1. Колебательная система

2.2 Исследование свободных колебаний механической системы

В состоянии покоя стержень занимает горизонтальное положение. Пружины с коэффициентами жесткости и деформированы соответственно на величины и . Пружина с коэффициентом жесткости растянута на величину .

За обобщенные координаты примем: - вертикальное смещение груза от положения покоя, - угол поворота стержня от положения покоя.

Найдем кинетическую и потенциальную энергии системы. Кинетическая энергия системы полностью определяется кинетической энергией стержня:

где - обобщённые скорости; - момент инерции стержня.

Момент инерции:

Потенциальная энергия системы равна работе сил при перемещении системы из отклоненного положения в нулевое (положение статического равновесия). Потенциальную энергию системы вычислим как сумму:

где - потенциальная энергия груза и рычага в поле сил тяжести; - потенциальная энергия деформированных пружин.

где - статические деформации пружин; - перемещения точек крепления пружин.

После подстановки в уравнение для и упрощения, получим:

Потенциальная энергия всей системы:

Из условий покоя рассматриваемой системы, находящейся под действием сил, имеющих потенциал, имеем:

Потенциальная энергия системы с учетом условий покоя имеет вид:

Таким образом,

Или

где - коэффициенты инерции:

- коэффициенты жёсткости:

Для рассматриваемой системы уравнения Лагранжа имеют вид:

Вычислив производные и подставив их в уравнения Лагранжа, получим:

свободный колебание визуализация механический система

где .

Частное решение этих уравнений:

Уравнение частот, вытекающее из этой системы уравнений имеет вид:

Корни этого биквадратного уравнения, соответствующие квадратам частот, определим по формулам:

Следовательно, частоты свободных колебаний:

Коэффициенты распределения, соответствующие частотам и , в общем случае имеют вид:

Уравнения, определяющие первое главное колебание:

Уравнения, определяющие второе главное колебание:

Общее решение дифференциальных уравнений представляет собой сумму частных решений:

находим из начальных условий.

3. Код программы

<!DOCTYPE html>

<html>

<head>

<title>Example 01.03 - Materials and light</title>

<script type="text/javascript"

src="http://tm.spbstu.ru/htmlets/libs/three.min.js"></script>

<script type="text/javascript"

src="http://tm.spbstu.ru/htmlets/libs/stats.min.js"></script>

<script type="text/javascript"

src="http://tm.spbstu.ru/htmlets/libs/dat.gui.min.js"></script>

<style>

body{

margin: 0;

overflow: hidden;

}

</style>

</head>

<body>

<div id="Stats-output">

</div>

<div id="WebGL-output">

</div>

<script type="text/javascript">

var stats=initStats();

var scene=new THREE.Scene();

var camera=new

THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1

,1000);

var renderer=new THREE.WebGLRenderer();

scene.background=new THREE.Color(0xEEEEEE);

camera.position.set(0,0,15);

camera.lookAt(new THREE.Vector3(0,0,0));

renderer.setClearColor(new THREE.Color(0xFFFFFF,1.0));

renderer.setSize(window.innerWidth, window.innerHeight);

renderer.shadowMap.enabled=true;

var material1 = new THREE.MeshPhongMaterial( {

color: 0x156289,

emissive: 0x072534,

side: THREE.DoubleSide,

flatShading: true

} )

var material2 = new THREE.MeshPhongMaterial( {

color: 0xF9FFF5,

emissive: 0x072534,

side: THREE.DoubleSide,

flatShading: true

} )

var rc=0.2,lc=5,n=20,by=-5,sl=0.7;

var rod=new THREE.Mesh(new

THREE.CylinderGeometry(rc,rc,lc,32,0),material1);

var base=new THREE.Mesh(new

THREE.BoxGeometry(lc,0.7,0.7),material2);

base.position.set(0,by,0);

for(var k=1;k<=3;k++)

for(var i=0;i<=n;i++)

{

var nexus=new THREE.Mesh(new

THREE.CylinderGeometry(0.05,0.05,sl),new

THREE.MeshLambertMaterial({color:0xF9FFF5}));

nexus.name=k+"-"+i;

nexus.castShadow=true;

scene.add(nexus);

}

var ambientLight=new THREE.AmbientLight(0x0F0F0F);

var spotLight=new THREE.SpotLight(0xFFFFFF);

rod.castShadow=true;

spotLight.castShadow=true;

scene.add(base);

scene.add(rod);

scene.add(ambientLight);

scene.add(spotLight);

document.getElementById("WebGL-

output").appendChild(renderer.domElement);

var l,m,g,c1,c2,c3;

var k1,k2,mu1,mu2;

var A1,A2,b1,b2;

var y0,f0,v0,w0;

var a11,a12,a22;

var c11,c12,c22;

var Y,F;

var t=0,dt,fl=true;

var cnt=new function()

{

this.dt=0.002;

this.y0=0.5;

this.f0=5;

this.v0=0.5;

this.w0=0.5;

this.l=1;

this.m=6;

this.g = 9.8;

this.c1=2000;

this.c2=3000;

this.c3=4000;

this.a11 = this.m;

this.a12 = 0;

this.a22 = (this.m*Math.pow(this.l,2))/3;

this.c11 = this.c1+this.c2+this.c3;

this.c12 = (this.c1+this.c2/2-this.c3)*this.l;

this.c22 = (this.c1+this.c2/4+this.c3)*Math.pow(this.l,2);

this.Y = this.m*this.g/(this.c1+this.c2+this.c3);

this.F = (Math.asin(2*this.m*this.g/(Math.pow(this.l,2)*(this.c3-this.c2/4-

this.c1))))/2

this.pause=function(){fl=false;}

this.resume=function(){fl=true;}

this.redraw=function()

{

t=0;

y0=cnt.y0;

f0=Math.PI*cnt.f0/180;

v0=cnt.v0;

w0=cnt.w0;

dt=cnt.dt;

l=cnt.l;

m=cnt.m;

c1=cnt.c1;

c2=cnt.c2;

c3=cnt.c3;

a11=cnt.a11;

a12=cnt.a12;

a22=cnt.a22;

c11=cnt.c11;

c12=cnt.c12;

c22=cnt.c22;

Y=cnt.Y;

F=cnt.F;

scene.remove(rod);

scene.remove(base);

rod=new THREE.Mesh(new

THREE.CylinderGeometry(rc,rc,l*10,32,0),material1);

base=new THREE.Mesh(new

THREE.BoxGeometry(l*10+2,0.7,0.7),material2);

base.position.set(0,by,0);

scene.add(rod);

scene.add(base);

init();

};

};

var gui=new dat.GUI();

gui.add(cnt,'dt',0.001,0.005);

gui.add(cnt,'y0',-1,1);

gui.add(cnt,'f0',-15,15);

gui.add(cnt,'v0',-0.7,0.7);

gui.add(cnt,'w0',-0.7,0.7);

gui.add(cnt,'l',0.5,2);

gui.add(cnt,'m',1,12);

gui.add(cnt,'c1',500,10000);

gui.add(cnt,'c2',500,10000);

gui.add(cnt,'c3',500,10000);

gui.add(cnt,'pause');

gui.add(cnt,'resume');

gui.add(cnt,'redraw');

cnt.redraw();

render();

function render()

{

stats.update();

if(fl)t+=dt;

var yt = Y+A1*Math.sin(k1*t+b1)+A2*Math.sin(k2*t+b2);;

var ft = F+mu1*A1*Math.sin(k1*t+b1)+mu2*A2*Math.sin(k2*t+b2);

rod.position.y=yt;

rod.rotation.z=ft+Math.PI/2;

for(var k=1;k<=3;k++)

{

var ys,yf,xs,xf;

if(k==1){

ys=by;

yf=yt-5*l*Math.sin(ft);

xs = -5*l;

xf = -5*l*Math.cos(ft);

}

if(k==2){

ys=by;

yf=yt-5*l*Math.sin(ft)/2;

xs = -5*l/2;

xf = -5*l*Math.cos(ft)/2;

}

if(k==3){

ys=by;

yf=yt+5*l*Math.sin(ft);

xs = 5*l;

xf = 5*l*Math.cos(ft);

}

var lengty=Math.abs(ys-yf);

var lengtx=Math.abs(xs-xf);

var dly=lengty/(n+1);

var dlx=lengtx/(n+1);

for(var i=0;i<=n;i++)

{

var nexus=scene.getObjectByName(k+"-"+i);

nexus.position.y=ys+(i+1/2)*dly;

if ((k==1)||(k==2)){

nexus.position.x=xs+i*dlx;

}else{

nexus.position.x=xs-i*dlx;

}

if ((k==2)||(k==3)){

if(i%2==0)nexus.rotation.z=Math.acos(Math.sqrt(Math.pow(dly,2)+Math.po

w(dlx,2))/sl);

else nexus.rotation.z=-

Math.acos(Math.sqrt(Math.pow(dly,2)+Math.pow(dlx,2))/sl);

}else{

if(i%2==0)nexus.rotation.z=-

Math.acos(Math.sqrt(Math.pow(dly,2)+Math.pow(dlx,2))/sl);

else

nexus.rotation.z=Math.acos(Math.sqrt(Math.pow(dly,2)+Math.pow(dlx,2))/s

l);

}

}

renderer.render(scene,camera);

requestAnimationFrame(render);

}

function init()

{

k1 = Math.sqrt((a11*c22+a22*c11-

Math.sqrt(Math.pow(a11*c22+a22*c11,2)-4*a11*a22*(c11*c22-

Math.pow(c12,2))))/(2*a11*a22));

k2 =

Math.sqrt((a11*c22+a22*c11+Math.sqrt(Math.pow(a11*c22+a22*c11,2)-

4*a11*a22*(c11*c22-Math.pow(c12,2))))/(2*a11*a22));

mu1 = -(c11-a11*Math.pow(k1,2))/(c12-a12*Math.pow(k1,2));

mu2 = -(c11-a11*Math.pow(k2,2))/(c12-a12*Math.pow(k2,2));

if ((f0==0)&&(y0==0)&&(w0==0)&&(v0==0)){

b1=Math.atan(k1*(1-mu2)/(1-mu2));

b2=Math.atan(k2*(1-mu1)/(1-mu1));

}else{

b1=Math.atan(k1*(f0-mu2*y0)/(w0-mu2*v0));

b2=Math.atan(k2*(f0-mu1*y0)/(w0-mu1*v0));

}

if ((f0==0)&&(y0==0)&&(b1==0)){

A1=(Math.sqrt(Math.pow((w0-mu2*v0),2)+Math.pow((k1*(f0-

mu2*y0)),2)))/((mu1-mu2)*k1);

}else{

A1=(f0-mu2*y0)/(mu1-mu2)/Math.sin(b1);

}

if ((f0==0)&&(y0==0)&&(b2==0)){

A2=(Math.sqrt(Math.pow((w0-mu1*v0),2)+Math.pow((k2*(f0-

mu1*y0)),2)))/((mu2-mu1)*k2);

}else{

A2=(f0-mu1*y0)/(mu2-mu1)/Math.sin(b2);

}

rod.position.set(0,y0,0);

rod.rotation.z=Math.PI/2+f0;;

spotLight.position.set(50,60,50);

for(var k=1;k<=3;k++)

for(var i=0;i<=n;i++)

{

var nexus=scene.getObjectByName(k+"-"+i);

nexus.position.set(0,rc+0.7/2,0);

}

}

function initStats()

{

var stats = new Stats();

stats.setMode(0);

stats.domElement.style.position='absolute';

stats.domElement.style.left='0px';

stats.domElement.style.top='0px';

document.getElementById("Stats-output").appendChild(stats.domElement);

return stats;

}

window.onload=init;

</script>

</body>

</html>

Заключение

В рамках курсовой работы было проведено исследование механической системы с двумя степенями свободы в случае свободных колебаний. Были найдены частоты малых колебаний и формы главных колебаний системы.

Результаты визуализации:

Список использованной литературы

1. Ландау Л.Д., Лифшиц Е.М. Теоретическая физика: Учеб. пособие.-- В 10-ти т. Т. I. Механика. -- 4-е изд., испр. -- М.: Наука. Гл. ред. физ.-мат. лит., 1988.--216 с.

2. Яблонский А.А., Норейко С.С. Сборник заданий для курсовых работ по теоретической механике: Учебное пособие для технических вузов. - 5-е изд., исправленное - М.: Интеграл-Пресс, 2000. - 384с.

3. Dirksen J. - «Learning Three.js. The JavaScript 3D Library for WebGL (2nd Edition) - М.

Размещено на allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.