Форум программистов, компьютерный форум, киберфорум
Моделирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
1

Моделирование пружинного маятника в MATLAB

07.11.2021, 07:13. Показов 3439. Ответов 10

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

Тема: колебания вертикального пружинного маятника в вязкой среде
Задачи:
1. Определить зависимость времени затухания колебаний маятника от жёсткости пружины.
2. Определить зависимость времени затухания колебаний маятника от его массы.
3. Определить зависимость времени затухания колебаний маятника от начального отклонения.
4. Определить зависимость периода колебания маятника от коэффициента сопротивления и при каком коэффициенте сопротивления колебания маятника отсутствуют.
5. Нарисовать фазовую диаграмму для исходных значений.

Из всего этого знаю только о колебаниях маятника из курса школьной программы, а тут такая тема курсовой. Буду рада любой помощи
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2021, 07:13
Ответы с готовыми решениями:

Моделирование колебаний пружинного маятника
Помогите смоделировать колебания пружынного маятника в матлабе. А то я с матлабом не дружу.

Моделирование вынужденных колебаний пружинного маятника
Тело массой m, закрепленное на пружине жесткостью k, совершает вынужденные колебания под действием...

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

Моделирование движения пружинного маятника на наклонной плоскости
Здравствуйте, необходима del] бесплатная помощь с Scilab Xcos. Необходимо смоделировать траекторию...

Создание пружинного маятника
Глупая ситуация, обещал девушке помочь с курсовой при том что я вообще не понимаю программирования...

10
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
08.11.2021, 09:53 2
Привет!
Могу помочь с матлабом, но для этого нужно где-то раздобыть диф.уравнения этого самого маятника именно для вязкой среды.
0
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
11.11.2021, 16:48  [ТС] 3
Зосима,
Спасибо большое за отзывчивость :з
Нашла вот такие источника: лабник и сайт по зондированию
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
12.11.2021, 19:31 4
Лучший ответ Сообщение было отмечено MAustin как решение

Решение

MAustin, я тут набросал кое-что.
Значения параметров взял от балды, но в целом похоже на правду),

Нажми меня!
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
clear, clc
global k m r
k = 200; % жесткость пружины
m = 0.5; % масса
r = 0.8; % коэффициент сопротивления
tk = [0 20]; % интервал времени наблюдения
x0 = [0.2, 0]; % начальные условия (координата и скорость)
 
%% исходное решение при типовых значениях параметров
[t,x] = ode45(@dsys,tk,x0); % решаем ДУ
figure(1)
plot(t, x(:,1))
grid on
title('График колебаний маятника')
xlabel('Время, с')
ylabel('Координата х, м')
xlim([0 8]) % для наглядности
 
%% 1. Определить зависимость времени затухания колебаний маятника от жёсткости пружины.
k_list = 10:50:500; % набор значений жесткости
tau = zeros(size(k_list)); % заготовка из нулей
for i = 1:length(k_list) 
    k = k_list(i); 
    [t,x] = ode45(@dsys,tk,x0);
    % определяем время затухания по уровню 5%:
    A = abs( x(:,1) ); % значения по модулю
    mA = max(A); % максимальное значение
    % находим один последний элемент, который больше 5% от максимума:
    id = find( A>=0.05*mA, 1, 'last' );
    tau(i) = t(id); % сохраняем в массив
end
figure(2)
plot(k_list, tau,'.-')
grid on
title({'Зависимость времени затухания колебаний', 'от жёсткости пружины'})
xlabel('Жесткость, k') 
ylabel('Время затухания \tau, с')
ylim([0 5]) % для наглядности
 
%% 2. Определить зависимость времени затухания колебаний маятника от его массы.
k = 200; % возвращаем типовое значение
m_list = 0.05:0.1:2; % набор значений массы
tau = zeros(size(m_list));
for i = 1:length(m_list)
    m = m_list(i);
    [t,x] = ode45(@dsys,tk,x0);
    % определяем время затухания по уровню 5%:
    A = abs( x(:,1) );
    mA = max(A);
    id = find( A>=0.05*mA, 1, 'last' );
    tau(i) = t(id);
end
figure(3)
plot(m_list, tau,'.-')
grid on
title({'Зависимость времени затухания колебаний', 'от его массы'})
xlabel('Масса, m') 
ylabel('Время затухания \tau, с')
 
%% 3. Определить зависимость времени затухания колебаний маятника от начального отклонения.
m = 0.5;
x0_list = 0.05:0.1:2; % набор значений начального отклонения
tau = zeros(size(x0_list));
for i = 1:length(x0_list)
    [t,x] = ode45(@dsys,tk,[x0_list(i), 0]);
    % определяем время затухания по уровню 5%:
    A = abs( x(:,1) );
    mA = max(A);
    id = find( A>=0.05*mA, 1, 'last' );
    tau(i) = t(id);
end
figure(4)
plot(x0_list, tau,'.-')
grid on
title({'Зависимость времени затухания колебаний', 'от начального отклонения'})
xlabel('Начальное отклонение х0, м') 
ylabel('Время затухания \tau, с')
ylim([0 5])
 
%% 4. Определить зависимость периода колебания маятника от коэффициента сопротивления.
r_list = 0.1:0.5:50; % набор значений коэффициента сопротивления
T = zeros(size(r_list));
for i = 1:length(r_list)
    r = r_list(i);
    [t,x] = ode45(@dsys,tk,x0);
    % определяем период колебаний:
    A = x(:,1); % значения координаты
    % находим 2 самых крупных пика, ставим ограничение на высоту пиков
    % 10^-5, чтобы не мешали шумы
    [pks,locs] = findpeaks(A,t,'NPeaks',2,'SortStr','descend','MinPeakHeight',10^-5);
    if length(locs)==2 % если два максимума
        T(i) = locs(2)-locs(1); % сохраняем время между ними
    else % если пик один, значит колебания кончились
        T(i:end) = nan;
        disp('Колебания отсутствуют, когда коэффициент сопротивления более:')
        disp(r) % выводим значение
        break % выходим из цикла
    end
end
figure(5)
plot(r_list, T,'.-')
grid on
title({'Зависимость периода колебаний', 'от коэффициента сопротивления'})
xlabel('Коэффициент сопротивления, r') 
ylabel('Период Т, с')
ylim([0, 0.5])
 
 
%% 5. Нарисовать фазовую диаграмму для исходных значений.
r = 0.8; % коэффициент сопротивления (как было в начале)
[t,x] = ode45(@dsys,tk,x0); 
figure(6)
plot(x(:,1), x(:,2))
grid on
title('Фазовая диаграмма')
xlabel('Координата х, м') 
ylabel('Скорость v, м/с')
 
 
 
% % % фнукиця системы % % %
function dx = dsys(t,x)
global k m r
v = x(2); % скорость (v=x')
beta = r/(2*m); % коэффициент затухания
w0 = sqrt(k/m); % собственная частота
dx(1,1) = v; % x' = v
dx(2,1) = -2*beta*v - w0^2*x(1); % x'' = -2*beta*x' - w0^2*x
end
1
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
12.11.2021, 21:13  [ТС] 5
Зосима, боже-боже-боже. Огромное спасибо! Безмерно благодарю

Добавлено через 10 минут
Зосима, ещё вопрос возник. На основе какого из сайтов всё-таки код? Чтобы оформить всю теоретическую часть не от балды
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
13.11.2021, 11:46 6
MAustin, первый, srudfile, я оттуда взяд дифуравнение.
1
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
29.11.2021, 14:10  [ТС] 7
Зосима, преподавателю совсем не нравятся графики в пунктах 1 и 3. Там действительно странно, что жёсткость и начальное отклонение не влияют на время затухания. Подскажи, пожалуйста, что с этим можно сделать?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
30.11.2021, 11:00 8
MAustin, а почему оно должно зависеть?
Коэффициент затухания равен beta = r/(2*m) - зависит только от сопротивления r и массы m.
0
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
30.11.2021, 21:05  [ТС] 9
Зосима, вполне возможно я очень сильно туплю, но просто завтра днём защиту поставили, и я ловлю огромную панику от кучи замечаний преподавателя
Вопрос в следующем. Если наш коэффициент затухания (а значит и время затухания) зависит прямо пропорционально от сопротивления и обратно - от массы, то почему тогда по графику второго задания (зависимость времени затухания колебаний маятника от его массы) зависимость прямо пропорциональная, а не наоборот?
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
02.12.2021, 06:32 10
Эх, поздно заметил, наверное уже не актуально, но всё же - чем больше коэффициент затухания, тем быстрее уменьшаются колебания, тем время затухания меньше! То есть Время затухания обратнопропоруионально коэффициенту и соответсвенно оно прямопропорционально массе и обратнопропорционально коэф. трения.
0
0 / 0 / 0
Регистрация: 07.11.2021
Сообщений: 8
02.12.2021, 15:16  [ТС] 11
Зосима, я успела разобраться, так что вопрос потерял актуальность. А защиту перенесла
Спасибо большое за помощь! :з
0
02.12.2021, 15:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2021, 15:16
Помогаю со студенческими работами здесь

Имитация пружинного маятника
Помогите с формулой,не могу понять как можно сделать движение пружинного маятника по оси OX,я могу...

Определить амплитуду пружинного маятника
Если груз массой 5,2кг, подвешенный на пружине жесткостью 51Н/см, совершает свободные колебания, то...

Создание горизонтального пружинного маятника
Помогите мне пожалуйста сделать программу горизонтального пружинный маятник с расчетом силы трения...

Гармонические колебания пружинного маятника
Груз массой m=1,095кг , подвешенный к пружине жесткостью к=1,2Н/м , совершает незатухающие...

Вертикальные колебания пружинного маятника!
Написать прогу чтоб маятник был вертикально и ходил вниз и в верх на пружинке :good: помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru