WaBis

walter.bislins.ch

Kurvendiskussion: Hartnäckige Funktion

Dienstag, 1. April 2014 - 00:45 | Autor: wabis | Themen: Wissen, Mathematik, Kurioses
Per E-Mail erreichte mich eine Anfrage, ob es mir möglich wäre, zu einer bestimmten Kurve (siehe Bild oben) eine passende Formel herzuleiten. Ich bin eigentlich ziemlich gut darin, dachte ich. Diese Kurve schien nichts Besonderes zu sein. Doch sie erwies sich als harte Nuss.

Grafik

Die folgende Grafik stellt meine Lösung der Aufgabe dar. Weiter unten findest du die zugehörige Formel.

Aufgabe

Die Funktion sei im X-Bereich 0 bis 9 definiert.

Im Bereich 0 bis 6 soll ein positiver Buckel mit einer Y-Höhe von 1 sein, im Bereich 6 bis 7 ein negativer Buckel mit einer Höhe -1, gefolgt von einem positiven Buckel im Bereich 7 bis 8 mit einer Höhe von 2 und schliesslich nochmals ein negativer Buckel im Bereich 8 bis 9 mit einer Höhe von -1.

Die Funktion hat Nullstellen bei 0, 6, 7, 8 und 9.

Formel

Es gibt mehrere mögliche Lösungen, da der genaue Verlauf der Funktion nicht vorgeschrieben ist. Ich habe folgende Funktion gefunden, welche die obige Aufgabe erfüllt.

(1)
y(x) = { 2 \cdot \sin( \pi \cdot p(x) ) \over \pi \cdot p(x) } \cdot h(x)

Gesuchte Kurve

mit
p(x) = a \cdot z^5 + b \cdot z^4 + c \cdot z^3 + d \cdot z^2 + e \cdot z

Polynom für Nullstellen

und
h(x) = 2{,}5 \cdot z^{0{,}1} \cdot (1 - \mathrm{e}^{-z^2}) + 1

Hüllkurve für Minima und Maxima

und
z = |x - 7{,}5|

Spiegelung und Verschiebung zu 7,5

wobei'
a ' =' '+0,000 655
b ' =' '−0,018 788
c ' =' '+0,202 672
d ' =' '−1,014 230
e ' =' '+2,458 750
\mathrm{e} ' =' 'Eulersche Zahl = 2,718 28...

Hier die Formel in einem Guss, wobei ich aus Platzgründen die Symbole a bis e für die Zahlen verwende:

(2)
\begin{split} y(x) = & { 2 \cdot \sin\left( \pi \cdot (a \ |x - 7{,}5|^5 + b \ |x - 7{,}5|^4 + c \ |x - 7{,}5|^3 + d \ |x - 7{,}5|^2 + e \ |x - 7{,}5|) \right) \over \pi \cdot (a \ |x - 7{,}5|^5 + b \ |x - 7{,}5|^4 + c \ |x - 7{,}5|^3 + d \ |x - 7{,}5|^2 + e \ |x - 7{,}5|) } \\ & \cdot \left( 2{,}5 \cdot |x - 7{,}5|^{0{,}1} \cdot (1 - \mathrm{e}^{-|x - 7{,}5|^2}) + 1 \right) \end{split}

Und hier in voller Pracht als Bild. Durch Anklicken wird es vergrössert. Mit einem Doppelklick erscheint es auf einer eigenen Seite, wo es mit der rechten Maustaste angeklickt und abgespeichert werden kann (Menu Bild speichern unter...).

Grundfunktion

Wenn man die gesuchte Funktion nach rechts erweitert, erkennt man, dass sie um die Y-Achse bei x = 7,5 symmetrisch ist. Ich beginne den Aufbau der Funktion deshalb bei der Y-Achse (x = 0) und baue sie nach rechts auf. Später kann ich sie dann spiegeln und an die Position x = 7,5 verschieben.

Als Grundfunktion für die Kurve habe ich die Funktion sin(x)/x ausgesucht. Dies ist eine periodische Funktion, liefert also in regelmässigen Abständen Nullstellen.

Diese Nullstellen müssen nun auf die Positionen x = (0,5), (1,5) und (7,5) gebracht werden. Dies sind die Positionen, bevor die Funktion gespiegelt und zu x = 7,5 verschoben wird. Die Funktion sin(x)/x hat bei x = 0 den Wert 1 und die Nullstellen liegen in einem Abstand von π/2.

Polynom für Nullstellen

Um die Nullstellen der Grundfunktion an die gewünschten Stellen zu bringen, muss ich das Argument x der Grundfunktion transformieren. Dies mache ich mit Hilfe eines Polynoms. Das Polynom muss folgende Abbildung machen:

  1. x = 0,0p = 0
  2. x = 0,5p = 1
  3. x = 1,5p = 2
  4. x = 7,5p = 3

Die P-Werte werden dann mit π multipliziert und an die Grundfunktion übergeben. Dadurch kommen die Nullstellen der Grundfunktion an die gewünschten Stellen zu liegen.

Damit der Hügel zwischen 1,5 und 7,5 keine Wellen bekommt, muss das Polynom in diesem Bereich stetig steigend sein. Für die Transformation durch die vier Punkte würde im Prinzip ein Polynom 3-ten Grades reichen. Damit war es jedoch nicht möglich, im Bereich 1,5 bis 7,5 eine stetige Steigung zu erreichen. Ich musste ein Polynom von mindestens dem Grad 5 verwenden:

