Autor |
Beitrag |
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mi 22.12.10 16:50
Hallo Leute, möchte Euch über einen sehr merkwürdigen Effekt berichten, welcher mich fast zum Wahnsinn getrieben hat.
Ich habe eine Regressionsrechnung anhand von Daten durchgeführt (x,y). Die Daten wurden in ein Summenfeld übertragen und dann die Regressionswerte Steigung udn Achsenabschnitt berechnet. Die Berechnungsroutine sah wie folgt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function TKP.BerechneFaktoren: integer; begin Determinante[2, 0] := Summenwert[2, 0] - Sqr(Summenwert[1, 0]) / Summenwert[0, 0]; if Determinante[2, 0] <= 0.0 then begin Determinante[2, 0] := 1E-6; end; Determinante[0, 2] := Summenwert[0, 2] - Sqr(Summenwert[0, 1]) / Summenwert[0, 0]; if Determinante[0, 2] <= 0.0 then begin Determinante[0, 2] := 1E-6; end; Determinante[1, 1] := Summenwert[1, 1] - Summenwert[1, 0] * Summenwert[0, 1] / Summenwert[0, 0]; if (Determinante[1, 1] <= 0.0) then begin Determinante[1, 1] := 1E-6; end; Steig := Determinante[1, 1] / Determinante[2, 0]; Achse := Summenwert[0, 1] / Summenwert[0, 0] - Steig * Summenwert[1, 0] / Summenwert[0, 0]; result := Round(Summenwert[0, 0]); end;
|
Nun trat bei der Berechjnung ein sehr merkwürdiger effekt auf. Alle Determinanten wurden berechnet, doch die Achse und die Steigung wurden partout übersprungen. Ich habe es versucht, an mehreren Stelle im Programm. Immer der gleiche Fehler. Dann habe ich als letzten Ausweg die .PAS-Datei in den Editor geladen und wieder gespeichert. Und siehe da, der Fehler war weg. Möglicherweise war ein ungültiges Zeichen für den Effekt verantwortlich, wo das aber sein sollte, ist mir nicht klar. Selbst mit den Berechnungszeilen ohne Leerzeichen am Anfang wurden diese übersprungen.
Falls Ihr aus irgendwelchen Gründen auch mal einen solchen Effekt haben solltet, der Euch zum Wahnsinn treibt, versucht es mit der gleichen Methode wie ich. Vielleicht wird dieser Fehler dann ebenso verschwinden.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Zuletzt bearbeitet von Tranx am Mi 22.12.10 16:54, insgesamt 1-mal bearbeitet
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 22.12.10 16:52
Moin!
Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
1.2 Beiträge: | Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf  oder  klicken und den Titel ändern. Danke Dir!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Mi 22.12.10 17:08
Manchmal hat man solche seltsamen Effekte, wenn der Zeilenumbruch in den PAS-Datei nicht stimmt, wenn also #13 oder #10 statt #13#10 dort steht. Dann sieht es im Editor korrekt aus, führt aber zu solchen komischen Effekten.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mi 22.12.10 18:45
Warum verwendest Du eine Funktion dafür, wenn result ja gar nicht in diesen Berechnungen berücksichtigt wird? Dann kannst Du das ganze auch in eine Prozedure ablegen. Im ersten Moment verwirrt dies, später Dich vielleicht auch, wenn Result immer gleich bleibt.
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Tranx 
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 23.12.10 04:20
Zu Alf:
Result ist die Anzahl der für die Regression benutzten x-y-Paare.
Summenwert[nx,ny] = Summe von x^nx*y^ny, dann ist Summenwert[0,0] = Summe von 1-ern
Wenn Summenwert >1 ist, soll dann später die Regression benutzt werden, wenn nicht, soll keine Regression benutzt werden.
Zu Nersgatt:
Danke für den Hinweis. Falls mal wieder so eine Effekt auftreten sollte, weiß ich jetzt Bescheid und werde gleich den Editor zur Hilfe nehmen.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
|