Español
Fuente/ Codesnippets

Ellipsenumfang via Legendre-Polynom 2. Art ermitteln, Landen-Transformation

 

p.specht

Elliptische Problemas, etwa el Ermittlung el Bogenlänge de Ellipsen bestimmter Form y Abmessung, puede todos en drei Integrale encima Bogensegmente uno Normalellipse con kleiner oder aber großer Halbachse = 1 en fokaler Nulllage zurückgeführt voluntad. Dummerweise hay viele diferente Darstellungsformen dieser drei Arten - je después de Mathematiker, el se así verewigt ha, etwa el Legendre-Form, Gauss-Form, Jacobi-Form, el Riemann-Form y todavía viele otro mehr.

Leider wurde lo Technikern dadurch schwer gemacht, el richtige Formel para encontrar y el jeweils einzusetzenden Parametern y el nötigen Vorfaktoren klarzukommen, sodaß se bisher no Standardform como Mainstream durchgesetzt ha. Das Thema "Ellipsenumfangsstrecke" gilt deshalb como muy exotisch.

Das nachstehende Demo-Progi konzentriert se en el Legendre-Form el "Unvollständigen" elliptischen Integrale ...
- 1. Art: F(phi_max,k) = Integral{phi=0..phi_max; 1/SQRT(1+k^2*sin(phi)^2); d_phi}; y
- 2. Art: E(phi_max,k) = Integral{phi=0..phi_max; SQRT(1+k^2*sin(phi)^2); d_phi}.
(Das Integral 3. Art wäre todavía deutlich komplizierter!)
"Unvollständig" heißen el sólo, porque no todo Viertelbogen el Ellipse interessiert, pero eben sólo una zwischen 0° y una Maximalwinkel liegender Teilbogen - Details siehe Wikipedia.

Den Quellen zufolge (Q: F77-Bibliotheksmodul 1982, HP41C UPN-Programa 1983 y TrueBasic-Modul 1997) beträgt el erreichbare Genauigkeit des Algorithmus 11 Nachkommastellen. In una ungünstigen Grenzfall wurde allerdings sólo una Genauigkeit 10^-4 verifiziert. Das kommt vermutlich wegen uno Verfahrenswechsels en Parameterwerten en 0.25 zustande. Basisalgorithmus es hier el sog. "Landen-Transformation".

Umfang uno realen Ellipse: Sei el Numerische Exzentrizität el Ellipse Epsilon = sqrt(a^2-b^2)/a ; entonces el Bogenlänge des Ellipsen-Teilbogens zwischen 0 y Phi: L= a * E(Phi, Epsilon) con E = Unvollst.Ellipt.Integral_zweiter_Art, como nachstehend berechnet. Anwendung como Privado Demo, como Rechtslage dzt. ungeprüft!

Título de la ventana "Unvollständige Elliptische Integrale 1. y 2. Art {Legendre-F(phi,k), E(phi,k)}"
' Intento (Early pre-alpha) - sin jegliche Gewähr!
'{Q: F77-Bibliotheksmodul 1982, HP41C UPN-Programa 1983 y TrueBasic-Modul 1997
' 2015-07 después de XProfan 11.2a montiert - ACHTUNG: Ausschließlich como Demo!
' *** Möglicherweise bestehen Rechte Dritter! *** MfG Z. Ahnpasta
Windowstyle 24:Cls:font 2:set("decimals",17)
declarar q!,k!,a!,d2r! , F!,Ellpci_e! : d2r!=pi()/180

Whileloop 0,900,1'6

    q!=d2r!* &Loop/10'30 '°
    k!=sin(q!)'Referencia: Es NICHT el 'Modulwinkel'-Versión el Legendre-Normalform,
    'k se hier simplemente sólo el Definitionsbereich [0..1] durchlaufen!
    imprimir "\n k = ";format$("00.0",&Loop);" °"
    Waitinput 2000' oder auskommentieren ...

    whileloop 0,90,15 : a!=d2r!* &Loop/10'° en Zehntelgrad-Schritten

        '*************************************************************************
        'Proc-Aufruf setzt 2 Ergebnisse:
        F!=Ellpci(a!,k!)
        'El ausserhalb des Proc definierte Variable Ellpci_E!
        'bringt hier el 2. Ergebnis, E(phi,k) (Legendre-Form 2. Art) zurück.
        '*************************************************************************
        '*************************************************************************
        '  EINZELWERT-TEST, nachträglich eingefügt. Bitte el nachstehende Testzeile
        '  auskommentieren, si no cierto Parámetro getestet voluntad debería!
        'F!=Ellpci( 0.9, 0.9 )  :clearclip:putclip str$(Ellpci_E!):waitinput
        '  Ergebnis en el Zwischenablage 17-stellig verfügbar, en Präzision a prüfen.
        '*************************************************************************
        '*************************************************************************
        'Edición:
        imprimir " Phi = ";format$("00.0",&Loop);" °";
        imprimir tab(15);"F(phi,k) = ";format$("%g",f!),
        imprimir tab(45);"E(phi,k) = ";format$("%g",ellpci_e!)
        '*************************************************************************

    endwhile

Endwhile

waitinput
FIN
'{ VERIFIKATIONSTEIL
'*************************************************************************
' Präzisionsausgabe de E(phi,k) online verfügbar en:
' https://keisan.casio.com/exec/system/1244989948
' Weitere Kontrolle via Maxima-Función elliptic_e(phi(=a),m(=k^2))
'*************************************************************************
'E(x,k) = Ellipci_E!
'-----------------------------------
'0.0, 0.0 = 0
'0.0, 0.1 = 0
'0.0, 0.4 = 0
'0.0, 0.9 = 0
'*** OK ! ***
'-----------------------------------
'Keisan 0.6,0.4   = 0.5945980735117437678766
'Maxima 0.6,0.4^2 = 0.59459807351174
'Ellpci(0.6,0.4)  = 0.59459807353087835
'*** OK ! ***
'-----------------------------------
'E(0.9,0.9) =
'Keisan(phi[rad],k):          0.808143018647826110606
'Maxima: elliptic_e(phi,k*k): 0.80814301864783
'Ellipci:                     0.80818524219652310
'*** MATHEMATISCH NICHT OK !!! (Technisch ausreichend) ***
'---------------------------------------------------------
'Ellipci(0.9,sqrt(0.9))           = 0.79659968020564376
'Maxima's_elliptic_e(0.9,0.9=k^2) = 0.79659968020564
'Keisan_E(0.9,Sqrt(0.9))          = 0.796599680205643585782
'*** OK ! ***
'Referencia: Sqrt(0.9)=0.94868329805051379959966806332982
'-----------------------------------
'1.0, 0.0 = 1.570796326794896619231
'= Pi()/2 = 1.5707963267948966192313216916398
'*** OK ! ***
'}*********************************************************

Proc Ellpci :Parámetros a!,k!

    ' a := Phi_max (sometimes called 'Amplitude')
    ' k := Modulus (In el Literatur se auch m verwendet, con m = k^2)
    ' F! = integral of first kind
    ' E! = integral of second kind
    ' Algorithm: Landen transformation with the DiDonato recurrence
    ' en specific ranges of the argument
    ' Proc uses external variable ellpci_e! for output of E!
    declarar s! ,c!
    declarar s0!,c0!, p0!,q0!
    declarar s1!,c1!
    declarar p1!,q1!, p2!,q2!
    declarar s2!,s3!,s4!,s7!
    declarar r0!,r1!,r2!, r7!
    declarar n0!,n1!,n2!
    declarar t0!,t1!,t2!,t3!,t7!
    declarar d0!,d1!,d2!,d3!,d4!,d7!
    declarar i1!,i2!,j1!,j2!,k1!,k2!, m7!,n7!
    declarar L1!,L2!
    p2!=k!*k!
    q2!=(1-k!)*(1+k!)
    s!=sin(a!)
    c!=cos(a!)
    s0!=s!*s!
    c0!=c!*c!
    p0!=abs(k!*s!)
    q0!=abs(k!*c!)
    caso p0!>=sqrt(.5):goto "ellpci_44"
    r1!=a!
    r2!=1
    s1!=0
    s2!=0
    n1!=1
    n2!=2
    t0!=a!*s0!
    t7!=s!*c!
    goto "ellpci_33"
    ellpci_29:
    n1!=n2!+1
    n2!=n1!+1
    t0!=s0!*t0!
    t7!=s0!*t7!
    ellpci_33:
    r0!=s1!
    r1!=(n1!*r1!-t7!)/n2!
    r2!=p2!*r2!/n2!
    s2!=s2!+r1!*r2!
    r2!=n1!*r2!
    s1!=s1!+r1!*r2!
    caso abs(t0!)<abs(r0!):goto "ellpci_41"
    caso abs(s1!)>abs(r0!):goto "ellpci_29"
    ellpci_41:
    f!=a!+s1!
    ellpci_e!=a!-s2!
    volver f!
    imprimir "Never reach 43-error!":waitinput
    ellpci_44:
    d7!=(1-p0!)*(1+p0!)
    d0!=sqrt(d7!)
    i2!=1
    j2!=1
    k2!=0
    m7!=0
    n7!=0
    s1!=0
    s2!=0
    s3!=0
    s4!=0
    t3!=q0!*d0!
    n0!=2
    goto "ellpci_63"
    ellpci_58:
    i2!=i1!
    j2!=j1!
    k2!=k1!
    n0!=n0!+2
    t3!=d7!*t3!
    ellpci_63:
    n1!=(n0!-1)/n0!
    n2!=(n0!+1)/(n0!+2)
    i1!=n1!*i2!
    j1!=n1!*n1!*q2!*j2!
    k1!=k2!+2/(n0!*(n0!-1))
    r0!=t3!/n0!
    m7!=n2!*n2!*q2!*(m7!-r0!*i1!)
    n7!=n1!*n2!*q2!*(n7!-r0!*i2!)'=Orig
    d1!=j1!
    d2!=n2!*j1!
    d3!=m7!-j1!*k1!
    d4!=n7!-n1!*q2!*j2!*k1! + q2!*j2!/(n0!*n0!)
    r0!=s3!
    s1!=s1!+d1!
    s2!=s2!+d2!
    s3!=s3!+d3!
    s4!=s4!+d4!
    caso s3!<r0!:goto "ellpci_58"
    t0!=d0!+q0!
    r7!=t0!/4
    L1!= -1*ln(r7!)
    t7!=1+p0!
    s7!=t7!/2
    L2!= ln(s7!)
    'k=1:Kreis, por lo tanto Arc=Kreisbogen[rad] 'Mi propio Änderung!

    if L2!=0:ellpci_e!=sin(a!):beep:volver Ln(tan(a!/2+Pi()/4)):End:endif

        t1!=(1+s1!)*L1!+q0!/d0!*L2!
        t2!=(.5+s2!)*q2!*L1!+1-q0!/d0!*(1-p0!)
        f!=t1!+s3!
        ellpci_e!=t2!+s4!
        caso a!>=0:goto "ellpci_94"
        f!= -1*f!
        ellpci_e!= -1*ellpci_e!
        ellpci_94:
        volver f!

    ENDPROC

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.05.2021  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

823 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
Thomas Zielinski07.06.2021
R.Schneider04.06.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie