MuPAD Session Notebook Das Computeralgebrasystem MuPAD 0. Bemerkungen Vor dem Arbeiten mit diesem Notebook bitte im Menu View -> Options "Word Wrap" auf "Wrap to Window" setzen. Sollte das Ausführen von Befehlen zu Fehlern oder zu gar keiner Ausgabe führen, schließen Sie bitte das Notebook und öffnen Sie es erneut, um an der entsprechenden Stelle fortzufahren. Achtung: Hierbei kann es nötig sein, vorangegangene Befehle nochmals ausführen zu müssen, da MuPAD sonst selbstdefinierte Funktionen oder Variablen nicht bekannt sind. Bei der grafischen Darstellung von Funktionen in der VCam kann es zu Problemen kommen. Abhilfe schafft meist das Umstellen des Scaling auf "UnConstrained" in den VCam Properties. 1. Einführung Ursprünglich: Verwendung von Computern ausschließlich für numerische Berechnungen. ----> Numerische Berechnung: Funktionswert Wissenschaftliche Berechnung: Formeln) "symbolischer Text" (Argumente) (1) Algebraische Berechnung (Umformung von (2) Numerische Berechnung Steigende Bedeutung algebraischer Berechnungen: 1. Vorbereitung effizienter numerischer Berechnungen 2. theoretische Zwecke (Theorembeweise) 3. liefern im Gegensatz zur Numerik exakte Ergebnisse Algebraische Berechnung: "Äquivalenzumformer" "symbolischer Text" -----------------------------------> "äquivalenter symbolischer Text" Beispiel: Äquivalente Umformung von Polynomen (a) Ausmultiplizieren expand ((x-1)^10); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (b) Faktorisieren factor (1 - 10*x + 45*x^2 - 120*x^3 + 210*x^4 - 252*x^5 + 210*x^6 - 120*x^7 + 45*x^8x^10); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 10*x^9 + · · Computeralgebra ist der Teil der Informatik, der sich mit der Erstellung, Analyse, Implementierung und Anwendung algebraischer Algorithmen befaßt. Merkmale von Computeralgebrasystemen: (a) großer Hauptspeicherbedarf (b) relativ langsam bei zu kleinem Speicher (c) meist interaktive Nutzung (d) bearbeitete Daten sind meist mathematische Ausdrücke und haben Listen- bzw. Baumstruktur (e) Implementierung meist in LISP (List Programming Language) (f) dynamische Speicherplatzverwaltung (g) ältere Computeralgebrasysteme waren ungeeignet für Numerik und Graphik Bemerkungen zu MuPAD: (A) Version 1.1 (1993), Version 1.2.9a (1996), Version 2.0 (2001), aktuell Version 2.5.2 (B) Einheit von Computeralgebra, Numerik und Graphik (C) lauffähig unter Windows, Apple-Macintosh, Linux, Solaris, ... (D) Festplattenbedarf: - Version 1.2.9a ca. 16 MByte (E) ab Version 2.0 Unterscheidung zwischen: - MuPAD Light (kostenlos) Einschränkungen: - kein Notebook-Konzept - Light hat nur 2D-ASCII-Ausgabe, sogenannte Prettyprints - keine interaktive Manipulation von Grafiken - es muss alles per Befehl in MuPAD-Syntax spezifiziert werden - MuPAD Pro (ca.1000 Euro) zusätzliche Eigenschaften von MuPAD Pro: - interaktive Erstellung von Grafiken - Grafiken können in Notebooks eingebettet werden - neue Objekte können interaktiv mittels Dialogen definiert und in eine bestehende Szene eingefügt werden - alle Eigenschaften von Objekten und Szenen können interaktiv mittels Dialoge konfiguriert werden - beliebiges Vergrößern, Verkleinern und Drehen von Szenen und mausgesteuerte Verschiebung von Beschriftungen - PostScript-Ausgabe (EPSF) - Speichern der Grafiken in diversen Formaten, u.a. Windows Metafiles, BMP, JPEG, PNG, TIF - VCam Pro-Grafiken sind OLE-Objekte - HTML-Export der MuPAD Notebooks (ab V 2.5) Weitere Computeralgebrasysteme: * Maple V * Derive * Axiom * Macsyma * Mathematica 2. Numerik Allgemeine Merkmale: * keine Typvereinbarungen für Variablen oder Funktionen (integer, real, array, ...) * soweit möglich, exakte Ergebnisse Beispiele: 1/3 + 2/7; · · · 3^100; · · · fact (330) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · # Fakultät # · · ; · · ifactor(70612139395722186); · · · · · · · · · · · · · · · · · * "beliebige" Genauigkeit erreichbar Beispiel: DIGITS :=100: float(sqrt(10)) · · · · · · # auf 100 Stellen gerundet; float erzwingt Gleitkommazahl # ; · · · · · · · · · · · · · · · · · · * es existiert eine Vielzahl numerischer Funktionen Beispiele: float(sum (1/(i^3), i = 1..infinity)); · · · · · · · · · · · · · · · · · solve(x^2-2 = 0, x) ; · · · · · · · · · · · · · · · · · float ( solve( (x^5) + x + 1 = 0, x ) ); · · · · · · · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, # Skalieren der Funktion: die Festlegung auf unconstrained wird aber ignoriert, Einstellung über VCam -> Properties # [ Mode = Curve, [x, x^3 - 2 * x^2 + 2 ], x = [-5, 5], Grid = [100] ] ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · f := proc(x) # die Deklaration einer Funktion erfolgt in MuPAD über eine Prozedur # begin a:=x^3-2*x^2+2 end_proc ; · · · · · · · · · · · · · · · · · solve (diff(f(x), x) =0, x); · · · · · · · · · · f(4/3); · · · · · · · · · · · · · · · · · · · · · · · · · · · weitere Beispiele: 2.4^45; · · · · · · · (( 24 *( 10 ^ (-1)) ) ^ 45); · · · · · · · · · · float (%); · · · · · · · · · · f:=NIL; a:=NIL # Freigabe von a und f #; · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 3. Computeralgebra Arbeitsweise: Es werden solange Transformationsregeln auf den gegebenen Ausdruck angewendet, bis sich dieser nicht mehr ändert. Dabei sind auch rein formale Variablen verwendbar. In traditionellen Programmiersprachen werden Variablen nur als Namen für Objekte (Zahlen etc.) benutzt. Einige Beispiele: (a) Summen und Grenzwerte sum (1/(i^2), i = 1..infinity); · · · · · · · limit( sin (x ) / x, x =0 ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (b) Mengenoperationen m1 := {a, b, c, d}; m2 := {c, d, f, g}; allmenge := {a, b, c, d, e, f, g, h}; · · · · · · · · · · m1 union m2; · · · · · · · · · · m1 intersect m2 # Schnittmenge # ; · · · · · · · · · · allmenge minus m1; · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (c) Lösen von Gleichungen und Gleichungssystemen solve( x ^ 2 + 2* x - 7 = 0, x ); · · · · · · · · · · solve( { a*x + y = 0, 2*x + (1 - a)*y = 1 }, { x, y }); · · · · · · · · · · solve (x^2 -2=0, x); · · · · · · · · · · (d) Listen Listen sind grundlegende Strukturen der Computeralgebra. Sie können für Mengen, Felder (Arrays),... verwendet werden. Die in MuPAD benutzte Grundform für beliebige Ausdrücke basiert auf dem Listenkonzept; man erinnere sich auch an die den meisten Computeralgebrasystemen zugrundeliegende Programmiersprache LISP. Liste := table (n=fact(n) $ n=1..15) # die Schrittweite ist immer auf 1 festgelegt # · · · · · · · · · for i from 1 to 15 step 1 do Liste [i] := float (ln(Liste[i])) · · · · · · ; · # neue Liste über for-Schleife berechnet # end_for # mit Doppelpunkt statt Semikolon wird die Ausgabe des Ergebnisses unterdrückt # : · · · · · · · · · · · · · · DIGITS := 10: Liste # Ausgabe der neuen Liste mit Rundung auf 10 Stellen # ; · · · · · · · · · · · · · · Liste1 := []: for i from 1 to 15 step 1 do Liste1 := Liste1.[point(i,Liste[i])] # Erstellen einer Liste mit x- und y- Punkten # end_for: · · · · · · · · · · · · · · plot2d ([ Mode = List, Liste1 ]) # diese wird hier gezeichnet # ; · · · · · · · · · · · MuPAD hat keine vordefinierte Funktion zur Bestimmung einer · · · Approximationsfunktion für diese Punkte. (f) Transformationsregeln Transformationsregeln sind ein wesentliches Werkzeug zur Steuerung der Arbeit von MuPAD. Neben der Vielzahl systemspezifischer Transformationsregeln besteht die Möglichkeit der Verwendung nutzerdefinierter Transformationsregeln, die universell einsetzbar sind. Als globale Transformationsregeln finden Definitionen der folgenden Form Verwendung: f := proc(x) begin a:=x^2 end_proc; · · · · · ( f(3) + f(b+c) ); · · · · · · · · · · · · · · · · · · · · · · · · · · · oder auch globale Wertzuweisungen der Art d:=3: d^3; · · · · · · · · · a:=NIL;b:=NIL;c:=NIL;d:=NIL;f:=NIL; · · · · · · · · · · · · · · · · · · · · · · · · Lokale Transformationsregeln benutzt man folgendermaßen: f := proc(x) begin a:=1 + x^2 + 3* x^3 end_proc; · # lokale Variablen werden in die Prozedur geschrieben # · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · f(1+b); · f:=NIL; a:=NIL; · · · · (g) Integration int (x^n, x); · · · · · · int ( (ln(x)^2) * ((1 + x^2 ) / x), x ); · · · · · · · · diff (%,x); · · · · · · · · float ( int (sin( sin( x)), x=0..1 ) ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 4. Grafik Die graphischen Möglichkeiten von MuPAD sind faszinierend, sie umfassen zweidimensionale sowie "dreidimensionale" Darstellungen. Dabei sind auch Darstellungen von in Parameterform gegebenen Kurven und Flächen möglich. Die Darstellung kann interaktiv beeinflusst werden. (a) 2D-Graphik - Polynome Wir definieren eine Funktionenschar mit Parameter a: f := proc(x) begin b:=a*x^3 + 3*x^2 - 2 end_proc: · · · · · · · · · · df1:= diff(f(x),x); · · · · · · · · · · df2:= diff(f(x),x,x); · · · · · · · · · · a:=1; · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, f(x)], x = [-5, 5], Grid = [50] ] · · · · · · · · · · · · · · · · · · · · · · · · · ); · · · plot2d( · · · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, f(x)], x = [-5, 5], Grid = [50] ], [ Mode = Curve, [x, df1], x = [-5, 5], Grid = [50] ], [ Mode = Curve, [x, df2], x = [-5, 5], Grid = [50] ] ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, df1], x = [-5, 5], Grid = [50] ] ); plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, df2], x = [-5, 5], Grid = [50] ] ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Nun demonstrieren wir den Einfluss des Parameters a auf die Funktionen der Schar f(x) = a*x^3 + 3*x^2 - 2, indem wir a von 0 bis 2 variieren: Als erstes wird eine Tabelle definiert, in der die 20 einzelnen Funktionen abgespeichert werden. Danach wird mit Hilfe der Tabelle eine Liste erstellt, worin die Parameter für die Plotfunktion zusammen mit den zu zeichnenden Funktionen abgelegt werden. Dies geschieht u. a., um im Plotbefehl Schreibarbeit zu sparen. Nun wird der Plotbefehl mit allen Elementen der Liste ausgeführt. Dabei ist es in MuPAD leider nicht möglich, innerhalb des Plotbefehls den Sequenzoperator( plot2d=(Liste [i] $ i=1..21) ) zu verwenden. Weiterhin ist es nicht möglich, das Element 0 einer Liste im Plotbefehl auszuwählen. Deshalb zählen wir von 1 bis 21. a:=NIL; · · · · · · · · · · · · · · · · · · · · · · · · Liste := table ((a+1)=(a/10)*x^3 + 3*x^2 - 2 $ a=0..20); · · · · · · · · · · · · · · · · Liste2:=[]: for i from 1 to 21 step 1 do Liste2:=Liste2.[ [Mode= Curve, [x,Liste[i]], x=[-5,5], Grid=[100]] ] end_for: · · · · · · · · · · · · · · plot2d ( Liste2[1], Liste2[2], Liste2[3], Liste2[4], Liste2[5], Liste2[5], Liste2[6], Liste2[7], Liste2[8], Liste2[9], Liste2[10], Liste2[11], Liste2[12], Liste2[13], Liste2[13], Liste2[14], Liste2[15], Liste2[16], Liste2[17], Liste2[18], Liste2[19], Liste2[20], Liste2[21] ); · · · · · · · · · · · · · · · · a:=NIL; Liste:=NIL; Liste2:= NIL; · · · · · · · · · · · · · · - Logarithmusfunktion Wir definieren eine Funktionenschar mit Parameter a: a:=NIL; b:=NIL; · · · · · · · · · · h := proc(x) begin b:=ln((a*x + b)^2 )* sin(x) end_proc; · · · · · · · d1h:=(diff(h(x),x)); · · · · · · · d2h:=diff(h(x),x,x); · · · · · · · a:=1; · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · b:=2; · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, h(x)], x = [-7, 15], Grid = [50] ] ); · · · · · · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, d1h], x = [-7, 15], Grid = [50] ] ); · · · · · · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, d2h], x = [-7, 15], Grid = [50] ] ); · · · · · · · · · · · · · · · · plot2d( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, h(x)], x =[-7, 15], Grid = [50] ], [ Mode = Curve, [x, d1h], x = [-7, 15], Grid = [50] ], [ Mode = Curve, [x, d2h], x =[-7, 15], Grid = [50] ] ); · · · · · · · · · · (b) 3D-Graphik plot3d(Axes = Box, Ticks = 0, TitlePosition = Below, [ Mode = Surface, · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · [u, v, sin(u*v)], u = [0, 3], v = [0, 3], Grid = [30, 30], Style = [HiddenLine, Mesh] ] ); · · · · · · · · · · · · · · torus_y:=proc(u,v) begin sin(v) end_proc; · · · · · · · · · · torus_x := proc(u,v) begin (5+cos(v))*cos(u) end_proc; · · · · · · · · · · · torus_z := proc(u,v) begin (5+cos(v))*sin(u) end_proc; · · · · · · · · · · · plot3d ( Axes = None, [ Mode = Surface, [ hold(torus_x(u,v))-4, hold(torus_y(u,v)), hold(torus_z(u,v)) ], u= [0, 2*PI], v= [0, 2*PI], Grid = [30,30], Style = [ColorPatches, AndMesh] ], [ Mode = Surface, [ hold(torus_x(u,v))+3, hold(torus_z(u,v)), hold(torus_y(u,v)) ], u= [0, 2*PI], v= [0, 2*PI], Grid = [30,30], Style = [ColorPatches, AndMesh] ], [ Mode = Surface, [ hold(torus_x(u,v))+10, hold(torus_y(u,v)), hold(torus_z(u,v)) ], u= [0, 2*PI], · · · · · · · · · · · · · · · · · · · · · · · · · · · v= [0, 2*PI], Grid = [30,30], Style = [ColorPatches, AndMesh] ], [ Mode = Surface, [ hold(torus_x(u,v))+17, hold(torus_z(u,v)), hold(torus_y(u,v)) ], u= [0, 2*PI], v= [0, 2*PI], Grid = [30,30], Style = [ColorPatches, AndMesh] ] ); · · · · · · · · · · · · · · · · · · · · · · · · · · Animationsgrafik entfällt, da MuPAD dies nicht unterstützt. 5.5. Spezielle Anwendungen 5.1. Lineare Gleichungssysteme (a) Eindeutig lösbar solve ( { x+3*y-z = 4, -2*x+y+3*z = 9, 4*x+2*y+z = 11 }, {x, y, z} ); · · · · · · · · · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,x + 3*y - 4],x= [0,3],y= [0,3],Grid = [10,10], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,2/3*x - 1/3*y + 3],x= [0,3],y= [0,3],Grid = [10,10], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,-4*x-2*y+11],x=[0,3],y= [0,3],Grid = [10,10], Style = [ColorPatches, AndMesh]] ); · · · · · · · · · · · · · (b) Unendlich viele Lösungen solve ( { x + 2*y - z = 4, 2*x + 5*y + 2*z = 9, x + 4*y + 7*z = 6 }, {x, y, z} ); · · · · · · · · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,x + 2*y - 4],x= [0,3],y= [0,3],Grid = [10,10], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,-x- 5/2*y+9/2],x= [0,3],y= [0,3],Grid = [10,10], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,-1/7*x - 4/7*y + 6/7],x= [0,3],y= [0, 3],Grid = [10,10], Style = [ColorPatches, AndMesh]] ); · · · · · · · · · · · · · · · · · · · · · · · · · (c) Keine Lösung solve( { - 2*y + z = -5 , 2*x + y - z = -2, 4*x - z = -4 }, {x, y, z} ); · · · · · · · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,2*y - 5],x= [-6,0],y= [-3,0],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,2*x + y + 2],x= [-6,0],y= [-3,0],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,4*x + 4],x= [-6,0],y= [-3,0],Grid = [20,20], Style = [ColorPatches, AndMesh]] ); · · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,x],x= [-6,6],y= [-3,0],Grid = [20,20], · Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,-x],x= [-6,6],y= [-3,0],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,4],x= [-6,6],y= [-3,0],Grid = [20,20], Style = [ColorPatches, AndMesh]] ); · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,0],x= [0,6],y= [0,6],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,1],x= [0,6],y= [0,6],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,2],x= [0,6],y= [0,6],Grid = [20,20], Style = [ColorPatches, AndMesh]] ); · · · · · · plot3d (Axes = None, [Mode = Surface, [x,y,0],x= [0,6],y= [-1,2],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,1],x= [0,6],y= [-1,2],Grid = [20,20], Style = [ColorPatches, AndMesh]], [Mode = Surface, [x,y,y],x= [0,6],y= [-1,2],Grid = [20,20], Style = [ColorPatches, AndMesh]] ); · · · · · · 5.2. Kurvendiskussion von Funktionenscharen (Polynom 2. Grades) (a) Definition f:=NIL; · · · · · · · f := proc(x) begin b:=(a2*x^2 + a1*x + a0) end_proc; · · · · · · · · · · · · · · · · · · · · · · · · · Berechnung von Funktionswerten: f(3); · · · · · · · · · · · · · · · Die Parameter a0, a1, a2 können global mit Werten belegt werden: a0:=1;a1:=0.5;a2:=0.3; · · · · · · f(x); · · · · · · f(3); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Oder (nach Löschen der Wertzuweisung): a0:=NIL;a1:=NIL;a2:=NIL; · · · · · · a0;a1;a2; · · · · · · · · · · · · · · · · · · · · · · · · kann man die Parameter a0, a1, a2 lokal mit Werten belegen: f:=NIL; · · · · · · f := proc(x) begin a0:=1; a1:=0.5; a2:=0.3; b:=(a2*x^2 + a1*x + a0) end_proc; · · · · · · a0;a1;a2; · · · · · · f(3); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (b) Ableitung Es sind Ableitungen mit Parametern in der Funktion möglich: a0:=NIL;a1:=NIL;a2:=NIL;f:=NIL; · · · · · · · · · · · f := proc(x) begin b:=(a2*x^2 + a1*x + a0) end_proc; · · · · · · diff(f(x),x); · · · · · · diff(f(x),x,x); · · · · · · a0:=1;a1:=0.5;a2:=0.3; · · diff(f(x),x); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · (c) Graphische Darstellung Die einfachste Form beinhaltet nur die Funktion und den darzustellenden x-Bereich, allerdings brauchen wir nun natürlich konkrete Werte für die Parameter a0, a1, a2 (hier etwa permanent (also global) zugewiesen). Die Parameter a0, a1 und a2 sind aus dem vorangegangenen Abschnitt bereits mit 1, 0.5 und 0.3 belegt. plot2d ( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [ x, f(x) ], x = [-3,3], Grid = [50] ] ); · · · · · · · · · · · · g2:=diff(f(x),x); · · · · · · · · · · g3:=diff(f(x),x,x); · · · · · · · · · · plot2d ( Axes = None, Ticks = 1, TitlePosition = Below, Scaling=UnConstrained, [ Mode = Curve, [x, f(x)], x =[-1.5,5], Grid = [50] ], [ Mode = Curve, [x, g2], x = [-1.5,5], Grid = [50] ], [ Mode = Curve, [x, g3], x = [-1.5,5], Grid = [50] ] ); · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 5.3. Funktionenscharen bei Parameteränderung (Polynom 2. Grades) Ein Polynom 2. Grades a0:=NIL;a1:=NIL;a2:=NIL;f:=NIL; · · · · · · f := proc(x) begin b:=(a2*x^2 + a1*x + a0) end_proc: · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · a0:=1; a1:=0.5; · · · · · · · · · · Liste := table ((c+1)=c*x^2 +a1*x +a0 $ c=0..20): · · · · · · · · · · Liste2:=[]: for i from 1 to 21 step 1 do Liste2:=Liste2.[ [Mode= Curve, [x,Liste[i]], x=[-5,5], Grid=[100]] ] end_for: · · · · · · · · · · plot2d ( Liste2[1], Liste2[2], Liste2[3], Liste2[4], Liste2[5], Liste2[5], Liste2[6], Liste2[7], Liste2[8], Liste2[9], Liste2[10], Liste2[11], Liste2[12], Liste2[13], Liste2[13], Liste2[14], Liste2[15], Liste2[16], Liste2[17], Liste2[18], Liste2[19], Liste2[20], Liste2[21] ); · · · · · · · · · · · · · · Befehle analog zu Kapitel 4, Teil (a). Viel Spass mit MuPAD ! Marcel Wiehle Thomas Ullrich Michael Wenzel TU Bergakademie Freiberg April 2003