Fläche unter einer Spline-Kurve schraffieren/färben

Smett shared this question 3 years ago
Answered

Hallo zusammen,

ich habe mit Spline eine Kurve durch verschiedene Punkte zeichnen lassen und möchte nun die darunter liegende Fläche schraffieren. Mit dem Integral-Befehl kriege ich es nicht hin, weil mir eine klare Funktion fehlt.

Hat jemand eine Idee?

Comments (8)

photo
1

or by getting some points:

Vieleck(Verbinde({ ( x(A_{D}),0) }, Folge(b(t), t, 0, 1, 1/100), { ( x(J_{D}),0) }))

photo
1

oder (falls polynom herleitbar)

mit den Punkten auf der Spline (b)

L_2=Folge(b(t), t, 0, 1, 1 / 100)

und TrendPoly eine Funktion herleiten

f(x) = TrendPoly(L_2, 16) -> bei zu hohen Werten (16) überschwingen an Endpunkten

damit IntegralZwischen anwenden

IntegralZwischen(f, y=0, x(A_D), x(J_D)) -> A_D und J_D sind die Endpunkte von Spline

(ergibt für b: ≈ 916.1)

photo
1

I like Loco's solution Vieleck(Verbinde({ ( x(A_{D}),0) }, Folge(b(t), t, 0, 1, 1/100), { ( x(J_{D}),0) })) which follows exactly the graph. To be honest, I do not understand what happens with these commands. I am looking for a solution that shows the integral between e. g. 1 and 5. Rami explained that somehow but with some inaccuracies around the spline I think.

Thanks to the you geniuses.

photo
1

are you trying to colour the area or to calculate the area?

photo
photo
1

Einige Erläuterungen (ohne Anspruch auf Vollständigkeit und Richtigkeit):

auf Deutsch, da sowohl Loco, Du als auch ich als Muttersprache Deutsch haben.

Im Folgenden spreche ich von der Vieleck- und der Polynom-Variante

.

BeidenVarianten ist gemeinsam, dass auf der Spline eng zusammenligende Punkte gesetzt werden:

Folge(b(t), t, 0, 1, 1 / 100)

Das liest sich in etwa wie folgt: Erhöhe den Wert t bei 0 beginnend um jeweils 1/100 bis der Wert 1 erreicht ist. Mit jedem einzelnen dieser t-Werte wird ein Punkt auf der Spline b gesetzt. Dazu verwendet man die Funktion b(t), die einen Werte-Bereich von 0 bis 1 hat und einen Punkt auf der Spline liefert (im Gegensatz zu "normalen" Funktionen, deren Wertbereich nicht auf 1 normalisiert ist und die als Resultat den y-Wert zu einem bestimmten x-Wert liefert.) Es entstehen also 101 Punkte mit 100 Zwischenräumen.

.

Für die Vieleckvariante fehlen jetzt noch zwei Punkte auf der x-Achse (Null-Linie)

Es ist dies der x-Wert des Punktes A_D = x(A_D) mit dem konstanten Wert 0 für den y-Wert: (x(A_D), 0)

Dieser Punkt liegt also genau senkrecht unter dem Punkt A_D auf der x-Achse. Entsprechend der letzte Punkt (x(J_D), 0).

.

Für das Vieleck müssen alle Punkte in der richtigen Reihenfolge zu einer (einzigen) Liste zusammengefügt werden.

Das geschieht mit dem Befehl "Verbinde( Eine Liste bestehend aus Unterlisten) -> Verbinde({ {},{},{} })

In unserem Beispiel 3 Unterlisten: der erste Punkt in einer Liste {(x(A_D), 0)}, dann die 101 Punkte, die bereits als Liste vorligen und als 3. Unterliste der Letzte Punkt in einer Liste {(x(J_D), 0)}. Man beachte die geschweifte Klammern für die beiden "Extra-Punkte" die den Punkt zu einer Liste mit einem Punkt macht.

.

Der vollständige Befehl für die Punkte-Liste lautet nun: Verbinde({ ( x(A_{D}),0) }, Folge(b(t), t, 0, 1, 1/100), { ( x(J_{D}),0) })

die 2. Unterliste sind die 101 Punkte in Form eines Befehls, der diese Punkte als Liste innerhalb von "Verbinde()" erzeugt.

.

Nun muss obiger Ausdruck nur noch in Vieleck(<Liste von Punkten>) (hier als Ausdruck) eingebettet werden:

Vieleck( Verbinde({ ( x(A_{D}),0) }, Folge(b(t), t, 0, 1, 1/100), { ( x(J_{D}),0) }) )

..

Der Vorteil der Vieleck-Variante liegt in der Einfachheit und Robustheit. Geht es pirmär um die graphische Darstellung der Fläche so ist diese Variante vorzuziehen.

----------------------------------------------------

Wenn, nebst der Fläche noch weitere Berechnungen (Steigung, Schmiegekreis, Ableitung, Extremum) erforderlich sind, so ist eventuell die Polynom-Variante vorteilhaft.

.

Aus einer Punkte-Liste kann eine Funktion mit einer ganzen Serie von unterschiedlichen Trend..... Befehlen erzeugt werde (Es lohnt sich diese Trend... Befehle im Manual durchzulesen, sodass man im Bedarfs-Fall wieder nachschlagen kann).

Oft verwendet wird TrendPoly(<Punkte-Liste>, <Grad des Polynoms>).

Bezüglich dem optimalen Polynom-Grades muss mit mehreren Versuchen ein Optimum gefunden werden (Rechenzeit, Genauigkeit, Ueberschwingen an den Enden (A_D und J_D)). Es ist auch denkbar, dass keine befriedigende Lösung gefunden wird. Dann muss ev. ein anderer Trend..... Befehl verwendet werden oder die Punkte-Liste muss in Segmente unterteilt werden oder die End-Punkte werden speziell behandelt.

Zunächst wird die Punkte-Liste (wie in der Vieleck-Variante berschrieben) erstellt (jedoch ohne die beiden Punkte auf der x-Achse)

L_2=Folge(b(t), t, 0, 1, 1 / 100)

Diese Punkte Liste wird in TrendPoly verwendet um eine (Polynom-) Funktion zu erzeugen.

f(x) = TrendPoly(L_2, 16)

Mit IntegralZwischen(<1.Funktion>,<2.Funktion>, <von-x-Wert>, <bis-x-Wert>)

kann die die Fläche zwischen zwei Funktionen berechnet und graphisch dargestellt werden.

Eine der beiden Funktionen ist f, die andere Funktion ist y=0 (Anmerkung: die Eingabe y=0 wird von GGB bereits bei der Eingabe in einen adäquaten GGB-genehmen Ausdruck überführt). Die Von-Bis-Bereiche auf der x-Achse sind x(A_D) und x(J_D). Das ergibt den Befehl:

IntegralZwischen(f, y=0, x(A_D), x(J_D))

-----------------------------------------

Ich hoffe ich habe nicht zusätzlich verwirrt. Ansonsten im Handbuch die Befehle nachschlagen, damit experementieren und/oder natürlich auch hier im Forum nachfragen.

photo
1

Als Anhang noch beide Varianten mit der Möglichkeit den Bereich mittels Von / Bis Gleiter-Punkten auf der xAchse einzugrenzen.

Dazu habe ich für die Vieleckvariante einen zusätzlichen Befehl benötigt, der die Punkte auf der Spline links und rechts reduziert:

BehalteWenn(<Bedingung für ein Objekt>, <Name für ein Objekt aus Liste>, <Punkte Liste wie Vorangehend erläutert>)

in Bedingung ist die Form a<=b<=c verwendet. Dies ist äquivalent zu a<=b && b<= c (&& für AND)

Für die Vieleckvariante (blau) sind alle beötigten Befehle verschachtelt. In der Polynomvariante (grün) sind die Befehle auf 2 Ausdrücke aufgeteilt (zusätzlich noch (als Beispiel) Extremum())

.

photo
1

Saustark, habt beide vielen Dank.

photo
1

Im Hinterkopf ist mir noch hängen geblieben, dass die Differenz der Integral-Fläche zwischen den beiden Varianten erstaunlich hoch ist. Und tatsächlich (sorry) die Vieleck-Variante hat noch einen Fehler.

Die Von / Bis Punkte auf der xAchse werden sich praktisch nie mit den selektierten Punkten auf der Spline treffen. Das führt dazu, dass die linke und rechte Seite des Vielecks nicht senkrecht verläuft. (Vorallem im linken Teil der Spline ist das sogar von Auge sichtbar).

Lösungsvariante 1: der linke und rechte Punkt auf der Spline muss interpoliert werden. Lösungsvariante2: der Von / Bis Wert muss angepasst werden. Ich habe mich für die 2.Variante (weil einfacher) entschieden.

Bei der PolynomVariante tritt obiges Problem nicht auf. Trotzdem habe ich die Von / Bis Werte analog der Vieleckvariante angepasst damit die Abweichung der beiden Varianten erkundet werden kann.

© 2021 International GeoGebra Institute