next up previous contents
Nächste Seite: Universell anwendbare M-Files Aufwärts: Beispielsammlung von M-Files Vorherige Seite: M-Files zu den Differentialgleichungen   Inhalt

M-Files zum Paket Symbolic Algebra

Die M-Files für Anwendungen im symbolischen Modus sind eher etwas kompakter als diejenigen für die normale MATLAB Arbeitsumgebung. Deshalb konnten die meisten Beispiele im Textteil Platz finden. Einige der wichtigsten werden hier jedoch wiederholt, damit sie auf der Begleit-CD abrufbar sind.

Da das Buch in Schwarzweiß gedruckt wird, kommt der Atoll-Plot erst beim Ausführen auf dem Computer richtig zur Geltung: 'atollplot.m'

% atollplot -  Ein Ring taucht aus dem tiefblauen Meer auf
syms x y real
ezsurf(exp(-abs(sqrt(x^2+y^2)-5)),[-8 8 -8 8])
axis equal
axis off

Als allgemeines, generischen Beispiel für eine analytische Lösung einer Differentialgleichung diente der schiefe Wurf: 'dglwurf.m'

% dglwurf - schiefer Wurf analytisch geloest
%    Dgl. System mit 2 Gleichungen je 2. Ordnung mit 
syms x y
wbahn = dsolve('D2y=-10','D2x = 0','x(0)=0','y(0)=0','Dx(0)=15','Dy(0)=15')
ezplot(wbahn.x, wbahn.y, [0 3])
axis([0 50 0 25])
set(gca,'DataAspectRatio',[1 1 1])

Die n-fach iterierte Matrizenabbildung wird im Programm 'fibonaccigen.m' mit analytisch bestimmten Eigenwerten nachgerechnet.

% fibonaccigen  Berechnung des allgemeinen Gliedes
%   aus den Eigenwerten der Iterationsmatrix
M=[1 1;1 0]
Msym = sym(M)
[Eigvecs,Dlam] = eig(Msym)
startvec = sym([1 1]')
coefst = Eigvecs\startvec
syms k
akv21 = Dlam(1,1)^k*coefst(1)*Eigvecs(:,1) +  ...
           Dlam(2,2)^k*coefst(2)*Eigvecs(:,2)
ak = Dlam(1,1)^(k-1)*coefst(1)*Eigvecs(2,1) +  ...
           Dlam(2,2)^(k-1)*coefst(2)*Eigvecs(2,2)
subs(ak,k,[1,2,3,4,5,6,7])
simple(ak)

Die mehrfache Integration zur Bestimmung des Volumens einer mehrdimensionalen Hyperkugel 'mulsphere.m' ist hier ebenfall nochmals aufgeführt. Studenten, die eine Herausforderung suchen, können probieren, diese Berechnung rekursiv zu formulieren, und dann (im Prinzip, Achtung auf Ressourcen!) zu noch höheren Dimensionen als 9 vorstoßen.

syms x r R L K M H G D n real
s2 =simple( 2*int(sqrt(r^2-x^2), -r, r));
     s3 = simple( int(subs(s2,r,sqrt(R^2-x^2)), -R, R));
     s4 = simple(int(subs(s3,R,sqrt(L^2-x^2)), -L, L));
     s5 = simple(int(subs(s4,L,sqrt(K^2-x^2)), -K, K));
     s6 = simple(int(subs(s5,K,sqrt(M^2-x^2)), -M, M));
     s7 = simple(int(subs(s6,M,sqrt(H^2-x^2)), -H, H));
     s8 = simple(int(subs(s7,H,sqrt(G^2-x^2)), -G, G));
     s9 = simple(int(subs(s8,G,sqrt(D^2-x^2)), -D, D));
s2
%     subs('2*pi^(n/2)/(n/2-1)!*R^n/n',n,2)
 s3
%     subs('2^((n+1)/2)*pi^((n-1)/2)/(n-2)!*R^n/n',n,3)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,3)
 s4
%     subs('2*pi^(n/2)/(n/2-1)!*R^n/n',n,4)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,4)
 s5
%     subs('2^((n+1)/2)*pi^((n-1)/2)/(n-2)!*R^n/n',n,5)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,5)
s6
%     subs('2*pi^(n/2)/(n/2-1)!*R^n/n',n,6)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,6)
 s7
%     subs('2^((n+1)/2)*pi^((n-1)/2)/(n-2)!*R^n/n',n,7)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,7)
s8
%     subs('2*pi^(n/2)/(n/2-1)!*R^n/n',n,8)
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,8)
% 
vols =     [ s2 s3; s4 s5; s6 s7; s8 s9]
     subs('R^n/n*2*pi^(n/2)/gamma(n/2)',n,[2 3; 4 5; 6 7; 8 9])

Im Skript 'p2p4findstat.m' werdem die stationären Punkte einer Funktion von 2 Variablen gesucht, welche 2. und 4. Potenzen enthält (Übung 60-15).

% p2p4findstat.m - Symbolic script sucht Stationaere Punkte
syms xs ys
fs = (xs^2-xs^4)*(ys^2-ys^4)
dfx = diff(fs,xs)
dfy = diff(fs,ys)
% solve liefert als L\"osung eine Struktur
stptsol = solve(dfx,dfy)
% die einzelnen Teile in der Struktur sind:
stptsol.xs
stptsol.ys

Die analytische Lösung eines allgemeinen Oszillators wird in 'laplaosc.m' mit Hilfe der Laplace-Funktionen des symbolischen Modus von MATLAB gelöst.

% laplaosc - analytische Loesung eines Oszillators
%    mit Laplace-Transformationen
syms s t YY yy
YY  = sym('Y(t)')
d2 =    laplace(diff(diff(YY)))
d1 = laplace(diff(YY))
d0 = laplace(YY)
Gl = d2 + 2* d1 + 26*d0 
Gli1 = subs(Gl,'Y(0)',1)
Gli2 = subs(Gli1,'D(Y)(0)',0)
Glyy = subs(Gli2,'laplace(Y(t),t,s)',yy)
y    = solve (Glyy,yy)
Y = simple(ilaplace(y))


next up previous contents
Nächste Seite: Universell anwendbare M-Files Aufwärts: Beispielsammlung von M-Files Vorherige Seite: M-Files zu den Differentialgleichungen   Inhalt
Stefan Adam 2006-03-07