Zahlenreihe an ein min und max anpassen

Neue Frage »

haemse Auf diesen Beitrag antworten »
Zahlenreihe an ein min und max anpassen
Hallo an Alle,

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
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:
Zitat:
In[269]:= a := {300, 600, 1200, 3000, 6000, 24000, 168000}

In[277]:= Sum[a[[i]]/(15*q^(i - 1)), {i, 1, 7}]

Out[277]= 20 + 11200/q^6 + 1600/q^5 + 400/q^4 + 200/q^3 + 80/q^2 + 40/q

In[278]:= Solve[% == 880, q, Reals] // N

Out[278]= {{q -> -1.48316}, {q -> 1.6419}}

In[285]:= Table[1/(15*1.641902978063331`^(i - 1)), {i, 1, 7}]

Out[285]= {0.0666667, 0.0406033, 0.0247294, 0.0150614, 0.00917316, 0.00558691, 0.0034027}

In[298]:= Table[a[[i]]/(15*1.641902978063331`^(i - 1)), {i, 1, 7}]

Out[298]= {20., 24.362, 29.6753, 45.1843, 55.0389, 134.086, 571.654}

Also q~1.642 (skalierte Werte siehe obige Zeile) und die Balkenbreite sieht dann so aus (Balkenhöhe irrelevant):
[attach]22093[/attach]
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?
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"?
haemse Auf diesen Beitrag antworten »
RE: Zahlenreihe an ein min und max anpassen
Ok, mein Ansatz funktioniert schon mal nicht! Big Laugh
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 ...)
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!
 
 
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.
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 ...
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »