Autor Beitrag
JerryW
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 15.10.11 10:05 
Hallo,

ich möchte gerne "realistischen" radioaktiven Zerfall für einzelne Atome simulieren und stehe vor dem Problem, wie ich das modellieren soll. Ich möchte also einen radioaktiven Zerfall realistisch simulieren, wenn ich die Zerfallskonstante vorgebe (z.B. lambda = 0,07 1/s) Meine anfängliche Idee, jeden Atomkern einzeln zu betrachten, ist natürlich auf die enorme Atommenge unvorstellbar. Deshalb suche ich gerade eine Idee, wie man das Problem anders lösen kann. Meine Überlegung bisher:

Ich habe beispielsweise eine Menge eines radioaktiven Materials, das aus 100.000 Atomen besteht (ich weiß, das ich wenig, aber als Berechnungsgrundlage reicht das erstmal). Jetzt könnte ich jede Sekunde (z.B. über einen Timer) über eine Schleife alle noch aktiven Kerne ansteuern und einen Zufallsgenerator starten, der für jedes einzelne Atom überprüft, ob es in diesem Moment zerfällt oder nicht. Ist es zerfallen, verringert sich die übrig bleibende Atomanzahl um 1. Für wenige Atome ist das kein Problem und führt auch zum gewünschten Ergebnis. Bei sehr vielen Atomen lässt sich das aber natürlich nicht realisieren.

Jetzt meine Frage: habt ihr eine Idee, wie man das machen kann, dass ich eine hohe Anzahl an Atomen vorgebe und nach jeder Sekunde abhängig von der Zerfallskonstante die aktuelle Zahl der noch aktiven Atomkerne erhalte? Damit meine ich jetzt nicht über die Berechnung mit dem Zerfallsgesetzt, weil das liefert mir ja die noch zu erwartende Anzahl aktiver Atome. Ich benötige eine Anzahl, die zufällig um diesen berechenbaren Mittelwert liegt. Ich hoffe, ich habe mich verständlich ausgedrückt ;)

Habt Ihr eine Idee, wie ich das lösen könnte?
Grüße,
Jerry
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 15.10.11 10:14 
Was du machen könntest, du berechnest den Zerfall in "Gruppen". D.h. wenn du 100.000 Atome hast, dann rechnest du 1000 aus, ob ein Zerfall eingetreten ist, und wenn ja, dann zerfallen 100 auf einmal. Dann kannst du aber auch gleich nur 1000 Atome vorgeben :D

Das Problem ist, dass ja in echt jedes Atom vermutlich unabhängig von den andren zerfällt. Unabhängiger Zufall, d.h. du muss für jedes einzeln berechnen. :nixweiss:

Es gäbe natürlich noch Möglichkeiten, dass es nur so aussieht als würdest du es simulieren. Z.B. rechnest du per Zerfallsgesetz aus wieviele noch da sind und wieviele nächste Sekunde noch da sind und lässt dann in der Sekunde die Differenz +- x zerfallen. Mit Simulation hat das freilich wenig zu tun...

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 431
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Sa 15.10.11 12:26 
Es geht ja glaub ich darum daß bei der Simulation die "e"-Funktion rauskommt :)

Wenn es "realistisch" sein soll bleibt nur für jedes Atom zu prüfen ob es gerade zerfallen ist oder nicht, da der Zerfall ja wirklich ein Einzelevent eines Atomkerns ist, völlig unabhängig von der Umgebung und der Anzahl der vorhandenen Atome (ja, das ist idealisiert, in der Realität hängt der Zerfall tatsächlich noch von anderen Faktoren ab).

Ansonsten um es programmtechnisch zu meistern:
Anhand der Zeit und der vorh. Anzahl Atome N ermittelst du wie viele zerfallen sein sollten (z.B. n) und löscht per Zufallsgenerator genau n Stück aus Deiner Liste.
Aber wie gesagt, das impliziert ja die Abhängigkeit von N (und nimmt so das Ergbnis vorweg)
Yaddle
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 10.11.11 17:06 
Da du dich hier in der Kernphysik befindest und nur mit Wahrscheinlichkeiten arbeiten kannst, würde ich an deiner Stelle ausrechnen, wie hoch die Wahrscheinlichkeit für einen Kern ist, dass er zerfällt. Du weißt bestimmt, dass man Zerfallsprozesse durch Exponentialfunktionen beschreibt. n(t) = n0 * b^t. Auf die konkrete Gleichung kannst du kommen, wenn du die Halbwertszeit deiner Atome kennst, bzw. sie determinierst. n0 entspräche deiner gesamten Atomanzahl. t ist die Variable und b ergäbe sich dann als 0.5 * n0 = n0 * b ^Halbwertszeit
=> 0.5 = b ^ Halbwertszeit. Dann musst du nur noch die entsprechende Wurzel aus 0,5 ziehen und hast dein b.
b ist der relative Anteil der Teilchen, der pro Sekunde zerfällt, also deine Zerfallswahrscheinlichkeit. Ich persönlich verstehe nicht warum du umbedingt jedes einzeln berechnen willst, da es bei 100000 Atomen eigentlich eh egal ist, ob Atom a oder Atom b zerfallen ist.
Also wie oben dargestellt, solltest du dich auf jeden Fall durch die Exponentialgleichung nähern. Ob du jedes Atom einzeln zerfallen lassen willst ist dann deine Entscheidung.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 10.11.11 18:38 
Hallo,

der Ansatz von Yaddle gibt das Ergebnis ja haargenau vor, das ist unhübsch.
Ich stelle mir das beispielsweise so vor.
Wenn theoretisch 117 Atome zerfallen sein müssten, dann macht man eine Streuung ähnlich einer Glockenkurve um diese 117 herum.
Ach, wikepedia hilft.
de.wikipedia.org/wik...le_zeitliche_Abnahme
mit den Schwankungen
de.wikipedia.org/wik...stische_Schwankungen
also Poissonverteilung,aber:
Zitat:
Symmetrie [Bearbeiten]

Die Poisson-Verteilung Pλ hat für kleine Mittelwerte λ eine stark asymmetrische Gestalt. Für größer werdende Mittelwerte wird Pλ symmetrischer und lässt sich für λ > 30 in guter Näherung durch die Gauß-Verteilung darstellen.


Solange man also mehr als Lambda= 30 Zerfälle erwartet, kann man die Gaußverteilung benutzen und dann einen zufälligen Wert wählen.
Dazu braucht es eine Umkehrfunktion, damit ich aus einer Zufallszahl aus dem Bereich 0..1 = Fläche unter der Glockenkurve , die umgerechnete Zerfallszahl wird.
der Wert 0,5 entspräche genau dem Erwartungswert mue = lambda.
0,14=0,5-0,36 entspräche Erwartungswert-sigma = lambda-Wurzel(Lambda) bei 30 = 24,55
Also müsste man das Integral der Dichtefunktion von - unendlich bis x als Tabelle in kleinen Schritten anlegen.
Zum Beispiel 0,5..1 in 0,001 Schritten da es symmetrisch ist siehe.
Dazu kann man ja die Tabelle de.wikipedia.org/wik...dardnormalverteilung
umrechnen.
Bekäme man 0,84 als Wert würde in der Tabelle +1,00 als Vielfachheit von sigma stehen.
Der Wert wäre Erwartungswert +sigma hier also 30+Wurzel(30)=35,47
Bekäme man 0,99534 als Wert, würde in der Tabelle 2,60 als Vielfachheit von sigma stehen.
Der Wert wäre Erwartungswert +sigma hier also 30+2,60*Wurzel(30)= 44,24

Jetzt berechnest Du eben immer de Anzahl lambda der Zerfälle nach Formel.
Per Zufallszahl erhälst Du eine Vielfachheit von sigma= Wurzel( Lambda) und berechnest eben Deine wahren Zerfälle. Diesse spiel läft dann weiter bis es weniger als ein hundert sind und gut ist.
Bei konstanten Zeitabständen zerfallen ja immer x % vom gesamten = Erwartungswert also liesse sich das ganz schnell mit etwas Zufall simulieren.

