Antworte auf:  CAS in eigene Software einbinden von goeba
Forum:  Mathematische Software & Apps, moderiert von: matroid mire2

[Zur Forum-Gliederung] [Wie man Fragen beantwortet] [Themenstart einblenden]

  Alle registrierten Mitglieder können Mitteilungen schreiben.
Benutzername:
Passwort:
Nachricht-Icon:                   
                  
              
Nachricht:


 
 


Input assistance tools (JavaScript): [Link extern intern] [MathML?] [$$?]
[fed-area] [LaTeX-inline] [LaTeX-display] [Tikz] [hide-area][show-area] [Source code [num.]][?]
 Show Preview      Write using fedgeo formula editor or Latex.

Smilies for your message:
😃 😄 😁 🙂 🙃 😉 🤗 🤫 🤔 🙄 😴 🤒 😎 😮 😲 😂
🙁 😖 😒 😐 😡 👌 👍 👎 🤢 🤧 🥵 🥶 😵 🤯 😛 😷
Optionen: Deaktiviere HTML in dieser Nachricht
Deaktiviere MATHML in dieser Nachricht. Wenn Dein Text $-Zeichen enthält, die nicht LaTeX-Formeln begrenzen.
Deaktiviere Smilies in dieser Nachricht
Zeige die Signatur (Kann in 'Mein Profil' editiert werden.)
    [Abbrechen]
 
Beachte bitte die [Forumregeln]


Themenübersicht
schnitzel
Senior
Dabei seit: 26.02.2009
Mitteilungen: 191
Herkunft:
 Beitrag No.7, eingetragen 2020-02-03 20:27    [Diesen Beitrag zitieren]

Mir ist nicht klar, was du genau meinst.
Nur um klarzustellen:

- sympy: library für smbolisches Rechnen
- jupyter notebook: Notebook ähnlich zu wxMaxima Oberfläche.
- jupyter lab: interface für verschiedenste extensions ( notebooks, editoren, ...) Prinzipiell kann jeder solche extensions schreiben.
- nbgrader: library um Übungsaufgaben automatisch zu einzusammeln, zu bewerten... (braucht  jupyter notebook).

Natürlich kann man das alles in jupyter lab benutzen.
Gruß


goeba
Senior
Dabei seit: 24.03.2006
Mitteilungen: 1363
Herkunft: Göttingen
 Beitrag No.6, eingetragen 2020-02-03 10:32    [Diesen Beitrag zitieren]

Hi,
danke für den Hinweis. Sympy steht ja offenbar auch hinter dem JupyterLab .

Könnte man solche interaktiven Lernumgebungen nicht direkt in dem JupyterLab implementieren?


schnitzel
Senior
Dabei seit: 26.02.2009
Mitteilungen: 191
Herkunft:
 Beitrag No.5, eingetragen 2020-02-02 10:57    [Diesen Beitrag zitieren]

Hi,
eine einfache Version mit sympy (python):
python
import sympy as sy
from sympy.parsing.sympy_parser import parse_expr
from sympy import pprint
from random import randint
 
x = sy.symbols('x')
 
a = randint(0, 5)
b = randint(2, 4)
ex = (x+a)**b
 
ex1 = (x + a)**b
pprint(ex1)
ex1_expanded = ex1.expand()
s = input('Wie lautet das Ergebnis?')
ex2 = parse_expr(s.replace('^', '**')) # damit auch '^' als Exponent zugelassen ist
 
eq_value = sy.simplify(ex1_expanded - ex2) == 0
eq_exact = ex1_expanded == ex2
 
print(f"Die Polynome{' ' if eq_value else ' nicht '}stimmen überein.")
print(f"Es wurde{' ' if eq_exact else ' nicht '}korrekt umgeformt."

Sympy ist für symbolischen Rechnen und Gleichungen sehen eigentlich immer sehr gut aus. (Auch in der Konsole beispielsweise.) Es lässt sich alles aber auch in latex Code oder Bilder übersetzen. Weiter gibt es auch Module die Hilfmittel für ganze Kurse sind. z.B. nbgrader

Es ist auch möglich, sowohl Code von anderen Sprachen wie maxima zu parsen, als auch code zu generieren. (Hab ich nicht ausprobiert.)
Gruß


goeba
Senior
Dabei seit: 24.03.2006
Mitteilungen: 1363
Herkunft: Göttingen
 Beitrag No.4, eingetragen 2020-02-01 23:20    [Diesen Beitrag zitieren]

Zweierlei:
1. Das externe Programm sollte eine grafisch schöne Darstellung erzeugen können.
2. Das externe Programm sollte Ergebnisse (etwa Terme) sinnvoll auf Gleichheit prüfen können sowie selbst auch das richtige Ergebnis bestimmen können.

Also grob vom Ablauf:

- Erstelle zufällige Aufgabe
- gib diese schön formatiert aus
- löse zufällig erstellte Aufgabe
- frage Nutzer nach Eingabe
- prüfe Nutzereingabe auf Äquivalenz zur selbst berechneten Lösung



hyperG
Senior
Dabei seit: 03.02.2017
Mitteilungen: 1129
Herkunft:
 Beitrag No.3, eingetragen 2020-02-01 22:17    [Diesen Beitrag zitieren]

2020-02-01 12:08 - goeba im Themenstart schreibt:
... dann sollte sie als \(x^2 \cdot \left( x+1 \right) \) angezeigt werden, der Nutzer gibt die Lösung als x^3 + x^2 ein.

Gebe ich den Ausgangsterm in wxMaxima ein, so bekomme ich automatisch eine grafisch schöne Darstellung. So etwas müsste die verwendete Bibliothek auch leisten, oder ich müsste wissen, wie ich die Grafik von Maxima per Batch-Aufruf erzeugen kann. Der einzige Weg, der mir momentan möglich wäre, ist von Maxima LaTeX code erzeugen zu lassen (das geht auch auf der Konsole), diesen dann zu kompilieren und per Ghostscript in eine Grafik umzuwandeln. Das ist komplex und Fehleranfällig. Hier müsste es einen einfachen Weg geben...

Also brauchst Du CAS nicht zum Rechnen, sondern nur eine Software, die Stringeingaben in Grafik wandelt.
Sehr einfach ist die google-API
Browsereingabe
http://chart.googleapis.com/chart?cht=tx&chl=Textformel

Leider muss das "+" Zeichen durch "%2B" ersetzt werden (replace-Befehl). Beispiel:
Textformel replace("x^2*(x+1)","+","%2B") ergibt x^2*(x%2B1)
also diesen LINK versenden (ob nun per Browser oder was auch immer)
chart.googleapis.com/chart?cht=tx&chl=x^2*(x%2B1)

Der Server von google übernimmt diesen LaTeX Text und wandelt ihn in ein PNG-Bild um, was jeder Browser richtig anzeigt.

Jeder Browser sollte dann so ein Bild anzeigen:


Nachteile:
- man muss online sein
- einige Besonderheiten (wie "+" muss per %2B eingegeben werden)

Es gibt auch noch andere Übergabeparameter für Farbe und Größe des Bildes.

Was ich nicht verstehe: "der Nutzer gibt die Lösung als x^3 + x^2 ein"
also rechnet niemand & Dein Programm sagt nur OK oder falsch?


goeba
Senior
Dabei seit: 24.03.2006
Mitteilungen: 1363
Herkunft: Göttingen
 Beitrag No.2, eingetragen 2020-02-01 19:20    [Diesen Beitrag zitieren]

Hallo,
das finde ich in der Tat genial. Ich nutze Moodle intensiv, kannte das Modul aber nicht.

Problem: Die aktuelle Version unterstützt Moodle bis 3.6, wir haben 3.7 . Weißt Du, ob das trotzdem läuft? Vermutlich nicht ...

Ich frage mal auf moodle.org

Besten Dank für den Tipp!


haerter
Senior
Dabei seit: 07.11.2008
Mitteilungen: 1605
Herkunft: Bochum
 Beitrag No.1, eingetragen 2020-02-01 17:27    [Diesen Beitrag zitieren]

Hallo goeba,

ich weiß nicht, ob es Dir eher darum geht, etwas genau Maßgeschneidertes selbst zu programmieren oder ob eher das Lernprogramm von Interesse ist.

Kennst Du  STACK ? Dort ist Maxima als CAS im Hintergrund integriert und drumherum ein System zur Fragenerstellung und für Bewertung und Feedback entwickelt worden.
Es ist hauptsächlich für den Einsatz mit Moodle oder Ilias konzipiert, aber man kann es auch anders integrieren, davon verstehe ich aber nichts.

Ich erstelle mit STACK regelmäßig Übungsaufgaben und denke, dass man damit viel machen kann. In etwas eingeschränktem Maße kann man auch Maxima-Graphiken direkt einbinden.

Viele Grüße,
haerter


goeba
Senior
Dabei seit: 24.03.2006
Mitteilungen: 1363
Herkunft: Göttingen
 Themenstart: 2020-02-01 12:08    [Diesen Beitrag zitieren]

Hallo,

ich habe vor vielen Jahren einige Lernprogramme geschrieben, die zur Evaluation der Nutzereingaben auch ein CAS verwendet haben.

Das hat (um ein ganz einfaches Beispiel zu nennen) den Vorteil, dass Nutzereingaben wie "b*a" als richtig erkannt werden, auch wenn die vorgegebene Lösung "a*b" war.

Meine Programme haben den Nachteil, dass sie nach heutigen Maßstäben nicht mehr "gut" aussehen. Außerdem kann ich sie nicht mehr warten, weil die verwendeten Bibliotheken mit aktuellen Compilern nicht mehr kompilierbar sind (seinerzeit waren das Yacas und FLTK, letzteres gibt es noch, ersteres wird in der c-Version, die ich damals verwendet habe, nicht mehr gepflegt).

Meine persönliche Lieblingsprogrammiersprache ist C++, ich überlege aber, die Modernisierung in Java anzugehen (da ich Java auch gut kann und mir so das Pflegen mehrerer Binaries sparen könnte).

Mein persönliches Lieblings-CAS ist Maxima (mit wxMaxima Frontend), die Anbindung an ein externes Programm ist bei Maxima aber recht kompliziert (wenn auch machbar, einen Prototypen, wo ich eine Eingabe in ein Textfeld schreibe und die Ausgabe in ein anderes Textfeld gepastet wird, habe ich schon). Es stellt sich daher die Frage, ob es nicht eine (Java) Bibliothek gibt, die man einbinden kann, sodass das Aufrufen eines externen Programms nicht nötig ist.

Der Einstieg in die Verwendung von CAS Bibliotheken ist meist recht steinig, daher mein Posting hier:

- hat jemand Erfahrung bei der Einbindung von CAS Programmen oder Bibliotheken in eigene Programme?
- wenn ja, welche Programme / Bibliotheken / Programmiersprachen?

Zusätzlich eine Spezialfrage zu Maxima/wxMaxima : weiß jemand, ob der grafische Output in wxMaxima auch direkt über einen Maxima-Befehl zu bekommen ist? wxMaxima kann einen Ausdruck in diversen Formaten bereitstellen (Text, LaTeX, MathML, Grafik). Für die Verwendung in einem einfachen Lernprogramm wäre Grafik am besten, aber der direkte Maxima-Output ist zweidimensionaler Text.

Also konkretes Beispiel: Es soll das Auflösen von Klammern geübt werden. Die Aufgabe wird zufällig erzeugt, angenommen, sie lautet x^2*(x+1), dann sollte sie als \(x^2 \cdot \left( x+1 \right) \) angezeigt werden, der Nutzer gibt die Lösung als x^3 + x^2 ein.

Gebe ich den Ausgangsterm in wxMaxima ein, so bekomme ich automatisch eine grafisch schöne Darstellung. So etwas müsste die verwendete Bibliothek auch leisten, oder ich müsste wissen, wie ich die Grafik von Maxima per Batch-Aufruf erzeugen kann. Der einzige Weg, der mir momentan möglich wäre, ist von Maxima LaTeX code erzeugen zu lassen (das geht auch auf der Konsole), diesen dann zu kompilieren und per Ghostscript in eine Grafik umzuwandeln. Das ist komplex und Fehleranfällig. Hier müsste es einen einfachen Weg geben.

Mit Yacas habe ich seinerzeit das eingebaute Pretty Print verwendet, was mir die Terme als mehrzeilige Textausgabe formatiert hat. Das sieht nicht wirklich gut aus, aber ist gerade noch akzeptabel.

Also, für Erfahrungen mit guten CAS-Bibliotheken, die das Gewünschte leisten, wäre ich sehr dankbar.

Mir ist übrigens klar, dass ich durch Lesen des wxMaxima-Quellcodes vieles, was ich hier frage, selbst herausbekommen könnte, aber das ist mittlerweile ein sehr komplexes Projekt, ich scheue also den Aufwand.


 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]