Die Differentialgleichung für einen gedämpften Oszillator wird mit verschieden starken Dämpfungsfaktoren mehrmals numerisch gelöst. Die resultierenden Schwingungen werden im Fortschreiten zu immer stärkerer Dämpfung gezeigt.
%function voidbk = dmposcfilms(varargin)
voidbk = 0;
% dmposcfilms.m animierte Simulation eines
% ged\"ampften Oszillators mit variabler D\"ampfung
% uses ode45 and dmposcpar
figure(1); clf
yin = [0 8.5]';
global EFREQ
global OSCDAMP
EFREQ = 1.59;
hdax = plot([-10 10], [0 0],'k');
axis([-10 10 -10 10]);
hold on;
axis off
hdtxdm = text(-8.5, 9.5,'Daempfungs-Wirkung', ...
'FontUnits','points','FontSize',16 , ...
'Fontweight','demi');
%
dmp = [ 0.004 , 0.012, 0.03, 0.04, 0.06, 0.08, 0.1, ...
0.15, 0.2 ,0.3, 0.4, 0.6, 0.8, 1.1, 1.6, 2.1, 3.2, 6.4, 12];
oldhd = 0;
voldhd = 0;
%
OSCDAMP = 0;
[tsol, ysol] = ode45('dmposcpar', 20 , yin);
hdnodmp = plot(tsol-10,ysol(:,2),'k');
%
xhd = 0;
for k=1:19
OSCDAMP = dmp(k);
% diag k;
[tsol, ysol] = ode45('dmposcpar', 20 , yin);
% nhd = plot(tsol-10,ysol(:,2),'r');
if k>2
delete(zhd)
end
% Farbwechsel
if k>1
delete(olhd)
xhd = plot(tol-10,yol(:,2),'b','LineWidth',2);
end
nhd = plot(tsol-10,ysol(:,2),'r', 'LineWidth',2);
zhd = xhd;
tol = tsol; yol = ysol;
olhd = nhd;
pause(0.6)
end
% deriv = dmposcpar(t,yac) Ableitung gedaempfter Oszillator % EFREQ und OSCDAMP ausserhalb vordefinieren function deriv = dmposcpar(t,yac) global EFREQ ; global OSCDAMP w = EFREQ; d = OSCDAMP; deriv = zeros(2,1); deriv(1) = yac(2); deriv(2) = -d*yac(2) -w*w*yac(1) ;