AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Frage zu Critical Section bei Array Zugriff
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Critical Section bei Array Zugriff

Ein Thema von alleinherrscher · begonnen am 19. Feb 2014 · letzter Beitrag vom 23. Feb 2014
Antwort Antwort
Notxor

Registriert seit: 28. Okt 2009
41 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Frage zu Critical Section bei Array Zugriff

  Alt 22. Feb 2014, 22:16
Es sollten beide Möglichkeiten konvergieren (und afaik auch gleich schnell), also egal ob man nur von den alten Daten die neuen berechnet, oder die neuen auch dazu nimmt.
Je nach Dimension und Feinheit der Diskretisierung wird allerdings der Speicher schnell knapp, weswegen ein Kopie nicht gerade zu empfehlen ist:
Bsp: 10.000 Elemente in x und y Richtung -> 10^8 Elemente ~ 1 GB, interessant wirds dann in 3d (zumal die Matrix auch dicht besetzt ist/sein wird)

Edit: wobei ich mir jetzt nicht mehr ganz so sicher bin, ob es nicht doch einen (großen) Unterschied gibt. Wenn zB im Quadrat [0,1]x[0,1] oben und unten RB angegeben sind, so werden Störungen schneller in die eine als in die andere Richtung verbreitet (je nachdem wie die Elemente durchiteriert werden).

Geändert von Notxor (22. Feb 2014 um 23:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Frage zu Critical Section bei Array Zugriff

  Alt 23. Feb 2014, 16:53
Was Notxor schreibt ist meiner Meinung nach richtig: Ich schreibe die neu berechneten Werte direkt wieder in mein Array zurück und berechne dann den nächsten Punkt mit all seinen Nachbarpunkten, unabhängig ob hier der Wert der n.ten oder n-1 -ten Berechnung gespeichert ist. Ein anderer Physiker, ein Professor in den Staaten verwendet die Methode mit 2 Arrays, hat aber Aufgrund von rotationssymmetrie eine Dimension weniger zu berechnen. Mein Problem ist allerdings nicht unbedingt rotationssymmetrisch. Wenn ich allerdings die selben Startbedingungen in meinem Programm setzt, wie er in seinem, kommt die selbe Lösung heraus. Daher denke ich, dass es für den Fall des Lösens einer Poisson gleichung egal ist, ob man immer das selbe Array benutzt, oder ein Lese- und ein Schreibarray. - Zumal man ja hier so lange iteriert, bis eine Steady-State Lösung herauskommt. Wenn ich mir also das Beispiel von Medium ansehe und vorstelle, dass ich unendlich oft über seine Matrix iteriere, wird dort auch das selbe Ergebnis herauskommen, egal ob ich 2 oder 1 Array verwende.

Um das ganze zu stabilisieren, habe ich noch eine Selbstkonsistenzprüfung eingebaut, welche nach der Iteration das Ergebnis so so lange zwischen dem neuen und dem vorhergehenden Wert hin und her schiebt, bis die Poisson Gleichung erfüllt (bzw. die Abweichung miniert) ist. (Verfahren des goldenen Schnitts).

In der Tat habe ich nicht genug Ram und zwei Arrays im Speicher zu halten.
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS

Geändert von alleinherrscher (23. Feb 2014 um 17:00 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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