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

Определение частоты малых свободных колебаний и формы главных колебаний системы с двумя степенями свободы. Основные виды и характеристики колебаний, расчет потенциальной энергии системы. Отличительные черты Three.js, особенности численного решения.

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

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

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

Размещено на http://www.allbest.ru/

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

Петра Великого

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

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

КУРСОВАЯ РАБОТА

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

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

В.Д.Тур

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

2018

СОДЕРЖАНИЕ

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

Виды и характеристики колебаний

Свободные колебания

1. Исследование свободных колебаний

1.1 Аналитическое решение задачи

1.2 Визуализация

1.3 Код

Заключение

Список использованных источников

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

Определить частоты малых свободных колебаний и формы главных колебаний системы с двумя степенями свободы, пренебрегая силами сопротивления, массами пружин и моментами инерции скручиваемых валов [1].

Дано:

Также даны массы и двух дисков и жесткости ,,трех пружин.

Виды и характеристики колебаний

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

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

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

Смещениеx от положения равновесия(координата) - физическая величина, которая изменяется со временем при колебательном движении.

АмплитудаА - это максимальное смещение колеблющегося объекта от положения равновесия.

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

Частота k- число колебаний за единицу времени.

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

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

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

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

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

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

Свободные колебания

В данной работе нас прежде всего интересуют свободные колебания.

Условия возникновения свободных колебаний:

1. При выведении тела из положения равновесия в системе возникает сила, направленная к положению равновесия и, следовательно, стремящаяся возвратить тело в положение равновесия.

2. Трение в системе достаточно мало, иначе колебания быстро затухнут или вовсе не возникнут. Незатухающие колебания возможны лишь при отсутствии трения.

1. Исследование свободных колебаний

1.1 Аналитическое решение задачи

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

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

Кинетическая энергия дисков состоит из кинетической энергии поступательного и вращательного движения.

Для первого диска:, при этом , исходя из отсутствия проскальзывания диска по поверхности. Поэтому . Для второго диска аналогично получается .

Кинетическая энергия системы:

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

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

Для каждой из обобщенной координат можно составить уравнение Лагранжа вида:

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

Будет искать решение этой однородной системы дифференциальных уравнений второго порядка в виде

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

Для существования нетривиального решения этой системы ее определитель должен быть нулевым:

Это выражение является квадратным уравнением относительно . Решив его, находим собственные частоты системы. Отношения амплитуд могут быть найдены из однородной системы уравнений:

Тогда общее решение однородного дифференциального уравнения:

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

Теперь можно построить графики для обобщенных координат или амплитуд или визуализировать данное решение с помощью какого-нибудь языка программирования и соответствующих библиотек.

1.2 Визуализация

Визуализировать данную задачу будем с помощью библиотеки Three.js.

Three.js -- легковесная кроссбраузерная библиотека JavaScript, используемая для создания и отображения анимированной компьютерной 3D графики при разработке веб-приложений. Three.js скрипты могут использоваться совместно с элементами HTML5 и WebGL.

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

WebGL (Web-basedGraphicsLibrary) -- программная библиотека для языка программирования JavaScript, позволяющая создавать на JavaScript интерактивную 3D-графику, функционирующую в широком спектре совместимых с ней веб-браузеров.

JavaScript-- мультипарадигменныйязыкhttps://ru.wikipedia.org/wiki/Язык_программированияпрограммирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией языка ECMAScript.JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.

Особенности Three.js:

· Рендеры: Canvas или WebGL.

· Сцена: добавление и удаление объектов в режиме реального времени.

· Камеры: перспективная или ортографическая.

· Анимация: каркасы, быстрая кинематика, обратная кинематика, покадровая анимация.

· Источники света: внешний, направленный, точечный; тени: брошенные и полученные.

· Объекты: сети, частицы, спрайты, линии, скелетная анимация и другое.

· Геометрия: плоскость, куб, сфера, тор, 3D текст и другое; модификаторы: ткань, выдавливание.

· Поддержка: документация по API библиотеки находится в процессе постоянного расширения и дополнения, есть публичный форум и обширное сообщество.

· Примеры: на официальном сайте можно найти более 150 примеров работы со шрифтами, моделями, текстурами, звуком и другими элементами сцены.

Библиотека Three.js работает во всех браузерах, которые поддерживают технологию WebGL, а также может работать с «чистым» интерфейсом элемента CANVAS, благодаря чему работает и на многих мобильных устройствах. Three.js распространяется под лицензией MIT license [2].

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

1.3 Код

Для визуализации данной задачи использовались файлы:

· three.js

· dat.gui.min.js

· stats.min.js

Код программы:

<!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>

</head>

<body>

<div id="Stats-output">

</div>

<div id="WebGL-output">

</div>

<script type="text/javascript">

