Quanten.de Diskussionsforum  

Zur?ck   Quanten.de Diskussionsforum > Plauderecke

Hinweise

Plauderecke Alles, was garantiert nichts mit Physik zu tun hat. Seid nett zueinander!

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 07.12.11, 21:41
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard Math Schwingungs DZGL

Hi

Im Thread "Verhulst und Kunst" hat merman das Thema der iterativen Erzeugung einer harmonischen Schwingung angesprochen.
http://www.quanten.de/forum/showthread.php5?t=2078

In der Vergangenheit hat merman auf geometrischem Weg eine Itetationsgleichung hergeleitet, die interessante Eigenschaften aufweist. Insbesonders ist sie weitaus genauer als eine Integration 1 ter Ordnung eines entsprechenden Differentialgleichungssystems. (Euler Cromer Verfahren)
Der Ansatz von Merman entspricht in Teilen einer Anwendung der Additionstheoreme trigonoetrischer Funktionen. Ein Vergleich der Genauigkeit beder Verfahren auch hinsichtlich der Maschinenrechengenauigkeit waere interessant.
Ebenso ob sich hier klassische Fehlerbetrachtungsverfahren im Frequenzbereich z.B. mittels der La Placetransformation anwenden lassen.

ciao

Ge?ndert von richy (08.12.11 um 00:33 Uhr)
Mit Zitat antworten
  #2  
Alt 07.12.11, 21:51
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Hi Merman
Gehen wir erstmal gemeinsam deine Iteration durch. Ich hatte diese schon nachprogrammiert, aber leider habe ich einiges wieder vergessen.

Du hattest geschrieben

Zitat:
Zitat von meman
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
Ok ich probiere das einfach nochmals in Maple aus ...

Ge?ndert von richy (07.12.11 um 22:44 Uhr)
Mit Zitat antworten
  #3  
Alt 07.12.11, 22:28
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Klappt fast auf Anhieb
Der Maple Quellcode

Zitat:
> restart;
> r:=Pi/180;
> x[1]:=1-r^2/2;
>
> for n from 1 to 360 do
> x[n+1]:=evalf(x[n]*(1-r^2/2)-sqrt(1-x[n]^2)*sqrt(r^2-r^4/4));
> y[n+1]:=sqrt(1-x[n+1]^2); # -> Sinuswerte
> od:
Im Grunde ist dieser selbsterklaerend. Eine Besonderheit ist vielleicht das Schlueselwort "od", dass in Maple das Ende der for...do Schleife kennzeichnet.
do .... od ( "do" in Spiegelschrift )
Maple ist eine Erweiterung von "C" und dort entspraeche dies der Block Klammerung.
Der Befehl evalf()= "wandle in float=Fliesskomma" zwingt Maple dazu die exakte symbolische (sehr aufwaengige) Berechnung durch eine schnellere Fliesskomrechnung zu ersetzen. Die Genauigkeit kann man einstellen.

Um deine Funktion auszudrucken muss man noch eine Maple spezifische Formatumwandlung durchfuehren. Zum Vergleich drucke ich dein Ergebnis sowie die exakte Sinusfunktion gemeinsam aus :

Zitat:
> druck1:=seq([i,y[i]],i=0..360):
> druck2:=seq([i,sin(i*2*Pi/360)],i=0..360):
> plot([[druck1],[druck2]]);
Das Ergebnis deiner Iteration sieht schonmal sehr gut aus :


Ge?ndert von richy (12.12.11 um 22:25 Uhr)
Mit Zitat antworten
  #4  
Alt 07.12.11, 22:43
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Was sehen wir ?

Zu deinem Glueck recht wenig. Die beiden Funktionen ueberdecken sich bis n=180 (Grad) graphisch vollstaendig. Dann oszillert,duempelt deine Approximation (rot) um die Amplitude Null vor sich hin. Das ist aber ueberhaupt kein Beinbruch, denn mittels einer Fallunterscheidung des Wurzelvorzeichens liesse sich dies sicherlich beheben.

Warum zunaechst diese einfache graphische Darstellung ? Man sollte doch besser den absoluten oder relativen Fehler darstellen. So eine graphische Anschuung ist doch Amateurwerk. Nein ueberhaupt nicht. Denn eine Grafik ist in dieser Phase anschaulicher als viele Worte oder Zahlenwerte. Nehmen wir mal an deine Approximation waere von der Amplitude voellig exakt aber um vielleicht 3 Grad phasenverschoben. Die Darstellung des Amplitudenfehlers koennte diesen Sachverhalt nicht wiedergeben.
Mit Zitat antworten
  #5  
