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