PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ...0,1 0,2 0,5 1 2 5 10 20 50 100 200 500 1000...


Dr.Doom
2013-05-06, 19:38:26
Howdy,

ich suche einen effizienten Weg (Zeit), um für einen Wert x die nächst höhere Zahl der im Titel genannten Reihe zu finden.

Beispiele:

my_func(4) --> Ausgabe 5
my_func(0,4) --> Ausgabe 0,5
my_func(33333333333333) --> Ausgabe 50000000000000
my_func(0,0000000015) --> Ausgabe 0,000000002

Entweder ist das zu leicht oder zu schwer (oder zu spät), da mir nichtmal ein Ansatz dazu einfallen will, der den Effizienzgedanken ausser Acht lässt. :freak:

Hat dazu jemand einen Schubs in die richtige Richtung?

ux-3
2013-05-06, 19:40:29
Sorry, ich kann die Reihe nicht fortsetzen? Und welchen Sinn machen X-Werte, die nicht ganzzahlig sind bei einer Reihe?
Wieso nicht 100 200 500 1000 2000 5000...


Wenn es in Dreierschritten ist:
Division durch 3 mit Rest, Fallunterscheidung 0, 1, 2, dann Wachstumsschema anwenden.

Dr.Doom
2013-05-06, 20:02:23
Sorry, ich kann die Reihe nicht fortsetzen?
Wieso nicht 100 200 500 1000 2000 5000...
Ja, stimmt, nicht ...120 150 200..., sondern ...100, 200, 500, 1000, 2000,... usw

Ist wohl doch schon zu spät dafür. :freak:

Und welchen Sinn machen X-Werte, die nicht ganzzahlig sind bei einer Reihe?
Das soll für einen "Autorange"-Mechanismus gedacht sein, der die Skalierung einer Anzeige für kontinuierlich erfasste Messwerte nur bei Überschreitung bestimmter Schwellwerte (siehe Reihe) anpasst - und diese Werte können auch (deutlich) kleiner 1 sein.

gnahr
2013-05-06, 20:09:24
schnell durch excel gejagt... logarithmus zur basis 10 ergibt ne schöne gerade. besser als nix, auch zur späten stunde. :)
also, berechnung aus dem logarithmus und dann runden auf das nächste, gute, ganze. (ist interpoliert dargestellt, schwankt aber nur leicht.)

http://abload.de/img/unbenanntghci2.png

del_4901
2013-05-06, 21:06:11
Alles viel zu kompiziert. Mach einfach ne Lut mit [1,2,5] und dann merkst du dir separat dazu wie weit du das Komma schieben musst.

Pinoccio
2013-05-06, 22:01:35
Greetings from The On-Line Encyclopedia of Integer Sequences! (http://oeis.org/A051109)

mfg

Dr.Doom
2013-05-13, 10:21:10
Ich konnte dies nun einfach mit einer Nachschlagtabelle lösen dürfen, da sich die Anforderungen vereinfacht haben: Der Ganzzahlbereich ist auf +/-10^7 begrenzt und der Flieskommateil auf fünf Nachkommastellen.*

Vor dem "Start" wird die LUT einmal kurz aufgebaut und dann wird nur ein Paar Indizes inkrementiert/dekrementiert, um die Latten höher oder tiefer zu legen.


*
float?! :eek: Precisely! :ugly: