Autor |
Nachricht |
stammel
Anmeldungsdatum: 28.05.2004 Beiträge: 2
|
|
|
Thomas Administrator
Anmeldungsdatum: 20.02.2004 Beiträge: 701
|
Thomas Verfasst am: 28. Mai 2004 11:12 Titel: |
|
|
Wo liegt denn genau dein Problem?
Gruß,
Thomas
|
|
|
stammel
Anmeldungsdatum: 28.05.2004 Beiträge: 2
|
stammel Verfasst am: 28. Mai 2004 14:01 Titel: |
|
|
wie berechne ich denn r (kritische konstante) beim übergang zum chaos?
|
|
|
BlackJack
Anmeldungsdatum: 07.03.2004 Beiträge: 89 Wohnort: org 100h / Münsterland
|
BlackJack Verfasst am: 28. Mai 2004 14:20 Titel: |
|
|
ich glaube, berechnen wird aufgrund der chaotischen struktur eher schwierig, oder? wenn du was von programmieren verstehst, dann schreib dir ein programm, das diesen feigenbaum zeichnet (ziemlich einfach), und schau dann nach, ab wo es chaotisch wird, und bestimme das zugehörige r.
_________________ Auf ein gefettetes Backblech legen und bei zweihundert Grad für fünfzehn Minuten backen und KEINE EIER
Tool, Die Eier von Satan
Fraktal3D |
|
|
Nikolas Ehrenmitglied
Anmeldungsdatum: 14.03.2004 Beiträge: 1873 Wohnort: Freiburg im Brsg.
|
Nikolas Verfasst am: 28. Mai 2004 15:03 Titel: |
|
|
Das mit dem Berechnen ist schon möglich. Wenn du dir das Grafik zu dieser Funktion anschaust, siehst du ja bis zum gesuchten r verschiedene Bifurkationen. Wo die auftreten müsste man eigentlich errechnen können. Nach der dritten Bifurkation hat man schon 8 mögliche Zustände und nach der nächsten dann unendlich viele (Anfang des Chaos). Ich hab zwar keine Ahnung, wie man diese Bifurkationen errechnen kann, aber so könnte man was probieren. Ich hab mal in einem Buch über komplexe Systeme mit meinem Geo nachgemessen (tolle Methode, ich weiss) und bin so auf auf r(unendlich)=3,48888.. gekommen.
Zum Zusammenhang zur Feigenbaumkonstanten:
Wenn du dir die Bifurkationen bei r=3,488.. mit dem Faktor 4,67^3 vergrößerst, müssten sie so aussehen, wie die erste Bifurkation.
(Alles aus dem Buch 'Komplexe Systeme' on Klaus Richte und Jan-Michel Rost; Fischer Taschenbuchverlag 2002).
Viel Glück noch.
_________________ Nikolas, the mod formerly known as Toxman.
Erwarte das Beste und sei auf das Schlimmste vorbereitet. |
|
|
dachdecker2 Administrator
Anmeldungsdatum: 15.06.2004 Beiträge: 1174 Wohnort: Zeppelinheim / Hessen
|
dachdecker2 Verfasst am: 27. Jun 2004 14:44 Titel: |
|
|
Ich hab da was für die interressierten, ein MatLab-Programm mit dem man sich das Feigenbaumdiagramm "von nahem anschauen kann.
Es berechnet für jeden Kontorllparameter, bei mir b, 200 Werte, von denen die letzten 100 (der "eingeschwungene" Zustand der logistischen Gleichung soll erreicht sein; je weiter hinten, desto besser) über dem aktuellen b aufgetragen werden.
Wenn es jemanden interessiert, könnte ich das ganze in ein C-Gewand werfen, was auch um längen schneller laufen würde.
Da Matlab-Dateien als Anhang nicht erlaubt sind, nutz ich mal Copy&Paste. Leider weiss ich nicht wie man hier die Einrückung macht, Tab und Space geht nicht.
<Matlab 5.3>
ymin=0;
ymax=1;
begin=3.82
ende=3.87
schrittweite=0.0001
schrittanzahl = (ende-begin)/schrittweite
for m=begin/schrittweite + 2:ende/schrittweite
m2 = m - begin/schrittweite;
b(m2)=m*schrittweite;
y(1,m2)=0.1;
for n=2:200
y(n,m2)=y(n-1,m2)*b(m2)*(1 - y(n-1,m2)/ymax);
end
end
for m=begin/schrittweite + 2:ende/schrittweite
m2 = m - begin/schrittweite;
plot(b(m2),y(100:200,m2));
hold on;
end
axis([begin ende ymin ymax]);
</Matlab 5.3>
_________________ Gruß, dachdecker2
http://rettedeinefreiheit.de |
|
|
Nikolas Ehrenmitglied
Anmeldungsdatum: 14.03.2004 Beiträge: 1873 Wohnort: Freiburg im Brsg.
|
Nikolas Verfasst am: 27. Jun 2004 15:44 Titel: |
|
|
Zitat: | b(m2)=m*schrittweite;
hold on;
for n=2:200 (for i:=2 to 200 [in Pascal?])
axis([begin ende ymin ymax]); | Was bedeutet das? Ich kenne MathLab nicht und hab da ein paar Probleme. Gibt's in Mathlab nur end's und keine begin's??
_________________ Nikolas, the mod formerly known as Toxman.
Erwarte das Beste und sei auf das Schlimmste vorbereitet. |
|
|
dachdecker2 Administrator
Anmeldungsdatum: 15.06.2004 Beiträge: 1174 Wohnort: Zeppelinheim / Hessen
|
dachdecker2 Verfasst am: 27. Jun 2004 16:04 Titel: |
|
|
nun, da werd ich mal die Bedeutung der ganzen Wörter veröffentlichen
b ist ein eindimensionales Array, dass die Kontrollparameter, bei mir von begin bis ende mit der Schrittweite schrittweite enthält
ymin und ymax begrenzen die Vertikale Achse, alle Werte die auftreten, liegen zwischen 0 und 1
Es ist richtig, dass es kein "begin" wie in Pascal hier in MatrixLaboratory gibt. Die "end"s gehören zu den Forschleifen.
y ist ein zweidimensionales Array, das zu jedem b die 200 berechneten Funktionswerte enthält, aus dem Schließlich die hinteren 100 in das Diagramm kommen (2. Schleife).
mit hold on (im Gegensatz zu hold off) verhindert man, dass das ein neues Diagramm für jeden Schleifendurchlauf erstellt wird. Die neuen Punkte werden zu den bereits gezeichneten hinzugefügt.
der axis-Befehl legt die Skalierungen der Achsen fest, damit strecke ich das Diagramm auf "volle Größe"
Was besonders wichtig bei MatLab ist: der Doppelpunktoperator, den habe ich noch nicht in anderen Sprachen gesehen. mit : kann man Bereiche und Schrittweiten angeben:
1:5 wählt die Zahlen 1,2,3,4 und 5 aus
0:2:10 wählt 0,2,4,6,8 und 10
das geht natürlich auch mit Kommazahlen. Auf diese Weise kann man zb. von großen Matrizen (viele) einzelne Spalten oder Elemente ohne großen Aufwand selektieren.
_________________ Gruß, dachdecker2
http://rettedeinefreiheit.de |
|
|
dachdecker2 Administrator
Anmeldungsdatum: 15.06.2004 Beiträge: 1174 Wohnort: Zeppelinheim / Hessen
|
dachdecker2 Verfasst am: 28. Jun 2004 00:04 Titel: |
|
|
Irgendwie hab ich nicht so richtig zum Thema beigetragen... (Asche auf mein Haupt)
Man kann einen bestimmten Kontrollparameter nicht für deine Bedingungen berechnen. Wenn du das Programm mal hernimmst, und die erste Bifurkation sehr stark vergrößerst, siehts du, dass diese Bifurkationen nicht exakt einem b zuzuordnen sind, sondern eher einem Bereich von b. Auf diesem Rechner hab ich kein MatLab drauf, ich werd morgen (wenn ichs nicht vergesse) das ganze mal auf dem anderen Rechner rechnen lassen und einen Screeny posten.
Man könnte natürlich mal Probieren, ob man Funktionen findet, mit denen man die Abschnitte zwischen den Bifurkationen (exakt) darstellen kann. Wenn es sowas geben sollte, dann kannst du das gesuchte b berechnen.
_________________ Gruß, dachdecker2
http://rettedeinefreiheit.de |
|
|
dachdecker2 Administrator
Anmeldungsdatum: 15.06.2004 Beiträge: 1174 Wohnort: Zeppelinheim / Hessen
|
|
|
Nikolas Ehrenmitglied
Anmeldungsdatum: 14.03.2004 Beiträge: 1873 Wohnort: Freiburg im Brsg.
|
Nikolas Verfasst am: 29. Jun 2004 06:19 Titel: |
|
|
hast du das mit MatLab gezeichnet??
_________________ Nikolas, the mod formerly known as Toxman.
Erwarte das Beste und sei auf das Schlimmste vorbereitet. |
|
|
Gast
|
Gast Verfasst am: 29. Jun 2004 12:40 Titel: |
|
|
ja sicher, geht es bei dir nicht? Mein alter Mobilrecher brauch für sowas etwa 5 Minuten pro Bild und jede Menge Speicher (könnte ich noch optimieren)...
Bestimmt interpretiert MatLab die Befehle nur, ich hab schon extra mit ganzen Matrizen (statt mit Einzelwerten) rechnen lassen, da das die Spezialstrecke von MatLab sein soll und trotzdem ist es so langsam...
Bei etwas langer Weile mach ich noch ein C-Programm draus und Poste es mal
|
|
|
BlackJack
Anmeldungsdatum: 07.03.2004 Beiträge: 89 Wohnort: org 100h / Münsterland
|
BlackJack Verfasst am: 29. Jun 2004 14:57 Titel: |
|
|
also hatte mal ein delphi-programm geschrieben, dass das feigenbaum-diagram auf einem Celeron 633MHz in ca. 5 sekunden gezeichnet hat - und das mit maximal 1800 iterationen, von denen ich die letzten 1700 auch zeichnen liess... hier mal der code; man braucht nur einen button, 4 edits (edit1/2 für den zu berechnenden bereich, edit3 für die iterationen, edit4, ab wievielen iterationen der punkt aufgetragen werden soll) und eine checkbox (ob man ne skala haben will oder nicht). die farbe eines punktes richtet sich dabei danach, wieviele iterationen er schon hinter sich hat:
Code: | procedure TForm1.Button1Click(Sender: TObject);
var fx,n,max,zeichn:integer;
x,r,ab_wo,bis_wo:extended;
s: string;
begin
Refresh;
ab_wo := strtofloat(edit1.text);
bis_wo := strtofloat(edit2.text);
max := strtoint(edit3.text);
if max<=0 then
exit;
zeichn := strtoint(edit4.text);
for fx := 0 to clientwidth-1 do
begin
r := ab_wo+fx/clientwidth*(bis_wo-ab_wo);
x := 1/max;
for n := 0 to max-1 do
begin
x := r*x*(1-x);
if n>zeichn then
canvas.pixels[fx,round(x*clientheight)] := {round(r*255/4)}
round(n/max*255);
end;
if (fx mod (ClientWidth div 10) = 0) and (CheckBox1.Checked) then
begin
s := floattostr(r);
Canvas.MoveTo(fx,ClientHeight);
Canvas.LineTo(fx,ClientHeight-10);
Canvas.TextOut(fx-Canvas.TextWidth(s) div 2,
ClientHeight-10-Canvas.TextHeight(s),s);
end;
end;
end;
|
edit:
wenn man bei edit4 null angibt, sieht das echtmal total geil aus!!!
_________________ Auf ein gefettetes Backblech legen und bei zweihundert Grad für fünfzehn Minuten backen und KEINE EIER
Tool, Die Eier von Satan
Fraktal3D |
|
|
dachdecker2 Administrator
Anmeldungsdatum: 15.06.2004 Beiträge: 1174 Wohnort: Zeppelinheim / Hessen
|
dachdecker2 Verfasst am: 03. Jul 2004 16:30 Titel: |
|
|
Hatte gestern nachmittag etwas zeit, und hab mal schnell die erste bifurkation bei b=3 stark vergrößert. das sichtbare Fenster hat folgende Abmessungen b=2,995..3,0025, y=0,65..0,68. Es wurden die letzten 4900 von 5000 Zeitschritten gezeichnet, die späteren sind dabei "röter".
<BC++ 5>
double xmin = 2.995,
xmax = 3.0025,
ymin = 0.65,
ymax = 0.68,
steps = 5000,
usedsteps = 4900;
long double xx, *yy;
int x, y, step, rot, gruen, blau;
img->~TImage();
img = new TImage(Owner);
img->ClientWidth = ClientWidth;
img->ClientHeight= ClientHeight;
yy = new long double[steps+1];
for (x=0;x<ClientWidth;x++)
{
yy[0] = 0.5;
xx = xmin + x*(xmax-xmin)/ClientWidth;
for (step=1;step<steps;step++)
yy[step] = yy[step-1] * xx * (1-yy[step-1]/1);
for (step=steps-usedsteps;step<steps;step++)
{
y = ClientHeight-int((yy[step]-ymin)/(ymax-ymin)*ClientHeight);
rot = 255 * (step-steps+usedsteps) / usedsteps;
gruen= 0;
blau = 0;
img->Canvas->Pixels[x][y] = rot+256*gruen+65536*blau;
}
}
Canvas->StretchDraw(ClientRect, img->Picture->Bitmap);
</BC++ 5>
Für interessenten würd ich das noch mit einer kleinen Oberfläche versehen und dann hochladen.
EDIT: Wäre sicherlich cool, wenn ich den Link aufschreiben würde
http://www.websamba.com/dachdecker2/feigenbaum3.gif
_________________ Gruß, dachdecker2
http://rettedeinefreiheit.de |
|
|
|
|