5 van 14

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 20:22
door OOOVincentOOO
Hi Ukster,

Dat is die functie welke "Eddington" genoemd wordt deze heeft Puntje eerder heeft gepost (in een van de velen draadjes). Niet direct op basis van Jacobi.
Professor Puntje schreef: zo 23 mei 2021, 19:29 Formule 41.4 geeft een benaderde vergelijking in cartesische coördinaten van de lichtbaan:
2
2 819 keer bekeken
Bron: https://www.gutenberg.org/ebooks/59248

(Kennelijk zijn hier x en y vergeleken met MathPages omgewisseld.)

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 20:33
door OOOVincentOOO
@Ukster, Wat krijg jij uit Maple met Jacobi?

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 20:38
door ukster
Als je even aangeeft wat er ingetikt moet worden wil ik het wel proberen

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 20:50
door OOOVincentOOO
Deze vergelijkingen. Nummer \((6)\) is de formule welke we plotten. Hier zetten we \(r\) om in x=r.cos(phi) en y=t.sin(phi) (ik twijfel nu een beetje of dat wel mag). Hierbij is \(sn\) de betreffende oplossing uit de Jacobian elliptic function (voorbeeld: [Python]).

The \(\sigma\) is bepaald met onderste quote. Waarbij deze variant tot dusver genomen is: \( \sigma = -0,78540 + 1,57194 \)
Professor Puntje schreef: za 05 jun 2021, 14:43 Dit kan met de schwarzschildstraal \( r_s \) van de zon vereenvoudigd worden tot:
\( e_1 = \frac{r_0 - r_s + \sqrt{(r_0 - r_s)(r_0 + 3r_s)}}{2 r_s r_0} \,\,\,\,\,\,\, (1) \)
\(\)
\( e_2 = \frac{1}{r_0} \,\,\,\,\,\,\, (2) \)
\(\)
\( e_3 = \frac{r_0 - r_s - \sqrt{(r_0 - r_s)(r_0 + 3r_s)}}{2 r_s r_0} \,\,\,\,\,\,\, (3) \)
\(\)
\( \tau = \sqrt{ \frac{ r_s (e_1 - e_3)}{ 4 }} \,\,\,\,\,\,\, (4) \)
\(\)
\( h = \sqrt{ \frac{ e_2 - e_3}{ e_1 - e_3 }} \,\,\,\,\,\,\, (5) \)
\(\)
\( r = \frac{1}{ e_3 + (e_2 - e_3) \mathrm{sn}^2( \tau \varphi + \sigma ; h)} \,\,\,\,\,\,\, (6) \)
\(\)
Verder is \( r_0 \) de kleinste afstand r van de lichtbaan tot het centrum van de zon in de gebruikelijke schwarzschildcoördinaten.
Professor Puntje schreef: zo 06 jun 2021, 12:11 Even terug naar:
\(\)
\( r = \frac{1}{ e_3 + (e_2 - e_3) \mathrm{sn}^2( \tau \varphi + \sigma ; h)} \,\,\,\,\,\,\, (6) \)
\(\)
Nu bekijken we de lichtbaan waarvoor r minimaal (d.w.z. r0) is voor φ = π/2. Dat geeft:
\(\)
\( r_0 = \frac{1}{ e_3 + (e_2 - e_3) \mathrm{sn}^2( \tau \frac{\pi}{2} + \sigma ; h)} \)
\(\)
En wegens (2) dat:
\(\)
\( \frac{1}{e_2} = \frac{1}{ e_3 + (e_2 - e_3) \mathrm{sn}^2( \tau \frac{\pi}{2} + \sigma ; h)} \)
\(\)
\( e_2 = e_3 + (e_2 - e_3) \mathrm{sn}^2( \tau \frac{\pi}{2} + \sigma ; h) \)
\(\)
\( e_2 - e_3 = (e_2 - e_3) \mathrm{sn}^2( \tau \frac{\pi}{2} + \sigma ; h) \)
\(\)
\( \mathrm{sn}^2( \tau \frac{\pi}{2} + \sigma ; h) = 1 \,\,\,\,\,\,\, (9) \)
\(\)
Dus:
\(\)
\( \tau \frac{\pi}{2} + \sigma = \pm 1,57194 \)
\(\)
\( \sigma = -\tau \frac{\pi}{2} \pm 1,57194 \)
\(\)
En wegens (8):
\(\)
\( \sigma = -0,500001 \cdot \frac{\pi}{2} \pm 1,57194 \)
\(\)
\( \sigma = -0,78540 \pm 1,57194 \)
\(\)
Nu nog zien welke daarvan voldoet...

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 21:00
door Professor Puntje
Juist. Aanvullend nog: het bijzondere van de vergelijkingen in dit topic is dat daarbij in tegenstelling tot eerdere topics géén benaderingen zijn toegepast. (Behalve dan natuurlijk de benaderingen die eigen zijn aan het gebruik van numerieke methoden.) Het zou fijn zijn als ukster op basis van deze formules ook een plot kan genereren zodat we kunnen vergelijken of er hier onderweg geen reken- of programmeerfouten gemaakt zijn.

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 21:01
door ukster
Ik zie geen enkele meerwaarde om het werk van jouw en pp nog eens uit te voeren in Maple...
Uit het postverloop te zien is er binnenkort een voor jullie bevredigend eindresultaat te verwachten.
Da's mooi. ik wacht het wel af!

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 21:19
door Professor Puntje
Professor Puntje schreef: zo 06 jun 2021, 19:32 jacobi.png

Bron: https://mathworld.wolfram.com/JacobiEll ... tions.html


Hieruit leren we dat:
\(\)
\( \mathrm{sn}(u + 2 m K + 2 n i K' , k ) = (-1)^m \mathrm{sn}(u,k) \)
\(\)
\( (\mathrm{sn}(u + 2 m K + 2 n i K' , k ))^2 = ((-1)^m \mathrm{sn}(u,k))^2 \)
\(\)
\( \mathrm{sn}^2(u + 2 m K + 2 n i K' , k ) = \mathrm{sn}^2(u,k) \)
\(\)
Dus voor reële argumenten u heeft \( \mathrm{sn}^2(u,k) \) een periode 2K. Dit zelfde geldt dan wegens (6) ook voor r(φ).
We hebben dus:

De functie r(φ) heeft een periode van 2K(h) = 3,14388 . (10)

Zie:
2k
(Alleen vraag ik mij nog af wat die m en k te betekenen hebben...)

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 21:37
door Professor Puntje
OOOVincentOOO schreef: zo 06 jun 2021, 19:59 Ik ben jouw herleiding nagegaan voor \(\sigma\) en snap jouw gedachten gang. Tevens kan ik jouw grafiek ook reproduceren.

Echter als ik de deflektie uitreken kom ik vele orden groter dan verwacht. Uit jouw grafiek komt ik uit op: 0.0014 rad (halve hoek). Men zou moeten verwachten 0.9 arc seconde. Wat bereken jij voor een deflectie?
Die k en m kwestie laat ik even rusten, bovenstaande is belangrijker. De totale afbuiging moet kloppen anders is er iets ernstig mis. :shock:

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 21:43
door Professor Puntje
Grove schatting vanuit het grafiekje: 1,4 . 10-3 rad voor de halve afbuiging.

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 22:23
door Professor Puntje
Ook voor de elliptische functies blijkt er een k en m kwestie te zijn: https://en.wikipedia.org/wiki/Jacobi_el ... s#Notation

Dit gooit de hele zaak overhoop! :(

Re: Python en Jacobi

Geplaatst: zo 06 jun 2021, 23:31
door Professor Puntje
Wat afgezien van k en m het probleem zou kunnen zijn is dat r0 en rs wat orde van grootte betreft zeer veel verschillen, maar in (1) en (3) worden ze opgeteld en afgetrokken. Om dat preciezer te kunnen doen hebben we (veel) meer cijfers achter de komma nodig dan nu is toegepast. Dat zou de fout in afbuiging veroorzaakt kunnen hebben.

Re: Python en Jacobi

Geplaatst: ma 07 jun 2021, 11:21
door CoenCo
Professor Puntje schreef: zo 06 jun 2021, 23:31 Wat afgezien van k en m het probleem zou kunnen zijn is dat r0 en rs wat orde van grootte betreft zeer veel verschillen, maar in (1) en (3) worden ze opgeteld en afgetrokken. Om dat preciezer te kunnen doen hebben we (veel) meer cijfers achter de komma nodig dan nu is toegepast. Dat zou de fout in afbuiging veroorzaakt kunnen hebben.
Daar zou ik met niet al te druk om maken denk ik. Gegeven jouw waarden:

Code: Selecteer alles

rs=2.95e3
r0=7.0e8

print(f"rs: {rs:.30f}")
print(f"r0: {r0:.30f}")
print(f"rs-r0: {rs-r0:.30f}")
print(f"r0-s0: {r0-rs:.30f}")

print(f"1/10: {1/10:.30f}")
Waarin je met print(f" {variabele:.30f}" de uitvoer kan specificeren als 30 cijfers achter de komma.
1/10 heb ik bijgevoegd als klassiek voorbeeld van een numeriek probleem :)

Is dit de uitvoer:

Code: Selecteer alles

rs: 2950.000000000000000000000000000000
r0: 700000000.000000000000000000000000000000
rs-r0: -699997050.000000000000000000000000000000
r0-s0: 699997050.000000000000000000000000000000
1/10: 0.100000000000000005551115123126
Achter de schermen zijn de floats in python standaard 64bit, ook wel bekend als een double. Maar bij het afdrukken worden daar standaard wat afrondingen en truukjes uitgehaald, bijvoorbeeld om 1/10 ook gewoon 0,1 te laten zijn.

Re: Python en Jacobi

Geplaatst: ma 07 jun 2021, 11:35
door Professor Puntje
Dank! Op zo'n wijze moet ik de constanten nog eens narekenen. Als ik die super-precieze constanten e1, e2, etc. dan in formule (6) gebruik is dat probleem ook opgelost.

Re: Python en Jacobi

Geplaatst: ma 07 jun 2021, 11:43
door CoenCo
Zie ook hier voor wat informatie over de precision van floats: https://docs.python.org/3/tutorial/floatingpoint.html

Re: Python en Jacobi

Geplaatst: ma 07 jun 2021, 14:57
door Professor Puntje
@ CoenCo

Begrijp ik het goed dat Python achter de schermen al zo exact rekent dat er van een preciezere herberekening van de constanten geen zichtbaar verschillende grafiek voor de lichtbaan te verwachten is? Maar ik heb WolframAlpha voor de berekening van de constanten gebruikt, misschien heeft het dan zin om dat in Python over te doen?