Verhulst und Kunst
Ein kleines Schmankerl zu Math Verhulst Mandelbrot :
Einige Kuenstler verwenden die Verhulst Gleichung in der Musik um damit avangardistische Werke zu produzieren. Ein Problem dabei ist, dass sie die Verhulst Gleichung meist nicht richtig anwenden und die Zeitfunktion y[k] verwenden. Fuer musikalische Anwendungen sind jedoch die verketteten Verhulst Polynome weitaus interessanter. Ich hatte schonmal bemerkt, dass man Verhulst als den Erfinder der Tecno Base Drum betrachten kann. Denn das verkettete Polynom z.B fuer a=4; k=5 stellt eine solche dar. In folgendem kurzen mp3 Schnipsel sind alle Klaenge (ausser Gucci Fiorucci :-) mittels den Verhulst Gleichung (Poynomen erzeugt). Filter Sweeps ueber f[k][x]. Man beachte die moderne sweep Base Drum. Einfach ein a=4 Verhulst Polynom :-) http://home.arcor.de/richardon/2011/chic0.mp3 Gruesse |
AW: Verhulst und Kunst
Hallo richy,
habe mir das meiste zur Verhulst-Gleichung "angesehen" und zu Iterationen, die generell eine unverhersagbare Zahlenkette erzeugen, bzw. durch Osszillationswerte Feigenbaumverzweigungen erzeugen. Bloß "angesehen", weil das fachliche Erarbeiten nur im Schneckentempo vorangeht. Mir bleiben bei neben Arbeit, Familie und mal "Nichtstun" alle drei Tage mal 'ne halbe Stunde für Mathe und Physik. (Der "Wunschgedankenthread" war ein Marathon, ich konnte aber schlecht klein bei geben, dafür ist die Idee zu schön ;- ). Meine bisherige "Glanzleistung" in Mathe. war eine Näherung der Sinus- Kosinuswerte per Iteration. Dei Anfangswerte habe ich abgeleitet aus dem gemeinsamen Schnittpunkt aus Einheitskreis und einem Konstruktionskreis um (1 / 0) mit dem Radius r= Pi/180. Alles von Hand gemacht, mit Vektoren hergeleitet, die Formel die dabei herauskam, war letztenendes ein Additionstheorem auf die Anfansgwerte angewandt (in "alpha" Schritten.) r=Pi/180 x1= 1 - r^2/2 x(n+1) = x(n) * (1 - r^2/2) - Wurzel(1-x(n)^2) * Wurzel(r^2 - r^4/4) y(n+1) = wurzel(1 - x(n+1)^2) -> Sinuswerte (die Formel ist für Echtzeitanwendungen wohl nicht geeignet) Je kleiner r umso genauer sind die Ergebnisse, trotz akkumlierter Ungenauigkeit durch vermehrte Rechenschritte, zumindest mit Excel. Bei verhulst und Co. fehlt mir noch das vollständige Verständnis für die imaginäre Zahl: i^2= -1, um komplexwertige Zahlen zu verstehen. Überrascehnd fand ich den Hinweis bei Wiki ("komplexe Zahlen"), dass Pythagoras angeblich mal einen Schüler hinrichten ließ, weil er an irrationalen Zahlen festhielt, den Mann (Pythagoras) muss ich wohl wieder von meiner Idol-Liste streichen. Mir ist schonklar, dass auch unser Zahlensystem, eine imaginäre Beschreibung von Sachverhalten ist: Es gibt z.B. zwei einzelne Ameisen, die sich begegnen, es gibt aber keine Zahl "Zwei", die druaßen rumspaziert. Für das Verständnis der Verwendung von i^2=(-1), muss ich noch ein wenig damit rumprobieren und lesen. Habe übrigens früher (ab '85) mit einem ORIC 1, CPU 6502, 1 MHz Takt, 16 KB (minus Screen) in BAsic und Hex-Code rumprobiert, mehr war finanziell nicht drin. Als ich von deinen Zahlenreihen am Atari las, fiel mir jene unvergessliche Romantik der damaligen Gehversuche am HomePC ein. Ich selber habe eher drehende 3 D Darstellungen versucht, und einmal die Simulation einer optischen Rückkopplung. (Die Formel die Körper in 3D im Minutentakt drehen und verziehen ließ stand auf 2,8m Tepete quer in großen Lettern:) Ich hab irgendwann mal einen Bericht im TV gesehen, welcher zeigte, wie bei der Rückkoplung ziwschen Kamera und TV unglaubliche Bilder entstehen, wenn man den Abstand in einem bestimmten Bereich minimal verändert Zum Thema Musik sind mir aber eher die Rückkopplungen von Hendrix bekannt, (da gibt's es auch viele schöne, gezogene Feedbacks.) So far erstmal, ich hoffe, ich langweil dich nicht, selbst erzeugte Mermanmengen gibbet z.Zt. noch nicht Gruß, Merman |
AW: Verhulst und Kunst
Hi merman
Teil 1 Zitat:
http://home.arcor.de/richardon/richy.../ana_index.htm Dabei habe ich versucht eine Mischung aus geometrischer und algebraischer Erklaerung zu verwenden. Wobei einige Rechnungen schon sehr aufwendig werden. Aber da kannst du auch einfach das Ergebnis uebernehmen. Normleweise lernt man die Iteration so kennen, dass man immer einen willkuerlichen Anfangswert y0 verwendet und dann das Ergebnis der numerischen Simulation, die man am besten selber durchfuehrt, fuer verschiedene Parameter r (oder auch als a bezeichnet) sich betrachtet. Dazu habe ich mal dieses Java Applet im Hammond Orgel Stil :-) geschrieben : http://home.arcor.de/richardon/richy.../verhulst1.htm Einfach mal an dem Parameter a und a_fein ziehen. Das Ergebnis dieser Spielerei stellt das Feigenbaumdiagramm dar. Es zeigt welche Werte die Iteration annimmt dargestellt ueber den Parameter r. Das Feigenbaumdiagramm ist dabei unabhaengig von Startwert yo. Die Iteration ist stabil fuer den Parameter 0..4 (aber auch in Inseln ausserhalb dieses Intervalls) Bemerkenswert ist, dass spezielle Charakteren meist fuer Parameterwerte 1+Wurzel(n) auftreten. n=0,1,2,3,4,5,6,7,8,9 So beginnt das grosse Fester der Ordnung bei 1+Wurzel(8) mit einem Dreierzyklus. Und hier folgen die Itarationswerte dazu einer Zipfverteilung. Der Zweierzyklus beginnt bei 3.0=1+Wurzel(4) und der Viererzyklus bei 1+Wurzel(6) Dann kann man keine einfache Form mehr fuer die Peridenverdopplung mehr angeben und die Iteration wird beim Feigenbaumpunkt chaotisch. Ueber den Feigenbaumpunkt r=3.5699456 ... weiss man wenig. Nichteinmal ob das eine rationale oder irrationale Zahl ist. Es gibt tatsaechlich einige Musiker, die die Iteration in Audiomaterial umgesetzt haben. (Ich habe die Polynome umgesetzt) In der Hoffnung, dass dieser zufaellige Bereich etwas verblueffendes in sich birgt. Dem ist aber kaum so. Insbesonders ist die Iteration fuer r=4 lediglich ein falsch abgetasteter Cosinus. Ein Kuenstler sollte wissen, dass Auftrittsmerkmale einer Sprache, also auch der Musik einer Zipf Verteilung folgen. Wenn man schon solche Versuche unternimmt sollte man nach solchen Stellen in der Iteration suchen und eine davon ist 1+Wurzel(8)+delta. Damit habe ich auch schon selbst mit der deutschen Sprache exerimentiert, wobei das Ergebnis nun doch (abgesehen von dem Wort "Hasenrente" ) bescheiden war. Wobei ich dennoch eine verblueffende EIgenschaft fand. Ich habe naemlich nicht nach einer exakten Zipf Verteilungen 1/m gesucht, (davon gibt es nur eine in der Verhulst Gleichung) sondern nach Verteilungen die moeglichst exakt der deutschen Sprache entsprechen. Und davon gibt es im grossen Fenster der Ordnung (jenseits 1+Wurzel(8) ) jede Menge Parameter. http://home.arcor.de/richardon/2010/plapper6.gifhttp://home.arcor.de/richardon/2010/plapper7.gif http://www.quanten.de/forum/showthread.php5?t=1651 An den Stellen an denen die rote Funktion etwa gleich Null ist das Verteilungshistogramm der diskretisierten Verhulst Werte gleich dem des deutschen Buchstabenhistogrammes. Der Wert ist ueber die Fehlemethode von Gauss ermittelt. Schon recht aufwedig. Man kann die Verhulst Gleichung damit auch als einen sehr variablen Verteilungsgenerator betrachten. |
AW: Verhulst und Kunst
Teil 2
Auch fuer die folgenden Betachtungen benoetigst du keine komplexe Zahlen. Das ist das angenehme bei Verhulst. Allerdings werden auch im folgenden die Rechnungen schnell exorbitant lang. Wobei man hier auch tricksen kann. Einen tieferen Einblick in die Gleichung erhaet man, wenn man nicht alleine die Iterierte y(k+1) in y(k+1)=r*y(k)*(1-y(k)) fuer ein y(0)=y0 betrachtet sondern stets alle Anfangswerte y(0) iteriert und betrachtet. Das habe ich auf meiner Homepage etwas genauer erklaert. Im ersten Iterationsschritt erhaelt man dann das Polynom : r*y(k)*(1-y(k)) Und im folgenden erhaelt man eine mathematische Operation, die im allgemeinen nicht so gelaeufig ist. Die Verkettung. Formal ist diese einfach: Um y[k+2]zu berechnen ersetzt du in r*y(k)*(1-y(k)) jedes y(k) durch (r*y(k)*(1-y(k)) : y(k+2)=r*(r*y(k)*(1-y(k)))*(1-(r*y(k)*(1-y(k))) Ohne ein Algebrasystem jede Menge Rechenarbeit, aber will man diese verketteten Polynome lediglich darstellen kann man auch einfach einen Vektor der Einganswerte iterieren. Und ueber diese verketteten Polynome, die ganz spezielle, seltsame Eigenschaften aufweisen erhaelt man einen tieferen Einblick in die Gleichung. Ein einfacheres Beispiel fuer eine Verkettung : y(k+1)=(1+1/y(k)) y(k+2)=1+1/(1+1/y(k)) y(k+3)=1+1/(1+1/(1+1/y(k))) Hier erhaelt man kein verkettetes Polynom sondern einen Kettenbruch. Jenen des goldenen Schnittes. Die Basedrum in meinem Audioschnipsel ist einfach das 5 (oder wars 7?) fach verkettete Polynom der Gleichung y(k+1)=4*(1-y(k)). Alle Klaenge sind Schnipsel aus den verketteten Polynomen. Wahrscheinlich ist das sogar ein einmaliges Audioschnipsel. Als Musiker kenne ich mich mit der Programmierung analoger Baserums recht gut aus. Das Verhulst Polynom fuer r=4 enthaelt alles was eine ausgewogene moderne Basedrum enthalten muss. Eine besonderheit an dem Audioschnipsel ist noch , dass ich eine Originalaufnahme von Chic verwendet habe und alle Audio Events im Original Timing durch die Verhulst Schnipsel ersetzt habe. Gruesse |
AW: Verhulst und Kunst
Zitat:
Aber schoen dass du so etwas ausprobiert hast. Ich hatte auch mal die Idee fuer einen iterierten Sinus. Und diese wie folgt geloest. Man weiss ja : Die Ableitung der exp-Funktion ist wiederum die exp-Funktion dexp(alpha*t)/dt = alpa*exp(alpha*t) Klaro oder ? Als Elektolurch mache ich mir es jetzt einfach und verwende alpha=i*a sowie exp(i*a*t)=cos(a*t)+i*sin(a*t) und setze das ein : dcos(a*t)/dt+i*dsin(a*t)/dt=i*a*cos(a*t)+i*a*i*sin(a*t) dcos(a*t)/dt+i*dsin(a*t)/dt=i*a*cos(a*t)-a*sin(a*t) Imaginaer und Realteil getrennt betrachten : dcos(a*t)/dt=-a*sin(a*t) dsin(a*t)/dt= a*cos(a*t) Wie in deiner Iteration erhalte ich ein System. Das ist auch logisch, da eine Schwingung immer eine DGL 2 ter Ordnung ist. Und ich substituiere wie du : x(a*t)=cos(a*t) y(a*t)=sin(a*t) dx(a*t)/dt=-a*y(a*t) dy(a*t)/dt= a*x(a*t) Nun mache ich etwa aus numerischer Sicht grauenhaftes. Ich ersetze das Differential durch eine Differenz erster Ordung. In der Regel ist das viel zu ungenau, aber egal .... : x(k+1)-x(k)=dt*-a*y(k) y(k+1)-y(k)=dt* a*x(k) mit c=a*dt => x(k+1)=x(k)-c*y(k), x(0)=1 y(k+1)=y(k)+c*x(k), y(0)=0 Implementation : > y:=0; x:=1; c:=3.14*0.01; N:=800; > for i from 1 to N do > st:=x; > x:=x-c*y; > y:=y+c*st; > fx[i]:=x; > fy[i]:=y; od: Mit st sichere ich den Wert x(i) Wohl aufgrund der ungenauen Differenz 1.ter Ordung ist das Ergebnis sehr bescheiden. http://home.arcor.de/richardon/2011/no_sinus.gif Vielleicht habe ich mich auch verrechnet ? Egal. Jetzt implementiere ich die Gleichung mal falsch, indem ich den x Wert nicht sichere : > for i from 1 to N do > x:=x-c*y; > y:=y+c*x; > od: Und die Iteration erzeugt nun seltsamerweise einen stabilen recht genauen Sinus : http://home.arcor.de/richardon/2011/sinus.gif Mit geringstem Aufwand nahezu perfekt. Hmm, kannst du es erklaeren oder jemand anderes im Forum ? Also ich im Moment nicht :-) Gruesse |
AW: Verhulst und Kunst
Hallo richy,
ich bin nicht ganz sicher, aber die letzte von dir programmierte Berechnung: Zitat:
x(n+1) = x(n) * x(1) - y(n) * y(1) Insofern erhälst du eine ungefähre Sinuskurve, sie müsste allerdings ungenau sein, da deine Konstante c=0.01 sehr belibieg scheint, probiersmal mit c(x) = 1- ((Pi/180)^2)/2 für x und c(y)=wurzel(1- c(x)^2) für y (verzeih die kryptische Schreibweise). (vielleicht war das Additionstheorem nicht so gut zu erkennen, da ich y als Funktion von x dargestellt habe, und x1, y1 als Funtion von r. (aus dem gem. Schnittpunkt zw. Einheitskreis und Konstruktionskreis mit Radius r (Konstruktionskreis)). x1 und y1 sind hier sowohl Startwerte, als auch Konstanten. In den Gleichungen deines Programmes steht c (=1/100) als Konstante, insofern müsste man überprüfen, wie genau z.B. dein Wert für z.B. 89° (nach 89 Iterationsschritten) wäre. In meiner Berechnung erhalte ich nach 89 Iterationsschritten (mit x1 = 1 - r^2/2 und y1 = Wurzel(1-x1^2): merman_sin(89) = 0,999848039 zu Excel_sin(89) = 0,999847695 = Differenz von : 0,000000343903 (In deiner Berechnung müsste man den Wert 89°/360° *200 heranziehen, da du den Kreis scheinbar in 200 Teile zerlegst ?) In deiner vorletzten Gleichung Zitat:
... und die Sinuskurve läuft aus dem Ruder. (Programmiercode wie z.B. "y:=y+c*st;" stellt ja bereits eine "selbstspeisende" Iteration dar. Mathematisch als schreibweise nicht erlaubt: "y=y+c", aber beim Programmieren ungemein praktisch) Das hier geschriebene gilt nur, wenn ich deine Ausführungen richtig verstanden habe.. (an deinem ersten und zweiten Beitrag knacke ich jetzt noch, allerdings folge ich den Einführungseinheiten zu Iteration, Feedback, Verhulst und Co. unter deiner Homepage, großes Danke) so weit ertsmal, Gruß Merman |
AW: Verhulst und Kunst
*ähäm*, ... war gar nix
|
AW: Verhulst und Kunst
Hi merman
Vielleicht interessiert ja auch noch jemand anderes diese einfachen numerischen iterativen Sinusgeneratoren. Zitat:
Zitat:
Zitat:
Zitat:
EDIT : Ok, In denem Algo nicht. Und mit x1 meinst du auch x[1] Funktioniert tatsaechlich. aber ohne Fallunterscheidung nur bis 180 Grad. Scheint eine Cordic Variante zu sein. Zitat:
Zitat:
Ah, ok ich denke ich weiss ungefaehr was du machst. Mein koplexer Ansatz war im Grunde unnoetig. Man kann auch sofort anschreiben : dcos(a*t)/dt=-a*sin(a*t) und daraus folgt : dcos(a*t)/dt=-a*Wurzel(1-(cos(a*t))^2) dx(t)/dt=-a*Wurzel( 1-x(t)^2 ) Die Wurzel spare ich mir in meiner Version indem ich sowohl Sinus und Cosinus iterativ berechne. (Deinen Code koennte man auch noch eheblich effizienter gestalten) Dann integriere ich aber numerisch erster Ordnung und da geht zunaechst etwas schief. Mit welcher Methode integrierst du denn ? Weisst du das ueberhaupt ? :D Erstaunlich ist die Genauigkeit deiner Iteration. Wie kommt denn der Ausdruck (1 - r^2/2) vor dein x(n) in x(n) * (1 - r^2/2) Gruesse |
AW: Verhulst und Kunst
Zu meiner Iteration :
Zitat:
http://upload.wikimedia.org/wikipedi...82dde186c1.png Und ich hab schon die Loesung waerum die zweite Methode stabil und relativ genau ist :) . In der Grafik ist die Iteration (rot) und die exakte Loesung (gruen) dargestellt : http://home.arcor.de/richardon/2011/sinus.gif Bis auf die roten Puenktchen fast deckungsgleich. Hier einige Werte fuer 200 Abtastwerte pro 2*Pi: Iteration := -.09699045186 Exakt := -.09410831333 Iteration := -.06569064212 Exakt := -.06279051954 Iteration := -.03432606403 Exakt := -.03141075908 Iteration := -.00292764181 Exakt := 0 Man kann das durch die Anzahl Abtastwerte, dt genauer haben : dt=2*Pi/2000 Exakt := -.009424638434 Iteration := -.009462599264 Exakt := -.006283143966 Iteration := -.006322693191 Exakt := -.003141587486 Iteration := -.003182724778 An deine Genauigkeit reicht es nicht ran, dafuer ist die Iteration fast unverschaemt einfach und dennoch stabil: > y:=0; x:=1; c:=3.14*0.01; N:=200; > > for i from 1 to N do > x:=x-c*y; # Erzeugt den Cosinus > y:=y+c*x; # Erzeugt den Sinus > od: c ist bei mir nicht beliebig sondern das ist dt*omega. Nach 100 Schritten bin ich im obigen Beispiel bei Pi und nach 200 Schriten bei 2*Pi Zitat:
Zitat:
Schauen wir mal unter Euler-Cromer : http://en.wikipedia.org/wiki/Euler%E...omer_algorithm http://upload.wikimedia.org/wikipedi...a82ef5548d.png Siehst du das Detail ? Zitat:
Anm: Ah, du hast deine Iteration irgendwie fundamental geometrisch hergeleitet, nicht algebraisch. Das scheint mir auesserst interessant, weil sie so genau ist. Viele Gruesse |
AW: Verhulst und Kunst
Zitat:
http://upload.wikimedia.org/wikipedi...d0f08c9853.png http://upload.wikimedia.org/wikipedi...618c6cf5fa.png x=n, y=1 Voellig ohne Integration und daher exakt. Hey das ist clever. :-) Meine Varainate (die ich vor 25 Jahren mal kurz ausprobiert habe) stellt im Grunde eine Butterbrotrechnung mit Euler Integration dar, jedoch mit dem Trick wie beim Cordic Algorithmus. Es ist eben effizient Sinus und Cosinus gleichzeitig zu berechnen. Was hindert dich daran dies nicht ebenfalls zu tun ? Oben stehen die Gleichungen. Das waere dann genau und effizient. Aber dass dies etwas wirklich Neues waere ist eher nicht zu erwarten. Naja wer weiss. Auf jeden Fall sehr interessant ! Viele Gruesse |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 Uhr. |
Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
ScienceUp - Dr. Günter Sturm