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) ;