Mathematisches problem

cycovery

Erfahrenes Mitglied
Hey leute! hab grad n kleines mathematisches Problem, bei dem ihr mir hoffentlich helfen koennt!
Wie kann man ohne if Abfrage, nur mit standardoperatoren ( + - * / modulo) einen Wert in ein bestimmtes spektrum clippen?

als Beispiel Spektrum 0 bis 1

durch die Operation sollen sich die Werte folgendermassen aendern:

-2.3 wird 0
0.3 bleibt 0.3
4.8 wird 1

vielen Dank fuer jegliche Hilfe =)
 
Ist zwar ne Themenfrage aber nagut.. ;)
Mit Modulo gibst du die Range an also.. X % 7 gibt ergebnisse zwischen 0 und 6 zurück.
Dann addierst du noch deinen Offset dazu... also X % 7 + 10 gibt zahlen zwischen 10 und 16 zurück :)

MfG
Dominik

Wargh.. beispiel net gesehn da war ich wohl zu schnell... wart ich überleg mir gleich wat.. sekundäää :)

..so probieren wirs mal: (bisher hab ich nur über positiven Zahlenbereich nachgedacht also lass mir dann nochmal Zeit :) )
min = Untergrenze
max = Obergrenze

Ich hoffe du hast auch div zur verfügung

Y = (min + X % min + (X DIV min) - 1 )
.. müsste schonmal das untere im positiven Zahlenbereich abschneiden...
...verdammt jetzt schon der erste fehler.. der 2. teil hatte kleinen Fehler...

HILFÄÄÄ.. ich bekomm grad keine Idee für Obergrenze :(
 
Zuletzt bearbeitet:
DIE LÖSUNG

SO... nochmal zusammen mit einem Kollegen hingesetzt und das ganze überdacht... wenn du dir überlegst wie der Graph der Funktion aussieht wirst du vielleicht drauf kommen das dir eine Betragsfunktion helfen könnte.
Letztendlich kommt dabei ne Formel raus bei der du die Mitte deines Bereiches in den Ursprung verschiebst(bzw letztendlich halt andersrum). Im Ursprung kannst du dir sowas wie f(x) = |x+1| - |x-1| basteln wodurch du schonmal die gewünschte Form bekommst jetzt musst du nur noch die 1 durch die halbe range austauschen entsprechende verschiebungen machen etc.
Anbei die gekürzte Version der Formel.. :)

. . . . . | 2x – max + min| - |2x – 3max + 3min|
f(x) = . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . + max - min

MfG
Dominik ;)
 
Also ich glaube nicht, dass die Formel die Anforderung erfüllt. Bsp:

Untergrenze: 5
Obergrenze: 10
Zahl: 3 => liegt unter der Untergrenze und soll deshalb 5 ergeben

=> in Formel einsetzten

( |2x3 - 10 + 5| - |2x3 -3x10 + 3x5| ) / 4 + 10 - 5 = ( |1| - |-9| ) /4 + 5 =

-8/4 + 5 = -2 + 5 = 3 => und hier muss doch 5 stehen oder?

Die Funktion sollte doch wie im Bild aussehen oder?
 

Anhänge

  • spektrum.JPG
    spektrum.JPG
    4,2 KB · Aufrufe: 98
Ok.. haben da wohl nen Fehler reingebaut..
Ich liefer es nachher korrigiert nach!

Und ja so sollte die Funktion aussehen :)

MfG Dominik :)

Wargh... was stimmt da nicht.. die Logik ist richtig oder ich mach immer den selben Fehler.. *HOIL*

..ok den fehler hab ich jetzt.. dauert noch kurz :D
 
Zuletzt bearbeitet:
Und hiermit präsentiere ich die (hoffentlich) endgültige korrekte Version ;)
Die gekürzte Version hab ich jetzt nicht durchgerechnet müsste aber aufgrund der "trivialen" Kürzungen korrekt sein! (wenn nicht dann war der Kaffee grad zu schwach :D)

MfG Dominik ;)
 

Anhänge

  • formel.GIF
    formel.GIF
    2,2 KB · Aufrufe: 88
Die lange Funktion scheint zu stimmen. Aber beim Kürzen ist wohl was schief gegangen ( doch zu schwach gewesen der Kaffee :D)

Ich bekomm nach dem kürzen:

f(x) = (|x-2min| - |x-2max|) / 4 + (max-min) / 2

wenn da ein Fehler drin ist, dann war mein Kaffee auch zu schwach :D
 
Dein Kaffee war zu schwach und ich bin zu doof um abzuschreiben ^^ (drecks Vorzeichen ;))

Hier nochmal komplett mit dem Weg wie ich gekürzt habe :D

MfG Dominik ;)

edit: dein Kaffee war doch nicht zu schwach nur du hättest weiter Kürzen können ;)

edit2: und du hast das Vorzeichen auch falsch abgeschrieben :p

edit3: und der Kaffee war doch zu schwach da du kein x/2 hast und somit nicht alles in einem Betrag auf einen Bruchstrich hättest schreiben dürfen ohne auch ne 2 vor das x zu schreiben ;)
 

Anhänge

  • formel2.GIF
    formel2.GIF
    4,8 KB · Aufrufe: 84
Zuletzt bearbeitet:
Ja da hast du recht. Immer die Schusselfehler (und NUR der Kaffee ist dran Schuld :D). Aber jetzt hats zu guter letzt ja doch noch mit der richtigen Funktion geklappt. :)
jetzt kann ich beruhigt ins Wochenende gehen :D
 
Zurück