Gruß Horst
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Do 10.11.11 22:56 
Hallo,

Es gibt doch schon Fertiges um die Umkehrfunktion der aufsummierten Verteilungsfunktion der Standardnormalverteilung
home.online.no/~pjacklam/notes/invnorm/
und eine Delphi Implementierung
home.online.no/~pjac...mccormick/icnorm.pas

Ich habe es mal zusammengefügt und mit einer Halbwertszeit von 20000 gerechnet und den Zeitpunkt der Unterschreitung der jeweiligen nächsten Hälfte ausgegeben.
Die Abweichung durch den Zufall sind aber nicht allzu groß.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
Anzahl Startteilchen :4000000000000000000
Zerfallsrate         :  28853.900818
Zeitschritt          :      1.761102
          Teilchen         Zeit      relative Anzahl/Startanzahl
 1999941821429194691    19999.078228 0.49999999
  999941822977905392    39999.917558 0.25000000
  499986883951449921    59998.995786 0.12500000
  249986170125587534    79999.835116 0.06250000
  124997078351718219    99998.913344 0.03125000
   62496721300924186   119999.752675 0.01562500
   31249359015550997   139998.830903 0.00781250
   15624224990150054   159999.670233 0.00390625
    7812362172225107   179998.748461 0.00195312
    3906067409437409   199999.587791 0.00097656
    1953096129085077   219998.666019 0.00048828
     976519663736823   239999.505349 0.00024414
     488275463745699   259998.583577 0.00012207
     244130625669631   279999.422908 0.00006104
     122069221777148   299998.501136 0.00003052
      61032835641411   319999.340466 0.00001526
      30517390864625   339998.418694 0.00000763
      15258248747979   359999.258024 0.00000381
       7629366425927   379998.336252 0.00000191
       3814574063448   399999.175582 0.00000095
....


Ich hätte mal einen kürzeren Zeitschritt probieren sollen, aber das Programm hängt sich dann in einer Endlosschleife auf.

Gruß Horst
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Horst_H am Fr 11.11.11 08:51, insgesamt 1-mal bearbeitet
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Fr 11.11.11 03:46 
Das Problem bei der Simulation ist immer, nicht durch die Art der Annahme das Ergebnis vorweg zu nehmen. Wenn ich schon davon ausgehe, dass eine bestimmte Anzahl Atome im Zeitraum t zerfallen, dann kann ich gleich die e-Funktion nehmen. Dann brauche ich das nicht zu simulieren. Die Annahme bestimmt eben das Ergebnis. Man muss erst einmal schauen, wieso bei 100.000 Atomen mit der Halbwertzeit von - sagen wir 100 s - in den ersten 100 s 50.000 zerfallen und den zweiten eben nicht wieder 50.000, sondern nur 25.000 und so weiter. Also sind die Zerfälle nicht unabhängig von den Bedingungen der einzelnen Atome. Außerdem eine interessante Frage ist dabei. Es gibt 50.000 Atome mit der Lebensdauer 50 s (Mittel), 25.000 Atome mit der mittleren Lebensdauer von 150 s... d.h. es gibt Atoime, die sehr kurzlebig sind und welche, die sehr langlebig sind. Das ist ein interessanter Aspekt dabei. Ich glaube, ohne ein gründliches Studiums des Kernzerfalls geht da gar nichts.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.

Für diesen Beitrag haben gedankt: Martok
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 11.11.11 13:36 
Das Grundproblem ist, daß man zur Simulation des radiaktiven Zerfalles (und anderer Abkling- bzw. Sättigungsprozesse) eine exponentialverteilte Zufallsgröße benötigt.

Delphie stellt mit seinem Zufallsgenerator jedoch nur eine gleichverteilte bereit.

