Aufgabe 2.7 – Anfangswertproblem (Differentialgleichung)

 

Gegeben sei die Differentialgleichung (DG) einer gedämpften Schwingung:

\ddot x\left( t \right)+2\gamma \dot x\left( t \right)+{\omega ^2}x\left( t \right) = 0

mit der dämpfungsfreien Eigenfrequenz \omega und dem Reibungskoeffizienten \gamma. Im Folgenden soll durch numerische Integration nach dem Runge-Kutta-Verfahren eine Lösung für die DG im Bereich 0 \leq t \leq 10 berechnet und dargestellt werden. Die Anfangswerte seien x\left( 0 \right) = 0 und \dot x\left( 0 \right) = 1.
Dazu wird die gegebene DG 2. Ordnung zunächst in ein System aus zwei DG erster Ordnung überführt. Mit {x_1} = x\left( t \right) und {x_2} = \dot x\left( t \right) ergibt sich das System

{{\dot x}_1} = {x_2}

{{\dot x}_2} = -{\omega ^2}{x_1}-2\gamma {x_2}

Dieses soll nun mit Hilfe eines Runge-Kutta-Solvers gelöst werden. Gehen Sie dazu folgendermaßen vor:

  1. Schreiben Sie eine Funktion dx=dg¬_dampedosc(t, x, omega, gamma), die das Gleichungssystem realisiert. Der 2×1 Spaltenvektor x enthält dabei die aktuellen Werte {x_1} und {x_2} zum Zeitpunkt t. Die Funktion berechnet daraus abhängig von den Parametern omega und gamma nach obiger Gleichung die Werte der erste Ableitung und gibt diese im 2×1 Spaltenvektor dx zurück. Der Parameter t wird innerhalb der Funktion nicht verwendet, ist aber für deren späteren Aufruf in Teilaufgabe b) zwingend erforderlich.
  2. Schreiben Sie ein Script damped_osc.m, das die Integration der DG nach dem Runge-Kutta-Verfahren für \omega = 2 und \gamma = 0.2 durchführt. Rufen Sie dazu die MATLAB-Funktion ode45() mit geeigneten Parameterwerten auf. Konsultieren Sie ggfs. die zugehörige Beschreibung in der MATLAB Hilfe. Stellen Sie das berechnete Ergebnis dann grafisch wie gezeigt dar:

    anfangswertproblem-differentialgleichung

Lösung

a )

function dx=dg_dampedosc(t,x,omega,gamma)
	% dx=dg_dampedosc(t,x,omega,gamma)
	% differential equation: 2nd order damped oscillation
	%
	% x''(t)+2*gamma*x' (t)+omega^2*x (t)=0;
	%
	% x1'=x2
	% x2'=-omega^2*x1-2*gamma*x2
	%
	% t current time
	% x 2x1 column vector with state [x (t); x' (t)] at time t
	% omega frequency
	% gamma friction
	%
	% dx 2x1 column vector with 1st derivative of state at time t

	dx=[0 1;-omega^2 -2*gamma]*x;
end

b )

x0=[0 1]; % initial value
ts=[0 10]; % computation interval
omega=2; % frequency of oscillation
gamma=0.2; % friction

% solve ode using Runge-Kutta approach
[t,x]=ode45(@dg_dampedosc,ts,x0,[],omega,gamma);

% plot position and velocity
figure(1)
plot(t,x)
title('damped oscillation')
legend({'

    \[x(t)\] ','

    \[\dot{x}(t)\] '},'interpreter','latex') xlabel('

    \[t\] ','interpreter','latex') ylabel('position

    \[x(t)\] , velocity

    \[\dot{x}(t)\] ','interpreter','latex') % plot phase diagram figure(2) plot(x(:,1),x(:,2)) title('phase diagram') xlabel('position

    \[x(t)\] ','interpreter','latex') ylabel('velocity

    \[\dot{x}(t)\] ','interpreter','latex')

Ähnliche Artikel

Kommentar verfassen