51 lines
1.4 KiB
Matlab
51 lines
1.4 KiB
Matlab
% === Problem 1: Simulation of the responce ===
|
|
|
|
% Parameters
|
|
m = 0.75;
|
|
L = 1.25;
|
|
c = 0.15;
|
|
g = 9.81;
|
|
A0 = 4;
|
|
omega = 2;
|
|
|
|
% Time span for 20s simulation
|
|
tspan = [0 20];
|
|
dt = 1e-4;
|
|
t_eval = 0:dt:20;
|
|
|
|
% ODE Function
|
|
odefun = @(t, x) [
|
|
x(2);
|
|
(1/(m*L^2)) * (A0*sin(omega*t) - c*x(2) - m*g*L*x(1))
|
|
];
|
|
|
|
x0 = [0; 0]; % Initial conditions
|
|
[t, x] = ode45(odefun, t_eval, x0); % Solve
|
|
|
|
% Plots for 20 sec
|
|
figure('Name', 'System responce', 'Position', [100, 100, 1280, 860]);
|
|
subplot(2,1,1);
|
|
plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία');
|
|
subplot(2,1,2);
|
|
plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα');
|
|
saveas(gcf, 'output/Prob1_responce_20s.png');
|
|
|
|
% === Sampling for Problem 2 ===
|
|
Ts = 0.1; % Sampling period
|
|
sample_data(t, x, Ts, A0, omega, 'output/problem1_data.csv');
|
|
|
|
% --- Extended simulation to 90 sec ---
|
|
tspan = [0 90];
|
|
t_eval = 0:dt:90;
|
|
|
|
x0 = [0; 0];
|
|
[t, x] = ode45(odefun, t_eval, x0);
|
|
|
|
% Plots for 90 sec
|
|
figure('Name', 'System responce', 'Position', [100, 100, 1280, 860]);
|
|
subplot(2,1,1);
|
|
plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία');
|
|
subplot(2,1,2);
|
|
plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα');
|
|
saveas(gcf, 'output/Prob1_responce_90s.png');
|