Linie glätten 5

Wie in Linie glätten 4 versprochen, folgt nun das – im Vergleich zu 2 Polynomen 3. und 4. Grades – deutlich einfachere und trotzdem funktionierende Prinzip zur Bestimmung einer Tangente mit den beiden Nachbarpunkten.

Gegeben seien ein Anfangspunkt A, ein Mittenpunkt M und ein Endpunkt E, durch die eine geglättete Kurve verlaufen soll.
Gesucht ist die Tangente im Punkt M, die jener der von mir favorisierten Straklatte am nächsten kommt.
Tangentenvektor \( \vec m \) als Linearkombination der normierten Vektoren \( \vec a = \vec {AM} \) und \( \vec e = \vec {ME} \): \( \vec m = p \cdot \frac {\vec a}{\vert \vec a \vert} + \frac 1p \cdot \frac {\vec e}{\vert \vec e \vert} \)
Gewichtungsfaktor \( p \) ist dabei eine Potenz mit dem Quotienten der Vektorenbeträge als Basis und einem Gewichtungsexponenten \( q \) als Exponent: \( p = \left ( \frac { \vert \vec e \vert }{ \vert \vec a \vert } \right ) ^q = \left ( \frac { \vert \vec e \vert ^2 }{ \vert \vec a \vert ^2 } \right ) ^{q/2} \)
Der Tangentenwinkel \( \varphi \) ergibt sich zu: \[ \varphi = \arctan \frac {m_y}{m_x} = \arctan \frac {\left ( \vert \vec e \vert ^2 \right ) ^{0{,}5+q} a_y + \left ( \vert \vec a \vert ^2 \right ) ^{0{,}5+q} e_y}{\left ( \vert \vec e \vert ^2 \right ) ^{0{,}5+q} a_x + \left ( \vert \vec a \vert ^2 \right ) ^{0{,}5+q} e_x} \]
Damit lässt sich mit \( – \infty \le q \le + \infty \) der Tangentenwinkel \( \varphi \) beliebig zwischen den beiden Vektoren \( \vec a \) und \( \vec e \) einstellen.
Die Microsoft’sche Methode ergibt sich somit beim Gewichtungsexponenten \( q = -0{,}5 \).

Das Tabellenblatt Gewichtung dient der Bestimmung des Gewichtungsexponenten \( q \):

  • 5 unterschiedlichen Gewichtungsexponenten \( q \) lassen sich in Zelle B8 aktivieren, um die Vektoraddition \( \vec a_p + \vec e_p \) und den Verlauf der Segmente 1 und 2 im Diagramm zu veranschaulichen.
  • Wie in einem Falle von Linie glätten 4 liegen ja auch hier 2 Polynome 3. Grades vor. Um für den dortigen Fall mit A(-1;1), M(0;0) und E(1;2) den gleichen Tangentenwinkel zu erhalten, bräuchte es \( q=0{,}722557… \), was mit einer Abweichung von nur 2,2% “verdächtig” nahe an \( \frac {1}{\sqrt{2}} = 0{,}707106… \) liegt!
  • Der Kehrwert des Goldenen Schnittes mit \( \frac {\sqrt {5} – 1}{2} = 0{,}618033… \) wäre mir übrigens auch sehr willkommen gewesen. 😉

Im Tabellenblatt Spline werden an 4 Segmenten folgende Effekte demonstriert:

  • Tangentenlänge \( l \): Die Länge der Tangenten der 5 Punkte
  • Anzahl der Zwischenpunkte \( n \): Nach dem Grundsatz “So wenig wie möglich, so viel wie nötig” braucht es hierfür noch einen variablen Ansatz. Da der Gradient der Steigung im Allgemeinen an den Punkten größer ist, wurde die Verteilung der Punkte sinusförmig gewählt.
  • Spannung \( c \): In die einzelne Kurve eines kubisch hermiteschen Splines integriert, lässt sich damit der Verlauf zwischen den Punkten steuern: \( f(t) = (1 + 2 t) (1 – t)^2 p_1 + t^2 (3 – 2 t) p_2 + c t (1 – t) \left [ (1 – t) m_1 – t m_2 \right ] \). Standard sei 1, 0 führt zu einem Polygonzug und negative Werte rufen eine Schleifenbildung hervor.
  • Gewichtungsexponent \( q \): Mein Favorit ist \( \frac {1}{\sqrt{2}} \), Microsoft würde \( -0{,}5 \) verwenden.
  • Methode: “Geyer” ist der Versuch einer Verbesserung der Option “Linie glätten”, “Microsoft” ist der aktuelle Standard.
  • Verzerrung: “Unzulässig” bewirkt gleiche Achsen-Skalierungen durch die automatisierte Wahl geeigneter Achsen-Grenzen, “Zulässig” überlässt diese Wahl Excel.

Die folgende Datei enthält die beiden obig beschriebenen Tabellenblätter zum spielerischen Nachvollziehen meines Ansatzes:

Linie glätten 4

In Kubischer Spline mutmaße ich, dass die Straklatte der Idealfall für eine substantielle Verbesserung der Option “Linie glätten” (engl. “Smoothed line”) sei.
In Parametrische Spline-Interpolation erwähne ich, dass ich schon ein deutlich einfacheres und trotzdem funktionierendes Prinzip für eine Näherung mit den zwei Nachbarpunkten gefunden habe.
Um meine Gedankengänge – auch für mich selbst – nachvollziehbar zu erhalten, möchte ich allerdings vorerst meine Näherungsversuche zur Straklatte und deren schlussendlich gesuchte Steigung am Mittenpunkt präsentieren:

  • Die naheliegende natürliche Parametrische Spline-Interpolation durch 3 Punkte ist ein Schuss in den Ofen, weil sich allerhöchstens in Sonderfällen zufällig ein Kraftgleichgewicht ergibt. Dazu müssen sich nämlich die Tangentennormalen aller 3 Punkte in einem Punkt treffen. Den beiden Polynomen 3. Grades kann man das auch gar nicht vorwerfen, da sie dazu auch nicht die nötigen “Freiheiten” haben, um das überhaupt vorsehen zu können! Das Ergebnis ist die immer wieder ernüchternde Micrsoft’sche Methode.
  • Ein einzelnes Polynom muss den 5. Grad aufweisen, um alle Bedingungen erfüllen zu können. Da in den beiden Endpunkten die 2. Ableitung Null sein muss, bleibt eine übrig, die der allgemeinen Anwendbarkeit einen Strich durch die Rechnung macht, da sie sich unzulässigerweise in den betrachteten Bereich “einschleicht”!
  • Zu Versuchen mit höheren Graden und geschickten Annahmen mit beispielsweise komplexen Nullstellen sei nur angemerkt, dass sie fruchtlos waren. Ob dies der grundsätzlichen Unmöglichkeit oder meinem mathematischen Unvermögen geschuldet ist, werde ich wohl selbst nicht eruieren können.
  • Diese komplexen Höhen trieben mich in die triviale Niederung des 1. Grades. Die Straklatte wird durch 2 Geraden (Sekanten) ersetzt. Die Normalen darauf in den Endpunkten schneiden sich in einem Punkt, dessen Verbindung zum Mittenpunkt die Steigung in selbigem festlegt. Trotz “brutalem” Eck am Mittenpunkt zeigt sich schon der erwartete Widerspruch zur aktuellen Glättung!
  • Preisfrage: Was passiert, wenn man 2 Polynome 3. Grades heranzieht und alle Bedingungen bis auf das Kräftegleichgewicht einhält? Man kommt auf kompliziertem Weg zu Microsoft, deckungsgleich mit der oben erwähnten Spline-Interpolation!
  • Wenn man bei 2 Polynomen 3. Grades das Kräftegleichgewicht erfüllt und dafür die gleiche Krümmung am Mittenpunkt “opfert”, dann verstärkt sich der obige Widerspruch noch! Aber auch die Unsicherheit, wo denn die “Wahrheit” liegen könnte.
  • Um das einzelne Polynom 5. Grades zu ersetzen, braucht es eines 3. und eines 4. Grades. Da das Polynom 4. Grades auch einen “überzähligen” Wendepunkt hat, muss dieser “ausgeschlossen” werden. Dies gelingt verlässlich, wenn der vom Mittenpunkt weiter entfernte Punkt via 4. Grad verbunden ist!
    Dieser Ansatz bestätigt den vorhergehenden sehr gut.

