Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Programmergebnise verschieden auf zwei Rechnern (https://www.delphipraxis.net/188505-programmergebnise-verschieden-auf-zwei-rechnern.html)

Physikerin 11. Mär 2016 09:06

AW: Programmergebnise verschieden auf zwei Rechnern
 
Hallo,

für alle: Ich berechne Belastungen (Kraft [N]) für bestimmte Bauteile. Die sollten am Ende in einem Bereich von kN liegen. Das Programm funktioniert so, dass man Bauteilgeometrien einträgt und mit der hinterlegten Methode die Belastung herausbekommt. Da die Bauteile sehr komplex sind, ist die Methode entsprechend komplex und kompliziert und das macht imho keinen Sinn das hier alles aufzuschreiben, zumal die Methode zwecks Untersuchung auf Fehler sehr zerlegt ist.

@Bra: Wie groß kann ich nachher erst definitiv sagen, wenn ich jede Variable einzeln inspiziert habe ^^

Vielen Dank schonmal für eure Hilfe. Ich melde mich wieder, wenn ich weitergekommen bin :(

Monday 11. Mär 2016 12:03

AW: Programmergebnise verschieden auf zwei Rechnern
 
Ok, dann sollten die Ergebnisse eigentlich gleich sein. Mysteriös. Dann noch andere Überlegungen:

Zuerst würde ich eine ganz einfache und simple Berechnung mit einem kleinen Ergebnis das definitiv im grünen Bereich sein sollte. Wenn das dann bei beiden Rechner gleich ist, dann scheint es wirklich mit den Typen Double, Integer o.ä. zu tun zu haben was überschritten wird. Dann würde ich hier den Fehler suchen.


Wie sieht es denn mit Komazahlen aus? Z.B. bei der Eingabe (, oder .) oder evtl. auch während der Berechnungen; Werden dort die Zahlen irgendwie hin- und her formatiert? (Bei dem es vielleicht von System zu System unterschiedlich sein kann). Oder gibt es vielleicht eine Stelle an der "künstlich" (alla als String) irgendwas verschoben wird, ein Koma, Leerzeichen o.ä. eingefügt. Könnte vielleicht auch die Eingabezahlen missinterprediert werden (z.B. ein Buchstabe wird irgendwie als Zahl umgewandelt und damit gerechnet).
Oder andere Überlegungen, wenn die Zahlen nicht händisch eingegeben werden, kommen auch wirklich die selben Zahlen bei beiden Systemen an?


Ein Schuss ins blaue: gibt es auf dem System, bei dem die Ergebnisse falsch sind, eine Software, die evtl. an dem Programm rumfummeln könnte? (Antivirensoftware o.ä.)


Werden die Zwischenergebnisse irgendwo zwischengespeichert? Wenn ja wo und wie? Gleiche Typen usw.?

BUG 11. Mär 2016 13:12

AW: Programmergebnise verschieden auf zwei Rechnern
 
Zitat:

Zitat von Monday (Beitrag 1332653)
Zuerst würde ich eine ganz einfache und simple Berechnung mit einem kleinen Ergebnis das definitiv im grünen Bereich sein sollte.

Wenn wir schon einmal bei Herangehensweisen sind, hier mein Vorschlag:
  1. Suche dir möglichst kleine Eingabedaten, bei denen das Problem auftritt.
  2. Baue ein Programm was diese Rechnung ausführt.
  3. Schreibe wichtige Zwischenergebnisse, aber auch regelmäßig Sachen wie das Kontrollregister raus.
    Dazu am besten die Aufrufe der unterschiedlichen Programm-/Methodenbestandteile: einfach deren Namen als String, evtl. mit Parametern, aber nichtdeterministisches wie Adressen weglassen.
  4. Da dein Programm deterministisch sein sein soll, sollte der erzeugte Trace auf beiden Rechnern identisch sein.
  5. Da er das offensichtlich nicht sein wird, kannst du mithilfe der zusätzlichen Informationen den Fehler weiter eingrenzen.

jfheins 11. Mär 2016 16:25

AW: Programmergebnise verschieden auf zwei Rechnern
 
Kann es sein, dass du ein numerisch schlecht konditioniertes Problem mit einem Algorithmus löst, der dafür nicht so gut geeignet ist?

Bei einem instabilen Algorithmus können die paar zusätzlichen Bits eines Extended beitragen, dass dennoch sinnvolle und halbwegs akkurate Ergebnisse herauskommen. Typischer Anfängerfehler wäre bspw. ein FE-Problem mit einem einfachen Gaußverfahren zu lösen.

Amateurprofi 11. Mär 2016 17:31

AW: Programmergebnise verschieden auf zwei Rechnern
 
Hallo Physikerin,
ich denke es macht nicht viel Sinn, weiter "Topfschlagen" zu veranstalten.
Was man m.E. ausschließen kann
- Extended vs. Double (weil dein Programm ein 32Bit Programm ist, und somit Extended auch wirklich Extended ist)
- Unterschiedliche ControlWords (weil das ControlWord vom Programm selbst definiert wird)
Bleibt also
p80286: Das klingt wie einer von den Standardfehlern "Initialisierung durch Zufall".

stell doch mal das Programm (incl. komplettem Source Code) ins Forum.
Vielleicht hat der eine oder andere Lust und Zeit sich da durchzuarbeiten und zu prüfen, ob wirklich überall mit definierten Variablen gearbeitet wird. Lokale Variablen, so sie denn nicht ausdrücklich definiert werden, haben z.B. "Zufallswerte".

BUG 11. Mär 2016 20:01

AW: Programmergebnise verschieden auf zwei Rechnern
 
Zitat:

Zitat von Amateurprofi (Beitrag 1332702)
stell doch mal das Programm (incl. komplettem Source Code) ins Forum

Den Beiträgen nach ist das nichts, was man mal so ins Forum stellt (oder wo das Sinn machen würde) :lol:

Zitat:

Zitat von Amateurprofi (Beitrag 1332702)
ich denke es macht nicht viel Sinn, weiter "Topfschlagen" zu veranstalten

Gab ja auch nach dem "Ich guck mir das mal weiter an." (heute) keine weiteren Meldung, also können wir mit dem herum raten aufhören :stupid:

hoika 12. Mär 2016 18:41

AW: Programmergebnise verschieden auf zwei Rechnern
 
Hallo,
wie sieht es denn aus mit nicht initialisierten Variablen?


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz