SAGE das ultimative open source Computer-Algebra-System



Ähnliche Dokumente
SAGE, ein open source CAS vor allem für die diskrete Mathematik?

Mathematisch-algorithmische Grundlagen für Big Data

Ergänzungsseminar zu "Rechenmethoden für Studierende der Chemie"

Einführung. Vita Rutka. Universität Konstanz Fachbereich Mathematik & Statistik AG Numerik SS 2009

Computerorientiertes Problemlösen

Eigenwerte und Eigenvektoren von Matrizen

Lineare Algebra und Lösung linearer zeitinvarianter Differentialgleichungssysteme

Einführungskus MATLAB

Elemente der Analysis I Kapitel 2: Einführung II, Gleichungen

Eine Kurzanleitung zu Mathematica

Operations Research II

promote SAGE für Forschung und Lehre

Integration von Schülerinnen und Schülern mit einer Sehschädigung an Regelschulen. Didaktikpool

Computeralgebra in der Thermo- und Fluiddynamik: Zustandsgleichung, Zustandsänderungen und Kreisprozesse

3. Grundlagen der Linearen Programmierung

. Sage-Einsatz in der Lehre. Open Source Mathematik-Software. Jochen Schulz. Georg-August Universität Göttingen 1/15

Ein Rundgang durch Sage

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

MATHEMATIK mit. 2. elearning Didaktik Fachtagung 24. und 25. Oktober Herbert Arzt und Karin Schachner

Simulink: Einführende Beispiele

Task: Nmap Skripte ausführen

Der Zwei-Quadrate-Satz von Fermat

Gewöhnliche Differentialgleichungen (ODEs) I

Die Naturwissenschaftlich-Technische Fakultät 6 der Universität des Saarlandes Fachrichtung Informatik

1. Übung zu "Numerik partieller Differentialgleichungen"

3.3 Eigenwerte und Eigenräume, Diagonalisierung

FiM Fit in Mathematik ein Fitness-Programm

Erweiterung eines SMIL Players für die Darstellung von Transparenzen und SVG Inhalten

Werkzeuge der Informatik UNIX

32 Bachelorstudiengang Allgemeine Informatik

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Gliederung. 1. That s Radiant 2. User Interface 3. Rollen 4. Installation 5. Extensions 6. Fazit

Stabilität mittels Ljapunov Funktion

Z- module telematic I. Software Overview Johannes Schütt

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Kevin Caldwell. 18.April 2012

Theoretische Informatik I

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

SAP NetWeaver Gateway. 2013

Spieltheorie Kapitel 7, 8 Evolutionary Game Theory Modelling Network Traffic using Game Theory

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Diskrete Modellierung

Beispiel 19. December 4, 2009

Lineare Gleichungssysteme

Computer Aided Engineering

Grundbegriffe der Informatik

Scala & Lift. Ferenc Lajko

Numerische Mathematik mit Matlab

Log Parser 2.0 HackerScan.js. Beschreibung. Anforderungen. Unterstützte Plattformen. Script-Code. Zurück zur Übersichtsseite

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

Studien- und Prüfungsordnung für Bachelor- Studiengänge der Hochschule Aalen (SPO 31) vom 29. Juni 2012

FAQs zum Bachelorstudiengang Software Engineering PO-Version Allgemeine Informationen zum Bachelorstudiengang Software Engineering

Algorithmen mit Python

Hans Walser, [ a] Wurzeln aus Matrizen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Rapide An Event-Based Architecture Definition Language

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Informatik, Mathematik und Naturwissenschaften

Modellierung und Programmierung 1

Äquivalenztabelle der Studienleistungen

Aufgabe 1. Sei A Mat(n n, R) mit Eigenwert 3. Dann gilt: Eig(A, 3) = Kern(A + 3E n ).

Zusammenhänge zwischen metrischen Merkmalen

WICHTIGER HINWEIS FÜR HÄNDLER UND SERVICE-WERKSTÄTTEN:

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Erste Schritte am Rechner

Test-Driven Design: Ein einfaches Beispiel

Lineare Algebra und analytische Geometrie II (Unterrichtsfach)

Information Systems Engineering Seminar

Wie Google Webseiten bewertet. François Bry

Installation und Inbetriebnahme von SolidWorks

Agile Programmierung in der Praxis

... über OGVIT GmbH & Co. KG

