Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 17:51

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Jan 18, 2004 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Moin programier gerade ne Physik simulation, is net so wichtig. hatte nur die Idee currency statt single zu benutzen, und da ich erst nen Editor und dann erst die simulation progrmmiere währew es sehr zeitspaarend, vorher zu wissen, ob das große geschwindigkeitsverluste mit sich bringt.

Hab halt sehr viele (wohl so 1000) Iterationsschritte pro Sekunde mirt der menge Rechnungen und hab angst um meinen Proz diesbezüglich.

Wenn ich weiterkomme erzähl ich auch ma watt zum Programm (RoboterSimulation) vieleicht beschäftigt sich ja jemand mit sowatt???
Oder kennt Seiten mit nem ähnlichen Thema???

Der nachteil ist hallt,dass die nächte so kurz werden :-)

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Currency ist eine Art int64, bei dem angenommen wird, die letzen 4 Stellen wären hinter dem Komma. Int64 ist unter Delphi sowieso nicht so schnell und bei einer Physiksimulation ist eine Gleitkommazahl besser geeignet. Vermutlich dürfe single ausreichen. Die Probleme die man durch die Ungenauigkeit von den Gleitkommazahlen bekommt lassen sich nicht immer durch mehr Nachkommstellen lösen. Deklarier die doch einen eigenen Type TFloatType=single oder TFloatType=extended und wenn es Probleme gibt, kannst du das immer noch anpassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 16:39 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 09:15
Beiträge: 70
Wohnort: Italien
soweit ich weis, ist currency ein real-typ, der von der FPU des Prozessors gemanaged wird, ich könnte mich aber auch irren (verbessert mich bitte).
Und deshalb müssten sie etwa gleich schnell wie double sein (8byte).

Aber bei Physiksimulationen ist es meistens besser, dass man nicht übertrieben viele Schritte pro Sekunde ausführt, da bei allen Datentypen eines PCs rundungsfehler auftreten, die sich meistens hochschaukeln. Bei Berechnungen mit sin/cos und dem Datentyp double sind diese Fehler so stark, dass Frameraten über 100 nicht mehr akzeptable Fehler liefern...


100 Iterationen pro Sekunde müssten für jedes Physikalische Problem (außer du arbeitest mit extrem großen Geschwindigkeiten) ausreichen.

_________________
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Unter Borland Pascal hieß der Typ noch Comp - und es ist ein 64 Bit Integer (= 8Byte) der auf der FPU verarbeitet wird.
Wenn keine besonders großen Zahlen auftreten, und du Angst wegen Fließkommaungenauigkeiten hast, kannst du ja auch selbst Festkommaarithmetik implementieren (was der Currency Typ ja auch macht) - und z.B. die Ausprägung 347 eines Integers nicht als 347 sondern als 0.0347 (also als Zehntausendstel anstelle von Einern) interpretieren.

@Rechenungenauigkeiten:
die muss man dann halt abschätzen und eventuell Korrekturfaktoren (z.B. alle paar Zeiteinheiten rücksetzen auf einen Defaultzustand, wenn man z.B. weiß, dass man eine "volle Rotation" durchgeführt hat) einführen. Wie genau das aussehen könnte, hängt natürlich von der Problemstellung ab.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 17:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 09:15
Beiträge: 70
Wohnort: Italien
Es gibt spezielle Techniken, mit denen man die idealen Deltas für die Zeit bei solchen Berechnungen berechnen kann. Dafür muss man aber den Rundungsfehler kennen (der sich linear mit den ausgeführten Berechnungen bewegt) und zum Anderen die Rechenfehler, die aufgrund der Annäherung der Formeln an die Wirklichkeit entstehen.

Wenn das Problem komplex genug ist, sind solche Korrekturen fast nicht mehr möglich: Man muss einen Kompromiss machen, der durch spezielle Algorithmen optimiert werden kann (da der Rechenfehler groß ist, wenn der Rundungsfehler klein ist[Delta groß] und umgekehrt, gibt es einen Mittelweg, der oft im Bereich vom 10^-2sek bis 10^-3sek liegt).

_________________
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 18, 2004 18:01 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Wird zwar jetzt doch ziemlich OT, aber ich geb' doch nochmal meinen Senf dazu: das Problem bei Simulationen ist ohnehin, dass die Zeit in der Realität kontinuierlich abläuft, in Simulationen aber praktisch lauter Standbilder in kurzen Abständen hintereinander berechnet werden müssen. D.h. es genügt nicht nur, z.B. eine beschleunigte Bewegung durch Deltas zu approximieren (was in diesem Fall nichts anderes als eine Annäherung der kontinuierlichen Ableitung der Geschwindigkeit nach der Zeit durch eine Treppenfunktion ist), sondern man muss das Ganze dann fallweise auch noch nach hinten korrigieren, damit (um bei einem praktischen Beispiel zu bleiben) das bewegte Objekt nicht plötzlich zur Hälfte in einer Wand steckt.

Interessant ist dabei, dass an und für sich scheinbar triviale Aufgaben, mit dem besten Superrechner nicht gelöst werden können: so ist es nicht möglich, voraus zu sagen, wie die Position dreier (ungefähr gleich schwerer) Körper im leeren Raum, die sich wechselseitig beeinflussen, nach einer bestimmten Zeit genau aussieht.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 19, 2004 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 20, 2003 09:15
Beiträge: 70
Wohnort: Italien
Genau richtig.
Bei aktuellen Supercomputern werden ähnliche Algorithmen eingesetzt, wie diese bei vielen aktuellen PC-Spielen angewendwt werden. Das ist auch der Grund, weshalb man solchen Simulationsergebnissen (z.B. dass uns demnächst eine Eiszeit bevorstehen soll) nicht immer Glauben schenken sollte... :wink:

Die noch ziemlich "frische" Chaostheorie in der Wissenschaft möchte uns ja (auch) sagen, dass alle physikalischen Tatsachen (irgendwelche Beziehungen zwischen irgendwelchen Teilchen) nicht vorhersehbar, sondern nur mehr abschätzbar sind. So gesehen sind Physik-engines auf modernen PCs nicht schlechte Rechner, oder besser gesagt: Schätzer. :roll: .

_________________
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt" Albert Einstein


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]