(3)
p(x) = a \cdot x^5 + b \cdot x^4 + c \cdot x^3 + d \cdot x^2 + e \cdot x + f

Da das Polynom durch den Ursprung geht, ist der Wert für f = 0.

Durch zwei geeignet gewählte zusätzliche Punkte konnte ich ein Polynom der gewünschten Form berechnen. Das Polynom geht durch folgende Punkte:

  1. x = 0,0p = 0
  2. x = 0,5p = 1
  3. x = 1,5p = 2
  4. x = 4,5p = 2,5
  5. x = 7,5p = 3
  6. x = 10p = 3,5

Die Punkte 4 und 6 habe ich durch Probieren ermittelt.

Um die Koeffizienten a bis e des Polynoms zu finden, musste ein lineares Gleichungssystem mit den 5 Unbekannten a bis e mit Hilfe der obigen Punkte aufgestellt und gelöst werden. Dazu nahm ich ein CAS (Computer Algebra System) zuhilfe.

Nach dem Einsetzen des Polynoms in die Grundfunktion hatte ich bereits eine Funktion, welche die Nullstellen an den verlangten Orten hat und grob die gewünschte Form hatte.

Hüllkurve

Die Höhe der Hügel musste nun noch über eine Hüllkurve auf die verlangten Werte korrigiert werden. Der erste kurze Hügel musste leicht erhöht und der zweite lange Hügel etwas mehr erhöht werden. Dazu eignet sich als Hüllkurve eine Potenz-Funktion:

(4)
h(x) = a \cdot x^b

Die Parameter a und b habe ich durch probieren optimiert.

Diese Hüllkurve hatte in dieser Form jedoch noch zwei Probleme: Bei x = 0 ist ihr Wert Null, sollte aber 1 sein. Daher habe ich noch 1 addiert:

(5)
h(x) = a \cdot x^b + 1

Damit entstand aber ein weiteres Problem: Die Vergrösserung der Y-Werte bei kleinen X-Werten war viel zu gross, was die Spitze so stark verformte, dass zwei Spitzen daraus entstanden. Ich musste also die Hüllkurve für kleine X dämpfen. Dazu eignet sich die folgende Funktion:

(6)
y = 1 - \mathrm{e}^{-x^2}

Diese Funktion hat überall praktisch den Wert 1, ausser in der Nähe von x = 0. Dort bricht der Wert sanft gegen y = 0 ein. Wenn ich also die obige Funktion (5) mit (6) multipliziere, wird die zu grosse Verstärkung wie gewünscht gedämpft.

Die Hüllkurve hat damit die Formel:

(7)
h(x) = 2{,}5 \cdot x^{0{,}1} \cdot (1 - \mathrm{e}^{-x^2}) + 1

Diese Funktion muss nun einfach mit der Grundfunktion multipliziert werden und schon haben die Hügel die geforderten Höhen.

Spiegeln und Verschieben

Im letzten Schritt muss die bisherige Kurve noch an der Y-Achse gespiegelt und an die Stelle 7,5 verschoben werden.

Das Spiegeln erreicht man, indem man alle x durch ihren Absolutwert |x| ersetzt.

Das Verschieben an die Stelle 7,5 erreicht man, indem alle x durch x7,5 ersetzt werden.

Durch Ersetzen aller x durch z = |x7,5| erhalte ich schliesslich die Formel für geforderte Kurve.

Polynominterpolation gescheitert

Im Prinzip kann man Kurven, welche durch ein paar Punkte wie in dieser Aufgabe vorgegeben sind, durch ein Polynom erzeugen. In diesem Falle sind jedoch die Positionen der Maxima und Minima nicht bekannt und müssen erst noch berechnet werden. Dies führte zu dem Problem, dass ein Gleichungssystem 4-ten Grades mit 4 Unbekannten gelöst werden müsste. Damit waren ich und mein CAS überfordert.

Als ich einfach Punkte für Minima und Maxima angenommen habe und so versuchte, ein Polynom durch diese Punkte zu legen, ergab die Polynominterpolation eine wild schwingende Kurve, die zwar durch alle gegebenen Punkte ging, jedoch sonst nichts mit der geforderten Form zu tun hatte.

Der Ansatz mit der Polynominterpolation führte in diesem Fall zu keiner brauchbaren Lösung. Je mehr Punkte ich einfügte, umso mehr Schwingungen entstanden. Das Problem war der sehr langezogene Hügel neben dem kurzen Hügel. Diese Konstellation regt das Polynom zum Schwingen an.

Dein Kommentar zu diesem Artikel
Name
Email optional; wird nicht angezeigt
Kommentar
  • Name wird bei deinem Kommentar angezeigt.
  • Email ist nur für den Administrator, sie wird nicht angezeigt.
  • Du kannst deine Kommentare eine Zeit lang editieren oder löschen.
  • Du kannst Formatierungen im Kommentar verwenden, z.B: Code, Formeln, usw.
  • Externen Links und Bilder werden nicht angezeigt, bis sie der Admin freischaltet.
Weitere Infos zur Seite
Erzeugt Sonntag, 21. Dezember 2014
von wabis
Zum Seitenanfang
Geändert Samstag, 9. Januar 2016
von wabis