Funktion, die alle Zahlen zwischen 1 und -1 "quetscht"?
Ich suche eine mathematische Funktion, die das tut, was in der Frage steht.
Beispiel: f(100) = 1 f(-100) = -1
Ich meine, dass für jede Zahl, die man in die Funktion "eingibt", eine Zahl zwischen -1 und 1 rauskommt.
10 Antworten
Da kommt mir zuerst die Sigmoid-Funktion in den Sinn:
(s. https://upload.wikimedia.org/wikipedia/commons/5/53/Sigmoid-function-2.svg)
Sie hat zwar Asymptoten bei y = 0 und y = 1, aber das kann man durch geschickte Streckung und Verschiebung nach Belieben verändern. Um 2 gestreckt und 1 nach unten verschoben, verläuft sie zwischen -1 und 1.
Es wirkt so, als wäre es dir egal, wie die Funktion genau verläuft, solange der Wertebereich zwischen -1 und 1 liegt. Dann wären natürlich noch andere Funktionen möglich:
(s. https://upload.wikimedia.org/wikipedia/commons/6/6f/Gjl-t%28x%29.svg)
Ansonsten sind natürlich auch trigonometrische Funktionen wie der Sinus oder der Kosinus möglich - sie alternieren zwar, aber verlaufen trotzdem nur zwischen -1 und 1 (sogar in dem Falle inklusive -1 und 1).
Es kommt darauf an, wofür du die Funktion brauchst und was sie tun soll. Möglichkeiten gibt es wie Sand am Meer.
LG
Du könntest erstmal von den Zahlen das Minimum abziehen. Dann startet die kleinste Zahl schon einmal bei 0.
Dann teilst du diese Zahlen durch das sich neu ergebene Maximum. Dadurch wird das Maximum zu 1 und alle anderen Zahlen liegen zwischen 0 und 1.
Du benötigst aber eine Spannweite von 2. Das bedeutet, du multiplizierst alle Zahlen mit 2. Jetzt fehlt nur noch ein additiver -1-Shift, um die Zahlen im Bereich [-1;1] zu haben.
sehr schöne Erklärung! Leider funktioniert das Ganze nur wenn eine obere und eine untere Grenze vorhanden sind (also sowas wie N oder R lassen sich nicht in den Bereich trimmen. Leider)
Ja, das stimmt. Die Grenzen können beliebig hoch sein, müssen aber endlich sein.
Außerdem müssen die Grenzen bekannt sein, oder die Abbildung ändert sich mit jedem Messwert, den man der Funktion hinzu fügt.
"alle Zahlen", darunter verstehe ich alle aus einer Messreihe vorliegenden Zahlen. Ich halte die Frage für ein Skalierungsproblem.
Deswegen habe ich auch sin und cos ausgeschlossen, weil da die Eindeutigkeit flöten geht.
so muss man es zumindest verstehen damit es lösbar ist.
Ansonsten würd eman unter "Alle" eben alle annehmen, d.h. alle x aus R.
aber es geht wohl wirklich drum dass [a,b] auf [-1,1] abgebildet werden soll.
Einfach gesagt: Gibts nicht. Kann es auch gar nicht geben.
Etwas umfangreicher gesagt:
Kann es nur für begrenzte Zahlenbereiche geben.
Beispiel: Alle Zahlen im Bereich zwischen -99999 und 99999 sollen in den Bereich -1 bis 1 "gequetscht" werden. In dem Fall gilt für -99999 ≤ x ≤ 99999: x ÷ 99999
Ohne eine Begrenzung dieser Art hättest du das Problem, dass du durch "Unendlich" teilen müsstest, was aber zur Folge hätte, dass das Ergebnis unabhängig von x immer "Undefiniert" wäre.
Ja, natürlich, aber es reicht mir auch, wenn es mit den meisten Zahlen funktioniert...
Es funktioniert nicht nur mit den meisten, sondern mit "allen" Zahlen. Aber auch nur solange ein Bereich festgelegt ist, dessen Ober- und Untergrenze Zahlen sind.
Wenn die Ober- und/oder Untergrenze keine Zahlen sind, was z.B. bei "Unendlich der Fall wäre, dann gehts natürlich nicht.
Kommt darauf an, welche Anforderungen noch an die Funktion gestellt werden. Wenn keine Monotonie gefordert wird, funktioniert es auch im Intervall -unendlich bis +unendlich. Beispiel: Sinus.
Auch wenn Monotonie gefordert wird, geht es: f(x) = 2(1+e^(-x)) - 1 zum Beispiel.
Naja, aber man will doch schon eine gewisse gleichmässige Verteilung.
Sieht einfach shcöner aus :-)
Ansonsten eht mit modulo Operationen ziemlich Alles :-D
Der Ausweg besteht darin, dass man sich von der Idee löst, dass die "Quetschung" linear (also eine einfache Proportionalität) sein soll.
Kann es nur für begrenzte Zahlenbereiche geben.
Wie meinst du das? Funktionen mit waagrechten Asymptoten bei -1 und 1 gibt es zu Hauf - und das funktioniert für alle reellen Zahlen.
Wenn du es ganz billig haben willst, nimm einfach
f(x) = Cos(x) oder Sin(x).
Da bekommst du für jeden Wert eine Zahl zwischen 1 und -1 raus. Wenn ich die Frage richtig verstanden habe passt das doch perfekt, oder?
Der blaue Graph ensteht bei f(x) = 2/π * arctan(x)/10
Der orangene bei f(x) = sin(x)
Mich stört diese "Delle" ungefähr bei x = 1.5
Mir ist klar, warum und dass ich die Frage schlecht formuliert habe, aber jetzt habe ich ja eh eine Lösung...
Keine Ahnung was du da eingetippt hast, aber der Orange Graph ist ganz sicher nicht sin(x). Der Sinus ist nämlich Gleichmäßig - Ohne solche Dellen.
Wie man hier sehen kann, kann der Sinus solche "Dellen" haben
grün: f(x)=sin(2x-1)+sin(0.5x+1)
orange: g(x) = sin(f(x))
Wenn du das nicht glaubst, gib es halt hier ein
Genau nach der Funktion habe ich gesucht :)