Statistik und Computer Statistische Software (R) Paul Fink, M.Sc. Formeln und Code Was ist Statistiksoftware?

Spline Morphing. Softwarepraktikum im IWR. Carl Friedrich Bolz. Carl Friedrich Bolz

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Vorkurs: Mathematik für Informatiker Steven Köhler, Anja Moldenhauer, Marcel Morisse

Programmierparadigmen

Bildverarbeitung und Algorithmen. Einführung in ImageJ

Predictive Modeling Markup Language. Thomas Morandell

Azure und die Cloud. Proseminar Objektorientiertes Programmieren mit.net und C# Simon Pigat. Institut für Informatik Software & Systems Engineering

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

Kapitel MK:IV. IV. Modellieren mit Constraints

MINT-Initiative am FKG: Von der Mathematik zur IT

Zeichen bei Zahlen entschlüsseln

Whitepaper. Produkt: List & Label 16. List & Label 16 unter Linux/Wine. combit GmbH Untere Laube Konstanz

Funktionales Programmieren in Python

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Verbesserungsdetails: PTC Mathcad Prime 3.0. Copyright 2013 Parametric Technology Corporation. weiter Infos unter

The B Method. B ist eine Methode zur Spezifikation zum Entwurf zur Implementierung von Software Systemen. Bücher zur B-Methode

Der Einsatz von Computeralgebrasystemen in Abiturprüfungen

ZuuL - Entwicklung eines Adventures

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

The Modular Structure of Complex Systems Seminar SoftwareArchitektur Fabian Schultz

EigenMath Howto. Beispiele: Was erhält man, wenn man 100 mal die Zahl 2 mit sich multipliziert? Antwort

Mathematik + Informatik dual studieren

Transkript:

das ultimative open source Computer-Algebra-System Institut für Informatik & Automation, IIA Fakultät E&I, Hochschule Bremen, HSB IIA-Kolloquium, 8.12.2010, ZIMT

Agenda 1 für Computer Algebra Systeme 2 = System for Algebraic & Geometric Experimentation 3 = (Symbolic) Calculus 4 5 6 Gewöhnliche Differentialgleichungen IVP 7 Gewöhnliche Differentialgleichungen BVP 8 Programmierung 9 10 ausprobieren!

für CASs in Forschung & Lehre CASe als Werkzeuge zum Problem-Lösen: kennenlernen, nutzen, lösen CASe als Werkzeug zur Untersuchung von Algorithmen: implementieren, analysieren, Leistung messen CASe helfen, Mathematik zu verstehen: visualisieren, animieren, Konzepte illustrieren/verifizieren CASe zu untersuchen, deckt die Mathematik dahinter auf: untersuchen, erweitern, vergleichen relevante Eigenschaften von CASen = Leistung/Potential CAS für Forschung & Lehre Gebrauchswert CAS ist intuitiv und Problem-Orientiert. Verfügbarkeit CAS ist unmittelbar verfügbar bzw. einfach zu installieren.

Ähnlichkeiten = System for Algebraic and Geometric experimentation vs MATLAB oder Octave&GinaC resp. beide CASe (incl. Symbolic Math Toolbox) command line, programmierbar, problem orientiert, erweiterbar gemeinsame Merkmale: graphics, workspaces, interpretiert, precompiled, object orientation etc Differenzen local implementation & web interface Python viele predefined data types objects modules open source MATLAB local implementation & kostenpflichtiger mcc m-files wenig predefined data types handles toolboxes proprietary/open source

(Symbolic) Calculus: Visualisierung plot(sin(x)) plot(sin(x),-3,3) p=plot(sin(x),-3,3, \ color='red'); q=plot(cos(x),-3,3, \ color='blue'); show(p+q); ezplot('sin(x)') ezplot('sin(x)',-3,3) hdl=ezplot('sin(x)',-3,3); set(hdl,'color','r'); hold on; hdl=ezplot('cos(x)',-3,3); set(hdl,'color','b'); hold off; plot(1/x,detect_poles=true) ezplot('1/x',-1,1)

Differentiation und Integration diff(sin(x)/x,x) integral(x*sin(x),x) diff(sin(x)/x,x) int(x*sin(x),x) integral(exp(-x 2/2),x,0,1) int(exp(-x 2/2),x,0,1) selbstverständlich auch mit numerischer Auswertung, z.b. N(integral(sin(x)/x,x,0,1)) N(int(sin(x)/x,x,0,1))

Gleichungen symbolisch lösen z.b. lineare Gleichungen (Gleichungssysteme) vrs=var('a b c d e f x y'); solve([ \ a*x+b*y==c, \ d*x+e*y==f],x,y) z.b. nicht-lineare Gleichungen syms a b c d e f x y; [x y] = solve(... 'a*x+b*y-c',... 'd*x+e*y-f',x,y) vars=var('a b c d x'); solve( \ a*x 3+b*x 2+c*x+d==0,x) syms a b c d x; solve(... 'a*x 3+b*x 2+c*x+d') z.b. Differentialgleichungen t = var('t'); x = function('x',t); desolve(diff(x,t)+x==1,[x,t]) % t is independent % var by default dsolve('dx+x=1')

Lineare Algebra Vektoren & Matrizen pnts = [(random(),random())\ for _ in range(5)]; p = line(pnts); c = cos(pi/4); s = sin(pi/4); R=N(matrix([[c,s],[-s,c]])); pnts = matrix(pnts)*r; q=line([(pnts[i,0],pnts[i,1])\ for i in range(5)],\ color='red'); (p+q).show() plgn = rand(2,5); plot(plgn(1,:),... plgn(2,:)); hold on; c=cos(pi/4); s=sin(pi/4); R = [c s;-s c]; plgn = R*plgn; plot(plgn(1,:),... plgn(2,:),'r'); hold off;

lineare Gleichungen vars = var('a,b,c,d,e,f'); A = matrix([[a,b],[c,d]]); b = vector([e,f]); A\b oder auch symbolisch A = matrix([[1,2,3], \ [3,2,1],[1,1,1]]); b =vector([0,-4,-1]); A\b Eigenwerte & Eigenvektoren syms a b c d e f; A = [a b;c d]; b = [e;f]; A\b A = sym([1,2,3;... 3,2,1;1,1,1]); b =sym([0;-4;-1]); A\b A = Matrix([[1,2,3], \ [3,2,1],[1,1,1]]); A.eigenvalues(); # or A.eigenvectors_right(); A = sym([1,2,3;... 3,2,1;1,1,1]); eig(a) % or [V,D] = eig(a);

beide CASe basieren auf BLAS oder LAPACK Routinen! lineare Gleichungen per Zerlegung lösen: LU, Cholesky, Schur, SVD least squares, Eigenwerte & Eigenvektoren nicht-lineare Gleichungen lösen Quadratur, einfach/doppelt/dreifach gewöhnliche Differentialgleichungen lösen x = var('x'); find_root( \ cos(x)==sin(x),0,pi/2) % x0 is start guess % or start intervall fzero(... @(x)(cos(x)-sin(x)), x0)

Gewöhnliche Differentialgleichungen Anfangswertprobleme, IVP ( ) Volterra-Lottka IVP Model y y1 (a by = 2 ) für y 2 ( c + dy 1 ) t [0, 25] und für zwei Populationen y 1 (t) und y 2 (t). # initialize # a,b,c,d,y0[0],y0[1] def odefun(y,t): return [ \ y[0]*(a-b*y[1]), \ y[1]*(-c+d*y[0])]; t = srange(0,25,0.01); y = odeint(odefun,y0,t) % initialize % a,b,c,d,y0(1),y0(2) function fvl = odef(t,y) fvl=[y(1)*(a-b*y(2));... end y(2)*(-c+d*y(1))]; tspan = [0 25]; [t y_ode45] =... ode45(@odef,tspan,y0);

Gewöhnliche Differentialgleichungen Randwertprobleme, BVP Etwa das BVP u + 2u + u = 0 für 0 x ( π 2 mit ) u(0) = 3, u( π ) = 2 2 ist äquivalent zu y y = 2. 2y 2 y 1 vars = var('x'); de = diff(y,x,2)+ \ 2*diff(y,x)+y==0; sln = desolve(de, \ y,[0,3,pi/2,2]); plot(sln(x),(x,0,pi/2)); # there are packages # like the numerical # scikits.bvp_solver # also... f = @(x,y) [y(2);... -y(2)-y(1)]; g = @(ya,yb)[ya(1)-3;... yb(1)-2]; x = linspace(0,pi/2,10)'; yguess=@(x)[3-2*x/pi;... -2/pi]; init = bvpinit(x,yguess); sln = bvp4c(f,g,init); xp = 0:0.01:pi/2; plot(xp,deval(sln,xp,1));

Programmierung Animation anmt = animate( \ [point([ \ 2*sin(pi/8*cos(t)),\ 2*(1-cos(pi/8*cos(t)))])\ for t in \ srange(0,11,0.1)],\ xmin=-1,xmax=1, \ ymin=0,ymax=2) anmt.show() plot([-2,2,0,0],... [0,0,0,2],'k'); hold on; h=plot(0,0,'.k'); while true set(h,'xdata',... 2*sin(pi/8*cos(t))); set(h,'ydata',... 2-2*cos(pi/8*cos(t))); drawnow; end; hold off;

Interaktion @interact def NN(a=(0,2), \ b=1, c=[0,2,4]): p=plot( \ a*x 2+b*x+c,\ -2,2); p.show(); % begin code snippet a = get(ha,'value'); b=double(get(hb,'string')); c = get(hc,'value'); f = @(x) a*x. 2+b*x+c; ezplot(f); % end code snippet

Ein ist schwierig [14]. symbolic engines x=var('x'); bool(x<x+1) syms x; expr = (x<x+1) returns True während MATLABs Symbolic Math Toolbox mit Maple kernel Undefined function or method 'lt' for input arguments of type 'sym' vars=var('a b'); expr= \ sqrt(a*b)-sqrt(a)*sqrt(b); expr.simplify_full() syms a b; expr =... beklagt. sqrt(a*b)-sqrt(a)*sqrt(b); simple(expr) simplify(expr) gibt 0 zurück während MATLABs simple und simplify den originalen Ausdruck expr unverändert zurückgeben. NB MuPad diskrete Mathematik s Stärke ist diskrete Mathematik [13]: Polynom-Ringe, Gruppen, elliptische Kurven, usw. unterstützt daher Anwendungen in Kombinatorik, Kryptographie, Kodierung, Graphentheorie usw. MATLAB bietet m.w. kein Äquivalent!

ausprobieren! erlaubt, Probleme in vielen Gebieten der Mathematik anzugehen, solche Probleme numerisch und symbolisch zu lösen, und darüberhinaus auf spezialisierte CASe zuzugreifen. kann unmittelbar benutzt werden, ohne software installieren zu müssen, ( server sind etwa www.sagenb.org oder http://.informatik.hs-bremen.de) Lizenz-frei, mit Unterstützung durch eine rege user community. auszuprobieren, zeigt das große Potential von!

Referenzen I [1] J. W. Eaton: GNU Octave Manual; Network Theory Ltd 2002, ISBN 0-9541617-2-6 www.network-theory.co.uk/docs/octave3/ [2] GiNaC is Not a CAS; www.ginac.de [3] David Joyner: Rantings on open source mathematical programs; University of Washington, 2007 http://sage.math.washington.edu/home/ wdj/sigsam/opensource_math2.html [4] Jan Kiusalaas: Numerical Methods in Engineering with Python; Cambridge University Press, 2010 [5] MATLAB, the Language of Technical Computing; www.mathworks.com [6] NumPy/SciPy for Matlab Users; www.scipy.org/numpy_for_matlab_users?action=print [7] Octave; www.octave.org

Referenzen II [8] Open source mathematics; www.opensourcemath.org/opensource_math.html [9] home page; www.sagemath.org [10] web interface login page; www.sagenb.org and http://nb.sagemath.org [11] tour & benchmarks; www.sagemath.org/tour-benchmarks.html [12] reference; www.sagemath.org/doc/reference [13] :, ein open source CAS vor allem für die diskrete Mathematik? 8. Workshop Mathe für Ingenieure, Wismar, 23.6.2010 www.weblearn.hs-bremen.de/risse/papers/matheng8 [14] Michael Wester: A Review of CAS Mathematical Capabilities; in Luis A. Godoy, Sergio R. Idelsohn, Patricio A. A. Laura and Dean T. Mook (Eds): Applied Mechanics in the Americas, Volume III, American Academy of Mechanics and Asociacion Argentina de Mecanica Computacional, Santa Fe, Argentina, 1995, 450 455. s.a. www.math.unm.edu/ wester/cas_review.html