Français
Source/ Codesnippets

Numerische intégration einer Kurve mittels Gregory-procéder

 

p.specht

intégration - qui zugrundeliegende Frage ist stets: comment grand ist qui Surface sous un certain Funktionskurve y=f(x) entre den x-Grenzen a et b ? dans qui Praxis hat on allerdings seulement y-Meßwerte trop certain x-Achsenwerten, kennt alors qui zugrundeliegende mathématique Funktion pas wirklich. presque genial erscheint daher qui concept, cela Gummilineal qui mathématique, qui Polynomfunktion dans qui Meßpunkte einzupassen et anschließend trop intégrer. cela allez, weil nämlich cela Integral eines Polynoms formelmäßig très bien bekannt ist. Bloß qui entsprechenen Koeffizienten manquer encore - doch là peut Kapazunder comment Kepler, Euler, Gauss, Lagrange, Cotes ou bien plan aussi qui Schottisch-Britische Mathematiker, Astronom et Universitätsrektor Sir David Gregory (1659-1708), un Zeitgenosse Newtons, aider - et zwar gründlich:

qui de ihm verwendeten Formeln sommes vom Grad her einstellbar, si il qui procéder aller vorgenannter Herren beliebig emulieren peux. Weiters sommes sa Koeffizientenformeln comme Gewichte eines iterativen Verfahrens léger implementierbar.

P.S.: Mathematische interessanter lieben Lagrange- et Tschebeyschow-Polynome son, mais pas praxisgerechter. Lediglich cela Romberg-procéder erscheint et avec ca eleganter!
Titre de la fenêtre " GREGORY-INTEGRATION einer eingebauten Testfunktion x^n "
Fenêtre Style 24:Fenêtre 0,0-%maxx,%maxy-40:font 0:set("decimals",17)
'---------------------------------------------------------------------
' (C) ACM-TOMS ALGORITHM 280, COLLECTED ALGORITHMS FROM ACM.
' THIS WORK PUBLISHED IN COMMUNICATIONS OF THE ACM,
' VOL. 9, NO. 4, avril, 1966, P.  271
'---------------------------------------------------------------------
' (D) Demo-Migration de C++ pour XProfan11.2a 2014-11
' by P.Specht, vienne (Austria). OHNE JEDE GEWÄHR!
'---------------------------------------------------------------------
'------------------------------------------------------------------------
' Programmanpassungen pour Arraygröße et trop integrierende Funktion
'------------------------------------------------------------------------
Var nmax&=100' procéder ausgelegt pour cet maximalen Arraygrößen

Proc Fn_PowN :parameters a!,n&

    ' y=x^n
    cas n&=0:return 1

    si n&>0 : var x!=a!

        whileloop n&-1

            x!=x!*a!

        endwhile

        return x!

    d'autre

        Imprimer " Negativer Exponent dans Fn_PowN pas erlaubt!"
        beep:waitinput 20000:return 0

    endif

ENDPROC

'------------------------------------------------------------------------
'------------------------------------------------------------------------

Proc Gregory :parameters n&,r&,t![],w![]'findet Gewichtungskoeffizienten

    '  Computes le abscissas and weights of le Gregory quadrature rule
    '  with r differences: Given h = (t_n - t_0)/n, then holds:
    '  Integral_from t_0 to t_n of: f(t) dt =~
    '  	  h*(f_0/2 + f_1 + ... +f_n-1 + f_n/2 )
    '  	- h*12*( nabla(f_n) - delta(f_0) )
    '  	- h*24*( nabla^2(f_n) + delta^2(f_0))
    '   - ...
    '   - h*c[r+1] *( nabla^r*f(n) + delta^r*(f_0) )
    '=  Sum[j=0..n]of w[j]*f(t[j])
    'where h = (t_n - t_0)/n, and le c_j' sont given dans Henrici (1964, suisse & USA)
    'The number r must être à integer à partir de 0 to n, le number of subdivisions.
    'The left and right endpoints must être dans t(0) and t(n) respectively.
    'The abscissas sont returned dans t(0) to t(n) and le corresponding weights
    'dans w(0) to w(n).
    '
    'Si r=0 le Gregory rule is le same as le repeated trapezoid rule, and
    'si r=n le same as le Newton-Cotes rule (closed type). The l'ordre p of le
    'quadrature rule is p = r+1 for r odd and p = r+2 for r even.
    'For n >= 9 and large r some of le weights can être negative.
    '
    'For n <= 32 and r<= 24, le numerical intégration of powers (less than r)
    'of x on le interval [0,1] gave 9 significant digits correct dans à 11
    'digit mantissa.
    '
    '2 References:
    'Hildebrand, F. B. Introduction to Numerical Analysis.
    'McGraw-Hill, New York 1956, p. 155 ;
    'Henrici, Peter. Elements of Numerical Analysis.
    'Wiley, New York 1964, p. 252.
    'personne: https://en.wikipedia.org/wiki/Peter_Henrici_%28mathematician%28  : The Book:
    'https://ia700700.us.archive.org/23/items/ElementsOfNumericalAnalysis/Henrici-ElementsOfNumericalAnalysis.pdf
    '--------------------------------------------------------------------
    Déclarer i&,j&,h!,cj!,c![nmax&+1],b![nmax&]
    b![0]=1:b![n&]=0
    c![0]=1:c![1]=-0.5
    w![0]=0.5:w![n&]=w![0]
    h!=(t![n&]-t![0])/n&

    whileloop n&-1:i&=&Boucle:

        w![i&]=1
        b![i&]=0
        t![i&]=i&*h!+t![0]

    endwhile

    cas r&>n&:r&=n&

    Whileloop r&:j&=&Boucle

        cj!=0.5*c![j&]

        whileloop j&,1,-1:i&=&Boucle

            b![i&]=b![i&]-b![i&-1]

        endwhile

        whileloop 3,j&+2:i&=&Boucle

            cj!=cj!+c![j&+2-i&]/i&

        endwhile

        c![j&+1]=-cj!

        whileloop 0,n&:i&=&Boucle

            w![i&]=w![i&]-cj!*(b![n&-i&]+b![i&])

        endwhile

    Endwhile

    WhileLoop 0,n&:i&=&Boucle

        w![i&]=w![i&]*h!

    endWhile

