kapitel-15maple.mw

Mathematik

von T. Arens, F. Hettlich, Ch. Karpfinger, U. Kockelkorn, K. Lichtenegger,  H. Stachel

(zu Kapitel 15:  Vektorraeume)

> restart;

Vektoren

Im letzten Kapitel haben wir schon die Koeffizientenmatrix und die erweiterte Koeffizientenmatrix als Matrizen eingegeben. Das Rechnen mit Vektoren und Matrizen ist entsprechend in Maple vorgesehen. Der allgemeinste Datentyp, der Matrizen und Vektoren umfasst, sind Felder. Diese werden durch den Befehl array eingegeben.

> A:=array([[1,2,3],[2,3,4]]); b:=array([[1],[1]]); c:=array([[1,2]]);

A := matrix([[1, 2, 3], [2, 3, 4]])

b := matrix([[1], [1]])

c := matrix([[1, 2]])

Beachten Sie die Syntax des Befehls zur Eingabe der Zeilen und Spalten.

Es laesst sich direkt auf die einzelnen Elemente eines Feldes zugreifen mit

> A[2,3]; b[2,1]; c[1,2];

4

1

2

Die Felder werden also von 1 beginnend indiziert. Es ist die "default" Einstellung, da wir keine anderen Wuensche angegeben haben. Die allgemeine Version des Befehls array sieht aber diese Moeglichkeit vor.

> C:=array(0..1,0..1,[[1,2],[3,4]]); C[0,1];

C := ARRAY([0 .. 1, 0 .. 1], [(0, 0) = 1, (0, 1) = 2, (1, 0) = 3, (1, 1) = 4])

2

Sie sehen die andere Darstellung.

Durch eine Indizierung beginnend mit 1 ordnet Maple dem array automatisch den spezielleren Datentyp (type) Matrix zu.

> type(A,matrix); type(C,matrix);

true

false

Um Matrizen einzugeben, kann auch der im letzten Kapitel eingefuehrte Befehl matrix genutzt werden.

> B:=matrix(2,3,[[1,0,0],[1,1,1]]);

B := matrix([[1, 0, 0], [1, 1, 1]])

bei dem zunaechst die  Dimensionen, Anzahl der Zeilen und Anzahl der Spalten, angegeben werden muessen.

Koordinatenvektoren sind als Datentyp implementiert und koennen mit dem Befehl vector erzeugt werden

> type(b,vector);
v:=vector(4,[1,2,3,4]);

false

v := vector([1, 2, 3, 4])

Anders als im Buch wird der Datentyp vector in Maple als Zeile geschrieben. Der Datentyp vector stellt die Elemente als Liste zusammen und nicht als Feld. Daher erhalten wir bei der Matrix c, die nur aus einer Zeile besteht:  

> type(c,vector);

false

Vektor und Matrix sind in Maple somit wirklich verschiedene Datentypen. Mit dem Befehl convert koennen wir die Datentypen wechseln.

> convert(c,vector);
convert(v,matrix);

vector([1, 2])

matrix([[1], [2], [3], [4]])

Beachten Sie, dass bei der Konvertierung eines Vektors in die entsprechende Matrizenschreibweise der Vektor als Spalte geschrieben wird, wie wir es im Buch vereinbart haben.

Die Vektorraumstruktur bei Matrizen oder Vektoren ist fest verankert, sodass die Addition und die skalare Multiplikation definiert sind. Bei passenden Dimensionen, d.h. die Anzahl der Zeilen und die Anzahl der Spalten stimmen ueberein, ergibt sich

> A+B;
2*A;

A+B

2*A

Offensichtlich wird etwa die Matrix A+B aber nur durch die Symbole angezeigt. Um die vollstaendige Matrix zu sehen, benoetigen wir den Befehl evalm , den wir auch schon im letzten Kapitel eingefuehrt haben.

> evalm(A+B);
evalm(2*A);

matrix([[2, 2, 3], [3, 4, 5]])

matrix([[2, 4, 6], [4, 6, 8]])

Eine Vielzahl von Befehlen zur linearen Algebra steht Ihnen in Maple zur Verfuegung, wenn Sie das Paket linalg  laden.

> with(linalg);

Warning, the protected names norm and trace have been redefined and unprotected

