![]() |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
Häng das Bild doch einfach als Anhang an dein Posting dran, dann können auch die, bei denen Imageshack gesperrt ist deinen Fehler sehen!
|
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
Der Fehler tritt wohl auf, wenn in der Zelle kein Wert steht. Probier mal so.
Delphi-Quellcode:
var //DCL Abweichung
AbweichungsQuadrat: single; Standardabweichung: single; temp: double; begin //Abweichung ermitteln Mittelwert:= summe / (sgMess.RowCount-1); AbweichungsQuadrat:=0; for i:= 1 to sgMess.RowCount-1 do begin try temp := StrToFloat(sgMess.Cells[1,i]); except temp := 0; end; AbweichungsQuadrat:=AbweichungsQuadrat + (temp) - Mittelwert) * (temp) - Mittelwert); Standardabweichung:= SQRT((AbweichungsQuadrat)/(sgMess.RowCount-1)*(temp) -1); end; edAbw.text:=FloatToStr(Standardabweichung); end; Oder sorg dafür das bei keinem Wert 0 drin steht. Gruß tr909 |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
Also ich hab jetzt nochmal gebastelt:
Ausgangsproblem war das hier:
Delphi-Quellcode:
Mir ist aber noch unklar was Zahlenfeld genau ist?!
//Abweichung ermitteln
Mittelwert:= edMittel.text; AbweichungsQuadrat:=0; for i:= 1 to Anzahl do AbweichungsQuadrat:=AbweichungsQuadrat + (x[i] - Mittelwert) * (x[i] - Mittelwert); Standardabweichung:= SQRT(AbweichungsQuadrat/(Anzahl(Zahlenfeld) -1) Ich habe jetzt das hier mal gemacht:
Delphi-Quellcode:
Es rechnet jetzt auch einen Wert aus...aber nicht mit allen Werten :gruebel: ...
var AbweichungsQuadrat: single;
Standardabweichung: single; begin //Abweichung ermitteln Mittelwert:= summe / (sgMess.RowCount-1); AbweichungsQuadrat:=0; for i:= 1 to sgMess.RowCount-1 do AbweichungsQuadrat:=AbweichungsQuadrat + (StrToFloat(sgMess.Cells[1,i]) - Mittelwert) * (StrToFloat(sgMess.Cells[1,i]) - Mittelwert); Standardabweichung:= SQRT((AbweichungsQuadrat)/(sgMess.RowCount-1)*(StrToFloat(sgMess.Cells[1,sgMess.RowCount-1])) -1); edAbw.text:=FloatToStr(Standardabweichung); end; Ich habe eine Liste in der alle Werte 0019 sind...da gibt es also keine Abweichung und das Prog. stürzt mit einer Exception "keine Gültige Gleitkomma-Operation" ab...das müsste man noch abfangen... Mh...bloß stimmen die ergebnisse auch? |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
So ich habs endlich :-D...
Also ich hab eine Bsp. Rechnung gefunden. Ich möchte es mal kurz erklären: Die Standardabweichung ist eine einfache nummerische Transformation der Varianz. Sie entspricht der Quadratwurzel aus der Varianz. Die Varianz basiert auf der Summe der quadrierten Abweichungen jedes Variablenwertes vom arithmetischen Mittel geteilt durch die Anzahl der Variablen minus 1 (n-1). Beispiel: Die Varianz der Altersangaben 18, 21, 21, 27, 27, 27, 30, 31 und 45 berechnet man wie folgt: Mittelwert: 18+21+21+27+27+27+30+31+45 = 247 247 / 9 = 27,44444444 Varianz: 18-27,44444444² = 89,197 21-27,44444444² = 41,530 21-27,44444444² = 41,530 27-27,44444444² = 0,197 27-27,44444444² = 0,197 27-27,44444444² = 0,197 30-27,44444444² = 6,531 31-27,44444444² = 12,642 45-27,44444444² =308,197 Summe = 500,218531 Standardabweichung: Wurzel aus(500,218531 / 9 -1) = 7,91 Jahre In Delphi sieht es nun so aus:
Delphi-Quellcode:
Vielen Danke an alle, die mir so tatkräftig geholfen haben!
Mittelwert:= summe / (sgMess.RowCount-1);
AbweichungsQuadrat:=0; for i:= 1 to sgMess.RowCount-1 do AbweichungsQuadrat:=AbweichungsQuadrat + (StrToFloat(sgMess.Cells[1,i]) - Mittelwert) * (StrToFloat(sgMess.Cells[1,i]) - Mittelwert); Standardabweichung:= SQRT((AbweichungsQuadrat)/(sgMess.RowCount-2)); edAbw.text:=FloatToStrF(Standardabweichung, ffFixed, 10, 2); |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
Hallo atgis!
Schön, dass wir dir helfen konnten. War heute nicht am PC, sonst hätte ich schon früher bemerkt, dass der Divisor ja nur "n-1", in unserem Fall also verkürzt "RowCount-2", ist. Aber bedenke bitte, das gilt nur, wenn es EINE fixe oberste Zeile gibt!! Allgemeingültig muss es heissen: "RowCount-FixedRows-1" (Gibt vielleicht einen Extrapunkt in der mündlichen Prüfung. Sprich das ruhig an und erkläre es - macht einen guten Eindruck, kostet Zeit und die Prüfer können weniger selber Fragen). Tja, dann viel Erfolg am Montag! Gruß aus Hamburg |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
in aller regel verwendet man n - 1 als divisor und nicht n. ausser es sind bestimmte voraussetzungen gegeben.
PPS: welche art von mittelwert willste eigentlich? es gibt davon viele mit jeweils speziellen einsatzbereichen... :roll: |
Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
*gelöscht*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz