cos(M_PI/2) +Grenzwerte
-
kasablanka schrieb:
(kennt jemand die impl. in den MS-Compilern? :D)
Ich wollte ja gerade mal nachgucken... Aber das ist so extrem frickeliger asm-code... hinzu kommt, dass ich weder in asm noch in mathe der überflieger bin;D
das hier ist jedenfalls der cos(float)-asm-code für den p4(der wahrscheinlich bei jedem intel ab dem p4 ausgeführt wird) - ich hab gar nicht gewusst, dass da schon x fkt-aufrufe davor stattfinden - hätt ich auch nicht vermutet^^_cos_pentium4: 63A97298 movlpd xmm0,qword ptr [esp+4] start: 63A9729E pextrw eax,xmm0,3 63A972A3 and ax,7FFFh 63A972A7 sub ax,3030h 63A972AB cmp ax,10C5h 63A972AF ja special (63A973F7h) 63A972B5 movlpd xmm1,qword ptr [PI32INV (639D0CE0h)] 63A972BD mulsd xmm1,xmm0 63A972C1 movlpd xmm2,qword ptr [SHIFTER (639D0CE8h)] 63A972C9 cvtsd2si edx,xmm1 63A972CD addsd xmm1,xmm2 63A972D1 movlpd xmm3,qword ptr [P_1 (639D0D00h)] 63A972D9 subsd xmm1,xmm2 63A972DD movapd xmm2,xmmword ptr [P_2 (639D0CF0h)] 63A972E5 mulsd xmm3,xmm1 63A972E9 unpcklpd xmm1,xmm1 63A972ED add edx,1C7610h ??0000: 63A972F3 movsd xmm4,xmm0 ??0001: 63A972F7 and edx,3Fh 63A972FA movapd xmm5,xmmword ptr [SC_4 (639D0CD0h)] 63A97302 lea eax,[Ctable (639D04A0h)] 63A97308 shl edx,5 63A9730B add eax,edx 63A9730D mulpd xmm2,xmm1 63A97311 subsd xmm0,xmm3 63A97315 mulsd xmm1,mmword ptr [P_3 (639D0D08h)] 63A9731D subsd xmm4,xmm3 63A97321 movlpd xmm7,qword ptr [eax+8] 63A97326 unpcklpd xmm0,xmm0 ??0002: 63A9732A movsd xmm3,xmm4 ??0003: 63A9732E subsd xmm4,xmm2 63A97332 mulpd xmm5,xmm0 63A97336 subpd xmm0,xmm2 63A9733A movapd xmm6,xmmword ptr [SC_2 (639D0CB0h)] 63A97342 mulsd xmm7,xmm4 63A97346 subsd xmm3,xmm4 63A9734A mulpd xmm5,xmm0 63A9734E mulpd xmm0,xmm0 63A97352 subsd xmm3,xmm2 63A97356 movapd xmm2,xmmword ptr [eax] 63A9735A subsd xmm1,xmm3 63A9735E movlpd xmm3,qword ptr [eax+18h] 63A97363 addsd xmm2,xmm3 63A97367 subsd xmm7,xmm2 63A9736B mulsd xmm2,xmm4 63A9736F mulpd xmm6,xmm0 63A97373 mulsd xmm3,xmm4 63A97377 mulpd xmm2,xmm0 63A9737B mulpd xmm0,xmm0 63A9737F addpd xmm5,xmmword ptr [SC_3 (639D0CC0h)] 63A97387 mulsd xmm4,mmword ptr [eax] 63A9738B addpd xmm6,xmmword ptr [SC_1 (639D0CA0h)] 63A97393 mulpd xmm5,xmm0 ??0004: 63A97397 movsd xmm0,xmm3 ??0005: 63A9739B addsd xmm3,mmword ptr [eax+8] 63A973A0 mulsd xmm1,xmm7 ??0006: 63A973A4 movsd xmm7,xmm4 ??0007: 63A973A8 addsd xmm4,xmm3 63A973AC addpd xmm6,xmm5 63A973B0 movlpd xmm5,qword ptr [eax+8] 63A973B5 subsd xmm5,xmm3 63A973B9 subsd xmm3,xmm4 63A973BD addsd xmm1,mmword ptr [eax+10h] 63A973C2 mulpd xmm6,xmm2 63A973C6 addsd xmm5,xmm0 63A973CA addsd xmm3,xmm7 63A973CE addsd xmm1,xmm5 63A973D2 addsd xmm1,xmm3 63A973D6 addsd xmm1,xmm6 63A973DA unpckhpd xmm6,xmm6 63A973DE addsd xmm1,xmm6 63A973E2 sub esp,10h 63A973E5 addsd xmm4,xmm1 63A973E9 movlpd qword ptr [esp+4],xmm4 63A973EF fld qword ptr [esp+4] 63A973F3 add esp,10h 63A973F6 ret special: 63A973F7 jg large (63A97424h) 63A973F9 pextrw eax,xmm0,3 63A973FE and ax,7FFFh 63A97402 pinsrw xmm0,eax,3 63A97407 sub esp,10h 63A9740A movlpd xmm1,qword ptr [ONE (639D0D30h)] 63A97412 subsd xmm1,xmm0 63A97416 movlpd qword ptr [esp+4],xmm1 63A9741C fld qword ptr [esp+4] 63A97420 add esp,10h 63A97423 ret large: 63A97424 jmp _cos_default (63A8CCDFh) 63A97429 lea ecx,[ecx] 63A9742C int 3 63A9742D int 3 63A9742E int 3 63A9742F int 3 fFSINH: 63A97430 mov byte ptr [ebp-90h],0FFh 63A97437 call fFEXPH (63A974D8h) 63A9743C or bl,bl 63A9743E je _rtforsnhlarge (63A974BBh) 63A97440 call ExpHypCopyInv (63A9751Bh) 63A97445 fsubp st(1),st 63A97447 jmp SinhCoshReturn (63A97497h) fFTANH: 63A97449 fld st(0) 63A9744B fabs 63A9744D fld tbyte ptr [_tanhmaxarg (63AB5160h)] 63A97453 fcompp 63A97455 wait 63A97456 fnstsw word ptr [ebp-0A0h] 63A9745C wait 63A9745D test byte ptr [ebp-9Fh],41h 63A97464 jne _rtfortnhlarge (63A974CAh) 63A97466 call fFEXPH (63A974D8h) 63A9746B or bl,bl 63A9746D je _rtfortnhlarge (63A974CAh) 63A9746F fld st(0) 63A97471 call ExpHypSum (63A97509h) 63A97476 fxch st(1) 63A97478 call ExpHypCopyInv (63A9751Bh) 63A9747D fsubp st(1),st 63A9747F fdivrp st(1),st 63A97481 ret
kannst mich ja mal aufklären^^
bb
-
@unskilled -> Kannst mich ja mal aufklären
Also wenn das Bienchen auf das Blümchen fliegt..... *lach*
Okay die Frage war nicht an mich.
@Sebastian.
Ich werd mich nicht drauf verlassen wie du sagst.
DX sollte das rauschen sein. Also genau das, was du gesagt hast.
Dann ist im komplexen konvergenz nach einer euklidischen norm definiert.
Folglich ist das Vorzeichen bei pi/2 undefiniert.Hatte gehofft, dass man sich da ein bisschen was dabei gedacht hat, und das vorzeichen an der Stelle definiert hat.
Aber egal. Wäre es definiert, würdet ihr es bestimmt wissen.
Danke für Antwort.
Gruß
-
AlexXXx schrieb:
cos(M_PI/2) 6.12323e-17
cos(-M_PI/2) 6.12323e-17
cos(3/2M_PI) -1.83697e-16
cos(-3/2M_PI) -1.83697e-16
Das bedeutet:
-Wenn ich mich cos(pi/2) in positiver richtung nähere, bekomme ich +
-Wenn ich mich cos(pi/2) in negativer richtung nähere, bekomme ich -
-Wenn ich mich cos(-pi/2) in positiver richtung nähere, bekomme ich -
-Wenn ich mich cos(-pi/2) in negativer richtung nähere, bekomme ich +Wo siehst du hier eigentlich ein "nähern"? Du berechnest nur einzelne Werte, wie willst du daraus irgendeine Aussage über Konvergenz ableiten?
Der Grund, warum du nicht jeweils 0 herausbekommst, liegt darin, dass sich π/2 nicht exakt als Fließkommazahl darstellen lässt, also M_PI/2 ungleich π/2 ist. Und der Cosinus von M_PI/2 ist halt einfach nicht 0, sondern etwas größer, was darauf schließen lässt, dass M_PI/2 etwas kleiner als π/2 ist. (Man kann davon ausgehen, dass die mathematischen Operationen so genau wie möglich sind, d.h. dass es keinen darstellbaren double-Wert gibt, der genauer als das ist, was sie zurückliefern.)
-
Dadurch dass man den cos(pi) also auch von cos(-pi) ausrechnen kann,
ist eine mathematische Umlaufrichtung zu definieren.
cos(x)=Re{e^jx}
e^jx:
^d*pi/2 für d=1+4*n n=-unendlich bis +unendlich
|
|
|
M----------->n*2PI mit n=-unendlich bis +unendlich (ganze zahlen)Konvergenz in pi/2
^----->Ein Kreis um Punkt pi/2
|
|
|
M------------>n*piDaraus folgt sign(Re{e^{j(pi/2)}}) ist bei einer komplexen konvergenten Folge
nicht definiert.Das bedeutet dass man es wählen darf.
Und das bedeutet, dass es sich zum standardisieren eignen würde.
Wie hätte ich mir das erhofft:
Da für positive n man sich eine positive Rotation des Zeigers vorstellen kann würde ich + nehmen
Da für negative n man sich eine negative Rotation des Zeigers vorstellen kann würde ich - nehmen.
Gruß
-
Würde man keine umlaufrichtung definieren wären die punkte pi/2 und -pi/2 nicht zu unterscheiden.
Das ist noch wichtig
Gruß
-
Ist das eine Antwort auf mein Posting?
-
Eine Umlaufrichtung kannst du nur haben, wenn du eine steigende oder fallende Folge an Werten in deine Formel einsetzt. Diese hast du aber nicht, wenn du nur einen Punkt ausrechnest. Die Reihe kann oszillierend um den exakten Wert konvergieren, daher ist nicht definiert, ob jetzt der positive oder negative Wert raus kommt.
Außerdem scheinst du den Fakt konsequent zu überlesen oder zu ignorieren, dass M_PI nicht exakt der Wert des tatsächlichen Pi ist, daher hast du automatisch Fehler. Von dem her kann das Vorzeichen von dieser Ungenauigkeit herrühren.Und dein Beweis ist irgendwie unverständlich. Nur weil man den Wert einer Funktion an 2 verschiedenen Punkten ausrechnen kann, heißt das noch lange nicht dass man eine Umlaufrichtung hat. Und deine Formeln ohne Erklärung sind auch -- toll.
-
Bin nicht ich der der hier fragt ?? *ggg*
Aber ja das ist die Antwort auf deine Frage.
Wäre pi so gewählt, dass eine zahl a=cos(bpi)
nicht gegen den exakten Wert a konvergieren würde (Das heißt nicht dass er ihn erreicht !! Wir brechne die reihe ja ab), wäre die Definition
von cos aufgehoben, und die Funktion wäre nicht realisiert.
Folglich ist es für die Aussage, dass cos(npi) eine konvergente folge ist unwichtig, ob wir die folge abbrechen oder pi ungenau ist.
Des weiteren frage ich mich, wiso jeder auf den Betrag aus ist.
Der betrag ist doch so oder so nur rechenfehler.Gruß
-
Die Reihe kann oszillierend um den exakten Wert konvergieren
Das ist schlich und ergreifend falsch.
Das vorzeichen darf oszillieren, aber sonst nichts.
Der Radius um den punktmuß kleiner werden. Du darfst dich auch incht auf ihm bewegen.
-
Wenn es keine Umlaufrichtugn bäbe, was wäre dann der wert von sin(-PI/2) ???
Er wäre gnau gleich dem Wert von sin(pi/2)
Damit ist bewisen dasss das Vorzeichen eine umlaufrichtung definiert.
-
AlexXXx schrieb:
Das vorzeichen darf oszillieren, aber sonst nichts.
Der Radius um den punktmuß kleiner werden. Du darfst dich auch incht auf ihm bewegen.Oszillierende Vorzeichen Das heißt Vorzeichenänderung.
Oszillieren heißt einfach, dass du einen Wert hast, um den sich eine Kurve schlängelt, mal drüber mal drunter. cos. selber oszilliert. Und das das delta (dein Radius?) kleiner wird ist ja Voraussetzung für Konvergenz, oder?AlexXXx schrieb:
Wenn es keine Umlaufrichtugn bäbe, was wäre dann der wert von sin(-PI/2) ???
Er wäre gnau gleich dem Wert von sin(pi/2)
Damit ist bewisen dasss das Vorzeichen eine umlaufrichtung definiert.Damit ist gar nix bewiesen!
f(x) = |1/x|
Wo haben wir hier einen "Umlauf"?
-
AlexXXx schrieb:
Bin nicht ich der der hier fragt ?? *ggg*
Ja, aber du fragst konfus und verschwurbelt, jedenfalls kommt es mir so vor, also frage ich nach. War aber wohl umsonst.
-
*ggg*
Also immer definiert das vorzeichen keinen Umlaufsinn.
Das ist uns beiden wohl klar.
Dass das vorzeichen undefinirt ist, davon rede ich schon die ganze Zeit.Dir scheint nicht bekannt zu sein , dass man die komplexe exponentialfunktion als rotierenden zeiger auffassen kann.
Und der kann ich mathematisch positiver oder mathematisch negativer Richtung definiert sein. Je nach Vorzeichen des Arguments der trigonometrischen Funktion.
Dann hast du nicht verstanden, dass die konvergenz einer reihe in einem Punkt definiert ist.
Der cos(a_1) konvergiert gegen b_1, und ist exakt b_1 wenn man die Reihenentwicklung nicht abbricht.
Der cos(a_2) konvergiert gegen b_2, und ist exakt b_2 wenn man die Reihenentwicklung nicht abbricht.
u.s.w.Die konvergenz ist über eine euklidische Norm definiert.
Du hast geschrieben dass eine reihenentwicklung oszilierend konvergieren kann. Das ist ein Wiederspruch in sich, da die konvergenz über den konvergenzradius definiert ist und nicht über seine Richtung.Ich sags dir unern, aber es ist nicht meine Frage welche konfus ist=).
Das was ich hier schreibe programmiere ich auch, und es läuft sehr gut.
-
Die cos Funktion ergibt sich doch nur dann wenn du alle
a_n der größe nach ordnest, und die entsprechenden b_n darüber malst.
Gruß
-
AlexXXx schrieb:
Ich sags dir unern, aber es ist nicht meine Frage welche konfus ist=).
Gesetzt den Fall, dass du weißt, was du zu erklären versuchst, ist jedenfalls die Erklärung/Frage selbst völlig unklar. Mathematik lebt von klarer Begriffsbildung und vernünftigem Satzbau.
Deine bisherigen Beiträge als Maßstab für die aufgewendete Sorgfalt bei der Formulierung genommen solltest du nicht erwarten, dass andere sich sehr bemühen, diese Beiträge zu verstehen.
Dabei würde u.a. eine Registrierung helfen, um ggf. Korrekturen vornehmen zu können.
-
@Camper
Ja du hast schon recht. Mein Gemüt ist auch etwas hoch gekocht. Sorry dafür.
Auf der andere Seite ist es mir peröhnlich eben sehr klar was ich meine, und bin oft etwas entteuscht, wenn ich das was ich sagen will so schlecht rüber bringe.Gruß
-
AlexXXx schrieb:
Dir scheint nicht bekannt zu sein , dass man die komplexe exponentialfunktion als rotierenden zeiger auffassen kann.
Und der kann ich mathematisch positiver oder mathematisch negativer Richtung definiert sein. Je nach Vorzeichen des Arguments der trigonometrischen Funktion.Mag sein, dass der Zeiger rotiert, dass dadurch Schlüsse auf das Verhalten des Vorzeichens auf die trigonometrische Funktion anwendbar ist, will ich bewiesen haben, aber bitte exakt!
Hier ist die Formel, von Wkipedia:
http://upload.wikimedia.org/math/4/5/b/45b9bbe427eafbd60ea4b4f492814071.png
Dann hast du nicht verstanden, dass die konvergenz einer reihe in einem Punkt definiert ist.Der cos(a_1) konvergiert gegen b_1, und ist exakt b_1 wenn man die Reihenentwicklung nicht abbricht.
Der cos(a_2) konvergiert gegen b_2, und ist exakt b_2 wenn man die Reihenentwicklung nicht abbricht.Nein. Bei Konvergenz wird der Wert im Unendlichen erreicht, damit kann er per Definition nie exakt errechnet werden. Sonst bräuchte ich den Begriff Konvergenz ja gar nicht. Oder hast du schon ein Intervall gesehen, in dem das eine Ende "Unendlich" war, dort aber eine geschlossene Intervallklammer stand?
Die konvergenz ist über eine euklidische Norm definiert.
Du hast geschrieben dass eine reihenentwicklung oszilierend konvergieren kann. Das ist ein Wiederspruch in sich, da die konvergenz über den konvergenzradius definiert ist und nicht über seine Richtung.Sicher ist der Konvergenzradius entscheidend, trotzdem kann die Konvergenz oszillierend erfolgen. Außerdem steht nirgends geschrieben, dass der Radius linear abnehmen muss. Im Gegenteil, es kann auch Ausreißer geben.
Ich sags dir unern, aber es ist nicht meine Frage welche konfus ist=).
Das was ich hier schreibe programmiere ich auch, und es läuft sehr gut.Hmm, ich hab bis auf die ersten paar Posts keine Fragen mehr gesehen, und auf der ersten Seite wurde auch schon erklärt, dass du dich auf das beobachtete Verhalten nicht verlassen kannst, dass M_PI niemals exakt ist, usw.
Die restliche Diskussion über mathematische Grundlagen hat doch mit deinem Problem nichts mehr zu tun. Wenn doch bitte mal nicht versuchen Beweise zu führen, sondern in normalem Deutsch. Die ist mathematische Ungenauigkeit nicht so problematisch.
-
Zum Beweis:
Nimm die Reihenentwicklung, schau dir die exponenten an.
e^jx
Mit Punkt und Spiegelsymmetrie ergeben sich die Vorzeichen und daraus folgend die quadranten des koorinatensystems.
Daraus kannst du dir eindeutig einen umlaufsinn in Folge des Vorzeichens ableiten.
Auf den Beweis komst du selbst.Nein. Bei Konvergenz wird der Wert im Unendlichen erreicht, damit kann er per Definition nie exakt errechnet werden. Sonst bräuchte ich den Begriff Konvergenz ja gar nicht. Oder hast du schon ein Intervall gesehen, in dem das eine Ende "Unendlich" war, dort aber eine geschlossene Intervallklammer stand?
Ja habe ich oft. Schau dir mal uneigentliche Integrale an.
Es gibt Grenzwerte welche existieren, auch gegen offene intervalle. Boah das hat man doch schon fast in der Grundschule.
Als Beispil nimm dir die Reihenentwicklung von e^x und setz mal 0 ein.
Unglaublich ich kenne den Grenzwert für eine unendlich lange Folge.
Gerechter Weise muß man aber hier sagen, dass man für die trigonometrischen Funktionen auf shannon kommt. Also eine Rechengenauigkeit für PI.
Wenn du dir die Reihenentwicklung von den trigonometrischen Funktionen anschaust, und dir in jedem berechneten Punkt den konvergenzradius denkst, kannst du ausrechnen wie genau du PI haben mußt, dass für eine bestimmte Frequenz dein kosinus keine überschwinger enthält.Sicher ist der Konvergenzradius entscheidend, trotzdem kann die Konvergenz oszillierend erfolgen. Außerdem steht nirgends geschrieben, dass der Radius linear abnehmen muss. Im Gegenteil, es kann auch Ausreißer geben.
Definition der Nullfolge:
Eine Folge Z_n komplexer zahlen mit n>=0 heißt Nullfolge, falls zu jedem epsilon >0 eine natürliche Zahl N existiert, so dass
|z_n| < Epsilon
gilt.Definition einer Folge:
Eine Folge Z_0 Z_1 ... komplexer Zahlen konvergiert gegen die komplexe Zahl z, falls die Differenzenfolge Z_0-Z, Z_1-z ein Nullfolge ist.Wenn du dir das aufmahlst siehst du, dass der konvergenzradius pro Term, welche du dazu nimmst kleiner werden muß. Die Richtung ist vollkommen bedeutungslos, da die konvergenz über den Radius definiert ist. Würde die konvergenz oszillieren, würde ich ein epsilon finden, so dass definitioni 1 nicht mehr stimmt, und somit die reihe nicht konvergent wäre.
Du darfst zwar um den punkt auf den zu Zukonvergierst drum rum springen, aber der Radius muß abnehmen. Wenn du das meinst, hast du Recht, aber viele kommen dann auf die Idee, dass der Konvergenzradius auch wieder zwischendurch mal größer oder gleich werden darf. Das darf er aber nicht.
Etwas genauer: Ich will nur sagen, dass der konvergenzradius mit jedem daugenommenen term streng momoton fällt.Gruß
-
AlexXXx schrieb:
Boah das hat man doch schon fast in der Grundschule.
[...]
Eine Folge Z_n komplexer zahlen mit n>=0 heißt Nullfolge, falls zu jedem epsilon >0 eine natürliche Zahl N existiert, so dass
|z_n| < Epsilon
gilt.Das üben wir aber nochmal. Vielleicht kommst du mal von deinem hohen Ross runter und erklärst in einfachen, aber möglichst exakten Worten, was du eigentlich vorhast?
-
Nase Rümpf, Beleidigt bin, Abhau....
Sorry bin grad ziemlich gestresst.
Mir wurde schon gesagt, dass die vorzeichen nicht von c++ definiert sind.
Dadurch kann ich sie nicht verwenden, und eigentlich ist die frage schon beantwortet.
Das man das in der Grundschule schon hat ist natürlich schwachsinn.
Und ganz so einfach ist es auch nicht. Das stimmt schon.
Die konvergenz über die Definition der nullfolgen ist so gebächlich, und wenn man sie sich aufmalt wirklich ganz einfach. Das hört sich hier nur total blöd an.
Mich darf man heitn icht so ernst nehmen. Gruß