ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Mètode de Romberg - Viquipèdia

Mètode de Romberg

De Viquipèdia

En càlcul numèric, el mètode de Romberg (Romberg 1955) genera una taula triangular que consisteix en estimacions numèriques de la integral definida

 \int_a^b f(x) \, dx

A base d’utilitzar la extrapolació de Richardson (Richardson 1910) repetidament sobre el el mètode trapezial. El mètode de Romberg avalua l’integrand a punts equidistants. L’integrand ha de tenir derivades contínues tot i que es poden obtenir força bons resultats encara que només existeixin unes quantes derivades. Si és posible avaluar l’integrand en punts desigualment espaiats, llavors altres mètodes com la quadratura de Gauss i la quadratura de Clenshaw-Curtis són, en general, més exactes.

Taula de continguts

[edita] Mètode

El mètode es pot definir per inducció així:

R(0,0) = \frac{1}{2} (b-a) (f(a) + f(b))
R(n,0) = \frac{1}{2} R(n-1,0) + h_n \sum_{k=1}^{2^{n-1}} f(a + (2k-1)h_n)
R(n,m) = R(n,m-1) + \frac{1}{4^m-1} (R(n,m-1) - R(n-1,m-1))

o

R(n,m) = \frac{1}{4^m-1} ( 4^m R(n,m-1) - R(n-1,m-1))

on

 n \ge 1
 m \ge 1
 h_n = \frac{b-a}{2^n}.

En notació de Landau, l’error de R(n,m) és:

 O\left(h_n^{2^{m+1}}\right).

La primera extrapolació, R(n,1), és equivalent al mètode de Simpson amb n + 2 points.

Quan les avaluacions de la funció són costoses en termes computacionals, pot ser preferible substituir la interpolació polinòmica de Richardson per la interpolació racional proposada per Plantilla:Harvtxt.

[edita] Implementació del mètode de Romberg en Pyton

Aquesta és una implementació del mètode de Romberg en Python.

def imprimeix_fila(lst):
    print ' '.join('%11.8f' % x for x in lst)
 
def romberg(f, a, b, eps = 1E-8):
    """Approxima la integral definida de f des de a fins a b pel mètode de Romberg.
    eps és la precisió desitjada."""
    R = [[0.5 * (b - a) * (f(a) + f(b))]]  # R[0][0]
    Imprimeix_fila(R[0])
    n = 1
    while True:
        h = float(b-a)/2**n
        R.append((n+1)*[None])  # Afegeix una fila buida.
        R[n][0] = 0.5*R[n-1][0] + h*sum(f(a+(2*k-1)*h) for k in range(1, 2**(n-1)+1)) # per limits adequats
        for m in range(1, n+1):
            R[n][m] = R[n][m-1] + (R[n][m-1] - R[n-1][m-1]) / (4**m - 1)
        Imprimeix_fila(R[n])
        if abs(R[n][n-1] - R[n][n]) < eps:
            return R[n][n]
        n += 1
 
from math import *
 
# En aquest exemple s’avalua la funció error erf(1).
print romberg(lambda t: 2/sqrt(pi)*exp(-t*t), 0, 1)

[edita] Exemple

Com a exemple s’intega la funció de Gauss des de 0 fins a 1, es a dir la funció error {\rm erf}(1)\doteq 0.842700792949715. La taula triangular es calcula file per fila i el càlcul s’acaba si els dos útims nombres de la última fila defereixen menys de 1E-8.

 0.77174333
 0.82526296  0.84310283
 0.83836778  0.84273605  0.84271160
 0.84161922  0.84270304  0.84270083  0.84270066
 0.84243051  0.84270093  0.84270079  0.84270079  0.84270079

El resultat de la cantonada de baix a la dreta de la taula triangular és exacte en tots els dígits que es presenten. És notable que aquest resultat s’ha obtingut a partir de les menys exactes aproximacions obtingudes pel mètode trapezial de la primera columna de la taula triangular.

[edita] Referències

[edita] Enllaços externs



aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -