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