Das Problem grenzt sich also dahingehend ein, daß man die gleichverteilte in eine exponentielle Verteilung transformieren muß. (Aus der einen eine andere "basteln" oder gar "zaubern"). Ob das grundsätzlich möglich ist, ist mir unbekannt.
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 431
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Fr 11.11.11 13:57 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das Grundproblem ist, daß man zur Simulation des radiaktiven Zerfalles (und anderer Abkling- bzw. Sättigungsprozesse) eine exponentialverteilte Zufallsgröße benötigt.


Ich meine nein.
Wenn man "von Grund auf" simulieren möchte betrachtet man erstmal ein einzelnes Atom.
Dies zerfällt innerhalb einer gegebenen Zeitspanne mit einer gewissen Wahrscheinlichkeit.
Falls es nicht zefällt wird in der Simulation irgendwann in der Zukunft nochmal geprüft.
Auch hier ist die Wahrscheinlichkeit die gleiche bei gleicher angenommener Zeitspanne ("die Atome altern nicht")

Insofern meine ich ein gleichverteilter Zufallsgenerator (Yes/No) ist anzuwenden.

Daß hinterher eine e-Funktion für den Zerfall herauskommt liegt dann daran daß
ein einmal zerfallenes Atom dauerhaft aus der Simulation wegfällt.
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Fr 11.11.11 14:20 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das Grundproblem ist, daß man zur Simulation des radiaktiven Zerfalles (und anderer Abkling- bzw. Sättigungsprozesse) eine exponentialverteilte Zufallsgröße benötigt.

Falsch! Der radioaktiven Zerfall gehorcht keiner Exponentialverteilung, sondern einer Poissonverteilung, oder näherungsweise einer Normalverteilung (wie es Horst_H gemacht hat).
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 11.11.11 14:21 
Und wie groß soll die "gewisse Zeitspanne" gewählt werden, mandras?

Wählt man "zufällig" die Halbwertszeit, dann ist nach dieser Zeit "plötzlich" die Hälfte der Atome weg - kurz vorher waren noch alle vorhanden. Das kann man sooft wiederholen, bis alle Atome zerfallen sind.

Das ist dann aber extrem ruckartig und hat mit der Simulation eines annähernd kontinuierlichen Prozesses nichts mehr gemein.

Also: Wesentlich kleinere Zeiträume wählen. Bei Wahrscheinlichkeiten dicht an 1 bzw. 0 muß man dann aber aufpassen, daß sich nicht Rechenungenauigkeiten unangenehm bemerkbar machen.

Moderiert von user profile iconNarses: Beiträge zusammengefasst

user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Falsch! Der radioaktiven Zerfall gehorcht keiner Exponentialverteilung, sondern einer Poissonverteilung, oder näherungsweise einer Normalverteilung (wie es Horst_H gemacht hat).

Wir reden aneinander vorbei: Ich meine die Anzahl der Restatome. Diese ist zwar endlich und impliziert damit eigentlich eine diskrete Verteilung, allerdings so riesig, daß eine Exponentialverteilung als eine stetige Verteilung dennoch eine sehr gute Annäherung ist.


Zuletzt bearbeitet von Delphi-Laie am Fr 11.11.11 14:31, insgesamt 1-mal bearbeitet
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Fr 11.11.11 14:40 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Mag sein, aber: Wenn Du schon reinsteckst, was durch Simulation erst zeigen willst, bringt das Ganze nicht viel. Daß die Anzahl der Atome exponentiell abnimmt (dies ist keine Exponentialverteilung im Sinne von Wahrscheinkeitsverteilungen!) wird ja nicht bezweifelt, sondern soll herauskommen, wenn man die richtige Zerfallswahrscheinlichsverteilung (Poisson) reinsteckt.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 11.11.11 14:53 
user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Mag sein, aber: Wenn Du schon reinsteckst, was durch Simulation erst zeigen willst, bringt das Ganze nicht viel.


Schau mal in den Titel dieser Diskussion: Es soll radioaktiver Zerfall simuliert werden und nicht, wie eine Exponential-/Poisson- oder was weiß ich Verteilung über Wahrscheinlichkeiten "entsteht".

