Zahlenreihe an ein min und max anpassen |
24.11.2011, 18:43 | haemse | Auf diesen Beitrag antworten » | ||
Zahlenreihe an ein min und max anpassen stehe vor folgender Herausforderung: Gegeben ist eine Zahlenreihe, die später die Breite von Darstellungsbalken repräsentieren soll, Bsp: 300 600 1200 3000 6000 24000 168000 nun sollen sie so skaliert werden, dass der kleinste Wert 20 und eine Gesammtsumme (alle Zahlen addiert) von 880 entsteht. Natürlich werden die Zahlen nicht mehr im selben linearen Verhältnis stehen. Aber da sie Balkenbreiten darstellen sollten sie doch noch zumindest die verschiedenen Breiten repräsentieren. Habs schon versucht es linear mit der Gesamtsumme von 880 zu skalieren, dabei kommen aber einige Werte unter 20 heraus, weshalb ich euch mal frag, wie man das am Besten machen könnte. lg haemse |
||||
24.11.2011, 20:16 | blutorange | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen Ich weiß nicht, wozu das gut sein soll, kannst du die Werte nicht einfach so plotten? Aber wie dem auch sei, linear geht es offensichtlich nicht, und was mir nichtlinear einfällt, wäre ein Ansatz den i-ten Datenpunkt mit 1/(q^(i-1)) zu skalieren, mit noch zu bestimmender Konstante q:
Also q~1.642 (skalierte Werte siehe obige Zeile) und die Balkenbreite sieht dann so aus (Balkenhöhe irrelevant): [attach]22093[/attach] |
||||
24.11.2011, 21:03 | haemse | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen Vielen Dank für die Antwort! Hab auch schon einen Lösungsansatz ausgearbeitet. Werde aber aus der Ausführung nicht ganz schlau. Was wäre nun nach deinem Ansatz die Formel in der jeder Wert der Reihe einzusetzen wäre? |
||||
24.11.2011, 21:05 | haemse | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen Wäre das dann: x * 1/(q^(i-1)) was wäre dann aber "q"? |
||||
24.11.2011, 21:20 | haemse | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen Ok, mein Ansatz funktioniert schon mal nicht! Jetzt sollte ich nur noch deinen checken. ;-) Muss das ganze im Programmcode implementieren. (Also alle Werte universal anpassen, auch wenn es eine andere Reihe ist ...) |
||||
24.11.2011, 21:53 | haemse | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen sry fürs spammen, kann aber nicht mehr editieren ... Also was mir noch helfen würde, wenn ich wüsste, wie ich nach q umformen kann, bzw. q errechnen kann, dann kann ichs allgemein gültig implemetieren ... thx schon mal! |
||||
Anzeige | ||||
|
||||
25.11.2011, 02:08 | blutorange | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen Nennen wir den Normierungsfaktor des n-ten Wertes a_n, die Werte w_n, n=1,...,Anzahl Werte. Kleinster Wert KW, Gesamtsumme S. Die Werte sind der Größe nach schon geordnet, kleinster Wert soll nach Normierung KW ergeben, also a_1=KW/w_1. Für das Beispiel passt eine geometrische Reihe schön, also setzen wir an: a_n= q0 * q^(n-1) mit q0=a_1=KW/w_1 offenbar. Als zweite Bedingung haben wir Summe(a_n*w_n)=S. Also eine Bedingung und eine zu bestimmende Variable, nämlich q. Die Summe kann einfach mittels Summenformel für Partialsummen der geometrische Reihe ausgeschrieben werden. (s. Wikipedia etc.) Das ergibt dann ein Polynom (bzw. Quotienten von) n-ten Grades, welches mittels Numerik (Bisektion, Newton etc.) schnell vom PC gelöst werden kann. |
||||
25.11.2011, 13:07 | haemse | Auf diesen Beitrag antworten » | ||
RE: Zahlenreihe an ein min und max anpassen OK, vielen Dank für eure Hilfe, Hab jetzt einen algorithmus implementiert mit dem ich mich über qicksearch einfach dem ergebnis annähere ... funktioniert für alle polynome gleichungen n-ten grades und ist ziemlich schnell ... |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|