![]() |
Re: 100 milliarden Werte speichern!
Zitat:
[OT] Gibt da wirklich ein paar Probleme, wo Approximationen völlig zerissen werden (weiß ja nicht wie es dann hier aussieht), hatte da aber mal einen sehr interessanten Algorithmus zur Approximation eines nicht-adiabatischen Energiesprungs in einem Molekül gesehen (da geht es um Prozessen im unteren Femptosekundenbereich), die wurde von so ein zwei Menschen auch als deutlich zu ungenau erachtet, aber egal. [/OT] |
Re: 100 milliarden Werte speichern!
wer des programm mal angekuckt hat, wird faszinierd sein. unten rechts wird die Differnz eines planeten zur Zeit t=0 berechnet... in meinem Programm sind keineirlei Zufallsgeneratoren und dergleichen, tortzdem ergibt sich bei jedem neuen start des programms eine neue Differenz, und dass obowhl 100% genau die selben werte am start vorhanden sind, hier sieht man wie entscheidend, die genauigkeit ist. Beireits die zufälligen rundungen des Computers führen (à la Chaostheorie) zu riesigen Auswirkungen
![]() |
Re: 100 milliarden Werte speichern!
Ohne dass ich mir das Prog. angeschaut habe, möchte ich hier sagen, dass es sicherlich keine zufälligen Rundungen eines Computers gibt. Wie sollte das klappen?
So eine ALU berechnet bei gleicher Eingabe auch immer die gleiche Ausgabe. Wenn sich da Werte ändern wäre meine erste Schätzung, dass du mindestens eine lokale Variable verwendest, die du nicht initialisierst. Die hätte dann einen nicht vorhersehbaren Wert. |
Re: 100 milliarden Werte speichern!
[quote="Der_Unwissende"]Ohne dass ich mir das Prog. angeschaut habe, möchte ich hier sagen, dass es sicherlich keine zufälligen Rundungen eines Computers gibt. Wie sollte das klappen?
So eine ALU berechnet bei gleicher Eingabe auch immer die gleiche Ausgabe./quote] Dem kann ich nur zustimmen. Wenn der rechner zufällig runden würde müste er ja dafür programmiert sein. Es ist nun mal vorgeschriben was er aus einer 1 und einer 0 macht. Ich meine damit wenn ich "1" und "0" multiplizire und er das ergebniss runden würde könte nicht einmal "1" und einmal "0" rauskommen. da brauche ich auch keinen computer. |
Re: 100 milliarden Werte speichern!
es gibt schon statistiken, nach denen zufälliges Runden sinn machen würde, zumindest was den absoluten Fehler angeht. Das war die aussage Unseres Professors in Sprachen und Algorithmen. es will aber keiner ein Programm schreiben, was häufig funktioniert, gelegentlich aber leider auch nicht, je nachdem, wie gerade gerundet wurde. Und noch weniger möchte man so ein programm kaufen. deswegen gibt es ein klar definiertes rount to nearest oder auf- und abrunden und nicht heute so und morgen so.
Zufällige geschichten bekommt man häufig rein, wenn man mit zeigern irgend einen speicherbereich ausliest, der leider nicht genauer definiert ist. (zumindest für das Prog...= |
Re: 100 milliarden Werte speichern!
für mich stellt sich immernoch die Frage (wie sicherlich für viele andere auch) wozu Du die Daten überhaupt speichern willst ?
Berechnete Koordinaten speichert man doch nicht ab, wenn man Sie nur zeichnen möchte. Was hast Du denn vor, mal neugierig frag ? |
Re: 100 milliarden Werte speichern!
[klein wenig OT]
wenn ich dein programm starte, bekomm ich nur ne messageBox "Das Programm kann nicht gestartet werden." :( [/klein wenig OT] aeno |
Re: 100 milliarden Werte speichern!
die werte solten eigentlich zur späteren Analyse vorhanden sein....
PS: dein Arbeitsspeicher packt vermutlich des grosse array nicht... |
Re: 100 milliarden Werte speichern!
Zitat:
|
Re: 100 milliarden Werte speichern!
So .. ich habe jetzt nochmal Dein PRogramm angeschaut.
Und ich glaube, Du befindest Dich irgendwie auf dem Holzweg. Denke nochmal über Dein weiteres vorgehen nach. Ich habe also Dein Programm gestartet. Habe "Günstige Startwerte" ausgewählt und es rechnete. Es ging sehr flott ! Dabei reservierte sich das Programm 397 MB Speicher im RAM ! Diese 397 MB zeichnest Du als Kurve (wahrscheinlich) in ein TBitmap. Das ganze machst Du ON THE FLY !!! (und dennoch ist das programm ziemlich flott) das bedeutet. Aus meinen Erfahrungen her würde ich folgende Schlüße ziehen, genau kann ich es natürlich nicht testen, da ich Deinen Quelltext nicht vorliegen habe. Aber: Punkt 1. Das Reservieren der 397 MB im Hauptspeicher dauert wahrscheinlich sogar länger als das Berechnen der Werte selber ! Das bedeutet, ein zwischenspeichern auf Festplatte wäre sinnlos und würde für eine spätere Analyse keine Vorteile bringen. Ich weiß nicht genau, wie Du zeichnest. Aber viel viel schneller wird es, wenn Du nicht jeden Punkt zeichnest, sondern nur wenn sich die x und y-Koordinaten der gezeichneten Pixel ändern. Denn die Interaktion mit einem Canvas dauert sehr lange ( auch wenn Du ein TBitmap als Puffer nimmst) Du schreibst, im Moment wird jeder 200 ste Schritt gezeichnet, dass dürfte bei 397 MB noch viel zu oft sein ! Also bitte nur zeichnen, wenn sich x oder y Koordinate eines Punktes, den Du setzen möchtest, ändert. Empfehlen würde ich Dir ausserdem nicht auf eine Groubbox zu malen sondern auf eine Paintbox. Wenn man nämlich bei Dir ein anderes Fenster drüberschiebt, dann wird es grau und das Bild wird nicht neu gezeichnet. Bei der Paintbox gibt es dafür ein OnPaint Ereignis, wo Du die Möglichkeit hast Dein Bitmap in das Bitmap der Paintbox zu kopieren. Deine ganze Geschichte flackert auch nicht, dass heißt Du wirst das langsame "doublebufferd" auf true gesetzt haben. eine flackerfreie Paintbox findest Du hier: ![]() (TWinPaintBox) Alles im allem hab ich das Gefühl dass die Berechnungen für einen Computer nichts großartiges sind. Die Geschicklichkeit Deinerseits liegt nun darin, Deine Analysen die Du machen möchtest, on the fly durchzuführen Aber bitte nicht alles in Deine berechnungsprocedure reinpacken und schön objectorientiert !! <edit> Zitat:
Du solltest also in ein TBitmap zeichnen (dieses hat ebenfalls ein Canvas Object) und zum Schluß Deiner Zeichnungen das gesamte Bitmap per BitBlt in das canvas der Paintbox kopieren. ( oder alle zig Schritte wenn Du einen "flüssigen" Film sehen möchtest. Das machst Du auch im OnPaint Ereignis der Painbox. Wenn Du das nicht willst und ein "wischen" verhindern willst, musst Du das viel langsamere TImage Object nehmen. viele Grüße stoxx |
Re: 100 milliarden Werte speichern!
WoWow super Ideen.... tausend dank ich werde schaun was ich von deinen tollen anregungen verwirklichen kann.... Klasse! Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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