Resümee:

  • 2 Polynome 1. Grades führen zu einer einfachen Formel für die gesuchte Steigung, wird aber durch keinen weiteren Ansatz bestätigt.
  • 2 Polynome 3. und 4. Grades erfüllen alle Bedingungen und werden durch 2 Polynome 3. Grades bestätigt. Der Aufwand ist aber unvertretbar hoch!
  • Also wird demnächst eine “Näherung der Näherung” in Form eines “deutlich einfacheres und trotzdem funktionierendes Prinzips” vorgestellt.

Oben Erwähntes habe ich wie immer in “Excel gegossen”, damit es nachvollziehbar bleibt und “spielbar” wird. Die folgende Datei enthält dazu die Ansätze mit

  • 1 Polynom 5. Grades,
  • 2 Polynome 1. Grades,
  • 2 Polynome 3. Grades (Microsoft),
  • 2 Polynome 3. Grades und
  • 2 Polynome 3. und 4. Grades:

TEILERGEBNIS für RGP

Zur Berechnung des Wertverlusts von PKWs unterschiedlicher Erstzulassung wollte ich die Steigung eines linearen Trends mittels der Funktion RGP(Y_Werte;[X_Werte];[Konstante];[Stats]) verwenden. Als ich allerdings einen Filter setzte, musste ich feststellen, dass manuell ausgeblendete Zellen eingeschlossen bleiben. Also bemühte ich die Funktion TEILERGEBNIS(Funktion;Bezug1;[Bezug2];…), um zu erkennen, dass unter den angebotenen 11 Funktionen kein RGP zu finden ist. Dass Excel dies generell kann, sieht man aber daran, dass ein Diagramm auf ausgeblendete Zellen reagiert und eine etwaige lineare Trendlinie somit “gezwungen” ist, ihre Parameter demgemäß anzupassen!

Was liegt also näher, als eine Benutzerdefinierte Funktion SUBTOTAL_RGP(Y_Werte;[X_Werte];[Konstante];[Stats]) zu programmieren, die nichts anderes tun muss, als die sichtbaren Zellen herauszufiltern, um sie der ursprünglichen Arbeitsblattfunktion RGP (VBA: Worksheetfunction.LinEst) als Arrays zu übergeben.
Die Funktion akzeptiert Bezüge und Matrizen in Zeilen und Spalten, mit der momentanen Einschränkung gegenüber RGP, dass der Bereich der X_Werte nur eine Variablengruppe umfassen darf.

Die folgende Datei zeigt die Funktionalität mittels zweier Gruppierungen und Zufallszahlen, wobei die Formel in den Diagrammen als Kontrolle dienen mag:

Moment um allgemeine Achse

Momente sind an und für sich nichts Besonderes, solange Sonderfälle zu Vereinfachungen führen. Das Moment um eine allgemeine Achse aber brachte mich zum Grübeln, da ich natürlich eine für mich zukunftsträchtige Lösung in Excel haben wollte: Kraft oder/und Moment wirken an einem Angriffspunkt und erzeugen ein Moment um eine Achse.
Da mich Google im Stich ließ, überlegte ich einen Lösungsweg:

  • Für eine Kraft braucht es deren wirksame Komponente und ihren Hebelarm. Ersteres ist die Projektion der Kraft in eine Normalebene der Achse. Letzteres ist der Normalabstand dieser Projektion zur Achse.
  • Für ein Moment genügt dessen wirksame Komponente.

Nach längerer Herleitung, zeigte sich ein unsympathisches Konvolut, was zugegebenermaßen zum Teil “meiner Mathematik” geschuldet sein hätte können. Die Unwägbarkeiten eines kommutativen Skalarprodukts ließen mich dann aber einen anderen Weg einschlagen, nämlich ganz althergebracht den allgemeinen Fall zum Sonderfall zu machen!

  1. Verschiebung des Achsenpunktes in den Nullpunkt
  2. Drehung um die x-Achse, damit die Achse in der z-x-Ebene zu liegen kommt
  3. Drehung um die y-Achse, damit die Achse schließlich kollinear zur z-Achse ist

Und schon haben wir den quasi ebenen Sonderfall! Die sich durch die Transformationen ergebenden Kraftkomponenten \( F_x^{\prime\prime} \) und \( F_y^{\prime\prime} \) samt zugehöriger Wirkabstände \( y^{\prime\prime\prime} \) und \( x^{\prime\prime\prime} \) und die Momentkomponente \( M_z^{\prime\prime} \) ergeben das gesuchte Moment \( M \) .
Die folgende Datei zeigt dies einerseits aufwändig aber nachvollziehbar Schritt für Schritt, vereinfacht mit Drehmatrizen in Zellen, kompakt mit Hilfe von Namen und für mich optimal als Benutzerdefinierte Funktion:

Bemerkung: Nicht als 97-2003-Version, weil in den Diagrammen der kombinierte Typ “Doppelt” der Linie des Moments und generell der Endpfeiltyp “Pfeil” – ohne Warnung beim Speichern im Kompatibilitätsmodus – verworfen wurden.

Geyer-Punkte

Mein Nachname in Geyer-Punkte soll nur den Kontext zu den Bessel-Punkten herstellen, denen ich bereits einen Beitrag gewidmet habe. Die genialen Herren Friedrich Wilhelm Bessel und George Biddell Airy sind jene Riesen, auf deren Schultern ich dabei stehe!
Die speziellen Punkte lassen sich auf einem 2-fach gelagerten und somit statisch bestimmten Balken allesamt analytisch explizit bestimmen. Aber mit bloß 2 Auflagern dürfte man bei längeren Balken kein Auslangen mehr finden. Bei 3 Auflagern könnte es für einen der Fälle noch eine exakte Lösung geben, darüber hinaus dürfte man aber auf verlorenem Posten sein. Also braucht es einen universellen Ansatz!
Hier kommt der in Excel integrierte Solver ins Spiel. Mit ihm lassen sich die Auflagerkoordinaten solange variieren, bis sich die gewünschten Randbedingungen in vorgegebener Genauigkeit einstellen.
Bei 2 Auflagern ergeben sich folgende Lösungen:

  • Drehmomentenfreie Lagerung (horizontale Tangente an den Auflagern, minimale mittlere Durchbiegung und somit minimale Verzerrungsenergie; bei mehr als 2 Auflagern ergeben sich deswegen gleichzeitig die kleinstmöglichen maximalen Biegemomente an allen Auflagern, die doppelt so groß sind als jene dazwischen)
  • Airy-Punkte (horizontale Tangente an den Enden)
  • Normative Festlegung (gleiche Durchbiegung an den Enden und in der Mitte)
  • Geringste maximale Randfaserspannung (gleicher Biegemomentbetrag an den Lagern und in der Mitte)

Bei mehr als 2 Auflagern offerieren sich die Airy-Punkte in 2 Varianten, und für die entfallende geringste maximale Randfaserspannung kommen gleiche Auflagerkräfte hinzu:

  • 2 mögliche Airy-Punkte: Horizontale Tangente an den Enden und
    – gleiche Durchbiegung in den Mitten oder
    – horizontale Tangenten an den inneren Auflagern
  • Gleiche Auflagerkräfte

Alle nicht unbedingt auf dem Tabellenblatt ersichtlich sein müssenden Berechnungen wurden per Namen in den Hintergrund verbannt. Für die Definition von Vektoren und Matrizen wurde wiederum ein “very hidden” Tabellenblatt “X” und INDEX in Bezugsversion benutzt. Den Rechengang möchte ich nicht detailliert beschreiben, nur so viel:

  • Die Berechnung der Auflagerkräfte fußt auf der Lösung eines Gleichungssystems
  • Zur Bestimmung von Polynom-Nullstellen dient die benutzerdefinierte Funktion POLYNOMIAL1TO4ZERO
  • Die benutzerdefinierten Funktion INDEX2 wird vor allem für Namen gebraucht, die zufolge eines Vektors mehrere Werte an Diagramme übergeben können müssen
  • Die Arrayformel für x(y”’ = 0) musste mittels eines Tricks zur Aktualisierung gezwungen werden, nämlich der Addition einer mit 0 multiplizierten volatilen Funktion: 0*HEUTE()
  • Die Lösung mittels Solver erfolgt via Befehlsschaltfläche, der der Makro “Optimierung” zugeordnet ist

Es wäre interessant zu erfahren, welche Anwendungen durch meine Berechnung abgedeckt werden können! Deswegen stelle ich vorerst eine Variante für maximal 5 Auflager zum Download bereit. Wer will und kann, möge sich die Datei selbst erweitern, alle anderen sind aufgerufen, mich hinsichtlich ihrer Anforderungen gerne zu kontaktieren: