So, ich habe ein wenig experimentiert, um Zahlen zu bekommen, die den "Zahlen" näher kommen:
Delphi-Quellcode:
//Gewichteter Mittelwert:
n:=1;
for i:=5 to 20 do
begin
n:=1-(20/100);
n:=n+(i/100);
Writeln('Durchlauf i: ',i,' n: ',n:0:2);
//Gew. Mittelwert auf "Zahlen"
gmw[i]:=zahlen[i]*n;
end;
for x:=5 to 20 do GMW[x]:=GMW[x]/n;
Dabei scheint der erste Wert 0.85 = 85% zu sein und der letzte Wert mit 1 stellt wohl 100% dar.
Das Ergebnis für alle Interessierte (Liste gekürzt):
1.ter Wert die Zahl, 2.ter Wert=Mittelwert aus 5 Zahlen, 3.ter Wert=Gewichteter Mittelwert
Zitat:
10,96 10,87 9,24
11,55 11,1 9,54
11,98 11,27 9,81
12,05 11,52 10,14
12,5 11,81 10,51
...
13,96 13,87 13,18
14,55 14,1 13,53
14,98 14,27 13,85
15,05 14,52 14,23
15,5 14,81 14,66
16,67 15,35 15,35
Na ja, für meine eigentlichen Zweck, einen "schnelleren Mittelwert" zu bekommen, geht nur über einen Mittelwert mit weniger Werten. Sei es drum. Es war ein interssanter Versuch.
Der geänderte Code:
Delphi-Quellcode:
program Project2000;
{$APPTYPE CONSOLE}
uses
SysUtils;
Var
Zahlen :Array[1..20] of Real; //Basiswerte
MW :Array[1..20] of Real; //Mittelwert
GMW :Array[1..20] of Real; //Gewichteter Mittelwert
i,x :Integer;
f :TextFile;
n:Real;
begin
//Zahlen zuweisen:
Zahlen[1]:=10.42;
Zahlen[2]:=11.10;
Zahlen[3]:=10.83;
Zahlen[4]:=11.05;
Zahlen[5]:=10.96;
Zahlen[6]:=11.55;
Zahlen[7]:=11.98;
Zahlen[8]:=12.05;
Zahlen[9]:=12.50;
Zahlen[10]:=12.67;
Zahlen[11]:=13.42;
Zahlen[12]:=14.10;
Zahlen[13]:=13.83;
Zahlen[14]:=14.05;
Zahlen[15]:=13.96;
Zahlen[16]:=14.55;
Zahlen[17]:=14.98;
Zahlen[18]:=15.05;
Zahlen[19]:=15.50;
Zahlen[20]:=16.67;
//Mittelwert zuweisen (5 Werte)
for i:=5 to 20 do
begin
for x:=i-4 to i do MW[i]:=MW[i]+zahlen[X]/5;
end;
//Gewichteter Mittelwert:
for i:=5 to 20 do
begin
n:=1-(20/100);
n:=n+(i/100);
Writeln('Durchlauf i: ',i,' n: ',n:0:2);
// Gewichteter Mittelwert
for x:=i-4 to i do GMW[i]:=GMW[i]+zahlen[X]/5;
GMW[i]:=gmw[i]*n;
end;
for x:=5 to 20 do
GMW[x]:=GMW[x]/n;
// Nachfolgender Code nur für die Bildschirmdarstellung
// und Speicherung der Daten Excel kompatibel
// ### Speicherung Daten
//In Datei für Excel mit Komma als Trenner schreiben, damit ist ein Diagramm möglich
assignfile(f,'C:\Gewichte.csv');
Rewrite(f);
for i:=1 to 20 do
Writeln(f,zahlen[i]:0:2,',',MW[i]:0:2,',',GMW[i]:0:2);
CloseFile(f);
// ### Speicherung Ende
// ### Screen
//.. und auf den Screen natürlich
Writeln('Testprogramm: Gew. Mittelwert');
Writeln;
Writeln('Zahlen MW GMW');
Writeln;
for i:=1 to 20 do
Writeln(zahlen[i]:0:2,' ',MW[i]:6:2,' ',GMW[i]:6:2);
Writeln;
// ### Screen Ende
// ### ENDE
Writeln('Fertig - Programm beenden: [Enter]');Readln;
end.
Beste Grüße
Go2EITS