Español
Fuente/ Codesnippets

Ellipsenbogen-Longitud via Romberg-Wegintegral

 

p.specht

Wenn´s por lo tanto va, el Longitud uno Bogenstückes el Ellipse zwischen zwei por Zentriwinkel definierten Punkten a ermitteln, hay mangels einfacher analytischer Formel (beim Kreis z.B. L = r * alpha) sólo iterative Ansätze. Weil numerische Integration deutlich más rápido va como el sonst übliche MacLaurin-Reihenentwicklung con zusätzlicher Integralrekursion, bemühte Yo Prof. Werner Rombergs Integrationsalgorithmus.
Título de la ventana "Ellipsenbogenlänge via Romberg-Wegintegral"
'{ Initialisierung
' (D) Demoware 2012-06 by P. Pájaro carpintero. Ohne jedwede Gewähr!
Font 2:randomize:set("decimals",18)
Declarar a!,b!,xu!,xo!,n!,g!,tmp!,Integral!,lambda2!,epsi!,epsi2!
var f!=pi()/180
'}

proc Fnk :parámetros x!

    declarar y!,él%,sq!
    sq!=sin(x!):sq!=sq!*sq!

    if (epsi2!*sq!)<=1

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

    más

        y!=-1*10^-35

    endif

    volver y!

ENDPROC

'{ Ein/Ausgabeteil
Begin:
cls rnd(8^8):
imprimir "\n Ellipsenbogenlänge: "
imprimir "\n Grosse HALBachse a = "; :input a!
caso a!=0 : goto "Begin"
imprimir "\n Kleine Halbachse b = "; :input b!
caso b!=0 : goto "Begin"
caso a!=b!:imprimir " Offenbar una Kreis como Test! "
epsi2!=1-(b!*b!)/(a!*a!)
epsi!=sqrt(epsi2!)
imprimir "\n Numer. Exzentrizität Epsilon = "; epsi!
imprimir "\n Von Zentriwinkel alpha_1[° ] = ";:input xu!
imprimir "\n   a Zentriwinkel alpha_2[° ] =";:input xo!
imprimir "\n Abbruch-Genauigkeit [Stellen]: ";:input g!
caso g!=0:g!=10
g!=1/10^g!
Integral! = Rhomberg(xu!*f!,xo!*f!,g!)
imprimir "\n Ergebnis:\n"
imprimir " El Bogenlänge zwischen "
imprimir " ";xu!;" y ";xo!; " [°Grad]"
imprimir " beträgt ";Integral!;"  o.  "; format$("%e",Integral!)
imprimir " con un Fehler <= ";format$("%e",tmp!)

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

    imprimir "\n Kontrolle para Winkel 0° - 90° con 1/4 el Ramanujan-UmfangsFormel: "
    lambda2!=(a!-b!)/(a!+b!):lambda2!=lambda2!*lambda2!
    imprimir  " ";1/4*Pi()*(a!+b!)*(1+3*lambda2! / (10+sqrt(4-3*lambda2!) ) )
    imprimir " con un rel. Fehler kleiner ";
    caso (epsi! >= 0) and (epsi! < 0.8820): imprimir "10^-9"
    caso (epsi! >= 0.8820) and (epsi! < 0.9242): imprimir "10^-8"
    caso (epsi! >= 0.9242) and (epsi! < 0.9577): imprimir "10^-7"
    caso (epsi! >= 0.9577) and (epsi! < 0,9812): imprimir "10^-6"
    caso (epsi! >= 0.9812) and (epsi! < 0.9944): imprimir "10^-5"
    caso (epsi! >= 0.9944) and (epsi! < 0.9995): imprimir "10^-4"
    caso (epsi! >= 0.9995) and (epsi! < 0.9999): imprimir "< 0.000403"
    caso (epsi! >= 0.99999) and (epsi! <=1): imprimir "< -0.5%"

endif

WaitInput
Goto "Begin"
'}

proc Rhomberg : parámetros xu!,xo!

    var anz&=10' GERADE ZAHL!
    Declarar 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&=&Loop

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

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

            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&=&Loop

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

            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])
        caso tmp!<=g!:romper

    Endwhile

    ' tmp! enthält aktuelle Fehlergrenze
    volver 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


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

521 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.2021
Thomas Zielinski10.05.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