function init(){

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(0xDDFFFF);

camera.position.set(-15,5,30);

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

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

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

renderer.shadowMap.enabled=true;

varrc=2,lc=1,bw=40,bh=3,n=20,sl=1.5;//размерыоснованийидисков

var base=new THREE.Mesh(new THREE.BoxGeometry(bw,bh,bh),new THREE.MeshLambertMaterial({color:0xF9FFF5}));//создаемоснование

varlbase=new THREE.Mesh(new THREE.BoxGeometry(bh,3*bh,bh),new THRE rtMaterial({color:0xF9FFF5}));//левыйблок

varrbase=new THREE.Mesh(new THREE.BoxGeometry(bh,3*bh,bh),new THREE.MeshLambertMaterial({color:0xF9FFF5}));//правыйблок

var disk1=new THREE.Mesh(new THREE.CylinderGeometry(rc,rc,lc,15,0),new THREE.MeshLambertMaterial({color:0xF9FFF5}));//создаемлевый(первый) диск

var disk2=new THREE.Mesh(new THREE.CylinderGeometry(rc,rc,lc,15,0),new THREE.MeshLambertMaterial({color:0xF9FFF5}));//создаемправый(второй) диск

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

}

//источникиосвещения

varambientLight=new THREE.AmbientLight(0x0F0F0F);

varspotLight=new THREE.SpotLight(0xFFFFFF);

//настраиваемтени

base.receiveShadow=true;

lbase.receiveShadow=true;

rbase.receiveShadow=true;

lbase.castShadow=true;

rbase.castShadow=true;

disk1.castShadow=true;

disk2.castShadow=true;

spotLight.castShadow=true;

//прикрепляемобъектыксцене

scene.add(base);

scene.add(lbase);

scene.add(rbase);

scene.add(disk1);

scene.add(disk2);

scene.add(ambientLight);

scene.add(spotLight);

//прикрепляемобъектыксцене

document.getElementById("WebGL-output").appendChild(renderer.domElement);

//создаемпользовательскийинтерфейс

var m1,m2,c1,c2,c3,speed;//параметрысистемы

var k1,k2,g1,g2;//собственныечастотыиотношенияамплитуд

var A11,A21,a1,a2;//начальныеусловиядляамплитудифаз

var x01,x02,v01,v02;//начальныеусловиядлясмещенийискоростей

var t=0,dt,fl=true;//обнулениевремени

varcnt=new function(){

this.dt=0.002;this.x01=-5;this.x02=5;this.v01=0;this.v02=0; this.m1=6; this.m2=4;his.c1=2000;this.c2=1000;this.c3=3000;

this.pause=function(){fl=false;}//функцияпаузы

this.resume=function(){fl=true;}//функцияснятияспаузы

this.redraw=function(){//функцияперезапуска

t=0;x01=cnt.x01;x02=cnt.x02;v01=cnt.v01;v02=cnt.v02;dt=cnt.dt;m1=cnt.m1;m2=cnt.m2;c1=cnt.c1;c2=cnt.c2;

c3=cnt.c3;init();

};

};

vargui=new dat.GUI();

gui.add(cnt,'dt',0,0.005);gui.add(cnt,'x01',-5,-rc);gui.add(cnt,'x02',rc,5);gui.add(cnt,'v01',-10,10);gui.add(cnt,'v02',-10,10);

gui.add(cnt,'m1',1,12);gui.add(cnt,'m2',1,12);gui.add(cnt,'c1',500,5000);gui.add(cnt,'c2',500,5000);

gui.add(cnt,'c3',500,5000);gui.add(cnt,'pause');gui.add(cnt,'resume');gui.add(cnt,'redraw');cnt.redraw();render();

function render(){

stats.update();

if(fl)t+=dt;//шагвременииобновлениерасположенийиориентацийдисков

disk1.position.x=x01-rc+A11*Math.sin(k1*t+a1)+A21*Math.sin(k2*t+a2);

disk2.position.x=x02+rc+g1*A11*Math.sin(k1*t+a1)+g2*A21*Math.sin(k2*t+a2);

disk1.rotation.y=(x01-rc-disk1.position.x)/rc;

disk2.rotation.y=(x02-rc-disk2.position.x)/rc;

for(var k=1;k<=3;k++){//обновлениезвеньевпружин

varxst,xfn;

if(k==1){xst=-bw/2;xfn=disk1.position.x-rc/2;}

if(k==2){xst=disk1.position.x+rc/2;xfn=disk2.position.x-rc/2;}

if(k==3){xst=disk2.position.x+rc/2;xfn=bw/2;}

var length=Math.abs(xfn-xst);

var h=length/n;

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

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

nexus.position.x=xst+i*h;

if(i%2==0)nexus.rotation.z=Math.asin(h/sl);

else nexus.rotation.z=-Math.asin(h/sl);

}

}

