Einführung in MAXIMA

Wikipedia: "Maxima ist ein Computeralgebrasystem, das als Open-Source-Projekt unter der 
GNU General Public License (GPL) entwickelt wird. Implementiert ist Maxima in Common 
Lisp. Es existieren Versionen für Windows, macOS, Linux und Android.

Maxima ist eine Version von Macsyma, einem der ersten Computeralgebrasysteme. Es wurde 
in den 1960er Jahren im Auftrag des US-Energieministeriums (DOE) am MIT entwickelt. 
Eine Macsyma-Version (DOE Macsyma) wurde von William Schelter von 1982 bis zu seinem Tod 
2001 weiterentwickelt. 1998 erhielt Schelter vom Energieministerium die Genehmigung, seine 
Version unter der GPL zu veröffentlichen. Diese Version wird nun unter dem Namen Maxima 
von einer unabhängigen Gruppe von Anwendern und Entwicklern gepflegt."

Im folgenden haben wir für Sie einige der wichtigsten Grundbefehle von Maxima 
zusammengestellt:

Mengen M:{1,2,3} N:set(4,5,9} cardinality(M) union(M,N) intersection(M,N) Schnitt setdifference(M,N) M/N cartesian_product(M,N) Menge aller geordneten Tupel powerset(M) Potenzmenge disjoint(M,N) true wenn disunkt adjoin(element,M) hinzufügen disjoin(element,M) löschen emptyp(M) true wenn leer elementp(element,M) Ist element in der Menge? Dann true subset(M,N) true wenn M c N (Teilmenge von N) symmdifference(M,N) die Elemente, die genau in einer der beiden Mengen vorkommen subst(neu,alt,M) ersetzen makeset(ausdruck,liste,Liste von Listen/Mengen) Bsp: makeset(a+b*x,[a,b],[[1,2],[2,3],[3,4]]); -> {1+2x,…} Listen delete(element,L) löscht alle Vorkommen last(L) bzw. first(L) member(element,L) gehört Element zur Liste, dann true unique(L) Dopplungen rausschmeißen rest(L,n) restl. Liste ohne die n ersten/ -n letzten endcons(element,L) sublist(L,p) sublist_indices(L,p) an welchen Positionen sind Elemente mit Eigenschaft von p sort(L) subst(neu,alt,L) ersetzt alle Vorkommen some(p,L) true wenn Element mit Eigenschaft in Liste every(p,L) emptyp(L) listify(M) bzw. setify(L) (schmeißt auch Dopplungen raus!) makelist(ausdruck,var1,start1,ende1,...) create_list(a+b*x,a,1,4,b,1,4); create_list(x^i,i,[1,2,4]); lsum(n,n,L) Listenelemente aufsummieren MAP map(FUNKTION,[liste]) map(sin,[0,%pi/2,%pi]); map(rhs,[x=2,x=3]); Nullstellenberechnung solve([expr1,expr2],[x,y]), multiplicities, factor(expr), realroots(expr), allroots(expr) imagpart(), realpart(), find_root(-x^2+4,x,1,2); -> 2.0 Schalter: realonly, algexact Plotten plot2d(ausdruck,[x,start,ende]) evt. noch [y,start,ende] plot3d(…) mehrere Funktionen in eine Graphik plotten plot2d([expr1,expr2],[x,...,...],[y,...,...]) plot3d([expr1,expr2,[x,..,...],[y,...,...]]) Kreis Bsp: wxplot2d([parametric,cos(t),sin(t)],[t,0,2*%pi],[x,-5,5]); Zylinder Bsp: wxplot3d([cos(t),sin(t),v],[t,0,2*%pi],[v,0,2]); Plotten mit Draw-Paket a:explicit(sin(x),x,0,2*%pi) b:parametric(cos(t),sin(t),t,0,2*%pi) c:implicit((x-1)^2+y^2=1,x,0,2,y,-1,1) scene:gr2d(a,b,c) und draw(szene) oder draw2d(a) beispielsweise Zylinder:parametric_surface(cos(u),sin(u),v,u,0,2*%pi,v,0,1) Ebene:parametric_surface(x,y,0,x,-2,2,y,-2,2) Ebene2:explicit(x,x,-2,2,y,-2,2) Kegel:gr3d(parametric_surface(2*v*cos(u),2*v*sin(u),4*v,u,0,2*%pi,v,0,1)) (4*v => Höhe 4, 2*v*cos => 2 ist Radius vom Grundkreis, dieser Zylinder steht auf der Spitze) Kugel:parametric_surface(R*sin(u)*cos(v),R*sin(u)*sin(v),R*cos(u),u,0,%pi,v,0,2*%pi)) Grenzwerte,Summen und Co taylor(expr,var,p,grad) taylor(expr,[var1,...,varn],[p1,...,pn],grad), sum(f(n),n,von,bis) lsum(f(n),n,liste) simpsum simpproduct product(g(n),n,von,bis) limit(expr,x,x0,plus/minus) powerseries(expr,var,p) Differentiation und Integration diff(expr,x1,n1,...,xm,nm), subst(a,b,f(b)) ersetze a für b in f(b) define(h(x),diff(f(x),x)) at(ausdruck,var=wert) integrate(expr,var,start,ende) oder ohne Start und Ende für das unbestimmte Integral Extrahieren length(expr) op(expr) part(expr,n1,n2,…,nm) args(expr) Matrizen M:matrix([1,2],[2,3]) dotproduct(v1,v2)