Français
Source/ Codesnippets

Ellipsenbogen-Longueur via Romberg-Wegintegral

 

p.specht

Wenn´s tout autor allez, qui Longueur eines Bogenstückes qui Ellipse entre deux par Zentriwinkel definierten Punkten trop ermitteln, gibt es mangels einfacher analytischer Formel (beim Kreis z.B. L = r * alpha) seulement iterative Ansätze. Weil numerische intégration deutlich plus rapide allez comme qui sonst übliche MacLaurin-Reihenentwicklung avec zusätzlicher Integralrekursion, bemühte je Prof. Werner Rombergs Integrationsalgorithmus.
Titre de la fenêtre "Ellipsenbogenlänge via Romberg-Wegintegral"
'{ initialisation
' (D) Demoware 2012-06 by P. Specht. sans jedwede Gewähr!
Font 2:randomize:set("decimals",18)
Déclarer a!,b!,xu!,xo!,n!,g!,tmp!,Integral!,lambda2!,epsi!,epsi2!
var f!=pi()/180
'}

proc Fnk :parameters x!

    declare y!,il%,sq!
    sq!=sin(x!):sq!=sq!*sq!

    si (epsi2!*sq!)<=1

        ' ======= PROGRAMMTEIL A =============
        y! = a!*sqrt(1 - epsi2!*sq!)
        ' ====================================

    d'autre

        y!=-1*10^-35

    endif

    return y!

endproc

'{ un/Ausgabeteil
Begin:
cls rnd(8^8):
imprimer "\n Ellipsenbogenlänge: "
imprimer "\n Grosse HALBachse a = "; :input a!
cas a!=0 : goto "Begin"
imprimer "\n Kleine Halbachse b = "; :input b!
cas b!=0 : goto "Begin"
cas a!=b!:imprimer " évident un Kreis comme Test! "
epsi2!=1-(b!*b!)/(a!*a!)
epsi!=sqrt(epsi2!)
imprimer "\n Numer. Exzentrizität Epsilon = "; epsi!
imprimer "\n de Zentriwinkel alpha_1[° ] = ";:input xu!
imprimer "\n   jusqu'à Zentriwinkel alpha_2[° ] =";:input xo!
imprimer "\n Abbruch-Genauigkeit [se mettre]: ";:input g!
cas g!=0:g!=10
g!=1/10^g!
Integral! = Rhomberg(xu!*f!,xo!*f!,g!)
imprimer "\n Ergebnis:\n"
imprimer " qui Bogenlänge entre "
imprimer " ";xu!;" et ";xo!; " [°Grad]"
imprimer " beträgt ";Integral!;"  bzw.  "; format$("%e",Integral!)
imprimer " avec einem faute <= ";format$("%e",tmp!)

si (xu!=0) and (xo!=90)

    imprimer "\n Kontrolle pour Winkel 0° - 90° avec 1/4 qui Ramanujan-UmfangsFormel: "
    lambda2!=(a!-b!)/(a!+b!):lambda2!=lambda2!*lambda2!
    imprimer  " ";1/4*Pi()*(a!+b!)*(1+3*lambda2! / (10+sqrt(4-3*lambda2!) ) )
    imprimer " avec einem rel. faute kleiner ";
    cas (epsi! >= 0) and (epsi! < 0.8820): imprimer "10^-9"
    cas (epsi! >= 0.8820) and (epsi! < 0.9242): imprimer "10^-8"
    cas (epsi! >= 0.9242) and (epsi! < 0.9577): imprimer "10^-7"
    cas (epsi! >= 0.9577) and (epsi! < 0,9812): imprimer "10^-6"
    cas (epsi! >= 0.9812) and (epsi! < 0.9944): imprimer "10^-5"
    cas (epsi! >= 0.9944) and (epsi! < 0.9995): imprimer "10^-4"
    cas (epsi! >= 0.9995) and (epsi! < 0.9999): imprimer "< 0.000403"
    cas (epsi! >= 0.99999) and (epsi! <=1): imprimer "< -0.5%"

endif

WaitInput
Goto "Begin"
'}

proc Rhomberg : parameters xu!,xo!

    var anz&=10' GERADE ZAHL!
    Déclarer i&,j&,k&,n&[anz&+1],H![anz&+1],L![anz&,anz&],Q!
    n&[0]=2
    H![0]=(xo!-xu!)/n&[0]
    ' benutzt Trapezregel:
    L![0,0]=H![0]/2*(Fnk(xu!)+Fnk(xo!)+2*Fnk(xu!+H![0]))

    WhileLoop Anz&:j&=&Boucle

        H![j&]=H![0]/(2^j&)
        n&[j&]=n&[0]*(2^j&)
        Q!=0

        whileLoop 0,n&[j&-1]-1:i&=&Boucle

            Q!=Q! + Fnk(xu!+(2*i&+1)*H![j&])

        endwhile

        L![0,j&]=L![0,j&-1]/2+H![j&]*Q!

    Endwhile

    WhileLoop Anz&:k&=&Boucle

        whileloop 0,Anz&-1:j&=&Boucle

            L![k&,j&]=1/(2^(2*k&)-1)*(2^(2*k&)*L![k&-1,j&+1]-L![k&-1,j&])

        endwhile

        tmp!=abs(L![k&,0]-L![k&-1,1])
        cas tmp!<=g!:pause

    Endwhile

    ' tmp! contient aktuelle Fehlergrenze
    return L![k&,0]

endproc

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



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

524 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.2021
Thomas Zielinski10.05.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie