Python en Jacobi

Moderators: jkien, Xilvo

Reageer
Gebruikersavatar
Berichten: 1.605

Re: Python en Jacobi

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.png
2.png (101.09 KiB) 634 keer bekeken
Bron: https://www.gutenberg.org/ebooks/59248

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

Gebruikersavatar
Berichten: 1.605

Re: Python en Jacobi

@Ukster, Wat krijg jij uit Maple met Jacobi?

Gebruikersavatar
Berichten: 4.518

Re: Python en Jacobi

Als je even aangeeft wat er ingetikt moet worden wil ik het wel proberen

Gebruikersavatar
Berichten: 1.605

Re: Python en Jacobi

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...

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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.

Gebruikersavatar
Berichten: 4.518

Re: Python en Jacobi

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!

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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.png
(Alleen vraag ik mij nog af wat die m en k te betekenen hebben...)

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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:

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

Grove schatting vanuit het grafiekje: 1,4 . 10-3 rad voor de halve afbuiging.

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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! :(

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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.

Technicus
Berichten: 1.151

Re: Python en Jacobi

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.

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

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.

Technicus
Berichten: 1.151

Re: Python en Jacobi

Zie ook hier voor wat informatie over de precision van floats: https://docs.python.org/3/tutorial/floatingpoint.html

Gebruikersavatar
Berichten: 7.463

Re: Python en Jacobi

@ 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?

Reageer