Thema: Delphi Gewichteter Mittelwert

Einzelnen Beitrag anzeigen

Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: Gewichteter Mittelwert

  Alt 1. Nov 2006, 15:28
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
  Mit Zitat antworten Zitat