renderer.render(scene,camera);

requestAnimationFrame(render);

}

function init(){

var tk1=(c2+c3)/m2;//вспомогательныепараметры

var tk2=(c1+c2)/m1;

k1=Math.sqrt((tk1+tk2-Math.sqrt((tk1-tk2)*(tk1-tk2)+4*c2*c2/m1/m2))/3);//собственныечастотысистемы

k2=Math.sqrt((tk1+tk2+Math.sqrt((tk1-tk2)*(tk1-tk2)+4*c2*c2/m1/m2))/3);

g1=(1.5*m1*k1*k1-c1-c2)/c2;//отношенияамплитуд

g2=(1.5*m1*k2*k2-c1-c2)/c2;

a1=Math.atan(k1*(x02-g2*x01)/(v02-g2*v01));//начальныеусловияфаз

a2=Math.atan(k2*(x02-g1*x01)/(v02-g1*v01));

A11=(x02-g2*x01)/(g1-g2)/Math.sin(a1);//начальныеусловияамплитуд

A21=(x02-g1*x01)/(g2-g1)/Math.sin(a2);

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

lbase.position.set(-bw/2,0,0);

rbase.position.set(bw/2,0,0);

disk1.position.set(x01,rc+bh/2,0);

disk2.position.set(x02,rc+bh/2,0);

disk1.rotation.x=Math.PI/2;

disk2.rotation.x=Math.PI/2;

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+bh/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>

Заключение

Вданнойработеяпровелисследованиесвободныхколебанийсистемысдвумястепенямисвободы, азатемвизуализировалрешениеспомощьюбиблиотекиTHREE.js.

Полученныерезультатывыглядяттак:

Опции программы:

· dt - шагвремени, которыйопределяетскоростьанимации

· и ,и - начальныеположенияискоростидисков

· ,,,, - параметрысистемы

· Pause, resume, redraw - кнопкидляуправленияпрограммой

Список исползованных источников

1.ЯблонскийА.А. Сборникзадачдлякурсовыхработпотеоретическоймеханике: Учебное

пособиедлятехническихвузов. - 5-еизд., исправленное - М.: Интеграл-Пресс, 2000. - 384 с.

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

Packt Publishing, 2015. - 382 с.

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


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

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

    презентация [256,6 K], добавлен 13.11.2011

  • Цифровое представление звуковых сигналов. Устройства вывода звуковой информации: колонки, динамик и наушники. Устройства ввода звуковой информации. Частота и интенсивность звука. Амплитуда звуковых колебаний, мощность источника звука, диапазон колебаний.

    реферат [133,3 K], добавлен 08.02.2011

  • Исследование характера движения математического маятника в идеальных условиях, то есть без учёта сил сопротивления, что позволяет маятнику совершать гармонические колебания неограниченное количество времени. Рассмотрение алгоритма решения задачи на ЭВМ.

    курсовая работа [231,1 K], добавлен 07.03.2013

  • Стационарные решения уравнения теплопроводности в характерных точках внутри диапазона бистабильности, построение фазового портрета. Создание компьютерной модели динамики материальной точки в поле кольца Тора. Представление системы в виде 3D-анимации.

    курсовая работа [500,3 K], добавлен 26.12.2014

  • Разработка автоматизированной системы "Кадровое агентство" с целью оформления и принятия заявок от работников, желающих найти свободные вакансии, регистрации свободных вакансий. Автоматический поиск соответствий свободных вакансий и безработных граждан.

    курсовая работа [1,5 M], добавлен 05.07.2014

  • Характеристика процесса моделирования электронных схем. Описание интерфейса и основ установки программы Electronics Workbench, библиотеки компонентов. Примеры моделирования схем работы синтезатора, умножителя частоты, генератора синусоидальных колебаний.

    книга [5,6 M], добавлен 31.07.2015

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

    курсовая работа [939,4 K], добавлен 16.01.2014

  • Виды и отличительные характеристики типовых динамических звеньев системы автоматического управления. Описание временных и частотных характеристик САУ. Определение передаточной функции по структурной схеме. Оценка и управление устойчивостью системы.

    курсовая работа [611,8 K], добавлен 03.12.2009

  • Разработка электронного измерителя амплитуды УЗ-вибраций. Анализ методов и устройств для измерения УЗ-колебаний. Выбор функциональных элементов, материалов и деталей, расчет компоновочных характеристик. Технико-экономическое обоснование прибора.

    дипломная работа [109,0 K], добавлен 24.06.2010

  • Математическая формулировка задачи, принципиальная схема гидравлического демпфера. Структурная схема программы связи модулей, реализованной на языке высокого уровня Borland Delphi 7.0. Ее описание, руководство пользователя, особенности тестирования.

    курсовая работа [140,0 K], добавлен 29.05.2013

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