Alt 07.12.11, 23:15
Benutzerbild von mermanview
mermanview mermanview ist offline
Profi-Benutzer
 
Registriert seit: 05.09.2011
Beitr?ge: 271
Standard AW: Math Schwingungs DZGL

Was mich interessieren würde:

Die Genauigkeit hängt bei meiner iterativen Näherung vom Hilfsradius r ab.

Unter Excel habe ich deswegen einmal mit :

r = Pi/180 in 180 Iterationsschritten genähert, als auch mit:

r = Pi/1800 in 1800 Iterationsschritten genähert

Da es sich um Näherungen handelt, ist klar, dass sich Rundungsfehler akkumulieren sollten, insofern war es spannend, herauszufinden, ob sich die Genauigkeit auf diesem Weg vefeinern ließe.
1800 Iteretionsschritte beeinhalten 1800 kleinere Rundungsfehler, während 180 Schritte nur 180, dafür aber größere Rundungsfehler enthalten.

Ich meine mich zu erinnern, dass Ergebnis tatsächlich um eine "Kommastelle" genauer war. (Ich hab die Datei noch am Arbeitsplatz).

Hier nochmal die schönere Darstellung des Sachverhaltes:

Zitat:
Die Gleichsetzung der beiden Kreise ergibt die genäherte x-Koordinate für cos(1°):

Wurzel(1-x²) = Wurzel(r² - (1-x)²)

=> x = 1 - r²/2.

(r = Pi/180)


Alles weitere (die Iterationsformel) entstand beim drehen und konstruieren mit Vektoren, um weitere "1°-Dreiecke" übereinander zu legen.

Dass dabei ein Additionstheorem entstand, war nicht beabsichtigt, da ich den Begriff vorher garnicht kannte.

Da ich eine Gleichung wollte (y=f(x)), ist in meiner Formel alles mit x bzw. dem Konstruktionsradius r als Konstante dargestellt:



Hier das Additionstheorem, dahinter meine Formel für den Kosinus, (darunter der Sinus)


großes Danke und Gruß Merman
Mit Zitat antworten
  #6  
Alt 08.12.11, 00:00
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Let`s engineer 1)

Von deiner Iteration habe ich bisher noch nichts verstanden. Am allerwenigsten deinen Ausdruck r=Pi/180.
Als Sprachbeamter wuerde ich hier zunaechst bemaengeln, dass man r mit einem Radius verwechseln koennte. Jedem Menschen steht es frei Variablen so zu benennen wie es ihm in den Kram passt, ganz besonders in der Mathematik. Denn dort herrscht diesbezueglich fast voellige Freiheit. (Man denke nur an das Buch Goedel Escher Bach)
Aber ich dachte anfangs du meinst mit r tatsaechlich einen Radius. Was in deiner geometrischen Anschuung durchaus gegeben sein koennte. Aber letzendlich hast du deine Iteration natuerlich algebraisch formuliert.
Und so hat dieses Variablen Sprachbeamtentum vielleicht doch in weitestem Sinne einen Sinn.Namen sind zwar Schall und Rauch aber nennen wir dein Kind "r" einfach mal ....
c0. Aehem. Nee, dann werden uns einige Physikforen massiv bedrohen :-)

Der Wert repraesentiert :

- einen Anfanswert
- einen Umrechnungsfaktor zwischen grad und rad
- eine Konstante in deiner DZGL

Bezeichnen wir den Wert einfach mal mit m0.

Zitat:
> m0:=Pi/180;
> x[1]:=1-m0^2/2;
>
> for n from 1 to 360 do
> x[n+1]:=evalf(x[n]*(1-m0^2/2)-sqrt(1-x[n]^2)*sqrt(m0^2-m0^4/4));
> y[n+1]:=sqrt(1-x[n+1]^2); # -> Sinuswerte
> od;
Was ist Schwachsinn ?
Sich 100 mal die selben Argumente von einfachen "RT Gegnern" und "RT Gegner"-Gegnern anzuhoeren und auszudiskutieren. Was berechnen Lopez, Karl, Kurt, gallileo, Herr Z. tausendmal stets auf Neue ? Das schmeissen wir aus der Schleife. Ein Ingenieur vermeidet solche unnoetigen Aktionen und erhoeht die Effizienz, indem er stets gleiche, konstante Ausdruecke vor solchen Schleifen implementiert. Was ist in deiner Schleife konstant ?

c1=(1-m0^2/2)
und
c2=sqrt(m0^2-m0^4/4))


Zitat:
> m0:=evalf(Pi/180);
> c1:=1-m0^2/2;
> c2:=sqrt(m0^2-m0^4/4);
> x[1]:=c1;
>
> for n from 1 to 360 do
> x[n+1]:=x[n]*c1 - sqrt(1-x[n]^2)*c2;
> y[n+1]:=sqrt(1-x[n+1]^2); # -> Sinuswerte
> od;
Der Code ist nun sehr viel effizienter und dazu sehr viel uebersichtlicher und strukturierter.
D'accord ?

Let`s engineer 2)
*************
Jawohl, der Herr Sinus ist weitaus bekannter als Herr Kosinus. Und fuer mich gehoert neben dem Satz des Pythagoras zum mathematischen Grundwissen dessen trigonometrische Variante :

