Fließkommazahl suchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Hallo Forum,

ich möchte Fließkommawerte in Menge von Fließkommawerten suchen.
Vorweg eine kurze Information zum Problemumfeld: aus einem Bildanalyseprogramm erhalte ich Verschiebungswerte entlang einer 2D Kontur. Diese Verschiebngswerte möchte ich auf ein FE-Netz (Finite Elemente Methode mit Abaqus Simulationssoftware) übertragen. Die Verschiebungen kann ich an den Knoten des FE-Netzes aufbringen. Die Knoten liegen als Punkte mit den Koordinaten (x, y) vor. Die Koordinaten sind Fließkommazahlen mit 3 Nachkommastellen, z.B. Konten 1: (3.147, 9.401).
Auf der anderen Seite habe ich die Verschiebungswerte in Verbindung mit Punkten, deren Koordinaten ebenfalls als Fließkommazahlen vorliegen.
In den meisten Fällen passen die Koordinaten nicht zusammen, also muss ich zu den Koordinaten eines Knoten den nächstliegenden Punkt anhand dessen Koordinaten suchen.
Wie kann man das realisieren?

Eine knappe Formulierung des Problem würde lauten: In einer Liste mit Fließkommazahlen suche ich nach Fließkommazahlen.

Gruß Jeremy
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Jeremy hat geschrieben:Eine knappe Formulierung des Problem würde lauten: In einer Liste mit Fließkommazahlen suche ich nach Fließkommazahlen.
Eher nicht. Das wäre dann so zu verstehen, als ginge es darum, die Position eines bestimmten (Fließkomma-)Wertes in einer Liste zu ermitteln, aber das löst dein Problem nicht, da du gar nicht über einen Wert verfügst, den du in der Liste suchen willst.

Ein naiver Ansatz, der bei nicht zu großen Knoten-/Punktanzahlen ausreichen dürfte, sähe so aus:

Iteriere über die Knoten, und anschließend für jeden Knoten über die Liste mit den Punkten, von denen du den nächstliegenden zu deinem Knotenpunkt suchst. Dann berechnest du jeweils den Abstand(*) und wählst so denjenigen Punkt aus der Liste aus, bei dem der Abstand am geringsten ist.

(*) Je nach dem, wie genau das Ergebnis sein muss und wie viele Abstandsberechnungen vorzunehmen sind, wäre zu überlegen, ob man den "echten" Abstand nimmt (bzw. dessen Quadrat) oder sich mit der Summe des horizontalen und vertikalen Abstandes begnügt.
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Zuerst danke für die schnelle Antwort.
Man kann natürlich den Abstand d zwischen 2 Punkten berechnen und der Punkt mit dem geringsten Abstand ist es dann und in Abhängigkeit vom Abstand könnte man die Verschiebungswerte interpolieren.
Wie du gesagt hast, für kleine Knoten/Punktverhältnisse gut, sonst eine Frage der Zeit bis die Berechnung fertig ist.

Man müsste die zuvergleichenden Punkte begrenzen, aber eine solche Eingrenzung beruht wieder auf dem Abstand der Punkte, womit wir wieder am Anfang sind. :)
Antworten