Listen verschwinden bei Änderung von Parametern

Ruben Stachowitz shared this problem 10 months ago
New

Hallo,


ich hatte vor ein paar Tagen bereits ein ähnliches Problem gepostet. Da haben sich Flächen, die innerhalb einer Folge mit dem Befehl IntegralZwischen erzeugt wurden, bei Veränderung der Parameter nicht entsprechend mit verändert. Loco hat mir daraufhin den Tipp gegeben, statt des Integral-Befehls Ungleichungen zu verwenden. Dies habe ich nun durchgehend so implementiert, um die Flächen zu erzeugen, die bei einer Riemann-Approximation entweder "fehlen" oder aber "zu viel" sind. Das funktioniert auf den ersten Blick auch wunderbar, doch irgendwann, ohne jede "Vorwarnung", verschwinden die Listen urplötzlich aus dem Algebra-Fenster, bei Veränderung eines der Parameter, von denen die Ungleichungen abhängen! Sei es nun die Position eines Rekonstruktionspunktes für das untersuchte Polynom, oder eine Integrationsgrenze, oder auch die Anzahl der Rechtecke. Ist es möglich, dass GeoGebra hier "überfordert" ist?


Viele Grüße, Ruben

Comments (10)

photo
1

P.S. Es verschiwnden nicht gleich alle Listen, sondern das passiert nacheinander. Wobei es auch mal vorkommt, dass mehrere auf einmal verschwinden. Ich habe da keine Systematik erkennen können ...

photo
1

Dies zur Ergänzung: Ich habe versucht, das Ganze zu retten, indem ich ein Skript geschrieben habe, welches die 6 Listen, die mir die Differenzflächen erzeugen, bei Veränderung eines der Parameter, von denen die Listen abhängen, löscht und neu erzeugt. (Mit dem Befehl SkriptBeiUpdateAusführen) Das funktioniert im Prinzip auch einwandfrei, nur mit einem "kleinen" Schönheitsfehler. Setzt man in dem Skript die Linienstärke auf 0 - was man bei Ungleichungen ja machen muss, damit das Bild nicht voller Linien ist -, setzt GeoGebra die Sichtbarkeit der Listen ungefragt auf false. Setzt man sie dann wieder auf sichtbar - egal ob per Skript oder per Hand -, so verändert GeoGebra nunmehr ungefragt die Linienstärke auf den Wert 5. Es scheint nicht möglich zu sein, die Listen (Differenzflächen) per Skript mit Linienbreite 0 zu erzeugen und zwar so, dass sie dann auch sichtbar sind! Es ist zum Verzweifeln ...

photo
1

Es geht um folgenden früheren Beitrag: Integralfläche reagiert nicht auf sich ändernde Parameter. Wenn es Folgefragen gibt, dann kann man beruhigt den ursprünglichen Beitrag wiederbeleben. Sonnst zergliedert sich das was eigentlich zusammengehört.

Das Verschwinden bzw. das plötzlich "undefiniert-werden" von GGb Objekten ist nichts ungewöhnliches. GGb merkt sich nicht und kann nicht feststellen welcher Konstruktionsstand Sinn machte. Wenn nun also durch Änderungen gleich welcher Art die Konstruktion zerschossen wird so kann GGb nicht zu einer vorherigen zurückfinden. Nun liegt es am Benutzer undefinierte oder spezielle Zustände zu vermeiden.

Ich habe derzeit leider nicht die Zeit deine Lösung auseinander zu nehmen schaue dir meine Lösung an und übernehme etwas mehr davon. Soweit ich feststellen konnte ist diese stabil.

photo
1

Hallo Loco,


deine Lösung ist tatsächlich stabil, nur färbt sie die Flächen unterhalb der x-Achse leider falsch ein. Oder sagen wir so: Wenn die "überstehenden" Teile der Rechteckflächen ausschließlich blau und die "fehlenden" Flächenstücke ausschließlich rot sein sollen, dann reichen zwei Listen nicht aus, sondern man braucht - soweit ich das sehe - tatsächlich 6 Listen. Darüber hinaus braucht man für die "äußeren" Rechteckteile jeweils noch eine dritte Bedingung in der Ungleichung, damit es passt.


Gruß, Ruben

photo
1

Ja ich habe diese Gegensätze bereits bemerkt. Jedoch aufgrund von Zeitgründen und der Verständlichkeit halber unter den Tisch fallen lassen.

Tatsächlich braucht man um "hier ist zu wenig Balken und hier ist zu viel Balken" darzustellen deutlich mehr als nur Ungleichungen. Mann müsste noch die Funktionsdurchgänge durch y=0 und y=f(Stützstelle) in jedem Balken betrachten. Dann noch ermitteln ob jener Balken dort gerade positiv oder negativ ist (da sich ja "zu viel/zu wenig" auch umkehren können) (man kann sich hier aber auch streiten ob sich nicht einfach die Bedeutung von "zu viel/zu wenig" umkehrt). Dann müsste man überprüfen ob der Graph über oder unter dem Balken verläuft. Und schlussendlich müsste man für all das eine extra abschnittsweise definierte Funktion erzeugen und dann darauf die Ungleichungen anwenden.

Jetzt ist die Frage Braucht man das? Ich habe keine Ahnung welche Zielgruppe dein Workshop hat und ich kann nicht sagen ob jene Teilnehmer sich daran stören oder sich mit jenen Details aufhalten möchten. Ich für meinen Teil würde auf jene graphischen Gimniks sowieso verzichten da ich mit eigenen Augen sehen kann ob der Graph darüber oder darunter liegt. Das einzige was ich evtl. einpflegen würde ist die unterschiedliche Färbung der Balken je nachdem ob diese negativ oder positiv gezählt werden. Alles andere ist nur eine Sisyphusarbeit die keinen Mehrwert bringt.

Meine Hilfestellung in jenem Thread diente nur dazu Ungleichungen in deinem Kontext zu demonstrieren und dir zwei stabilere Alternativen zu zeigen. Ich wollte definitiv nicht den Weg den ich damals erahnt hatte zu ende gehen oder dir gar das Verdienen deiner Sporen für deinen Workshop abnehmen. Dafür habe ich derzeit wahrlich nicht die Zeit.

Weiter fallen mir noch folgende Sachen ein:

Um Skripte sollte man so lange wie es geht einen Bogen machen und auch sonnst sparsam einsetzen.

Ein Polynomgrad ist eine Zahl und diese charakterisiert unter anderem auch die Menge/Listenlänge seiner Stützpunkte (Teilliste).

Schieberegler sollten nicht zu kurz definiert werden.

Funktionen/Integrale/Ungleichungen sollte man erst erzeugen wenn es um die Darstellung geht oder diese gebraucht werden alles andere erfordert nur unnötig Rechenleistung (GGb ist sowieso ziemlich lahm und hat zu viele Bugs).

Um die Dynamik/Geschwindigkeit zu verbessern bietet es sich zum Ende an Hilfsobjekte als Hilfsobjekte zu definieren, sie gegebenenfalls zu fixieren, auszublenden, und zusätzlich Hilfsobjekte in der Algebradarstellung auszublenden oder die Algebraansicht ganz zu deaktivieren.

photo
1

Hi Loco,

all das, was du in deinem ersten Absatz beschreibst, braucht man gerade nicht! Die 6 von mir mittels Ungleichungen erzeugten Listen bewirken genau das, was gewünscht ist. Und wenn sie nicht "einfach so" verschwänden, wäre alles gut …

Ob das Ganze einen Mehrwert besitzt oder nicht, ist wohl Ansichtssache. Ich persönlich finde alles, was man nicht nur visualisieren, sondern dabei auch noch hervorheben kann, hilfreich. Und als Sisyphus-Arbeit würde ich das Ganze auch nicht bezeichnen. Ist meistens gar nicht so schwer, wenn man weiß, was man erreichen möchte und welche Befehle und Konstruktionen einem zur Verfügung stehen. (Und mal ehrlich: Mit der Verwendung des Befehls IntegralZwischen wäre das Ganze geradezu eine Trivialität gewesen, wäre GeoGebra denn damit klar gekommen. Leider kommt GeoGebra hier aber weder mit dem Integral-Befehl, noch mit den erzeugten Ungleichungen zurecht.) Was die Farben der Balken angeht, so hast du insofern recht, als man die Farben unterhalb der x-Achse vertauschen müsste, wenn es einem um die Größe der (dort negativ gewichteten) Flächen ginge und nicht um "Innen" bzw. "Außen". Ich habe mich da aus didaktischen Gründen bewusst für Letzteres entschieden. Dessen ungeachtet ist aber natürlich klar, dass die Priorisierung in dieser Frage nichts an der Anzahl der für die Visualisierung benötigten Listen ändert …