Sin(x)^2 + Cos(x)^2 =1
*****************

Damit sieht man unmittelbar, dass du Herrn Sinus y(n) in einem weiteren fuer Ingenieure nicht zu rechtfertigenden numerischen Aufwand aus Herrn Kosinus x(n) berechnest. Wie gesagt. Ich kenne deine geometrischen Anschauungen noch nicht. Aber sicherlich haettest du diesen Aufwand vermeiden koennen, wenn du deine geometrischen Anschuungen von Vorerein an Herrn Sinus statt Herrn Kosinus orientiert haettest. Was man sicherlich noch aendern kann.

Let`s engineer 3)
*************
Ich meine intuitiv, dass das simultane Berechnen sowohl von Herrn Kosinus als auch Herrn Sinus letzendlich doch eine effizientere Methode darstellt.

Aber das wollen wir gerade in diesem Thread hier klaeren.

Ge?ndert von richy (11.12.11 um 22:39 Uhr)
Mit Zitat antworten
  #7  
Alt 08.12.11, 00:50
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Hi merman

Zitat:
Was mich interessieren würde:
Die Genauigkeit hängt bei meiner iterativen Näherung vom Hilfsradius r ab.
Ja, sicherlich.
Algebraisch betrachtet ist dies auch dein Anfangswert. Und schau mal was denn fuer den Winkel alpha=0 gegeben ist wenn du deine Iteration startest.
Dein Wert fuer alpha =0 ist stets nicht exakt, ganz dumm ausgedrueckt "falsch", weil nunmal gilt sin(0)=0 oder cos(0)=1
Aber gerade weil du auf diesen logischen Genauigkeitsanpruch in den Anfangswerten verzichtest scheint deine Iteretation ein hervorragendes Ergebnis ueber alle weiteren Werte zu liefern. Du nimmst damit eine Art Phasenkorrektur vor, die den Phasenfehler der Integration 1 ter Ordnung anscheinend sehr gut kompensiert.
Warum weiss ich noch nicht. Das koennen wir gemeinsam ergruenden.

Zitat:
Unter Excel habe ich deswegen einmal mit :
r = Pi/180 in 180 Iterationsschritten genähert, als auch mit:
r = Pi/1800 in 1800 Iterationsschritten genähert

Da es sich um Näherungen handelt, ist klar, dass sich Rundungsfehler akkumulieren sollten, insofern war es spannend, herauszufinden, ob sich die Genauigkeit auf diesem Weg vefeinern ließe.
In der Regel ist es so. Je mehr Werte du heranziehst, umso genauer wird das Ergebnis.
Die Genauigkeit akkumuliert sich, nicht die Fehler. Auch nicht die Maschinenungenauigkeit demgegenueber. Wie koennen dein Beispiel auch ueber Maple symbolisch durchrechnen und damit unabhaengig von der Maschinengenauigkeit.
Ueberlege es dir einfach mal geometrisch. Du unterteilst den Kreis in immer mehr kleinere Segmente. Die Kruemmung wird damit zunehmend irrelevant.
Zitat:
Ich meine mich zu erinnern, dass Ergebnis tatsächlich um eine "Kommastelle" genauer war. (Ich hab die Datei noch am Arbeitsplatz).
Welche Berechnung war nun genauer ? Die mit 180 oder 1800 Werten ?
Doch sicherlich die mit 1800 Werten.
Viele Gruesse

Ge?ndert von richy (11.12.11 um 18:32 Uhr)
Mit Zitat antworten
  #8  
Alt 08.12.11, 05:34
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

die Internetpolizei ist in einem ander Forum gerade unterwegs. Ich hoffe ich finde weiter Zeit fuer das Thema.
EDIT
Das Edwards Beispiel (fuer Mathe habe ich rausgenommen), weil es vielleicht doch nicht das beste Beispiel fuer Mathe und Musik ist. Der Trick ist zu versteckt.

Ge?ndert von richy (11.12.11 um 18:35 Uhr)
Mit Zitat antworten
  #9  
Alt 08.12.11, 16:55
Benutzerbild von mermanview
mermanview mermanview ist offline
Profi-Benutzer
 
Registriert seit: 05.09.2011
Beitr?ge: 271
Standard AW: Math Schwingungs DZGL

Moin richy,

werde mir Bernhard Edwards zu Hause anhören (selber der Gitarre und dem Bass zugetan, neben Percussion, bin gespannt).

Zum Thema:

Wahrscheinlich wiederhole ich mich, aber du schriebst:

„Von deiner Iteration habe ich bisher noch nichts verstanden.
Am allerwenigsten deinen Ausdruck r=Pi/180.
Als Sprachbeamter wuerde ich hier zunaechst bemaengeln, dass man r mit einem Radius verwechseln könnte.“


Kurze Antworten:

r ist tatsächlich ein Radius, ein Dreieck aus zwei Schenkeln = 1 cm und einem Schenkel der Länge Pi/180 hat einen genäherten Winkel von einem Grad.

Um eine passende x Koordinate zu bestimmen, nehme ich Pi/180 als Radius für einen Kreis mit Mittelpunkt (1|0) und berechne den gemeinsamen Schnittpunkt mit dem Einheitskreis r=1cm um (0|0), daraus entsteht:

x1 = 1 – r^2/2

um die y Koordinate zu erhalten setze ich 1-r^2/2 ein in

y1 = wurzel(1-x1^2) => y1 = wurzel(r^2-r^4/4)

Das 1°-Dreieck lässt sich sowohl bildlich als auch per Vektorenstapelung und -Drehung übereinander legen, um Höhen und „Längen“ größerer Winkel zu iterieren.

Dabei entstand :

x(n+1) = x(n) * (1-r^2/2) - wurzel(1 – x(n)^2) * wurzel(r^2 – r^4/4)

übersichtlicher ist natürlich:

x(n+1) = x(n) * x1 – y(n) * y1 (Additionstheorem).

Nächste Antwort:
Natürlich erwartete ich für r = Pi/1800 genauere Ergebnisse,
meine Zweifel entstanden erst nach herablassenden Zurechtweisungen von Wiki- Mathematikern:

Zitat von Lutzl, zu meiner Herleitung (Wiki-Mathematiker):
„Je genauer dieses Vorgehen wird, desto mehr Rechenschritte und desto mehr Rundungsfehler akkumulieren sich. Deshalb ist Halbieren und Quadrieren besser, aber ebenfalls zu langsam.“

Zu deinem letzten Beitrag:
OK besorg’s denen, aber richtig, (Internetpolizei? Ich vermute du bist noch in anderen Foren unterwegs)

Falls es hilft, sag mir wann soll ich wo sein, ich mach'se weg,
(ich hoffe du meinst nicht GEZ Schergen o.ä.)

PS:
Mein Verschwinden bei DZGL hatte u.a. allgemeine Hysterie am Arbeitsplatz als Ursache, Insolvenzgerede, Hass, gehetzte Knechte des Arbeitsweltwahnsinns, verschachtelte heimlich-Metzeleien zwischen Kollegen, ich halt mich da im Allgemeinen raus, dazu kam noch knappe Zeit wg. Erstzertifizierung usw., ein wahres Panoptikum menschlicher Abgründe.

Halt die Ohren oben,

Gruß Merman

Ge?ndert von mermanview (08.12.11 um 18:34 Uhr)
Mit Zitat antworten
  #10  
Alt 11.12.11, 20:19
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard AW: Math Schwingungs DZGL

Hi Merman

Zitat:
Zitat von Lutzl, zu meiner Herleitung (Wiki-Mathematiker):
„Je genauer dieses Vorgehen wird, desto mehr Rechenschritte und desto mehr Rundungsfehler akkumulieren sich. Deshalb ist Halbieren und Quadrieren besser, aber ebenfalls zu langsam.“
Seltsamer Mathematiker. Pauschal gesehen stimmt diese Aussage ueberhaupt nicht.

Wie waere es, wenn wir einfach mal die Iteration herleiten, die sich aus dem Additionstheorem ergibt und dann vergleichen ?

Deine Approximation lautet :

m0:=evalf(Pi/180);
c1:=1-m0^2/2;
c2:=sqrt(m0^2-m0^4/4);
x[1]:=c1;

for n from 1 to 360 do
x[n+1]:=x[n]*c1 - sqrt(1-x[n]^2)*c2;
y[n+1]:=sqrt(1-x[n+1]^2); # -> Sinuswerte
od;

Das Additionstheorem
****************




Du berechnest den Kosinus und dies entspricht der ersten Gleichung :
1) cos(x+y)=cos(x)*cos(y)-sin(y)*sin(x)
(Mittels der zweiten Gleichung haettest du dir die Umrechnung nach Sinus sparen koennen)

Setzten wir einfach mal in der Gleichung fuer x ein festes x0 und fuer y eine Abweichung dx davon :

cos(x0+dx)=cos(x0)*cos(dx)-sin(dx)*sin(x0)
Diese Gleichung ist exakt, aber nuetzt uns zunaechst wenig, da wir uns auf diese Weise nicht der trigonometrischen Funktionen entledigen. Zunaechst bringen wir sin(x0) auf eine Form cos(x0). Es gilt :
sin(x0)^2+cos(x0)^2=1 => sin(x0)=Wurzel(1-cos(x0)^2)
=>
A)
cos(x0+dx)=cos(dx)*cos(x0)-sin(dx)*Wurzel(1-cos(x0)^2)
************************************************** ******
(Diskussion der Gleichung im naechsten Beitrag)

Wie wuerde man ueber eine differentielle Methode vorgehen ?

Einschub (kannst du ueberspringen)
Die Ausgangsgleichung waere :
dcos(x)/dx=-sin(x)=-Wurzel(1-cos(x)^2)
Das Differential ersetzt man durch eine Differenz. Deine Loesung ist formal 1.Ordnung, somit waere es einfach der Differenzenquotient :
[cos(x+k*dx)-cos(x)]/dx=-Wurzel(1-cos(x)^2)
Und folgender Schritt entspraeche einer numerischen Integration 1.Ordnung:
cos(x+k*dx)=cos(x)-Wurzel(1-cos(x)^2)*dx
/Einschub

Die Differenzengleichung wuerde lauten :

B) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2)
C1=1
C2=dy=2*Pi/N_abtast=m0 im Beispiel Pi/180

Die Gleichung B) lautet diskretisiert :
A) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2)
C1=cos(dx)
C2=sin(dx)
(Btw : Die Form hatte ich vor 20 Jahren zweidmensional implementiert nicht Euler Cromer)

Und deine Iteration lautet :
c) y(k+1)=C1*y(k)-C2*Wurzel(1-y(k)^2);
C1=1-m0^2/2;
C2=Wurzel(m0^2-m0^4/4);

(Ich habe hier y(k) gewaehlt um die Variable vom x der Ausgangsgkeichung zu unterscheiden)

Letzendlich sind alle Gleichungen formal erster Ordnung (nicht bezueglich der Fehlerordnung) und unterscheiden sich durch die "Integrationsmethode".

Die Additionstheorem Methode ist sogar exakt !

Ich meine dein Verfahren wird sich letztendlich als ein Praediktor Korrektor Verfahren erweisen. Von Heun zum Beispiel :
http://www.tm-aktuell.de/PDF/AWPTeil1.pdf

EDIT :
Deine Methode fuehrt eine Taylorapproximation der exakten Konstanten der Additionstheoreme durch. (siehe naechster Beitrag)
Heun koennte dennoch aehnliche Ergebnisse liefern.

Ge?ndert von richy (27.02.12 um 19:03 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitr?ge zu antworten.
Es ist Ihnen nicht erlaubt, Anh?nge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitr?ge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
ScienceUp - Dr. Günter Sturm