Print a warning when translating subscripted functions
[maxima.git] / doc / tutorial / de / max_einfuehrung.tex
blobd9243930a9c1702fbf19486c0aec613995320a1e
1 \documentclass[12pt]{scrartcl}
3 \usepackage{lmodern}
4 \usepackage[T1]{fontenc}
5 \usepackage[utf8]{inputenc}
6 \usepackage[ngerman]{babel}
7 \usepackage{xspace}
8 \usepackage{microtype}
9 \usepackage[driverfallback=dvipdfm]{hyperref}
11 \newcommand*\zB{z.\,B.\xspace}
12 \newcommand*\ua{u.\,a.\xspace}
14 %% make the examples use a smaller fontsize in verbatim env
15 \makeatletter
16 \def\verbatim@font{\scriptsize\ttfamily
17 \hyphenchar\font\m@ne
18 \@noligs}
19 \makeatother
21 \pagestyle{headings}
23 \title{Einführung in Maxima}
24 \author{Robert Glöckner}
26 \begin{document}
28 \maketitle
30 \tableofcontents
32 \newpage
33 \thispagestyle{empty}
34 Copyright (C) Robert Glöckner
36 email (entferne alle Ziffern): 2R4o5b66e7r8t9.G0l5oe55ck8ne5r@6w0eb4.d3e
38 \vspace{1cm}
40 {\scriptsize
41 This program-documentation is free software-documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
42 This program-documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\@. See the GNU General Public License for more details.
43 You should have received a copy of the GNU General Public License along with this program-documentation; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
45 To keep this document short, a link to the text of the GPL-LICENCE (\url{https://www.fsf.org/licenses/gpl.html}).
47 \vspace{1cm}
49 Inoffizielle Übersetzung: Diese Programm-Dokumentation ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
50 Die Veröffentlichung dieser Programm-Dokumentation erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FüR EINEN BESTIMMTEN ZWECK\@. Details finden Sie in der GNU General Public License.
51 Sie sollten ein Exemplar der GNU General Public License zusammen mit dieser Programm-Dokumentation erhalten haben. Falls nicht, schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
53 Um das Dokument nicht aufzublähen, hier ein Link auf die inoffizielle
54 deutsche übersetzung der GPL:\\
55 \url{https://www.gnu.de/gpl-ger.html}.
58 \vspace{1cm}
60 Ich möchte nur kurz betonen, dass ich selbst Maxima-Anfänger bin und der Text nur auf die Grundlagen der Maxima-Benutzung eingehen kann. Die Beispiele haben keinen tieferen Sinn. Sie dienen lediglich der Darstellung der Möglichkeiten von Maxima.\\
61 Für weitere Anregungen bin ich immer dankbar\@.\\
62 Email (entferne alle Ziffern): 2R4o5b66e7r8t9.G0l5oe55ck8ne5r@6w0eb4.d3e
64 \vspace{1cm}
65 Verbesserungsvorschläge durch: Volker van Nek, Robert Figura.
67 \newpage
68 \section{Einführung}
70 \subsection{Starten von Maxima}
72 Maxima\footnote{Webseite: \url{https://maxima.sourceforge.io} \\
73 Dokumentation: \url{https://maxima.sourceforge.io/documentation.html} \\
74 Referenzhandbuch: \url{https://maxima.sourceforge.io/docs/manual/en/maxima.html}}
75 ist ein in Lisp geschriebenes freies Computer-Algebra System. Es ist
76 auf verschiedenen Betriebssystemen lauffähig.
77 Es gibt mehrere Möglichkeiten das Programm zu verwenden:
79 \begin{itemize}
80 \item auf der Konsole (hierzu \texttt{maxima}, bzw. \texttt{maxima.bat} starten)
81 \item eine rudimentäre grafische Oberfläche bietet \texttt{xmaxima} (mitgeliefert)
82 \item eine grafische Formelausgabe bietet wxmaxima
83 \item für Leute die \LaTeX{} benutzen ist texmacs oder emaxima interessant
84 \item für Emacs-Verrückte gibt es einen mitgelieferten maxima und
85 emaxima Modus (Start im Emacs mit M-x maxima oder öffnen einer {.mac} Datei)
86 \end{itemize}
88 Startet man Maxima (auf der Konsole) so erhält man folgende Meldung:
90 \begin{verbatim}
91 Maxima 5.14.0cvs http://maxima.sourceforge.net
92 Using Lisp CLISP 2.44 (2008-02-02)
93 Distributed under the GNU Public License. See the file COPYING.
94 Dedicated to the memory of William Schelter.
95 The function bug_report() provides bug reporting information.
96 (%i1)
97 \end{verbatim}
99 Es erscheint eine Meldung über die freie Lizenz, die
100 Widmung an Prof. W. Schelter (ihm haben wir die freie Version
101 von Maxima zu verdanken) und ein sog. Label \texttt{(\%i1)}. Jede Eingabe
102 wird mit einer Marke (Label) gekennzeichnet. Marken, welche mit einem
103 \texttt{i} beginnen kennzeichnen Benutzereingaben, \texttt{o}-Markierungen kennzeichnen
104 Ausgaben des Programms. Der Benutzer sollte dies bei der Namensgebung
105 eigener Variablen oder Funktionen berücksichtigen, um Verwechslungen
106 zu vermeiden.
108 \subsection{Kommandoeingabe}
110 Kommandos werden entweder mit einem Semikolon \texttt{;} oder einem
111 \texttt{\$} abgeschlossen. Es reicht nicht, Return oder Enter zu
112 drücken, Maxima wartet auf eines der beiden Zeichen; vorher beginnt
113 Maxima nicht mit der Auswertung der Eingabe. Ist das letzte Zeichen
114 ein Semikolon, so wird das Ergebnis der Verarbeitung angezeigt, im
115 Fall eines Dollarzeichens wird die Anzeige unterdrückt. Dies kann bei
116 sehr langen Ergebnissen sinnvoll sein, um die Wartezeit zu reduzieren
117 und die Übersicht zu wahren.
119 Maxima unterscheidet Groß- und Kleinschreibung. Alle eingebauten
120 Funktionen und Konstanten sind kleingeschrieben (\texttt{simp},
121 \texttt{solve}, \texttt{ode2}, \texttt{sin}, \texttt{cos},
122 \texttt{\%e}, \texttt{\%pi}, \texttt{inf}, etc). \texttt{sImP} oder
123 \texttt{SIMP} werden von Maxima nicht den eingebauten Funktionen
124 zugeordnet. Benutzerfunktionen und -variablen können klein und/oder
125 großgeschrieben werden.
127 Auf vorangegangene Ergebnisse und Ausdrücke kann mittels \texttt{\%}
128 zugegriffen werden. \texttt{\%} bezeichnet das letzte Ergebnis,
129 \texttt{\%i13} die 13. Eingabe und \texttt{\%o27} das 27. Ergebnis,
130 \texttt{''\%i42} wiederholt die Berechnung der 42. Eingabe,
131 \texttt{\%th(2)} ist das vorletzte Ergebnis.
133 Ausdrücke werden mit \texttt{:} einem Symbol zugewiesen; Funktionen
134 können mit \texttt{:=} einem Symbol zugewiesen werden.
136 \begin{verbatim}
137 (%i1) value : 3;
139 (%o1) 3
140 (%i2) equation : a + 2 = b;
142 (%o2) a + 2 = b
143 (%i3) function(x) := x + 3;
145 (%o3) function(x) := x + 3
146 (%i4) function(3);
148 (%o4) 6
149 (%i5) function(b);
151 (%o5) b + 3
152 \end{verbatim}
154 Zuweisungen können mit \texttt{kill} einzeln oder auch insgesamt gelöscht werden.
155 \begin{verbatim}
156 (%i6) kill(equation);
158 (%o6) done
159 (%i7) equation;
161 (%o7) equation
162 (%i8) function(3);
164 (%o8) 6
165 (%i9) kill(all);
167 (%o0) done
168 (%i1) function(3);
170 (%o1) function(3)
171 (%i2)
172 \end{verbatim}
174 \subsection{Beenden von Maxima}
176 Zum Abbrechen eines Kommandos drückt man die Tastenkombination
177 \texttt{Strg-C} oder \texttt{Strg-G}. Meldet sich der Debugger, so beendet
178 man diesen durch Eingabe von \texttt{Q}.
179 Zum Beenden von Maxima gibt man \texttt{quit();} ein (Bemerkung: unter
180 \texttt{xmaxima} (oder \texttt{wxmaxima}) das Menü benutzen).
183 \subsection{Hilfefunktionen}
185 Neben den Hilfefunktionen der Benutzerumgebung enthält Maxima eigene
186 Hilfefunktionen. Mit \texttt{apropos} kann nach Befehlen bezüglich
187 eines Stichwortes gesucht werden. Mit \texttt{describe} können
188 detaillierte Befehlsbeschreibungen angezeigt werden:
190 \begin{verbatim}
191 (%i3) apropos('plot);
192 (%o3) [plot, plot2d, plot2dopen, plot2d_ps, plot3d, plotheight, plotmode,
193 plotting, plot_format, plot_options]
194 (%i4) describe("plot");
195 \end{verbatim}
197 Manchmal fragt \texttt{describe} auch nach, welcher Teilbereich
198 beschrieben werden soll (hier nur ein kleiner Ausschnitt der
199 angezeigten Informationen):
201 \begin{verbatim}
202 0: (maxima.info)Plotting.
203 1: Definitions for Plotting.
204 2: OPENPLOT_CURVES :Definitions for Plotting.
205 3: PLOT2D :Definitions for Plotting.
206 4: PLOT2D_PS :Definitions for Plotting.
207 5: PLOT3D :Definitions for Plotting.
208 6: PLOT_OPTIONS :Definitions for Plotting.
209 7: SET_PLOT_OPTION :Definitions for Plotting.
210 Enter n, all, none, or multiple choices eg 1 3 : 5
211 Info from file /usr/share/info/maxima.info:PLOT3D (expr,xrange,yrange,...,options,..)
212 -- Function: PLOT3D ([expr1,expr2,expr3],xrange,yrange,...,options,..)
213 plot3d(2^(-u^2+v^2),[u,-5,5],[v,-7,7]);
214 would plot z = 2^(-u^2+v^2) with u and v varying in [-5,5] and
215 [-7,7] respectively, and with u on the x axis, and v on the y axis.
217 An example of the second pattern of arguments is
218 plot3d([cos(x)*(3+y*cos(x/2)),sin(x)*(3+y*cos(x/2)),y*sin(x/2)],
219 [x,-%pi,%pi],[y,-1,1],['grid,50,15])
221 which will plot a moebius band, parametrized by the 3 expressions
222 given as the first argument to plot3d. An additional optional
223 argument [grid,50,15] gives the grid number of rectangles in the x
224 direction and y direction.
225 ....
226 \end{verbatim}
228 Mit der Funktion \texttt{example} können Beispiele zu einigen
229 Funktionen von Maxima angezeigt werden (Darstellung hier gekürzt):
231 \begin{verbatim}
232 (%i3) example(integrate);
234 (%i4) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
235 (%o4) test(f) := block([u], u : integrate(f, x), ratsimp(f - diff(u, x)))
236 (%i5) test(sin(x));
237 (%o5) 0
238 (%i6) test(1/(x+1));
239 (%o6) 0
240 (%i7) test(1/(x^2+1));
241 (%o7) 0
242 (%i8) integrate(sin(x)^3,x);
244 cos (x)
245 (%o8) ------- - cos(x)
248 \end{verbatim}
250 \subsection{Darstellung der Ergebnisse}
252 Die Darstellung der Ergebnisse von Maxima ist im Wesentlichen von der
253 verwendeten Oberfläche abhängig. Während die Ausgabe auf der Konsole
254 und im einfachen Emacs-Modus auf die Darstellung von ASCII Zeichen
255 begrenzt ist, zeigen der erweiterte Emacs-Modus, Imaxima, Texmacs und
256 WxMaxima die Ergebnisse in grafischer Form an. D.\,h.\@ es werden
257 entsprechende Symbole für $\pi$, $\int$, $\sum$ usw.\@ verwendet.
258 Allgemein zeichnen sich die Ausgaben von Maxima durch exakte
259 Arithmetik aus:
261 \begin{verbatim}
262 (%i38) 1/11 + 9/11;
265 (%o38) --
267 \end{verbatim}
269 Irrationale Zahlen werden in ihrer symbolischen Form beibehalten (mit
270 \texttt{\%} wurde auf das Ergebnis der letzten Berechnung zugegriffen):
272 \begin{verbatim}
273 (%i39) (sqrt(3) - 1)^4;
276 (%o39) (sqrt(3) - 1)
277 (%i40) expand(%);
279 (%o40) 28 - 16 sqrt(3)
280 \end{verbatim}
282 Mit \texttt{ev(Ausdruck, numer)} oder kurz: \texttt{Ausdruck, numer}
283 oder \texttt{float(Ausdruck)} kann eine Dezimaldarstellung erzwungen
284 werden (beachten Sie hier die Referenz auf das vorangegangene Ergebnis
285 via \texttt{\%o40}):
287 \begin{verbatim}
288 (%i41) %o40, numer;
290 (%o41) 0.28718707889796
292 (%i5) float(%e);
294 (%o5) 2.718281828459045
295 \end{verbatim}
297 Die Voreinstellung der Genauigkeit bei Fließommazahlen beträgt 16
298 Stellen. Die Genauigkeit kann beliebig gewählt werden, wenn der
299 Zahlentyp \texttt{bfloat} verwendet wird. Die Anzahl der angezeigten
300 Stellen wird mit \texttt{fpprec} gesteuert. Man kann dazu
301 \texttt{fpprec} nur für die Auswertung einer Zeile setzen, wie dies in
302 Zeile \texttt{\%i46} geschieht, oder für alle folgenden Berechnungen,
303 wie dies in Zeile \texttt{\%i48} zu sehen ist:
305 \begin{verbatim}
306 (%i45) bfloat(%o40);
308 (%o45) 2.871870788979631B-1
309 (%i46) bfloat(%o40), fpprec=100;
311 (%o46) 2.871870788979633035608585359060421289151159390339099511070883287690717#
312 294591994067016610118840227891B-1
313 (%i47) fpprec;
315 (%o47) 16
316 (%i48) fpprec : 20;
318 (%o48) 20
319 (%i49) bfloat(%o40);
321 (%o49) 2.8718707889796330358B-1
322 (%i50) bfloat(%o40), fpprec=100;
324 (%o50) 2.871870788979633035608585359060421289151159390339099511070883287690717#
325 294591994067016610118840227891B-1
326 \end{verbatim}
328 Die Eingabe von bestimmten Konstanten (\zB $\pi$, \ldots) erfolgt mit
329 vorangestelltem \texttt{\%} (\texttt{\%e}, \texttt{\%i}, \texttt{\%pi} \ldots).
330 Die Darstellung von Konstanten (\zB $\pi$, \ldots), Operatoren
331 ($\sum$, $\int$, $\partial$, \ldots) und anderen Symbolen (Klammern,
332 Brüche, \ldots) ist abhängig von der gewählten Oberfläche. Im
333 Textmodus, der von der Konsole, dem einfachen Emacs-Modus und der
334 mitgelieferten xmaxima Oberfläche geboten wird, werden Konstanten mit
335 einem \texttt{\%} vorangestellt (\texttt{\%e}, \texttt{\%i},
336 \texttt{\%pi} \ldots), Operatoren werden in ASCII-Grafik dargestellt.
337 Klammern werden nicht in der Größe expandiert und Brüche mit Hilfe von
338 \texttt{-} dargestellt:
340 \begin{verbatim}
341 (%i51) sqrt(-3);
343 (%o51) sqrt(3) %i
344 (%i52) exp(5 * a);
347 (%o52) %e
349 (%i54) integrate( f(x) , x, 0, inf);
354 (%o54) I f(x) dx
358 \end{verbatim}
360 Die Darstellung im erweiterten Emacs-Modus, in Imaxima und in Texmacs
361 ist grafisch, d.\,h.\@ für \texttt{\%pi}, \texttt{\%e}, Integrale,
362 Summen, \ldots werden entsprechende Symbole verwendet.
364 Maxima kann natürlich auch Funktionen plotten. Die Funktion \\
365 \texttt{plot2d([Funktionsliste], [X-Var, Min, Max], [Y-Var, Min, Max])} \\
366 kann eine Gruppe von Funktionen plotten. Hierzu gibt man die
367 Liste von Funktionen in eckigen Klammern und durch Kommas getrennt als
368 ersten Parameter an, es folgt eine Liste, welche die abhängige
369 Variable und den Plotbereich (x-Achse) angibt. Darüber hinaus gibt es
370 noch viele andere Plotmöglichkeiten (\texttt{apropos('plot)},
371 \texttt{describe(plot)}).
373 \begin{verbatim}
374 (%i55) plot2d([sin(x), cos(x)], [x, 0, 5]);
376 (%i58) apropos('plot);
378 (%o58) [plot, plot2d, plot2dopen, plot2d_ps, plot3d, plotheight, plotmode,
379 plotting, plot_format, plot_options]
380 (%i59) (%i59) describe(plot);
382 0: (maxima.info)Plotting.
383 1: Definitions for Plotting.
384 2: openplot_curves :Definitions for Plotting.
385 3: plot2d :Definitions for Plotting.
386 4: plot2d_ps :Definitions for Plotting.
387 5: plot3d :Definitions for Plotting.
388 6: plot_options :Definitions for Plotting.
389 7: set_plot_option :Definitions for Plotting.
390 Enter space-separated numbers, `all' or `none': Enter space-separated numbers, `all' or `none': none
391 \end{verbatim}
393 \section{Rechnen mit Maxima}
395 \subsection{Operatoren}
397 Die üblichen arithmetischen Operatoren stehen zur Verfügung:
399 \begin{itemize}
400 \item \texttt{+} Addition,
401 \item \texttt{-} Subtraktion,
402 \item \texttt{*} skalare Multiplikation,
403 \item \texttt{.} Skalarmultiplikation von Vektoren und Matrix-Multiplikation,
404 \item \texttt{/} Division,
405 \item \texttt{**} oder \texttt{\^} Potenzfunktion,
406 \item \texttt{sqrt()} Quadratwurzelfunktion\footnote{$\sqrt[n]{x}$ muss durch \texttt{x\^{}(1/n)} ausgedrückt werden.},
407 \item \texttt{exp()} Exponentialfunktion,
408 \item \texttt{log()} natürliche Logarithmusfunktion
409 \end{itemize}
412 \subsection{Algebra}
414 Niemand ist vor Leichtsinnsfehlern bei der Umformung oder
415 Transformation von algebraischen Ausdrucken gefeit. Hier eignet sich
416 Maxima hervorragend bei der Unterstützung analytischer Berechnungen.
417 Dazu ein einfaches Beispiel für die Behandlung von Polynomen. Zunächst
418 wird via \texttt{expand} expandiert, anschließend eine Ersetzung vorgenommen,
419 danach mittels \texttt{ratsimp} ein gemeinsamer Nenner gesucht und
420 anschließend via \texttt{factor} faktorisiert:
422 \begin{verbatim}
423 (%i72) (5*a + 3*a*b )^3;
426 (%o72) (3 a b + 5 a)
427 (%i73) expand(%);
429 3 3 3 2 3 3
430 (%o73) 27 a b + 135 a b + 225 a b + 125 a
431 (%i74) %, a=1/x;
434 27 b 135 b 225 b 125
435 (%o74) ----- + ------ + ----- + ---
436 3 3 3 3
437 x x x x
438 (%i75) (%i75) ratsimp(%);
441 27 b + 135 b + 225 b + 125
442 (%o75) ----------------------------
445 (%i76) factor(%);
448 (3 b + 5)
449 (%o76) ----------
452 \end{verbatim}
454 \subsection{Lösen von Gleichungssystemen}
456 Maxima ist in der Lage, exakte Lösungen auch von nichtlinearen
457 algebraischen Gleichungsystemen zu berechnen. Im folgenden Beispiel
458 werden 3 Gleichungen nach drei Unbekannten aufgelöst:
460 \begin{verbatim}
461 (%i77) eq1: a + b + c = 6;
463 (%o77) c + b + a = 6
464 (%i78) eq2: a * b + c = 5;
466 (%o78) c + a b = 5
467 (%i79) eq3: a + b * c = 7;
469 (%o79) b c + a = 7
471 (%i93) s: solve([eq1, eq2, eq3], [a, b, c]);
473 (%o93) [[a = 1, b = 3, c = 2], [a = 1, b = 2, c = 3]]
474 \end{verbatim}
476 Die Lösung wird in Form einer Liste in eckigen Klammern dargestellt.
477 Im Folgenden wird gezeigt, wie auf die Elemente einer Liste
478 zugegriffen werden kann und wie man die Lösungen in andere
479 Gleichungen einsetzt.
481 \begin{verbatim}
482 (%i94) s[1];
484 (%o94) [a = 1, b = 3, c = 2]
486 (%i95) s[2];
488 (%o95) [a = 1, b = 2, c = 3]
491 (%i98) eq4: a * a + 2 * b * b + c * c;
493 2 2 2
494 (%o98) c + 2 b + a
495 (%i99) eq4, s[1];
497 (%o99) 23
498 (%i100) eq4, s[2];
500 (%o100) 18
501 \end{verbatim}
503 \subsection{Trigonometrische Funktionen}
505 Es stehen \ua\@ \texttt{tan}, \texttt{sin}, \texttt{cos},
506 \texttt{tanh}, \texttt{sinh}, \texttt{cosh} und deren Umkehrfunktionen
507 zur Verfügung.
509 \begin{verbatim}
510 (%i102) example(trig);
512 (%i103) tan(%pi/6)+sin(%pi/12);
513 %pi 1
514 (%o103) sin(---) + -------
515 12 sqrt(3)
516 (%i104) ev(%,numer);
517 (%o104) 0.83616931429214658
518 (%i105) sin(1);
519 (%o105) sin(1)
520 (%i106) ev(sin(1),numer);
521 (%o106) 0.8414709848078965
522 (%i107) beta(1/2,2/5);
524 (%o107) beta(-, -)
526 (%i108) ev(%,numer);
527 (%o108) 3.6790939804058804
528 (%i109) diff(atanh(sqrt(x)),x);
530 (%o109) -----------------
531 2 (1 - x) sqrt(x)
532 (%i110) fpprec:25;
533 (%i111) sin(5.0B-1);
534 (%o111) 4.794255386042030002732879B-1
535 (%i112) cos(x)^2-sin(x)^2;
537 (%o112) cos (x) - sin (x)
538 (%i113) ev(%,x:%pi/3);
540 (%o113) - -
542 (%i114) diff(%th(2),x);
543 (%o114) - 4 cos(x) sin(x)
544 (%i115) integrate(%th(3),x);
545 sin(2 x) sin(2 x)
546 -------- + x x - --------
548 (%o115) ------------ - ------------
550 (%i116) expand(%);
551 sin(2 x)
552 (%o116) --------
554 \end{verbatim}
556 Trigonometrische Ausdrücke lassen sich in Maxima leicht manipulieren.
557 Die Funktion \texttt{trigexpand} benutzt die
558 Summe-der-Winkel-Funktion, um Argumente innerhalb jeder
559 trigonometrischen Funktion so stark wie möglich zu vereinfachen.
561 \begin{verbatim}
562 sin(2 x)
563 (%o116) --------
565 (%i117) trigexpand(%);
566 (%o117) cos(x) sin(x)
567 \end{verbatim}
569 Die Funktion \texttt{trigreduce}, konvertiert einen Ausdruck in eine
570 Form, welche eine Summe von Einzeltermen, bestehend aus jeweils einer
571 sin oder cos Funktion ist.
573 \begin{verbatim}
574 (%o117) cos(x) sin(x)
576 (%i118) trigreduce(%);
577 sin(2 x)
578 (%o118) --------
581 (%i119) sech(x)^2*tanh(x)/coth(x)^2+cosh(x)^2*sech(x)^2*tanh(x)/coth(x)^2
582 +sech(x)^2*sinh(x)*tanh(x)/coth(x)^2;
584 2 2 2 2
585 sech (x) sinh(x) tanh(x) cosh (x) sech (x) tanh(x) sech (x) tanh(x)
586 (%o119) ------------------------ + ------------------------- + ----------------
587 2 2 2
588 coth (x) coth (x) coth (x)
589 \end{verbatim}
591 (\texttt{sech()} ist eine hyperbolische Sekantenfunktion.)
592 \texttt{trigsimp} ist eine Vereinfachungsroutine, welche verschiedene
593 trigonometrische Funktionen in sin und cos Equivalente umwandelt.
595 \begin{verbatim}
596 (%i120) trigsimp(%);
598 5 4 3
599 sinh (x) + sinh (x) + 2 sinh (x)
600 (%o120) --------------------------------
602 cosh (x)
603 \end{verbatim}
605 \texttt{exponentialize()} transformiert trigonometrische Funktionen in ihre komplexe Exponentialform.
607 \begin{verbatim}
608 (%i121) ev(sin(x),exponentialize);
609 %i x - %i x
610 %i (%e - %e )
611 (%o121) - ----------------------
613 \end{verbatim}
615 \texttt{taylor(Funktion, Variable, Entwicklungspunkt, Grad)}
616 entwickelt Funktionen in ihre Taylorreihe um den angegebenen
617 Entwicklungspunkt bis zum vorgegebenen Grad.
619 \begin{verbatim}
621 (%i122) taylor(sin(x)/x,x,0,4);
625 (%o122)/T/ 1 - -- + --- + . . .
626 6 120
628 (%i123) ev(cos(x)^2-sin(x)^2,sin(x)^2 = 1-cos(x)^2);
631 (%o123) 2 cos (x) - 1
633 \end{verbatim}
635 \subsection{Komplexe Zahlen}
637 \begin{verbatim}
638 (%i144) z: a + b * %i;
640 (%o144) %i b + a
641 (%i145) z^2;
644 (%o145) (%i b + a)
645 (%i146) exp(z);
647 %i b + a
648 (%o146) %e
649 \end{verbatim}
651 \texttt{trigrat()} transformiert (komplexe) Exponentialfunktionen in
652 entsprechende sin und cos Funktionen um.
654 \begin{verbatim}
655 (%i148) trigrat(exp(z));
658 (%o148) %i %e sin(b) + %e cos(b)
659 \end{verbatim}
661 Komplexe Zahlen lassen sich mit \texttt{imagpart()} und
662 \texttt{realpart()} in die entsprechenden Real- und Imaginärteile
663 aufspalten:
665 \begin{verbatim}
666 (%i149) imagpart(%);
669 (%o149) %e sin(b)
670 (%i150) realpart(%th(2));
671 \end{verbatim}
673 \subsection{Ableitungen, Grenzwerte, Integrale}
675 Mit Maxima lassen sich \ua\@ Ableitungen, Integrale,
676 Taylorentwicklungen, Grenzwerte sowie exakte Lösungen gewöhnlicher
677 Differentialgleichungen berechnen.
678 Zunächst definieren wir auf zwei verschiedene Arten ein Symbol f als
679 Funktion von x. Beachten Sie die Unterschiede bei der Auswertung der
680 Ableitung.
682 \begin{verbatim}
683 (%i129) f : x^3;
686 (%o129) x
687 (%i130) diff(f,x);
690 (%o130) 3 x
691 (%i131) kill(f);
693 (%o131) done
694 (%i132) f(x) := x^3;
697 (%o132) f(x) := x
698 (%i133) diff(f,x);
700 (%o133) 0
701 (%i134) diff(f(x),x);
704 (%o134) 3 x
705 \end{verbatim}
707 Ein Beispiel für eine Taylorreihenentwicklung und eine Grenzwertberechnung:
709 \begin{verbatim}
710 (%i140) f(x) := sin(x) / x;
712 sin(x)
713 (%o140) f(x) := ------
715 (%i141) taylor(f(x),x,0,5);
719 (%o141)/T/ 1 - -- + --- + . . .
720 6 120
721 (%i142) limit(f(x),x,0);
723 (%o142) 1
724 \end{verbatim}
726 Integrale lassen sich bestimmt und unbestimmt berechnen:
728 \begin{verbatim}
729 (%i109) integrate(%e^x/(2+%e^x),x);
731 (%o109) log(%e + 2)
733 (%i116) integrate(x^(5/4)/(1+x)^(5/2),x,0,inf);
736 (%o116) beta(-, -)
738 \end{verbatim}
740 \subsection{Lösen von Differentialgleichungen}
742 Ableitungen, bzw. Differentiale können so eingegeben werden, dass sie
743 ausgewertet oder nicht ausgewertet werden. Das Apostroph wirkt als
744 Maskierung und verhindert die Auswertung durch Maxima:
746 \begin{verbatim}
747 (%i9) 'diff (y, x);
749 (%o9) --
751 (%i10) diff (y, x);
752 (%o10) 0
753 \end{verbatim}
755 Zum Lösen von gewöhnlichen Differentialgleichungen stehen folgende
756 Funktionen zur Verfügung: \texttt{ode2}, \texttt{ic1}, \texttt{ic2}, \texttt{bc1}, \texttt{bc2}.
757 \texttt{ic1}, \texttt{ic2} sind auf Anfangswertaufgaben 1. bzw. 2. Ordnung spezialisiert.
758 \texttt{bc1}, \texttt{bc2} sind auf Randwertaufgaben 1. bzw. 2. Ordnung spezialisiert.
760 \begin{verbatim}
761 (%i23) dgl1: -'diff(y,x) * sin(x) + y * cos(x) = 1;
764 (%o23) cos(x) y - sin(x) -- = 1
766 (%i24) ode2( dgl1, y, x);
769 (%o24) y = sin(x) (------ + %c)
770 tan(x)
771 (%i25) (%i25) trigsimp(%);
773 (%o25) y = %c sin(x) + cos(x)
774 \end{verbatim}
776 \subsubsection*{Anfangswertaufgabe}
777 Harmonische Schwingungen \zB eines Pendels
778 werden durch folgende Differentialgleichung beschrieben und mittels
779 \texttt{ode2} und \texttt{ic2} gelöst:
781 \begin{verbatim}
782 (%i38) dgl2: 'diff(y,x,2) + y = 0;
786 (%o38) --- + y = 0
789 (%i39) ode2(dgl2, y, x);
791 (%o39) y = %k1 sin(x) + %k2 cos(x)
792 (%i40) ic2(%, x=0, y=y0, 'diff(y,x)=0);
794 (%o40) y = cos(x) y0
795 \end{verbatim}
797 \subsubsection*{Randwertaufgabe}
798 Bei gleichmäßger Belastung, lässt sich die Biegelinie
799 eines ruhenden und auf 2 Stützen liegenden Balkens unter bestimmten
800 Umständen durch folgende Differentialgleichung beschreiben und mittels
801 \texttt{ode2} und \texttt{ic2} lösen:
803 \begin{verbatim}
804 (%i41) dgl3: 'diff(y,x,2) = x - x^2;
807 d y 2
808 (%o41) --- = x - x
811 (%i42) ode2(dgl3, y, x);
814 x - 2 x
815 (%o42) y = - --------- + %k2 x + %k1
817 (%i43) bc2(%, x=0, y=0, x=1, y=0);
820 x - 2 x x
821 (%o43) y = - --------- - --
822 12 12
824 (%i45) expand(%);
827 x x x
828 (%o45) y = - -- + -- - --
829 12 6 12
830 \end{verbatim}
832 \subsection{Matrizenrechnung}
834 Mit Maxima lassen sich auch allgemeine Matrizenoperationen durchführen.
836 \begin{verbatim}
837 (%i79) m:matrix([a,0],[b,1]);
838 [ a 0 ]
839 (%o79) [ ]
840 [ b 1 ]
841 (%i80) m^2;
842 [ 2 ]
843 [ a 0 ]
844 (%o80) [ ]
845 [ 2 ]
846 [ b 1 ]
847 (%i81) m . m;
848 [ 2 ]
849 (%o81) [ a 0 ]
851 [ a b + b 1 ]
852 (%i82) m[1,1]*m;
853 [ 2 ]
854 (%o82) [ a 0 ]
856 [ a b a ]
857 (%i83) 1-%th(2)+%;
858 [ 1 1 ]
859 (%o83) [ ]
860 [ 1 - b a ]
861 (%i84) m^^(-1);
862 [ 1 ]
863 [ - 0 ]
864 [ a ]
865 (%o84) [ ]
866 [ b ]
867 [ - - 1 ]
868 [ a ]
869 (%i85) [x,y] . m;
871 (%o85) [ b y + a x y ]
873 (%i86) matrix([a,b,c],[d,e,f],[g,h,i]);
875 [ a b c ]
877 (%o86) [ d e f ]
879 [ g h i ]
880 (%i87) %^^2;
881 [ 2 ]
882 [ c g + b d + a c h + b e + a b c i + b f + a c ]
884 (%o87) [ 2 ]
885 [ f g + d e + a d f h + e + b d f i + e f + c d ]
887 [ 2 ]
888 [ g i + d h + a g h i + e h + b g i + f h + c g ]
889 \end{verbatim}
891 Außerdem lassen sich \ua\@ die Determinante, die Inverse, die
892 Eigenwerte sowie Eigenvektoren einer Matrix berechnen. Die Matrix darf
893 dabei auch symbolische Ausdrücke enthalten. \texttt{eigenvalues(m)}
894 hat als Ergebnis eine Liste, bestehend aus 2 Unterlisten. Die erste
895 Unterliste enthält die Eigenwerte, die zweite Unterliste die
896 entsprechenden Multiplikatoren.
898 \begin{verbatim}
899 (%i60) m : matrix( [1, 0, 0], [0, 2, 0], [0, 0, 3]);
901 [ 1 0 0 ]
903 (%o60) [ 0 2 0 ]
905 [ 0 0 3 ]
906 (%i61) eigenvalues(m);
908 (%o61) [[1, 2, 3], [1, 1, 1]]
909 \end{verbatim}
911 Die Funktion \texttt{eigenvectors} berechnet Eigenwerte, deren
912 Multiplikatoren, sowie die Eigenvektoren der gegebenen Matrix. Die
913 Ergebnisse werden in Listen bzw. Unterlisten zusammengefasst. Es gibt
914 verschiedene Möglichkeiten die Auswertung mit Kommandos wie
915 \texttt{nondiagonalizable}, \texttt{hermitianmatrix},
916 \texttt{knowneigvals} zu beeinflussen. Diese werden mit
917 \texttt{describe(eigenvectors)} beschrieben.
919 \begin{verbatim}
920 (%i62) eigenvectors(m);
922 (%o62) [[[1, 2, 3], [1, 1, 1]], [1, 0, 0], [0, 1, 0], [0, 0, 1]]
923 (%i71) part( %, 2);
925 (%o71) [1, 0, 0]
926 \end{verbatim}
928 Weiterhin gibt es Funktionen zur Transponierung (\texttt{transpose}),
929 Berechnung der Determinante (\texttt{determinant}), Berechnung des
930 charakteristischen Polynomes \texttt{charpoly(Matrix, Variable)} sowie
931 zur Berechnung der Inversen (\texttt{invert}). Das Schlüsselwort
932 \texttt{detout} faktorisiert dabei die Determinante aus der Inversen.
934 \section{Programmieren in Maxima}
936 Bis jetzt haben Sie gesehen, wie man Maxima im interaktiven Modus wie
937 einen Taschenrechner benutzt. Für Berechnungen, welche wiederholt
938 Kommandosequenzen durchlaufen müssen, sind Programme geeigneter.
939 Programme werden gewöhnlich in einem Texteditor (z.B. Emacs) geschrieben
940 und dann mittels \texttt{batch} in Maxima geladen.
942 Im Folgenden schreiben wir ein kleines Statistik-Münzwurfprogramm zur
943 Veranschaulichung. Mit \texttt{block([Lokale Variablen], Kommando1, Kommando2 \ldots)} wird
944 ein Block von Kommandos definiert. Die lokalen Variablen können auch
945 mit Startwerten versehen werden, wie im Folgenden gezeigt wird:
947 \begin{verbatim}
948 (%i13) muenze_werfen(n) := block([muenze, statistik:[0,0] ], /* Kommentare wie in C/C++ */
949 print("Ich werde die Münze ", n, "mal werfen. 1 = Zahl, 2 = Kopf"),
950 for i: 1 thru n do ( /* eine for schleife, für genauere informationen siehe DO */
951 muenze : random(2) + 1, /* 1 + Zufallsgenerator von 0 bis 1 */
952 statistik[muenze] : statistik[muenze] + 1 ), /* Array-Indizes beginnen mit EINS! */
953 print("Zahl wurde ", statistik[1], "mal geworfen"),
954 print("Kopf wurde ", statistik[2], "mal geworfen"), n);
956 (%o13) muenze_werfen(n) := block([muenze, statistik : [0, 0]],
957 print("Ich werde die Münze ", n, "mal werfen. 1 = Zahl, 2 = Kopf"),
958 for i thru n do (muenze : random(2) + 1,
959 statistik : statistik + 1),
960 muenze muenze
962 print("Zahl wurde ", statistik , "mal geworfen"),
965 print("Kopf wurde ", statistik , "mal geworfen"), n)
967 (%i14) muenze_werfen(1000);
969 Ich werde die Münze 1000 mal werfen. 1 = Zahl, 2 = Kopf
970 Zahl wurde 485 mal geworfen
971 Kopf wurde 515 mal geworfen
972 (%o14) 1000
973 \end{verbatim}
975 Dieselben Ausgaben kann man auch in eine Datei \texttt{daten.txt} umlenken:
977 \begin{verbatim}
978 muenze_werfen(n) := block( [muenze, statistik:[0,0] ], /* Kommentare wie in C/C++ */
979 with_stdout( "Daten.txt",
980 print("Ich werde die Münze ", n, "mal werfen. 1 = Zahl, 2 = Kopf"),
981 for i: 1 thru n do ( /* eine for schleife, für genauere informationen siehe DO */
982 muenze : random(2) + 1, /* 1 + Zufallsgenerator von 0 bis 1 */
983 statistik[muenze] : statistik[muenze] + 1 ), /* Array-Indizes beginnen mit EINS! */
984 print("Zahl wurde ", statistik[1], "mal geworfen"),
985 print("Kopf wurde ", statistik[2], "mal geworfen")
989 \end{verbatim}
991 \section{Maxima-Funktionen}
993 Die Referenz befindet sich unter \url{file://doc/html/maxima_toc.html} im
994 Installationspfad von Maxima. In Maxima können Sie Hilfe durch die
995 Kommandos \texttt{describe}, \texttt{apropos} und \texttt{example}
996 erhalten. \texttt{apropos(Stichwort)} gibt eine Liste von eventuell
997 geeigneten Kommandos. \texttt{describe(Befehl)} beschreibt die
998 einzelnen Kommandos genauer (evtl.\@ müssen Sie noch eine Auswahl treffen,
999 welcher Aspekt genauer beschrieben werden soll) und
1000 \texttt{example(Befehl)} gibt Beispiele für den jeweiligen Befehl
1001 (soweit vorhanden) aus.
1003 Ein kleine Auswahl wichtiger und nützlicher Maxima-Funktionen:
1005 \begin{itemize}
1006 \item \texttt{allroots(a)} Findet alle (allgemein komplexen) Wurzeln
1007 einer Polynomialgleichung.
1008 \item \texttt{append(a,b)} Fügt Liste b an a an.
1009 \item \texttt{apropos(a);} Liefert zu einem Stichwort mögliche Befehle/Funktionen.
1010 \item \texttt{batch(a)} Lädt und startet Programm/File a.
1011 \item \texttt{bc1, bc2 ( DGL, x=x0, y=y0, x=x1, y=y1)} Lösung einer
1012 Randwertaufgabe einer DGL nach Behandlung mit ode2.
1013 \item \texttt{charpoly(Matrix, Variable)} Berechnet das
1014 charakteristische Polynom einer Matrix bzgl.\@ der gegebenen Variable.
1015 \item \texttt{coeff(a,b,c)} Koeffizienten von b der Potenz C in Ausdruck a.
1016 \item \texttt{concat(a,b)} Generiert ein Symbol ab.
1017 \item \texttt{cons(a,b)} Fügt a in Liste b als erstes Element ein.
1018 \item \texttt{demoivre(a)} Transformiert alle komplexen Exponentialterme in trigonometrische.
1019 \item \texttt{denom(a)} Nenner von a.
1020 \item \texttt{depends(a,b)} Erklärt a als Funktion von b (nützlich für Differentialgleichungen).
1021 \item \texttt{desolve(a,b)} Versucht ein lineares System a von gew. DGLs
1022 nach unbekannten b mittels Laplace-Transformation zu lösen.
1023 \item \texttt{describe(a)} Beschreibt einen Befehl oder eine Funktion
1024 näher. Eventuell wird nachgefragt, welcher Aspekt eines Befehls oder
1025 einer Befehlsgruppe näher beschrieben werden soll.
1026 \item \texttt{determinant(a)} Determinante
1027 \item \texttt{diff(a,b1,c1,b2,c2,\ldots,bn,cn)} Gemischte partielle Ableitung von a nach $b_i$ der Stufe $c_i$.
1028 \item \texttt{eigenvalues(a)} Berechnet die Eigenwerte und ihre Multiplikatoren.
1029 \item \texttt{eigenvectors(a)} Berechnet Eigenvektoren, Eigenwerte und Multiplikatoren.
1030 \item \texttt{entermatrix(a,b)} Matrixeingabe einer Matrix mit a Zeilen und b Spalten.
1031 \item \texttt{ev(a,b1,b2,\ldots,bn)} Berechnet Ausdruck a unter den Annahmen $b_i$
1032 (Gleichungen, Zuweisungen, Schlüsselwörter (numer - Zahlenwerte,
1033 detout - Matrixinverse ohne Determinante, diff - alle Ableitungen
1034 werden ausgeführt). \emph{Nur} bei direkter Eingabe kann ev weggelassen werden.
1035 \item \texttt{example(a)} Zeigt Beispiele für die Verwendung eines
1036 Befehls oder einer Funktion an. Nicht für jede Funktion sind Beispiele vorhanden.
1037 \item \texttt{expand(a)} Algebraische Expansion (Distribution).
1038 \item \texttt{exponentialize(a)} Transformiert trigonometrische Funktionen in ihre komplexen Exponentialfunktionen.
1039 \item \texttt{factor(a)} Faktorisiert a.
1040 \item \texttt{freeof(a,b)} Ergibt wahr, wenn b nicht a enthält.
1041 \item \texttt{grind(a)} Darstellung einer Variable oder Funktion in einer kompakten Form.
1042 \item \texttt{ic1, ic2 (dgl, x=x0, y=y0, dy0/dx = y1)} Lösung einer Anfangswertaufgabe einer DGL (nach Behandlung mit ode2).
1043 \item \texttt{ident(a)} Einheitsmatrix a x a.
1044 \item \texttt{imagpart(a)} Imaginärteil von a.
1045 \item \texttt{integrate(a,b)} Berechnungsversuch des unbestimmten Integrals a nach b.
1046 \item \texttt{integrate(a,b,c,d)} Berechnung des Integrals a nach b in den Grenzen b=c und b=d.
1047 \item \texttt{invert(a)} Inverse der Matrix a.
1048 \item \texttt{kill(a)} Vernichtet Variable/Symbol a.
1049 \item \texttt{limit(a,b,c)} Grenzwertbestimmung des Ausdrucks a für b gegen c.
1050 \item \texttt{lhs(a)} Linke Seite eines Ausdrucks.
1051 \item \texttt{loadfile(a)} Lädt eine Datei a und führt sie aus.
1052 \item \texttt{makelist(a,b,c,d)} Generiert eine Liste von a(b) mit b=c
1053 bis b=d.
1054 \item \texttt{map(a,b)} Wendet a auf b an.
1055 \item \texttt{matrix(a1,a2,\ldots,an)} Generiert eine Matrix aus Zeilenvektoren.
1056 \item \texttt{num(a)} Zähler von a.
1057 \item \texttt{ode2(a,b,c)} Löst gewöhnliche Differentialgleichungen 1.
1058 und 2. Ordnung a für b als Funktion von c.
1059 \item \texttt{part(a,b1,\ldots,bn)} Extrahiert aus a die Teile bi.
1060 \item \texttt{playback(a)} Zeigt die a letzten Labels an, wird a
1061 weggelassen, so werden alle Zeilen zurückgespielt.
1062 \item \texttt{print( a1, a2, a3, \ldots )} Zeigt die Auswertung der
1063 Ausdrücke an.
1064 \item \texttt{ratsimp(a)} Vereinfacht a und gibt einen Quotienten zweier
1065 Polynome zurück.
1066 \item \texttt{realpart(a)} Realteil von a
1067 \item \texttt{rhs(a)} Rechte Seite einer Gleichung a.
1068 \item \texttt{save(a,b1,\ldots,bn)} Generiert eine Datei a (im
1069 Standardverzeichnis), welche Variablen, Funktionen oder Arrays bi
1070 enthält. So generierte Dateien lassen sich mit loadfile
1071 zurückspielen. Wenn b1 all ist, wird alles bis auf die Labels gespeichert.
1072 \item \texttt{solve(a,b)} Algebraischer Lösungsversuch für ein
1073 Gleichungssystem oder eine Gleichung a für eine Variable oder eine
1074 Liste von Variablen b. Gleichungen können =0 abkürzen.
1075 \item \texttt{string(a)} Konvertiert a in Maximas lineare Notation.
1076 \item \texttt{stringout(a,b1,\ldots,bn)} Generiert eine Datei a im
1077 Standardverzeichnis, bestehend aus Symbolen bi. Die Datei ist im
1078 Textformat und nicht dazu geeignet von Maxima geladen zu werden. Die
1079 Ausdrücke können aber genutzt werden, um sie in Fortran, Basic oder
1080 C-Programmen zu verwenden.
1081 \item \texttt{subst(a,b,c)} Ersetzt a für b in c.
1082 \item \texttt{taylor(a,b,c,d)} Taylorreihenentwicklung von a nach b in
1083 Punkt c bis zur Ordnung d.
1084 \item \texttt{transpose(a)} Transponiert Matrix a.
1085 \item \texttt{trigexpand(a)} Eine Vereinfachungsroutine, welche
1086 trigonometrische Winkelsummen nutzt, um einen Ausdruck zu vereinfachen.
1087 \item \texttt{trigreduce(a)} Eine Vereinfachungsroutine für
1088 trigonometrische Produkte und Potenzen.
1089 \item \texttt{trigsimp(a)} Eine Vereinfachungsroutine, welche
1090 verschiedene trigonometrische Funktionen in sin und cos Equivalente umwandelt.
1091 \item \texttt{with\_stdout(Datei, Ausdrücke)} Leitet die Ausgabe der
1092 Ausdrücke in die angegebene Datei um.
1093 \end{itemize}
1095 \end{document}