next up previous contents
Nächste Seite: M-Files zum Paket Symbolic Aufwärts: Beispielsammlung von M-Files Vorherige Seite: Mehrdimensionales Newton-Verfahren   Inhalt

M-Files zu den Differentialgleichungen

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 $ \mathrm{\times}$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) ;



Stefan Adam 2006-03-07