70-9 gedämpfter Oszillator mit Parametervorgabe: Die Parameterübergabe erfolgt mit global deklarierten Variablen. Es hat sich eingebürgert, globale Variablen mit nicht zu kurzen Namen in lauter Großbuchstaben zu bezeichnen. Die Files 'rundmposcpar.m' und 'dmposcpar.m' demonstrieren diese Option.
% rundmposcpar gedaempfter Oszillator mit globalen Parametern
% EFREQ und OSCDAMP vordefinieren
yin = [10 0]'; global EFREQ; global OSCDAMP
%EFREQ = 1.2; %OSCDAMP = 0.05;
[tsol, ysol] = ode45('dmposcpar', 50 , yin);
clf; plot(tsol,ysol(:,1))
% 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) ;
70-10 Schiefer Wurf in 3D 'runwurf3D.m' und 'wurf3Dode.m'.
% runwurf3D Berechnung und Grafik
% der 3D Bewegung eines schiefen Wurfes
azi = 4.2*pi/180; ele=40*pi/180; v0= 30;
yini= zeros(6,1); yini(6)=sin(ele)*v0;
yini(2)= cos(ele)*cos(azi)*v0;
yini(4)= cos(ele)*sin(azi)*v0;
[tsol,ysol]=ode45('wurf3Dode',4,yini);
plot3(ysol(:,1),ysol(:,3),ysol(:,5),'r')
hold on; xkr=cos(-0.3:0.02:0.3);
ykr=sin(-0.3:0.02:0.3); zkr = zeros(1,31);
plot3(50*xkr,50*ykr,zkr); plot3(75*xkr,75*ykr,zkr);
plot3(100*xkr,100*ykr,zkr);
plot3([0 100],[0 0],[0 0],'m'); axis equal
% deriv = wurf3Dode(t,yac) 3D Bewegung % eines schiefen Wurfes function deriv = wuf3Dode(t,yac) g = 9.81; deriv = zeros(6,1); deriv(1) = yac(2); deriv(2) = 0 ; deriv(3) = yac(4); deriv(4) = 0 ; deriv(5) = yac(6); deriv(6) = -g ;
70-13 E
B Drift
'runchargexb.m' und
'chargexbderi.m'.
% runchargexb.m Zeigt ExB Drift von Teilchen
% in gekreuzten elektrischen und Magnetfeldern
ystart=[ 0 0 0 1]';
[t45,y45]= ode45('chargexbderi',400,ystart);
plot(y45(:,1),y45(:,3),'r')
% deriv = chargexbderi(t,yac) Ableitung Teilchen 2D
% in konstantem Magnetfeld mit E-feld in y-Richtung
function deriv = chargexbderi(t,yac)
B=-1/10; deriv = zeros(4,1); E=0.02;
deriv(1) = yac(2); deriv(2) = yac(4)*B ;
deriv(3) = yac(4); deriv(4) = -yac(2)*B +E ;
70-14 3D Bahnen im konstanten Magnetfeld 'runwurf3D.m' und 'chargpart3D.m'.
% runchargpart3D Grafik der 3D Bewegung
% von einem Teilchen im Magnetfeld
ystart=[ 0 0 0 1 0 0]';
[t45,y45]= ode45('chargpart3',600,ystart);
plot3(y45(:,1),y45(:,3),y45(:,5),'r')
axis equal
% deriv = chargpart3D(t,yac) 3D Bewegung von % geladenen Teilchen im Magnetfeld function deriv = chargpart3D(t,yac) B3=-1/20; %B2=0; B1=0; B2=-1/170; B1 = 0; % B1=-1/120; deriv = zeros(6,1); deriv(1) = yac(2); deriv(2) = yac(4)*B3 - yac(6)*B2 ; deriv(3) = yac(4); deriv(4) = yac(6)*B1 - yac(2)*B3 ; deriv(5) = yac(6); deriv(6) = yac(2)*B2 - yac(4)*B1 ;
70-15 Teilchenbahnen im Potentialtopf 'runpottopf.m' und 'pottopfbahn.m'.
% runpottopf Kugelbewegung im parabolischen
% Potentialtopf
yini = [2 -3 0 2]'
[ts,ys] = ode45('pottopfbahn',94, yini);
rar = sqrt(ys(:,1).^2 + ys(:,3).^2);
zar = 0.2*rar.^2;
plot(ts,ys) ;pause
plot(ys(:,1),ys(:,3)); axis equal ; pause
plot(ts,rar); pause
plot3(ys(:,1),ys(:,3),zar); axis equal; box on
% deriv = pottopfbahn(t,yac) Bewegung von
% Teilchen im parabolischen Potentialtopf
function deriv = pottopfbahn(t,yac)
C = 0.4; g=9.81; r2 = yac(1)^2+yac(3)^2;
deriv = zeros(4,1);
deriv(1) = yac(2);
deriv(2) = -g*C*yac(1)/(1+C^2*r2) ;
deriv(3) = yac(4);
deriv(4) = -g*C*yac(3)/(1+C^2*r2) ;