ENDPROC'Gregory

'--------------------------------------------------------------------
'  Testteil
'--------------------------------------------------------------------
declare t![nmax&],w![nmax&]:declare I!,dans!,i&,n&,r&,p&:declare a!,b!
a!=-1.0'intégration de a
b!= 1.0'jusqu'à b
n&= 7'Grad des impliziten Polynoms
r&=n&
t![0]=a!:t![n&]=b!' Integrationsgrenzen belegen
Gregory(n&,r&,t![],w![])' Polynom-Koeffizienten (Gregory-Gewichtungen) berechnen
' Kontrollausgabe:
font 2:Imprimer "\n       Gregory-Gewichtungen:\n "+mkstr$("-",40)

WhileLoop 0,n&:i&=&Boucle

    imprimer tab(2);si(w![i&]<0,»," ");format$("%g",w![i&]),
    imprimer tab(27);si(t![i&]<0,»," ");format$("%g",t![i&])
    endwhile:imprimer
    '-----------------------------------------------------------------------
    ' Testanwendung: Integriere qui Funktion x^p et gib qui Ergebnisse aus:
    '-----------------------------------------------------------------------

    whileloop 0,r&+4:p&=&Boucle

        I!= ( Fn_PowN(b!,p&+1) - Fn_PowN(a!,p&+1) ) / (p&+1)
        dans!=0

        whileloop 0,n&:i&=&Boucle

            dans!=dans!+w![i&]*Fn_PowN(t![i&],p&)

        endwhile

        imprimer tab(2);n&,tab(5);r&,tab(8);p&,
        imprimer tab(13);si(I!<0,»," ");format$("%g",I!),
        imprimer tab(43);si(dans!<0,»," ");format$("%g",dans!),
        imprimer tab(73);si((I!-dans!)<0,»," ");format$("%g",I!-dans!)

    Endwhile

    BEEP
    Imprimer "\n Es folgen qui Vergleichsdaten lt. livre [bouton]\n"+mkstr$("-",80)
    waitinput
    var wdata$=\
    "  0.086921 -1.000000 \n  0.414005 -0.714286 \n"+\
    "  0.153125 -0.428571 \n  0.345949 -0.142857 \n"+\
    "  0.345949  0.142857 \n  0.153125  0.428571 \n"+\
    "  0.414005  0.714286 \n  0.086921  1.000000 \n"
    var outdata$= "\n "+\
    "7 7  0  2.000000  2.000000  4.440892e-16 \n "+\
    "7 7  1  0.000000 -0.000000  1.110223e-16 \n "+\
    "7 7  2  0.666667  0.666667  2.220446e-16 \n "+\
    "7 7  3  0.000000 -0.000000  8.326673e-17 \n "+\
    "7 7  4  0.400000  0.400000  1.665335e-16 \n "+\
    "7 7  5  0.000000 -0.000000  8.326673e-17 \n "+\
    "7 7  6  0.285714  0.285714  0.000000e+00 \n "+\
    "7 7  7  0.000000 -0.000000  4.163336e-17 \n "+\
    "7 7  8  0.222222  0.230297 -8.075245e-03 \n "+\
    "7 7  9  0.000000 -0.000000  2.775558e-17 \n "+\
    "7 7 10  0.181818  0.202532 -2.071405e-02 \n "+\
    "7 7 11  0.000000 -0.000000  1.387779e-17"
    font 2:imprimer Wdata$,outdata$
    waitinput
    Fin
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
16.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

1.471 Views

Untitledvor 0 min.
Erhard Wirth14.06.2024
p.specht02.02.2022
R.Schneider20.11.2021
Uwe Lang20.11.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