Dass du (oder irgendjemand sonst) sich dafür Zeit nehmen soll, damit ich mir irgendwo die "Sporen" verdienen kann, habe ich nun wirklich nicht verlangt. Und auch nicht erwartet. Ich habe lediglich ein Problem gepostet, wo GeoGebra (definitiv) nicht so funktioniert, wie es sollte. Und eigentlich denke ich, dass das euch bzw. das Entwickler-Team interessieren sollte …

Ich danke dir nochmals für deine Zeit, Tipps und Anregungen! Insbesondere hinsichtlich der Verwendung von Ungleichungen habe ich dadurch einiges dazugelernt.

Ruben

photo
1

Hm... okay wenn du das so simpel halten willst dann mach das so (mit 2 Listen):

Nur kann dann auch so etwas passieren (zu viel und zu wenig gleichzeitig):

/EnIRQq05dCDOPODoDPD0puYspxBECLXm0IE484CjM8DTm5qzhFyEUGsOHYgzDzg6Azy9qTlLyEUItebQgTjzgKMzwNObmrOEXIRQaw4diDMPODoDPL2pOUvIRQi15tCBOPOAozPA05uas4RchFBrDh2IMw84OgM8vak5S8hFCLXm0IE484CjM8DTm5rzb0WgJ7KHiHaKAAAAAElFTkSuQmCC

photo
1

Wirklich sehr schön. Aber warum du hier unbedingt so den Gönnerhaften raushängen lässt und mich unbedingt blöd aussehen lassen möchtest, ist mir nicht ganz klar. Okay, dann ist es für dich halt simpel, und ich bin blöd. Wenn du dich jetzt besser fühlst, dann herzlichenh Glückwunsch ...

photo
1

Hi Loco,

auch, wenn ich die Art und Weise, wie du die Sinnhaftigkeit meines Anliegens in Frage gestellt und mir darüber hinaus auch noch unterstellt hast, es ginge mir irgendwie darum, mir irgendwelche „Sporen“ zu verdienen, weder nett noch angemessen fand, um mir dann auch noch schlussendlich – nachdem ich mich (wie du ja weißt) vergeblich abgemüht hatte, eine Lösung für mein Problem zu finden, mit der GeoGebra am Ende auch klar kommt – dann auch noch mitzugeben, dass ich, wenn ich es denn „so simpel“ halten wolle, dann doch einfach „jene“ Lösung nehmen solle, so ist es am Ende doch so, dass du zu der Datei, die ich jetzt fertiggestellt habe, durch die Überlassung deines Codes einen maßgeblichen Anteil beigetragen hast. Wofür ich dir wirklich sehr dankbar bin. Sowohl dafür, als auch ganz grundsätzlich für den Zuwachs in meiner GeoGebra‑Lernkurve. Denn abgesehen von dem Einsatz von Ungleichungen zur Erzeugung von Flächen sowie der Existenz des Zip-Befehls, war auch die Ausgabe einer Text-Wertetabelle mittels eines LaTeX-Arrays neu für mich und ist echt cool.


Vielleicht interessiert es dich ja, wie die Datei jetzt aussieht. Ich lade sie also mal mit hoch …


Ruben

photo
1

Das stimmt so nicht ganz.

Ich habe lediglich den kosten-/nutzen-Aufwand in Frage gestellt. Die "Sinnhaftigkeit" habe ich dabei noch als subjektives Argument ins Feld geführt. Das alles als eine Verteidigung warum ich beschriebene Schritte unterlassen hatte und nicht angehen wollte.

Auch das "Sporen verdienen" in Hinblick deines Workshops war nicht gegen deine Person gerichtet sondern wurde aus meiner Erfahrung heraus geäußert, dass viele Foren-Problemsteller nur an dem Endprodukt (Lösung) interessiert sind (hier ein Beispiel mit mir als ähnlich kompetenten Diplomaten). Und aus anderweitiger Erfahrung heraus, dass es immer sinnvoll ist den ganzen Prozess verstanden/vollzogen zu haben bevor man ihn anderen näher bringt.

Wenn dir das zu Spitz war kann ich nur meine Entschuldigung aussprechen.Ich weise dich jedoch darauf hin, dass dieser Ton Standard bei mir ist.

Zum nächsten Punkt. Das "simpel" meinte ich in dem Sinne, dass im Hinblick auf meine von dir kommentierten Überlegungen, deine angestrebte Lösung weniger können musste. Auch hier sei angemerkt, dass "simpel" nicht schlecht bedeuten muss (z.B. kann "Russentechnik" auch eine Auszeichnung sein).

