
% Oppgave 5.2

% Definisjon av diverse parametere

m = 0.2533;
k = 10.0;

omega_n = sqrt(k/m)

p_0 = 10;
t_d = 0.6;
omega = pi/t_d
t_total = 5.0;
delta_t = 0.1;


% Definisjon av antall diskrete tidspunkter
% 'round' betyr at resultater rundes av til nærmeste heltall

ant_pkt = round(t_total/delta_t) + 1


% Initialisering av konstanter som inngår i metoden fra seksjon 5.2

A = cos(omega_n*delta_t);
B = sin(omega_n*delta_t)/omega_n;
C = (1 - cos(omega_n*delta_t))/(2*k);
D = (1 - cos(omega_n*delta_t))/(2*k);

A_mark = -omega_n*sin(omega_n*delta_t);
B_mark = cos(omega_n*delta_t);
C_mark = sin(omega_n*delta_t)*omega_n/(2*k);
D_mark = sin(omega_n*delta_t)*omega_n/(2*k);


% Deklarasjon vektorer (eller  n x 1-matriser) for diskrete tidspunkter,
% lastverdier, samt verdier for u og u_dot.
% 'zeros' betyr at vektoren fylles med 0-er.

t = (0:delta_t:t_total);
load = zeros(1,ant_pkt);

u = zeros(1,ant_pkt);
u_dot = zeros(1,ant_pkt);


% Løkke for beregning av lastvektoren

for i = 1:ant_pkt

  if t(i) > t_d
    load(i) = 0;
  else
    load(i) = p_0*sin(omega*t(i));
  end

end
  

% Løsning av svingelikningen vha metoden fra seksjon 5.2
% t = 0 => u(1) = 0, u_dot(1) = 0; initialverdier - 
% oppfylt av initialiseringen ovenfor

% Løkke for beregning av løsningen

for i = 1:(ant_pkt-1)

  u(i+1) = A*u(i) + B*u_dot(i) + C*load(i) + D*load((i+1));
  u_dot(i+1) = A_mark*u(i) + B_mark*u_dot(i) + C_mark*load(i) + D_mark*load(i+1);

end
  

% Plotting av løsningen

plot(t,u)
xlabel('tid')
ylabel('forskyvning')
title('Svingelikning med impulslast og uten dempning')



