Terme einer Polynomfunktion nach Grad sortieren & Terme mit anderen Variablen Basen als x

JHeindel shared this question 5 years ago
Needs Answer

Hallo liebe Geogebra-Welt,


nachdem ich nun die letzten Nächte wiederholt an immer wieder neuen Stellen meines Applet zum Vereinfachen von Termen hängen geblieben bin, suche ich nun doch zum ersten Mal den Weg hierher in die Community:


Ich hatte folgendes vor: Ich wollte für meine Schüler ein Applet erstellen, das einem immer wieder neue zu vereinfachende ganzrat. Terme erstellt (bei den Aufgabe sollten verschiedene Basen auftauchen, also nicht nur x), die zu vereinfachen und zusammenzufassen sind. In der Algebraansicht sollte nur der Term (ohne Grid und Achsen) gezeigt werden und ein Eingabefeld, in dem die Schüler ihre Antwort über an Wahrheitswerte gekoppelten Text kontrollieren können.


Ich bin grob folgendermaßen vorgegangen:

Über Listen werden die Exponenten, Koeffizienten, Variablen und Vorzeichen zufällig gewählt, aus denen ich eine Funktion gebaut habe. Das Eingabefeld sollte dann Überprüfen ob die Schülerlösung a) richtig und b) so weit wie möglich vereinfacht wurde.


Verschiedene Ansätze haben mich zu verschiedenen Problemen geführt:

1. Wenn ich die Variablen Liste definieren möchte, werden nur x, y und z zugelassen (eigentlich ja 2 Geraden und die Ebene). Jeglicher andere undefinierte Buchstabe, wurde natürlich nicht erkannt und wollte z.B. über einen Schieberegler definiert werden. Gibt es eine Möglichkeit sich andere Variablen auf diesem Weg zu definieren, so dass am Ende auch ein Term wie z.b. 3a^4-2a generiert werden kann?


2. Um das Problem zu umgehen habe ich die Variablen als Text definiert. Dies hat dazu geführt, dass sich Rechenzeichen des Terms nicht automatisch vereinfachten, z.B. wenn die Variable v=t, a_1=2, exp_1=0, a_2=-1, exp_2=1, a_3=-3, exp_3=3, der Term=a_1 v^exp_1 (a_2 v^exp_2 - a_3 v^exp_3) z.B. zu so etwas führte: 2 t^0(-1 t^1 - -3 ttt). Statt dessen wäre natürlich 2 (- t +3 t^3) wünschenswert gewesen. Sieht jemand eine Möglichkeit wie man mit dynamischem Text dies elegant umsetzen kann?


3. Nach langem hin und herschrauben habe ich habe es hinbekommen (sehr unelegant und aufwendig - mittels langer Wenn...Ketten) dass tatsächlich die über die Variablen als Text definierte Funktionen korrekt angezeigt werden und dass eine Funktion h in der gleichen Variable (als Variable nicht als Text) besteht. Hierzu musste ich allerdings meine längere Variablenliste auf x, y, z einschmelzen, da andere auf diesem Weg nicht funktionierten (siehe 1.). Nun musste ich allerdings feststellen, dass in das für Schülerlösungen gedachte Eingabefeld (das ja an ein Objekt dem ich den Wert 0 zugewiesen hatte gekoppelt war) keine Terme mit anderen Variablen als x eingegeben werden konnten, v.a. weil ich den Schülern nicht zumuten möchte die Variablen in " " zu setzen um wieder auf Text auszuweichen. Es kam also immer die Fehlermeldung: "Ungültige Funktion...Bitte explizite Funktion in x eingeben". Sieht jemand eine Möglichkeit dass eine Eingabe von Termen mit der Basis von zumindest x, y und z (wenn nicht noch anderen) noch auf diesem Wege funktioniert?


4. Nach langem hin und her habe ich dann gehofft das ganze umsetzen zu können, indem ich eben doch nur die Variable x verwende. Hierbei kam es nun mit dem Kontrollieren der Schülereingabe (SE) über die Wahrheitswerte zu Problemen, insbesondere mit einer möglichen abweichenden Reihenfolge der Terme in der Lösung. Ich hatte mich folgnde Wahrheitswerte überlegt:

a) SE entspricht dem generierten Term - wenn (SE==Term,true,false)

b) die Lösung ist so weit wie möglich vereinfacht - wenn(SE==vereinfache(SE),true,false) --> da hierdurch aber z.B. die SE x+x anstatt 2x auch richtig wiedergeben würde habe ich diese als Text verglichen, also: wenn("SE"=="vereinfache(SE)",true,false) --> Die Kobination aus beiden sollte dann das richtige Ergebnis garantieren.

Hierbei ergibt sich nun aber das Problem, dass der Term 3-2x zwar der richtige sein könnte, aber unter b) würde false ausgegeben, da vereinfache(SE)=-2x+3 !=-2x+3=SE; auf einmal würde also die Reihenfolge relevant. Gibt es denn einen Weg den Term der Schülereingabe nach aufsteigendem Grad z.B. ordnen zu lassen, so dass ich dann endlich mit wenn("SE"=="vereinfache(ordne_nach_Grad(SE))",true,false) am Ziel für die Variable x wäre? Gibt es dafür einen Befehl? Sortier habe ich nur für Listen gefunden aber nicht für ein Objekt.


Entschuldigt die mega lange Ausführung, aber ich ich denke nur mittels des jetzigen Standes des Applets (im Anhang) hätte man mein Problem nicht nachvollziehen können.

Ich würde mich sehr über Anregungen und Vorschläge freuen, um an mein Mindestziel (Punkt 4) zu kommen. Wenn mir jemand mit einem der Punkt 1.-3. weiterhelfen könnte, so dass doch noch andere Basen möglich würden, wäre natürlich auch großartig.


Vielen Dank im Voraus,

JHeindel

© 2023 International GeoGebra Institute