Und zum vorletzten Punkt. Es kann sein, dass "das konstante Lösungen unter die Nase reiben" und auf Zeit pochen "gönnerhaft" wirkt. Es kommt von daher, dass ich hier prokrastiniere und es einfach die effizienteste Art ist anderen Dinge zu zeigen über die ich mich nicht ellenlang auslassen möchte (dazu der letzte Punkt als Beispiel). Auch haben viele der Dinge die ich in meinen Lösungen auf eine bestimmte Weise mache berechtigte Gründe deren Erklärung ich dadurch auch nicht liefern muss.

Zum letzten Punkt. Wenn jemand Lösungen postet muss er sich Kritik oder Verbesserungsvorschlägen stellen:

  • in der LaTeX-Tabelle solltest du das f(x) zu f(x_k) und das A zu A_k ändern (erklärt sich von selbst warum)
  • das Summe solltest du zu \sum_{k} ändern (logischer m.M.n.) (\sum_{k}{A_{k}} ginge auch dazu müsstest du aber die letzte Zeile zu einer Zelle zusammenfassen und rechtsbündig formatieren suche dazu im Internet LaTeX-Beispiele)
  • fast alle Textobjekte die vom Applet-Benutzer nicht verändert werden sollen sollten Fixiert werden (rechts klick -> Eigenschaften -> Objekt fixieren) ich bilde mir ein, dass dadurch GGb schneller wird definitiv unterbindet es versehentliche Änderungen (leider verhindert es nicht das verschieben von Schaltflächen mit der rechten Maustaste)
  • weiter sollten Hilfsobjekte auch dort als solche markiert werden damit diese in der Algebraansicht ausgeblendet werden können (das macht GGb deutlich schneller da jede angezeigte Instanz eines Objektes Rechenzeit kostet)
  • weiter kann man im Eigenschaftenreiter "Erweitert" das Feld "Auswahl erlaubt" nutzen um alle abhängigen Objekte nicht auswählbar zu machen (in deinem Fall würde es dadurch einfacher Werden die Rekonstruktionspunkte zu verschieben ohne die Funktion oder die Kästchen zu becklickern)
  • die Darstellungsebene hast du scheinbar schon entdeckt und erklärt sich von selbst
  • weiter empfehle ich die Schieberegler Eigenschaft "Fixiert" auf "an" und die Breite auf >200px zu setzen (ersteres verhindert das versehentliche Verschieben letzteres macht es einfacher zu sliden)
  • weiter weise ich dich auf meine alternative Definition des Integralendpunkts hin welche die Fälle negativer Integralweg oder Null-Integral ausschließt (stabiler? keiner Ahnung)
  • für das Anzeigen der Rekonstruktionspunkte bietet sich an die Zusatzbedingung !=3 in die Anzeigebedingung zu übernehmen und das Kontrollkästchen bei ==3 auszublenden (das spart ein Skript ein)
  • lösche Objekte die du nicht braucht (z.B. A1oder lstNullstellen) oder baue das Applet mit deinem neuen wissen neu und raffinierter auf (evtl. bekommt man dann eine stabile Version)
  • beim Integral Fläche kann man glaube ich noch den Eingabeparameter <berechne an/aus> nutzen um es nicht zu berechnen wenn es sowieso nicht gebraucht wird
  • es gibt den Befehl Teilliste welcher zwei deiner Wenn-Befehle zusammen fassbar machen könnte (ich glaube zu viele Wenns's machen GGb langsam)
  • die meisten Skripte wie z.B. die in Skript sehe ich als vermeidbar an da es in den Eigenschaften Farben und Anzeigebedingungen gibt und es dadurch deutlich leichter nachvollziehbar wird (in Hinblick auf den Workshop (Simpel=GenialEinfach=evtlSchnell)) die Initialisierungsskripte sind okay
  • evtl. bietet es sich sowieso an für jede einzelne Demonstration das Applet neu zu starten da GGb mit der Zeit Müll anzusammeln scheint
  • weiter habe ich die Angewohnheit Objekte die nur einmal gebraucht werden in die Definition anderer einzubauen das macht es aufgeräumter (nicht unbedingt leichter verständlich) weiter versehe ich Texte auch mit aussagekräftigen Bezeichnungen damit ich diese in der Eigenschaften- oder Algebraansicht leichter finde

So das war es von mir in diesem Thread da ich Ihn meinerseits als abgeschlossen ansehe.

-over and out-


Äußerungen einer Person sind immer in ihrem Kontext zu betrachten... leider ist der Kontext unterschiedlicher Personen und oder Personengruppen subjektiv und somit wird die Äußerung nicht immer gleich-gedeutet.

© 2019 International GeoGebra Institute