1.) Der Körper der reellen Zahlen > restart; Aufbauend auf: "Gruppen- und Körperaxiome" Aufgaben: 4 Die reellen Zahlen bilden den Ausgangspunkt der Analysis und sind somit von grundlegender Bedeutung. BEZEICHNUNG: = Körper der reellen Zahlen. Das Vollständigkeitsaxiom MATH: Man definiert den Körper der reellen Zahlen als einen angeordneten Körper, für den zusätzlich das folgende Vollständigkeitsaxiom gilt: Vollständigkeitsaxiom: Jede nicht leere nach oben beschränkte Teilmenge von Supremum. besitzt ein Unser Standpunkt ist: Wir konstuieren in diesem Stadium nicht, sondern nehmen an, dass existiert und (in einem hier nicht zu präzisierenden Sinne) eindeutig festgelegt ist. (Vergl. auch Schlussbemerkung dieses Absatzes "Vollständigkeitsaxiom"!) Die natürlichen Zahlen, die ganzen Zahlen und die rationalen Zahlen liegen in , aber es gibt auch reelle Zahlen, die nicht rational sind. Für den Körper der rationalen Zahlen ist das Vollständigkeitsaxiom nicht erfüllt. MATH: Aus dem Vollständigkeitsaxiom kann man leicht das folgende Intervallschachtelungsprinzip herleiten: Ausgehend von zwei reellen Zahlen x und y mit halbiert man das abgeschlossene Intervall und geht zu genau einem der Intervalle oder über. Dieser Halbierungsschritt wird iteriert, so dass man zu einer Folge von Intervallen kommt, die ineinander geschachtelt sind, d.h. jedes frühere umfasst jedes spätere. Der Durchschnitt all dieser (unendlich vielen) Intervalle besteht aus genau einer reellen Zahl . Beweis: Nach Konstruktion der Intervalle gilt Schranken der Menge . Nach dem Vollständigkeitsaxiom existiert M ist, gilt für alle , und damit ist . Andererseits gilt natürlich auch für alle . Damit sind alle obere , und da die kleinste obere Schranke von für alle , d.h. s liegt im Durchschnitt all dieser Intervalle: . Damit gibt es mindestens eine reelle Zahl, die in all diesen Intervallen liegt. ÜBUNG [01]: Zeige (ohne Maple), dass es höchstens eine reelle Zahl gibt, die in allen derartigen Intervallen liegt. Hinweis: Folgende Aussagen darfst du benutzen: 1.) . 2.) Ist mit für alle . Zwei Zusätze zum Intervallschachtelungsprinzip sind von Interesse: 1.) Oftmals kennt man schon Eigenschaften der Zahl . Dann benutzt man diese, um in jedem Schritt zu entscheiden, ob man die erste (linke) oder die zweite (rechte) Intervallhälfte für das neue Intervall nimmt. 2.) Nach n Schritten kennt man bereits mit der Genauigkeit . Hier ist eine Prozedur, die ausgehend von einem Intervall mit eine wie oben beschriebene Intervallfolge erzeugt mit und für alle . Das Verfahren bricht ab, wenn die Intervalllänge kleiner als wird. > IntervSchaW2 := proc(a::And(rational,positive), b::And (rational,positive), n::posint) local fA, fB, r, s, t; if not (a^2<2 and 2<b^2) then error "Wrong arguments" end if; r:=a; s:=b; fA:=r; fB:=s; while (s-r >= 1/n) do t:=(r+s)/2; if t^2>2 then fB:=fB, t; fA:=fA, [fA][-1]; s:=t; else fA:=fA, t; fB:=fB, [fB][-1]; r:=t; end if; end do; return zip((a,b)->[a,b], [fA], [fB]); end proc: MAPLE: Auf das letzte Element einer Liste (oder Sequenz) L greift man mit L [ - 1 ] zu. Der Befehl z i p fügt 2 Listen zu einer Liste zusammen. Für Details kann man wie immer die Hilfe konsultieren. Schauen wir uns das Programm im Einsatz an: > IntervSchaW2(1,2,200); (1.1.1) Wir wissen, dass es genau ein zwischen und gibt, das in allen Intervallen liegt. Diese Zahl muss liegen. Wir kennen diese Zahl schon mit einem Fehler, der kleiner ist als > evalf(363/256-181/128); 0.003906250000 also ist z. B. > evalf((363/256+181/128)/2); 1.416015625 eine halbwegs gute Näherung. (1.1.2) (1.1.3) MATH: Nachdem wir eingesehen haben, dass existiert und eindeutig bestimmt ist, ist es leicht zu sehen, dass gilt, d.h. ist die eindeutige (positive) Quadratwurzel aus 2. Hier das Argument: c Aus der ersten und der dritten Ungleichung folgt im Falle = und im Falle : = Wir haben also in beiden Fällen = . : Wegen , und und damit ebenfalls wie oben MATH: Es gibt aber kein c folgt wie in Übung 1 , d.h. mit . . Damit gibt es reelle Zahlen, die nicht rational sind. DENKANSTOSS: Wieso führt die eindeutige Primfaktorzerlegung ganzer Zahlen dazu, dass keine rationale Zahl mit existiert? (Hinweis: Mache die 2-Bilanz für Zähler und Nenner!) ÜBUNG [02]: 1) Verstehe und kommentiere das Programm "IntervSchaW2". 2) Modifiziere das Programm so, dass man keine Quadratwurzeln von 2, sondern -te Wurzeln einer beliebigen (positiven) rationalen Zahl approximiert werden für eine natürlich Zahl . 3) Gebe unter Benutzung der Idee der Intervallschachtelung die Anzahl der Durchläufe der w h i l e-Schleife abhängig von den Parametern , und an. Hinweis: Wie groß ist der maximale Fehler im ersten Schritt und wie verändert er sich pro Schleifendurchlauf? Zur allgemeinen Orientierung noch eine Bemerkung: MATH: Man kann zeigen, dass es wirklich einen angeordneten Körper gibt, der das Vollständigkeitsaxiom erfüllt. Man kann weiter zeigen, dass jeder weitere angeordnete Körper, der das Vollständigkeitsaxiom erfüllt, mit dem von uns konstruierten identifiziert werden kann unter Benutzung einer bijektiven Abbildung, die das Rechnen und die Anordnung überträgt. Weiterhin hätten wir diesen Körper durch Vervollständigung von konstruieren können, was aber momentan nicht Thema sein soll. Wir wollen festhalten: Es gibt einen (im wesentlichen) eindeutigen angeordneten vollständigen Körper, den Körper der reelen Zahlen . Symbolisches Rechnen Wir haben die Schwierigkeiten des numerischen Rechnens gesehen und wollen jetzt die Möglichkeiten des symbolischen Rechnens an einem Beispiel andeuten. MATH: , die Quadratwurzel aus , kommt in gewissen Ausdrücken vor, die ansonsten nur rationale Zahlen enthalten. Die Ausdrücke sollen (beispielsweise) quadriert werden. MAPLE kommt nicht auf die Idee, numerisch zu approximieren, sondern arbeitet nur mit den definierenden Eigenschaften. Es benutzt die Körperaxiome der reellen Zahlen, schreibt 2 falls auftaucht, und erweitert Brüche, so dass kein animiert wird: > a:=(3+sqrt(2))/(2-sqrt(2)); mehr im Nenner steht, falls es dazu (1.2.1) Ziel: Bestimme ! > a:=rationalize(a); a:=expand(a); (1.2.2) > a^20; (1.2.3) > b:=expand(a^20); (1.2.4) Bis hier ist die Rechnung symbolisch, also fehlerfrei! > evalf(b); evalf(a)^20; %%-%; (1.2.5) ÜBUNG [03]: Bestimme eine genauere Approximation von Verfahren verwendest. > c:=1+sqrt(2)/100000; evalf(c)^10000; als die folgende, indem du obiges 1.151907196 Achtung: Es kann beim Bearbeiten dieser Aufgabe zu langen Ausgaben kommen sinnvollerweise sollte man die langen Terme nicht ausgeben. Freiwilliger Zusatz: Berechne c mit Hilfe von Square&Multiply. (1.2.6) MATH und MAPLE: Selbstverständlich trauen wir dem symbolischen Ergebnis etwas mehr als dem numerischen, weil bei letzterem alles mit Gleitkommazahlen gerechnet wurde und bei dem symbolischen nur der letzte Schritt. Es empfielt sich immer soweit wie möglich symbolisch zu rechnen, um genauere Werte zu erhalten - soweit es die benötigte Rechenzeit zulässt. MATH: Wurzeln sind besonders einfache Beispiele für das symbolische Rechnen. Die Zahl erfüllt beispielsweise keine Polynomgleichung mit rationalen Koeffizienten. Trotzdem empfiehlt es sich oftmals, auch da erst im letzten Schritt numerisch zu rechnen. > Pi, evalf(Pi); (1.2.7) Das Archimedische Axiom Bislang haben wir gesehen: ist ein angeordneter vollständiger Körper. hat eine weitere wichtige Eigenschaft, die wir schon gesehen haben, ohne sie besonders hervorgehoben zu haben. MATH: (Archimedes 287-212 v. Chr.): ist nicht nach oben beschränkt in : Für jedes gibt es ein mit . Folgerung: Für . Folgerung: Es gibt keine unendlich kleine positive reelle Zahl: . Folgerung: Zwischen zwei verschiedenen reellen Zahlen gibt es immer eine rationale Zahl: Für . All dies ist jetzt sehr leicht einzusehen. Wenn die zweite Folgerung in einem angeordneten Körper gilt, sagt man auch, das Archimedische Axiom ist erfüllt. Die dritte Folgerung umschreibt man meistens so: Die rationalen Zahlen liegen dicht in den reellen Zahlen. Hier ist ein Programm, welches die dritte Folgerung umsetzt: > Zwi:=proc(a::algebraic,b::algebraic) local x, n, r; if is(a < b) then return Zwi(b,a); fi; x := a-b; n := ceil(1/x); r := (floor(n*a))/n; return r; end proc: > Zwi(Pi,sqrt(10)); 22 (1.3.1) 7 > evalf(Pi), evalf(22/7), evalf(sqrt(10)); (1.3.2) MAPLE: Es ist anzunehmen, dass Maple bei der Abfrage auf bereits eine Umrechnung auf Gleitkommazahlen vornimmt, so dass das letzte Programm lediglich einen didaktischen Wert hat. DENKANSTOSS: Veranschauliche das Programm auf der Zahlengeraden. ÜBUNG [04]: 1) Zeige: Zwischen zwei verschiedenen reellen Zahlen gibt es immer unendlich viele rationale Zahlen. 2) Zeige: Jede unendliche Teilmenge von ist unbeschränkt. Visualisierung auf der Zahlengeraden (freiwillig) Bislang haben wir hauptsächlich von den mehr algebraischen Eigenschaften der reellen Zahlen gesprochen, die ihre Manipulation betreffen. Von einem mehr geometrischen Standpunkt aus können wir die reellen Zahlen zur Parametrisierung einer Geraden heranziehen: Jedem Punkt der Geraden entspricht genau eine reelle Zahl und umgekehrt, so dass folgende Zusatzeigenschaften gelten: 1) Der Addition mit einer festen reellen Zahl entspricht eine Translation (Verschiebung) auf der Geraden. 2) Der Multiplikation mit einer festen positiven rellen Zahl entspricht eine Streckung auf der Geraden, deren Zentrum gerade der Punkt ist, dem 0 entspricht. 3) Der Multiplikation mit -1 entspricht eine Spiegelung an 0. 4) < legt eine Orientierung auf der Geraden fest. Geschichtlich gesehen hat die Multiplikation reeller Zahlen besonders große Schwierigkeiten bereitet: Sind zwei positive reelle Zahlen , gegeben, so stellt man sich vor, dass sie die Länge von Intervallen repräsentieren, etwa von bis bzw. von bis (immer auf der Zahlengeraden gesehen). Hingegen stellt man sich unter dem Produkt von und eher den Flächeninhalt eines Rechtecks mit den Seitenlängen und vor. Warum sollte wieder eine Zahl von der Art sein, die Längen festlegt, wo sie doch einem Flächeninhalt entspricht? DENKANSTOSS: Visualisiere als Länge einer Strecke mit Hilfe des Strahlensatzes. MAPLE: Leider sind die Möglichkeiten, die Zahlengerade mit Maple zu visualisieren, etwas beschränkt, da der normale plot-Befehl eine reelle Zahl als konstante Funktion interpretiert: > plot(1); > plot({0,1/2,1},x=0..1,color=blue); MAPLE: Etwas besser, aber immer noch nicht befriedigend, der pointplot-Befehl: > plots[pointplot]([[0,0],[1/2,0],[1,0]],color=[red,green, blue],axes=boxed,view=[-1..2, -1..1]) ; 2.) Restklassenkörper der Polynomalgebra Aufbauend auf: "Polynome", "Der Körper der reellen Zahlen" Aufgaben: 3 > restart; > with(LinearAlgebra): Restklassenkörper MATH: Sei Polynom ein Körper und schreiben als mit eindeutigen euklidischer Ring. , wo ein Polynom vom Grad oder . Dann lässt sich jedes . In anderen Worten, ist ein BEISPIEL: > p:=add(x^i,i=0..6); (2.1.1) > quo(x^10,p,x); rem(x^10,p,x); (2.1.2) PROBE: > x^10; expand((x^4-x^3)*p+x^3); (2.1.3) Man erhält auch beide Polynome auf einmal: > quo(x^10,p,x,'r'); r ; (2.1.4) > rem(x^10,p,x,'q'); q; (2.1.5) MATH: In der obigen Situation haben wir eine Zerlegung von (innere) direkte Summe: Insbesondere sind die beiden Vektorräume natürliche Epimorphismus und als -Vektorraum in eine isomorph, genauer: Der schränkt sich zu einem Isomorphismus ein. Richtig rechnen in können wir aber erst, wenn wir den Inversen dieses Isomorphismus auch haben. Klar: rem liefert uns diesen: . Wir nennen diesen Rest von kleinstem Grad auch den Standardvertreter der Restklasse . MATH: Es gibt eine zweite Möglichkeit diesen Standardvertreter zu konstruieren: Wir fassen als einen Algorithmus auf, der darin besteht solange wie möglich mit Hilfe von den Grad von zu erniedriegen, und zwar durch wiederholtes Einsetzen von > re:=isolate(p,x^6); (2.1.6) > algsubs(re,x^10); (2.1.7) > algsubs(re,%); (2.1.8) > algsubs(re,%); (2.1.9) > algsubs(re,%); (2.1.10) > algsubs(re,%); (2.1.11) MATH: In haben wir einen Euklidischen Algorithmus. > gcdex(1-x^2+x^4,x+x^11,x,'a','b'); 1 > a*(1-x^2+x^4) + b*(x+x^11); expand(%); (2.1.12) 1 (2.1.13) > p:=1-x^2+x^4; (2.1.14) MATH: Stellen wir uns vor, wir würden in rechnen, und zwar nicht nur als Vektorraum über , denn da brauchten wir ja nur die Linearkombinationen der Restklassen von zu betrachten, sondern als Ring - und später auch, wie wir sehen werden als Körper. Einen Vektorraum, der gleichzeitig ein Ring ist, bezeichnet man übrigens auch als Algebra oder genauer -Algebra. Zunächst als Vektorraum: Den Standardvertreter der Restklasse von > rem(x+x^11,p,x); erhalten wir durch (2.1.15) Wollen wir die Restklasse hiervon quadrieren (Ringoperation), so rechnen wir vertreterweise, erhalten aber nicht sofort den Standardvertreter (vom Grad ) als Vertreter: > expand((2*x-x^3)^2); (2.1.16) > rem(%,p,x); 3 (2.1.17) ÜBUNG [01]: Rechne nach, dass eine gewisse Potenz von gleich ist. Was wir beim Quadrieren gesehen haben, geht entsprechend für das Multiplizieren. Die Wohldefiniertheit, also Vertreterunabhängigkeit dieser Operation sei nochmal zum intensiven Studium empfohlen. Jetzt wollen wir invertieren. Dies tut der Euklidische Algorithmus: Wir lesen > gcdex(p,x+x^11,x,'a','b'): a*p+b*(x+x^11)=%; (2.1.18) (2.1.18) modulo und sehen, dass das Inverse der Restklasse von durch repräsentiert wird. Probe: > rem((2*x-x^3)*b,p,x),rem((x+x^11)*b,p,x); (2.1.19) Wichtig war, dass 1 als größter gemeinsamer Teiler von und immer der Fall, genau dann wenn irredzibel ist, was MAPLE über > irreduc(p); true > factor(p); herauskam. Dies ist überprüfen kann: (2.1.20) (2.1.21) MATH: Ist ein irreduzibles Polynom, so ist ein Körper und umgekehrt. ÜBUNG [02]: 1) Zeige: ist ein Körper, aber 2) Gib ein nicht invertierbares Element in ist kein Körper. an, das nicht ist. Darstellung durch Matrizen MATH: Es gibt noch eine andere Art die Algebra darzusetellen: Offenbar ist eine -Basis von . Bezüglich dieser wird die Multiplikation mit dargestellt durch > P:=CompanionMatrix(p,x); (2.2.1) > a:='a': Die Multiplikation mit wird dargestellt durch > subs([x=P,a[0]=a[0]*IdentityMatrix(4)],a[0]+a[1]*x+a[2]*x^2+a [3]*x^3); (2.2.2) (2.2.2) > eval(%); (2.2.3) DENKANSTOSS: Warum ist die Zuordnung ein Algebrenisomorphimus auf die -Algebra aller Polynome in der Begleitmatrix von ? ÜBUNG [03]: Berechne im obigen Beipiel durch eine Matrixinversion. MATH: Anstatt die Matrix nur als Matrix der Multiplikation mit bezüglich der Basis aufzufassen, kann man die Matrizen auch als die Elemente selber auffassen. Man erhält so einen Isomorphismus zwischen und . Jede Algebra der Form lässt sich somit als Teilring eines Matrixrings über schreiben für entsprechendes . 3.) Der Körper der komplexen Zahlen Aufbauend auf: "Gruppen- und Körperaxiome", "Der Körper der reellen Zahlen", "Restklassenkörper der Polynomalgebra " Aufgaben: 4 > restart; with(plots): Die komplexen Zahlen runden unsere Einsichten über reelle Zahlen in sehr überraschender Weise ab und bilden ihrerseits den Ausgangspunkt vieler analytischer, geometrischer und algebraischer Theorien. Darüberhinaus finden sie viele Anwendungen auch außerhalb der Mathematik. Sie sind von grundlegender Bedeutung. BEZEICHNUNG: Körper der komplexen Zahlen. Konstruktion von C aus = MATH: Man kann die komplexen Zahlen als Paare reeller Zahlen einführen: mit komponentenweiser Addition: und etwas komplizierter Multiplikation: An dieser Stelle brauchen wir keine Äquivalenzrelation. MAPLE: Mit der Schreibweise für reproduziert Maple diese Regeln. Achtung: Maple benutzt ein großes , anstatt wie sonst üblich ein kleines : > Complex(1,3); (3.1.1) MAPLE: Parameter werden vom e v a l c-Kommando immer als reelle Parameter interpretiert! > evalc((a+b*I)+(c+I*d)); (3.1.2) > evalc((a+b*I)*(c+I*d)); (3.1.3) Das Geheimnis dieser komplizierten Multiplikation offenbart sich, wenn man an das Distributivgesetz denkt und an > I^2; (3.1.4) MAPLE: Man kann die Körperaxiome für mit Maple verifizieren. Zum Beispiel das Assoziativgesetz der Addition: > evalc(evalc((a+b*I)+(c+I*d))+(e+I*f)); evalc((a+b*I)+evalc((c+I*d)+(e+I*f))); evalb(%=%%); true (3.1.5) Freiwillige ÜBUNG: 1) Warum beweist dies bereits, dass das Assoziativgesetz für gilt? 2) Verifiziere analog alle anderen Körperaxiome für mit Maple. MATH: Es ist klar, dass der Körper nicht angeordnet werden kann, denn sowohl als auch führen sehr schnell zu Widersprüchen. Es gibt aber eine sehr interessante Abbildung von in sich, die den Zusammenhang von mit dem angeordneten Körper der reellen Zahlen ins Licht rückt: Das komplexe Konjugieren. > evalc(conjugate(a+b*I)); (3.1.6) Die wichtigsten Eigenschaften des komplexen Konjugierens sind seine Additivität und Multiplikativität: > conjugate((a+b*I)+(c+d*I))=conjugate(a+b*I)+conjugate(c+d*I); (3.1.7) > is(evalc(%)); true (3.1.8) > conjugate((a+b*I)*(c+d*I))=conjugate(a+b*I)*conjugate(c+d*I); (3.1.9) > is(evalc(%)); true (3.1.10) MATH: Die reellen Zahlen sind innerhalb der komplexen Zahlen dadurch gekennzeichnet, dass sie beim komplexen Konjugieren fest bleiben: > solve(evalc(conjugate(a+b*I))=a+b*I,{a,b}); (3.1.11) MATH: Die reellen Vielfachen von heißen rein imaginäre Zahlen. Sie sind dadurch gekennzeichnet, dass sie beim komplexen Konjugieren auf ihr Negatives abgebildet werden: > solve(evalc(conjugate(a+b*I))=-(a+b*I),{a,b}); (3.1.12) MATH: Das Produkt einer komplexen Zahl mit ihrer komplex Konjugierten heißt die Norm der Zahl. Die Norm ist immer reell und nicht-negativ: > evalc((a+b*I)*conjugate(a+b*I)); (3.1.13) MATH: Man kann die letzte Gleichung auch so lesen, dass die komplex Konjugierte dividiert durch die Norm gleich der Inversen ist: > w:=evalc(1/(a+b*I)); (3.1.14) > normal(evalc(w*(a+b*I))); 1 (3.1.15) 1 (3.1.16) > normal(evalc((a+b*I)*w)); MATH: Die Wurzel aus der Norm heißt auch der Absolutbetrag der komplexen Zahl. Sie stellt ein Maß für die "Größe" einer komplexen Zahl dar und ist als Funktion von nach eine Fortsetzung des Absolutbetrags für reelle Zahlen: > abs(2+6*I), sqrt(evalc((a+b*I)*conjugate(a+b*I))); (3.1.17) MATH: Die Summe einer komplexen Zahl mit ihrer komplex Konjugierten ist ebenfalls reell. Die halbe Summe, also das arithmetische Mittel der beiden komplexen Zahlen, heißt der Realteil der komplexen Zahl: > evalc((a+b*I)+conjugate(a+b*I))/2; a (3.1.18) Dazu existiert in MAPLE das Kommando Re: (3.1.19) > evalc(Re(a+b*I)); a Entsprechend definiert man den Imaginärteil der komplexen Zahl > evalc((a+b*I)-conjugate(a+b*I))/(2*I); b Dazu existiert im MAPLE das Kommando Im: > evalc(Im(a+b*I)); b > Re(3+5*I), Im(3+5*I); (3.1.19) : (3.1.20) (3.1.21) (3.1.22) MATH: Die komplexen Zahlen wurden aus den reellen Zahlen und einer Lösung von konstruiert. > solve(x^2+1=0,x); (3.1.23) > solve(x^2+3*x+5=0,x); (3.1.24) ÜBUNG [01]: 1) Zeige: Jedes quadratische Polynom mit reellen Koeffizienten hat eine komplexe Nullstelle und zerfällt daher über den komplexen Zahlen in ein Produkt von Linearfaktoren. 2) Wie bekommt man aus einer Nullstelle die andere, falls sie nicht reell ist? Hinweis: Bringe die quadratische Ergänzung bzw. die - -Formel in Zusammenhang mit der Diskriminante. > discrim(x^2+a*x+b,x); (3.1.25) MATH: Wegen / definieren kann. sieht man schnell ein, dass man als ÜBUNG [02]: 1) Stelle wie im Abschnitt "Restklassenkörper der Polynomalgebra " den Körper mit als Teilring des (für das richtige ) dar. 2) Wie sehen komplexe Konjugation, Realteil und Imaginärteil in dieser Darstellung aus? (Hinweis: Benutze jeweils die oben angegebenen Definitionen und setze Matrizen ein.) Die Gaußsche Zahlenebene Wir wollen die komplexen Zahlen in der Ebene visualisieren. Ausgangspunkt ist ein rechtwinkliges Achsenkreuz: Eine Achse (üblicherweise waagerecht gezeichnet) heißt reelle Achse, weil darauf der Realteil der darzustellenden Zahl abgetragen wird. Die andere Achse heißt imaginäre Achse, weil darauf der Imaginärteil abgetragen wird. Häufig verbindet man 0 mit durch eine Strecke, die dann die Diagonale in einem Rechteck ist, welches als Ecken hat: > complexplot([2+I], view=[-1..3,-1..2],scaling=constrained, style=point, symbol=circle); Hier ist noch eine Version, die auch das Rechteck einzeichnet: > z:=2+I; > re:=complexplot([0,Re(z),z,Im(z)*I,0],thickness=2,colour= black): za:=complexplot([0,z],thickness=2,colour=red): display({za,re},view=[-1..3,-1..2],scaling=constrained); Das folgende Programm gibt eine eine komplexe Zahl zusammen mit ihrer Konjugierten aus. Die geometrische Interpretation der komplexen Konjugation ist die Orthogonalspiegelung an der reellen Achse. > PLO:=proc(z::complex) local r,rc,za,zb; r:=complexplot([0,Re(z),z,Im(z)*I,0],thickness=2,colour= black): rc:=complexplot([0,Re(z),conjugate(z),-Im(z)*I,0], thickness=1,colour=black): za:=complexplot([0,z],thickness=2,colour=red): zb:=complexplot([0,conjugate(z)],thickness=1,colour=red): display({r,rc,za,zb},scaling=constrained); end proc: > PLO(1+2*I); MATH: Die Länge der Diagonalen des Rechtecks, also die Strecke von 0 nach z ist gerade der Absolutbetrag von z, also die Quadratwurzel aus der Norm. Dies folgt sofort aus dem Satz von Pythagoras. MATH: Aus der Rechteck-Diagonal-Darstellung der komplexen Zahlen leitet man sofort die geometrische Interpretation der Addition komplexer Zahlen gemäß der Parallelogrammregel her, die wir hier kurz (ohne Rechtecke) visualisieren (SuduPar steht für "Summe durch Parallelogrammregel") : > SuduPar:=proc(a::complex,b::complex) local r,s,t; r:=complexplot([a,0,b],thickness=2, colour=blue); s:=complexplot([a,a+b,b],thickness=2, colour=black); t:=complexplot([0,a+b],thickness=2, colour=red); display({r,s,t},view=[-1..3,-2..2],scaling=constrained); end proc: > SuduPar(1/2+I,2-3/2*I); MATH: Eine bessere geometrische Einsicht, was es mit der Summe auf sich hat, erhält man, indem man für eine feste komplexe Zahl a die Abbildung betrachtet und diese visualisiert: bedeutet geometrisch eine Verschiebung oder mathematischer gesprochen - eine Translation um . Dies visualisiert man am besten dadurch, dass man auf eine Teilmenge von , also eine ebene Figur, elementweise anwendet (vissum steht für "visualisiere Summe"): > vissum:=proc(a::complex) local l,apl,figur; figur:=[0,1/2,1+I/6,(1+I)/6,1/6+I,I,0]; l:=complexplot(figur,thickness=2,colour=red); apl:=complexplot(map(z->z+a,figur),thickness=2,colour=blue) ; display({l,apl},view=[-1..2,-1..2],axes=NORMAL,scaling= constrained); end proc: > vissum((3-I)/5); MATH: Die geometrische Interpretation der Multiplikation lautet wie folgt: Ist mit eine feste komplexe Zahl, die von Null verschieden ist, so induziert die Multiplikation mit eine Drehstreckung, wobei der Drehwinkel gleich und der Streckfaktor gleich dem Absolutbetrag von ist. Auf den Beweis verzichten wir an dieser Stelle, aber wir wollen analog zu Multiplikation mit einer festen komplexen Zahl visualisieren als Abbildung die Hier ist ein Programm, welches analog zu dem Programm von ist: > visprod:=proc(a::complex) local l,aml,figur; figur:=[0,1/2,1+I/6,(1+I)/6,1/6+I,I,0]; l:=complexplot(figur,thickness=2,colour=red); aml:=complexplot(map(z->z*a,figur),thickness=2,colour=blue) ; display({l,aml},view=[-1..2,-1..2],axes=NORMAL,scaling= constrained); end proc: > visprod((1-I)); DENKANSTOSS: Beim Experimentieren mit visprod setze man 1) positive reelle Zahlen ein und 2) komplexe Zahlen vom Absolutbetrag 1 (letztere erzeugt man aus durch z / a b s ( z )). Was passiert in diesen beiden Fällen? MATH: Jede komplexe Zahl kann in eindeutiger Weise als Produkt einer positiven reellen Zahl mit einer Zahl vom Absolutbetrag 1 dargestellt werden. Man nennt das auch Polarzerlegung: > PolZer:=proc(z::complex) return abs(z),z/abs(z); > end proc: > PolZer(3+5*I); `*`(%); (3.2.1) Der rechte Ausdruck kann in MAPLE auch durch das Kommando signum bestimmt werden: > signum(3+5*I); (3.2.2) ÜBUNG [03]: Benutze die Polarzerlegung, um Erst durch und dann durch in zwei Stufen zu visualisieren: . Also geometrisch gesprochen: Erst eine Streckung, dann eine Drehung. (Man kann auch in umgekehrter Reihenfolge vorgehen, da das Kommutativgesetz für die Multiplikation komplexer Zahlen gilt. Allerdings bekommt man dann eine andere Visualisierung: Erst die gedrehte, dann die drehgestreckte Figur.) MATH: Eine weitere Art, die Abbildung zu visualisieren, besteht darin, dass man sie mehrmals auf eine feste Zahl anwendet, d. h. man betrachtet , etc. Wir sehen dann, dass bei immer wieder derselbe Drehwinkel auftaucht. Mit etwas Phantasie erkennt man auch den konstanten Streckfaktor an der Ähnlichkeit der entstehenden Dreiecke ("itMult" steht für "iteriere Multiplikation von z mit a n-mal"): > ItMult:=proc(z::complex,a::complex,n::posint) local i,pl; pl:=complexplot([0,z],colour=red); for i from 1 to n do pl:=pl,complexplot([0,a^i*z],colour=red); pl:=pl,complexplot([a^(i-1)*z,a^i*z],colour=blue); end do; display({pl},view=[-1.5..1.5,-1.5..1.5],scaling= constrained); end proc: > ItMult(1+I,(1+I/2)*5/6,20); MATH: Übrigens werden wir später lernen, dass man auch komplexe Zahlen mit reellen Exponenten potenzieren kann. Dann bekommen wir eine glatte Version (Version ohne Ecken) des letzten Bildes: > ItMultgla:=proc(z::complex,a::complex,n::posint) local j,pl; pl:=complexplot([0,z],colour=red); for j from 1 to n do pl:=pl,complexplot([0,a^j*z],colour=red); end do; pl:=pl,complexplot(a^i*z,i=0..n,colour=blue); display({pl},view=[-1.5..1.5,-1.5..1.5],scaling= constrained); end proc: > ItMultgla(1+I,(1+I/2)*5/6,20); MATH: Der Körper der komplexen Zahlen ist algebaisch abgeschlossen. Das bedeutet, dass jedes nichttriviale (d.h. von Grad ) komplexe Polynom eine komplexe Nullstelle hat. Beispiele: > factor(x^2+1); factor(x^2+1,I); (3.3.1) > factor(x^2+I*x+1,sqrt(5)); (3.3.2) > factor(x^2-2*x+1+2*I); (3.3.3) Ein Beweis, dass algebaisch abgeschlossen ist, liegt noch ausserhalb unserer Mittel. (Man kann ihn zum Beispiel mit Hilfe von Galoistheorie, dem Abbildungsgrad oder holomorphen Funktionen führen.) Wir wollen aber zumindest einen Spezialfall betrachten. ÜBUNG [04]: 1) Zeige, dass die Abbildung surjektiv ist. Hinweis: Das bedeutet, dass man zeigen muss, dass eine Wurzel existiert. Am sinnvollsten geht dies mit der Polarzerlegung. 2) Folgere aus Teil 1, dass jedes komplexe quadratische Polynom mit eine Nullstelle in C hat und damit in ein Produkt von zwei Linearfaktoren zerfällt.