Romberg utilise intergration trapenzoidal pour augmenter la précision du calcul d'une région. Il construit une matrice en utilisant la règle de trapenzoidal étend alors de calculer une réponse plus précise.
Le script i ai fait pour la méthode des trapèzes est au lien suivant. Le script pour l'intégration de Romberg a le script trpezoidal intégré dans le calcul de la première colonne
>>> trapézoïdale règle d'intégration numérique -.
Scripts MATLAB
La première colonne est calculée en utilisant la règle de trapenzoidal pour l'intégration où le nombre de zones de la fonction est divisé en augmentation par 2 à chaque fois:
Ligne 1: n = 1, Row 2: n = 2, Ligne 3: n = 4, Row 4: n = 8 ... 16 ... 32 ...
En ce qui concerne les autres colonnes, elles sont calculées en utilisant les valeurs de la colonne vers la gauche.
R (i, j) = ((j ^ 4) -R (i, j-1) - R (i-1, j-1)) /((^ 4 j) -1)
R (1,1) = (4 * R (1,0) - R (0,0)) /(4-1)
= (4 (0,898904) - 0,888511) /3
= 0,902368
>> Romberg ('sin (x) /x', 1,3,4)
= matrice
,888510987494519 0 0 0 0 0 ,898904207160100 ,902368613715294 0,901644861268860 0,902558412638446 0,902571065899989 0 0,902337806742469 0,902568788567005 0,902569480295576 0,902569455127252
ans =
0,902569455127252
continueing bas, la réponse la plus précise est celui en bas à droite
Matlab Script
fonction I = Romberg (f_str, a, b, n)% l'intégration ROMBERG Romberg règle.% I = ROMBERG (F_STR, A, B, N) retourne le Romberg intégration rapprochement% pour l'intégrale de f ( x) de x = x = A à B, à n couches, où% F_STR est la représentation de chaîne de f. Affiche également la matrice utilisée pour calculer le% inegral
matrice = zéros (n);.
G = inline (f_str);
Si (rem (n, 1) == 0) pour ii = 1: n h = (ba) /(2 ^ (ii-1)); matrice (ii, 1) = matrice (ii, 1) + g (a);
pour kk = (a + h): h: (bh) matrice (ii, 1) = matrice (ii, 1) + 2 * g (kk); End of
matrice (ii, 1) = matrice (ii, 1) + g (b); matrice (ii, 1) = matrice (ii, 1) * h /2; endfor jj = 2: n pour ii = JJ: n matrice (ii, jj) = ((4 ^ (JJ-1)) * matrice (ii, jj-1) -MATRIX (ii-1, JJ-1)) /((4 ^ (JJ-1)) - 1); endend
disp autre ('de nombre de couches requises pour être un Integer') endmatrix = matrixI = matrice (n, n);
< p >>>>