[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, cold...

Nur zu wenigen der aufgelisteten Befehle koennen Sie sich die Bedeutung aus den  bisherigen Kapiteln erklaeren, wie  zum Beispiel linsolve oder concat , die wir schon in Kap.14 kennengelernt haben.

Bemerkung: Es existiert noch ein weiteres Paket LineareAlgebra in Maple, dass einige andere  Routinen zum Umgang mit  Matrizen  zur Verfuegung stellt. Fuer unsere Zwecke sind die Moeglichkeiten von linalg aber vollstaendig ausreichend.

Die lineare Unabhaengigkeit von Vektoren laesst sich nun leicht mit Hilfe von Maple feststellen. Wir geben die Vektoren als Spaltenvektoren ein:

> a:=matrix(4,1,[1,2,3,4]);
b:=matrix(4,1,[0,1,0,1]);

c:=matrix(4,1,[4,3,2,1]);

d:=matrix(4,1,[1,0,1,0]);

a := matrix([[1], [2], [3], [4]])

b := matrix([[0], [1], [0], [1]])

c := matrix([[4], [3], [2], [1]])

d := matrix([[1], [0], [1], [0]])

sammeln die Vektoren in einer Matrix und suchen nach Loesungen des zugehoerigen, homogenen Gleichungssystems.

> A:=concat(a,b,c,d);
r:=matrix(4,1,[0,0,0,0]);

linsolve(A,r);

A := matrix([[1, 0, 4, 1], [2, 1, 3, 0], [3, 0, 2, 1], [4, 1, 1, 0]])

r := matrix([[0], [0], [0], [0]])

matrix([[_t[1][1]], [-5*_t[1][1]], [_t[1][1]], [-5*_t[1][1]]])

Da es unendlich viele Loesung zu diesem System gibt, sind die Vektoren linear abhaengig.

Polynome

Auch der Datentyp polynom ist vorgesehen. Ein Ausdruck von der Form

> restart:
p:= 4*x+12+x^4-9*x^2;

p := 4*x+12+x^4-9*x^2

wird als Polynom erkannt.

> type(p,polynom);

true

Damit stehen einige Befehle zur Verfuegung, die im Umgang mit Polynomen nuetzlich sind. Wir koennen etwa den Grad eines Polynoms erfragen

> degree(p);

4

oder den Koeffizienten des quadratischen Anteils ermitteln.

> coeff(p,x,2);

-9

An einer Stelle auswerten koennen wir ein Polynom wie gewohnt durch

> subs(x=1,p);

8

Die Vektorraumstruktur der Menge der Polynome ist analog zu allgemeinen Ausdruecken offensichtlich. Betrachten wir fuer ein weiteres Polynom (hier mit einem zusaetzlichen Parameter a)

> q:=x^4+(a^2+a)*x^3+4*a*(a-1)*x-2*a*x^4+1+a^2*x^4;

q := x^4+(a^2+a)*x^3+4*a*(a-1)*x-2*a*x^4+1+a^2*x^4

koennen wir die Summe oder ein Vielfaches bekommen, etwa

> r:=2*p+q;

r := 8*x+25+3*x^4-18*x^2+(a^2+a)*x^3+4*a*(a-1)*x-2*a*x^4+a^2*x^4

Mit dem Befehl sort koennen wir nach den Potenzen sortieren

> r:=sort(r);

r := x^4*a^2-2*x^4*a+3*x^4+(a^2+a)*x^3-18*x^2+4*(a-1)*x*a+8*x+25

und mit

> collect(r,x,factor);

25+(a^2-2*a+3)*x^4+a*(a+1)*x^3-18*x^2+(4*a^2-4*a+8)*x

die Koeffizienten zusammenfassen. Mit der zusaetzlichen Option factor werden diese gleich auch noch faktorisieren.

Die dem  Hornerschema (s. Seite 96) zugrunde liegende Darstellung eines Polynoms laesst sich ermitteln

> convert(p,horner,x);

12+(4+(-9+x^2)*x)*x

genauso wie wir eine Faktorisierung eines Polynoms erfragen koennen.

> factor(p);

(x+3)*(x+1)*(x-2)^2

>

Aufgaben


1.
Berechnen Sie zu den komplexen Vektoren

            u = (1, i, 2)^T ,  v = (2+i, 1-i, i)^T   und   w = (1+2*i, 1-2*i, 2-i)^T

   die Linearkombinationen u+2*v+3*w  und u-v+w . Sind die Vektoren linear unabhaengig?

>

Loesung

2. Loesen Sie die Aufgabe 15.16 im Buch mit Hilfe von Maple.

>

Loesung

3. Suchen Sie in Maple Kommandos, die Ihnen die Polynomdivision mit Rest der beiden Polynome
       
p(x) = x^5+4*x^3-2*x^2+1    und   q(x) = x^2-1+3*x

berechnen.  

>

Loesung

>