Wenn die Anzahl der Atome nicht über eine Exponentialverteilung abnimmt, über welche dann?

Edit: In der peinlichen Internetenzyklopädie findet man unter "Exponentialverteilung" übrigens auch einen funktionalen Zusammenhang mit der stetigen Gleichverteilung.
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Fr 11.11.11 15:09 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Wenn die Anzahl der Atome nicht über eine Exponentialverteilung abnimmt, über welche dann?
Zum x-ten Mal: Der Zerfall folgt einer Possionverteilung, daraus ergibt sich, daß Anzahl der Atome exponentiell abnimmt.

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Edit: In der peinlichen Internetenzyklopädie findet man unter "Exponentialverteilung" übrigens auch einen funktionalen Zusammenhang mit der stetigen Gleichverteilung.
Häh, auf was spielst Du hier an :?:
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 11.11.11 15:58 
Hallo,

wie soll man einem Atom denn "ansehen", wann es zerfällt.
Man kennt nur die statistisch belegte Gesetzmäßigkeit für eine große Anzahl von Atomen.
Ich könnte natürlich jedem einzelnen Atom einen Zerfallszeitpunkt mitgeben, aber wie sollte ich diesen bestimmen.
Dann baue ich auch das Zerfallsgesetz ein.
Ich nehme eine Zufallszahl 0..1 und berechne daraus den Zerfallszeitpunkt-
Zufall = 1-e(-t/tau)-> t=-ln(1-Zufall)*tau ( es ginge auch ln(Zufall)*tau, wenn Zufall gleichverteilt ist)
Diese Zahlen sortiere ich nach t und zähle dann einfach durch.
Um das sortieren zu sparen erstelle ich ein Feld für jedes 0.01 x tau im Bereich bis 20 x tau. (e⁻20 ist sehr klein)
Also Zufall erzeugen -> nr = int(ln(Zufall) x 100 + 0,5) bilden und den Feldeintrag[nr] um 1 erhöhen.
Etwa so:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
{$IFDEF FPC}
  {$Mode delphi}
  {$OPTIMIZATION ON}
  {$OPTIMIZATION RegVar}
{$ELSE}
  {$APPTYPE Console}  
{$ENDIF}  

uses  
  sysutils;
const
  N0  = 100000000;
  Skal = 16384;
  Cnt = 20*Skal;
  Zerfallsrate  = 20000/ln(2);
   
var
  Feld,
  sumfeld : array[0..Cnt] of integer;
  i ,Reste: integer;  
  
procedure Init;
begin
  fillchar(Feld,SizeOF(Feld),#0);
  fillchar(sumFeld,SizeOF(Feld),#0);
  Reste := 0;
  randomize;
end;  

function Fill:longInt;
var 
  i,nr :longint;
begin
  Result := 0;
  For i := 1 to N0 do
    begin
    nr := trunc((-Skal)*ln(random())+0.5);
    if nr < Cnt then 
      inc(Feld[nr])
    else
      inc(Result);
    end;     
end;

procedure SumUp;
var 
  i,sum :longint;
begin  
  sum := Feld[0];
  For i := 1 to Cnt do
    begin
    inc(sum,Feld[i]);
    sumFeld[i] := sum;
    end;
end;    

begin
  Init;
  Reste:=Fill;   
  SumUp;
  
  writeln ('  x-fach');
  writeln (' Zerfalls');
  writeln ('   rate    Zerfaelle');
  For i := 0 to Cnt do
    begin
    IF (i mod (Skal div 4)) = 0 then 
      writeln(i*(1/Skal):8:3,SumFeld[i]:10);
    end;
  writeln;
  writeln ( 'Restatome :',Reste);  
   readln;
 end.    
 {
 Zerfalls
   rate   Zerfaelle
   0.000         0
   0.250  22121750
   0.500  39347754
   0.750  52769295
   1.000  63213240
   1.250  71353875
   1.500  77691991
   1.750  82624924
   2.000  86466063
   2.250  89458828
   2.500  91790628
   2.750  93608233
   3.000  95021114
   3.250  96122161
   3.500  96980403
   3.750  97647817
   4.000  98168830
   4.250  98573881
   4.500  98888895
   4.750  99135125
   5.000  99326507
   5.250  99475302
   5.500  99590900
   5.750  99681255
   6.000  99751899
   6.250  99806935
   6.500  99849560
   6.750  99882922
   7.000  99908604
   7.250  99928872
   7.500  99944705
   7.750  99956870
   8.000  99966414
   8.250  99973797
   8.500  99979627
   8.750  99984191
   9.000  99987705
   9.250  99990396
   9.500  99992554
   9.750  99994175
  10.000  99995535
  10.250  99996486
  10.500  99997266
  10.750  99997875
  11.000  99998396
  11.250  99998775
  11.500  99999040
  11.750  99999262
  12.000  99999419
  12.250  99999544
  12.500  99999643
  12.750  99999723
  13.000  99999781
  13.250  99999832
  13.500  99999875
  13.750  99999910
  14.000  99999926
  14.250  99999941
  14.500  99999961
  14.750  99999972
  15.000  99999977
  15.250  99999979
  15.500  99999982
  15.750  99999984
  16.000  99999986
  16.250  99999991
  16.500  99999992
  16.750  99999995
  17.000  99999996
  17.250  99999996
  17.500  99999997
  17.750  99999999
  18.000 100000000
  18.250 100000000
  18.500 100000000
  18.750 100000000
  19.000 100000000
  19.250 100000000
  19.500 100000000
  19.750 100000000
  20.000 100000000

Restatome :0
}


Natürlich stecke ich dort eine Exponentialverteilung rein.
Aber eine Aussage, wie in dt sind 0,2% zerfallen, macht genau das auch.
Zitat:
Jetzt könnte ich jede Sekunde (z.B. über einen Timer) über eine Schleife alle noch aktiven Kerne ansteuern und einen Zufallsgenerator starten, der für jedes einzelne Atom überprüft, ob es in diesem Moment zerfällt oder nicht.

Also if random()< 0.2% dann zerfällt es.
Das ist die Zinseszinsformel mit q < 0,
de.wikipedia.org/wik...l#Zinseszinsrechnung der Term (1+q)^n == e^(ln(1+q)*n)
Bei grossen Zahlen ist alles gleichverteilt ;-)

Der Vorteil dieser Version gegenüber der des Threaderstellers ist, dass nur einmal der Zerfallszeitpunkt bestimmt wird, während seine Version nach jedem dt jedes verbliebene Atom auf Zerfall prüfte.
Das sind k+k*q+k*q² ... ==k*(q^(n+1)-1)/(q-1) Aufrufe
Wenn q = 1-0,2% = 0,998 ist und n = 1000 und k = 1e5 sind das 432* k = 4.32e7 Zufallszahlen.
Jetzt weiß ich, warum der Threadersteller verzweifelt ist ;-) . Das braucht ja ewig,

Jetzt aber die Frage aller Fragen:
Wie groß ist die Abweichung zwischen diesen beiden Versionen Zerfalls.zip und dieser hier und ist dieser signifikant.
Es gibt da sicher Tests für.


Gruß Horst
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 11.11.11 16:46 
user profile iconGammatester hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Wenn die Anzahl der Atome nicht über eine Exponentialverteilung abnimmt, über welche dann?
Zum x-ten Mal: Der Zerfall folgt einer Possionverteilung, daraus ergibt sich, daß Anzahl der Atome exponentiell abnimmt.


Meinetwegen auch eine Poissonverteilung, jedoch nicht irgendeine, sondern mit einem bestimmten Parameter, anscheinend muß λ=1 sein.

Wegen der großen Anzahl der Atome (Fakultät einer riesigen Anzahl?!) ist es quasi (in extrem guter Näherung) und damit auch praktisch eine Exponentialverteilung.