Исследование и визуализация свободных колебаний системы с двумя степенями свободы
Реализация решения задачи теоретической механики по нахождение уравнений движений систем с двумя степенями свободы. Моделирование с помощью средств языка программирования JS наглядной модели решенной задачи, отображающее свободные колебания системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.01.2020 |
Размер файла | 279,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Санкт-Петербургский политехнический университет Петра Великого
Институт прикладной математики и механики
Кафедра «Теоретическая механика»
КУРСОВАЯ РАБОТА
Исследование и визуализация свободных колебаний системы с двумя степенями свободы
по дисциплине «Языки программирования»
Выполнил студент гр. М.А. Ведров
Санкт-Петербург
2018
ВВЕДЕНИЕ
Колебания [2] - это движение тела, в ходе которого оно многократно движется по одной и той же траектории и проходит при этом одни и те же точки пространства. Примерами колеблющихся объектов могут служить - маятник часов, струна скрипки или фортепиано, вибрации автомобиля.
Колебания играют важную роль во многих физических явлениях за пределами области механики. Например, напряжение и сила тока в электрических цепях могут колебаться. Биологическими примерами колебаний могут служить сердечные сокращения, артериальный пульс и производство звука голосовыми связками.
Хотя физическая природа колеблющихся систем может существенно отличаться, разнообразные типы колебаний могут быть охарактеризованы количественно сходным образом. Физическая величина, которая изменяется со временем при колебательном движении, называется смещением. Амплитуда представляет собой максимальное смещение колеблющегося объекта от положения равновесия. Полное колебание, или цикл - это движение, при котором тело, выведенное из положения равновесия на некоторую амплитуду, возвращается в это положение, отклоняется до максимального смещения в противоположную сторону и возвращается в свое первоначальное положение. Период колебания T - время, необходимое для осуществления одного полного цикла. Число колебаний за единицу времени - это частота колебаний.
КЛАССИФИКАЦИЯ КОЛЕБАНИЙ
Различают несколько видов колебаний, зависящих от подчёркиваемых свойств колеблющихся систем (осцилляторов)
По физической природе:
* Механические (звук, вибрация)
* Электромагнитные (свет, радиоволны, тепловые)
* Смешанного типа -- комбинации вышеперечисленных
По характеру взаимодействия с окружающей средой:
* Вынужденные -- колебания, протекающие в системе под влиянием внешнего периодического воздействия. Примеры: листья на деревьях, поднятие и опускание руки. При вынужденных колебаниях может возникнуть явление резонанса: резкое возрастание амплитуды колебаний при совпадении собственной частоты осциллятора и частоты внешнего воздействия.
* Свободные (или собственные) -- это колебания в системе под действием внутренних сил после того, как система выведена из состояния равновесия (в реальных условиях свободные колебания всегда затухающие). Простейшими примерами свободных колебаний являются колебания груза, прикреплённого к пружине, или груза, подвешенного на нити.
* Автоколебания -- колебания, при которых система имеет запас потенциальной энергии, расходующейся на совершение колебаний (пример такой системы -- механические часы). Характерным отличием автоколебаний от вынужденных колебаний является то, что их амплитуда определяется свойствами самой системы, а не начальными условиями.
* Параметрические -- колебания, возникающие при изменении какого-либо параметра колебательной системы в результате внешнего воздействия.
* Случайные -- колебания, при которых внешняя или параметрическая нагрузка является случайным процессом.
БИБЛИОТЕКА THREE.JS
Three.js [3] -- легковесная кроссбраузерная библиотека JavaScript, используемая для создания и отображения анимированной компьютерной 3D графики при разработке веб-приложений. Three.js скрипты могут использоваться совместно с элементом HTML5 CANVAS, SVG или WebGL.
Three.js позволяет создавать ускоренную на GPU 3D графику, используя язык JavaScript как часть сайта без подключения проприетарных плагинов для браузера. Это возможно благодаря использованию технологии WebGL. Поддерживает трёхмерные модели формата Collada.
JavaScript -- мультипарадигменный язык программирования. Поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией языка ECMAScript (стандарт ECMA-262).
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты: динамическая типизация, слабая типизация, автоматическое управление памятью, прототипное программирование, функции как объекты первого класса.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
Особенности three.js:
* Рендереры: Canvas, SVG или WebGL
* Сцена: добавление и удаление объектов в режиме реального времени; туман
* Камеры: перспективная или ортографическая
* Анимация: каркасы, быстрая кинематика, обратная кинематика, покадровая анимация
* Источники света: внешний, направленный, точечный; тени: брошенные и полученные
* Шейдеры: полный доступ ко всем OpenGL шейдерам (GLSL)
* Объекты: сети, частицы, спрайты, линии, скелетная анимация и другое
* Геометрия: плоскость, куб, сфера, тор, 3D текст и другое; модификаторы: ткань, выдавливание
* Загрузчики данных: двоичный, изображения, JSON и сцена
* Экспорт и импорт: утилиты, создающие Three.js-совместимые JSON файлы из форматов: Blender, openCTM, FBX, 3D Studio Max, и Wavefront.obj файл
* Поддержка: документация по API библиотеки находится в процессе постоянного расширения и дополнения, есть публичный форум и обширное сообщество
* Примеры: на официальном сайте можно найти более 150 примеров работы со шрифтами, моделями, текстурами, звуком и другими элементами сцены
Библиотека Three.js работает во всех браузерах, которые поддерживают технологию WebGL; также может работать с «чистым» интерфейсом элемента CANVAS, благодаря чему работает и на многих мобильных устройствах. Three.js распространяется под лицензией MIT license.
ПОСТАНОВКА ЗАДАЧИ
Рис.1. Рисунок к задаче
Определить частоты малых свободных колебаний и формы главных колебаний системы с двумя степенями свободы, пренебрегая силами сопротивления, массами пружин и моментами инерции скручиваемых валов.
(Так как главной задачей в данной работе является в разработке компьютерной модели с регулируемыми условиями, поэтому мы будем искать решение в общем виде.)
Дано: (рис.1)
РЕШЕНИЕ ЗАДАЧИ
Вычисления проводятся относительно координат и , относящихся к валу 1 и 2 соответственно.
1. Кинетическая энергия
2. Потенциальная энергия
3. Коэффициенты инерции и жесткости
свободное колебание моделирование программирование
4. Система уравнений в виде Лагранжа 2-ого рода
Будем искать частное решение этой системы в виде
Получаем уравнения частот
Полученная система решается относительно k
Коэффициенты распределения
5. Главные колебания
Первые главные колебания
Вторые главные колебания
Общее решение
МОДЕЛИРОВАНИЕ В ПРОГРАММНОЙ СРЕДЕ JS [5]
При моделировании задачи были использованы библиотеки:
· Three.js
· graphicBuilder.js
· dat.gui.min.js
Данные (рис.2) регулируются с помощью библиотеки dat.gui.min.js. Данные оказывают влияние не только на прорисовку анимации движения валов, но и на графики (рис.3, 4), работающие за счёт библиотеки graphicBuilder.js.
Рис.2. Регулируемые данные
Рис.3. График по координате
Рис.4. График по координате
· Код отвечающий за данные:
const solution = new function () {
this.c1 = 20000;
this.c2 = 30000;
this.c3 = 10000;
this.R =.2;
this.t = 0;
this.dt =.7;
this.m1 = 50;
this.m2 = 60;
this.m3 = 40;
this.m4 = 50;
this.a11 =.5*(this.m1+this.m2)*Math.pow(this.R,2);
this.a22 =.5*(this.m3+this.m4)*Math.pow(this.R,2);
this.c11 = this.c1+this.c2/1.44;
this.c22 = this.c2/.81 + this.c3;
this.c12 = this.c2/(1.2*.9);
this.D = Math.sqrt(Math.pow(this.a11 * this.c22 + this.a22 * this.c11,2) -4 * this.a11 * this.a22 * (this.c11 * this.c22 - Math.pow(this.c12,2)));
this.k1 = '' + Math.sqrt((this.a11 * this.c22 + this.a22 * this.c11 + this.D)/(2*this.a11*this.a22));
this.k2 = '' + Math.sqrt((this.a11 * this.c22 + this.a22 * this.c11 - this.D)/(2*this.a11*this.a22));
this.p1 = -(this.c11 - this.a11*Math.pow(this.k1,2))/this.c12;
this.p2 = -(this.c11 - this.a11*Math.pow(this.k2,2))/this.c12;
let self = this;
this.redraw = function() {
self.t = 0;
ctx.clearRect(0,-242,500,500);
ctx1.clearRect(0,-242,500,500);
};
};
const gui = new dat.GUI();
gui.add(solution, 'm1',20,70).onChange(solution.redraw);
gui.add(solution, 'm2',20,70).onChange(solution.redraw);
gui.add(solution, 'm3',20,70).onChange(solution.redraw);
gui.add(solution, 'm4',20,70).onChange(solution.redraw);
gui.add(solution, 'c1',0,35000).onChange(solution.redraw);
gui.add(solution, 'c2',0,35000).onChange(solution.redraw);
gui.add(solution, 'dt',0,10).onChange(solution.redraw);
Рис.5. Движение валов
· Прорисовка движения валов (рис.5) и графиков:
animate = function () {
requestAnimationFrame(animate);
T = solution.dt;
solution.a11 =.5 * (solution.m1 + solution.m2) * Math.pow(solution.R, 2);
solution.a22 =.5 * (solution.m3 + solution.m4) * Math.pow(solution.R, 2);
solution.c11 = solution.c1 + solution.c2 / 1.44;
solution.c22 = solution.c2 /.81 + solution.c3;
solution.c12 = (1 / (1.2 *.9)) * solution.c2;
solution.D = Math.sqrt(Math.pow(solution.a11 * solution.c22 + solution.a22 * solution.c11, 2) - 4 * solution.a11 * solution.a22 * (solution.c11 * solution.c22 - Math.pow(solution.c12, 2)));
solution.k1 = '' + Math.sqrt((solution.a11 * solution.c22 + solution.a22 * solution.c11 + solution.D) / (2 * solution.a11 * solution.a22));
solution.k2 = '' + Math.sqrt((solution.a11 * solution.c22 + solution.a22 * solution.c11 - solution.D) / (2 * solution.a11 * solution.a22));
solution.p1 = -(solution.c11 - solution.a11 * Math.pow(solution.k1, 2)) / solution.c12;
solution.p2 = -(solution.c11 - solution.a11 * Math.pow(solution.k2, 2)) / solution.c12;
wheel_1.spin(solution, 1, 1, 1);
wheel_2.spin(solution, -1, 1.2, 1);
wheel_3.spin(solution, -1,.9, 2);
wheel_4.spin(solution, 1, 1, 2);
if (solution.t === 0) {
z = 0;
}
if (solution.t > 450) {
z -= T;
}
ctx.clearRect(0, 0, buffer.width, 400);
ctx.drawImage(GraphicBulider.bufferDraw(buffer, solution.t, T, Moving_parts.equation(solution, 1, 1, 1, solution.t - T), Moving_parts.equation(solution, 1, 1, 1, solution.t), 'red'), z, 0);
ctx1.clearRect(0, 0, buffer.width, 400);
ctx1.drawImage(GraphicBulider.bufferDraw(buffer1, solution.t, T, Moving_parts.equation(solution, 1, 1, 0, solution.t - T), Moving_parts.equation(solution, 1, 1, 0, solution.t), 'green'), z, 0);
solution.t += T;
renderer.render(scene, camera);
};
animate();
ЗАКЛЮЧЕНИЕ
В данной курсовой работе было реализовано решение задачи теоретической механики по нахождение уравнений движений систем с двумя степенями свободы, также с помощью средств языка программирования JS смоделировано наглядная модель решённой задачи.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Яблонский А. А. и др. Сборник заданий для курсовых работ по теоретической механике: Учебное пособие. - Высшая школа, 1985.
2. Алдошин Г. Т. Теория линейных и нелинейных колебаний: Учебное пособие. 2-е изд., стер. - 2013.
3. Флэнаган Д. JavaScript. Подробное руководство, 6-е издание //Санкт-Перетбург: Символ-Плюс. - 2012. - С. 21.
Размещено на Allbest.ru
...Подобные документы
Разработка, макетирование и реализация экспертной системы для решения задачи о коммивояжере, используя возможности языка Prolog. Составление графа "Карта Саратовской области" и решение проблемы поиска кратчайшего пути между двумя пунктами на карте.
курсовая работа [366,4 K], добавлен 12.05.2009Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.
курсовая работа [1,7 M], добавлен 05.01.2015Сущность и особенности языка программирования Си. Основные этапы алгоритма решения системы линейных алгебраических уравнений методом Гаусса, реализация программы для их расчета. Инструкции пользователя и программиста. Тестирование функции решения.
курсовая работа [153,9 K], добавлен 18.02.2013Логические конструкции в системе программирования Паскаль. Команды языка программирования, использование функций, процедур. Постановка и решение задач механики в среде системы Паскаль. Задачи статики, кинематики, динамики решаемые с помощью языка Паскаль.
курсовая работа [290,9 K], добавлен 05.12.2008Постановка задачи, математические и алгоритмические основы решения системы линейных алгебраических уравнений. Решение системы данных уравнений методом Гаусса с выбором главного элемента по столбцу. Функциональные модели и блок-схемы решения задачи.
курсовая работа [428,9 K], добавлен 25.01.2010Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.
курсовая работа [527,5 K], добавлен 25.01.2010Описание математической модели определения тока в электрической цепи с помощью решения системы алгебраических уравнений методом Гаусса. Описание и разработка блок-схемы программы. Ввод данных задачи, составление программы и анализ результатов решения.
контрольная работа [231,8 K], добавлен 15.08.2012Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы.
курсовая работа [19,5 K], добавлен 19.05.2011Этапы математического моделирования на компьютере. Выделение количественных характеристик моделируемой системы. Определение способа решения полученной математической задачи и реализация ее на компьютере с помощью прикладных программных средств.
презентация [1,2 M], добавлен 21.02.2012Восстановление математической модели задачи нелинейного программирования. Решение уравнений прямых. Метод линеаризации: понятие, особенности применения при решении задач. Нахождение точки максимума заданной функции. Решение задачи графическим методом.
задача [472,9 K], добавлен 01.06.2013Методы решения задач линейного программирования: планирования производства, составления рациона, задачи о раскрое материалов и транспортной. Разработка экономико-математической модели и решение задачи с использованием компьютерного моделирования.
курсовая работа [607,2 K], добавлен 13.03.2015Вывод системы дифференциальных уравнений. Описание методов численного решения задачи Коши. Моделирование переходных процессов в электрической цепи. Решение задачи аппроксимации. Расчет количества теплоты, выделившейся на резисторе, реализация в MathCAD.
курсовая работа [202,5 K], добавлен 11.11.2013Решение в среде Microsoft Excel с помощью программной модели "Поиск решения" транспортной задачи, системы нелинейных уравнений, задачи о назначениях. Составление уравнения регрессии по заданным значениям. Математические и алгоритмические модели.
лабораторная работа [866,6 K], добавлен 23.07.2012Выполнение арифметических операций, этапы решения задач с помощью ЭВМ - постановка задачи, составление алгоритма решения, программная реализация алгоритма в среде Qbasic. Решение систем линейных уравнений по формулам Крамера. Графический режим Qbasic.
курсовая работа [101,7 K], добавлен 29.09.2009Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.
курсовая работа [1,1 M], добавлен 21.03.2012Организационно-экономическая сущность задачи автоматизации библиотечной информационной системы. Режимы работы и информационная модель решения задачи, описание входной и выходной информации. Обоснование выбора языка программирования, алгоритм решения.
дипломная работа [448,5 K], добавлен 08.11.2010Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.
курсовая работа [1,5 M], добавлен 05.03.2013Теоретическая основа линейного программирования. Задачи линейного программирования, методы решения. Анализ оптимального решения. Решение одноиндексной задачи линейного программирования. Постановка задачи и ввод данных. Построение модели и этапы решения.
курсовая работа [132,0 K], добавлен 09.12.2008