Método de Romberg

Origem: Wikipédia, a enciclopédia livre.

Em Análise numérica, o Método de Romberg é usado para estimar a integral definida

pela aplicação da Extrapolação de Richardson repetidamente sobre a regra do trapézio ou a regra do retângulo (regra do ponto médio). As estimativas geram a ordenação triangular. O Método de Romberg é uma Fórmula de Newton-Cotes, ela avalia o integrante em pontos igualmente espaçados. O integrante deve ter derivadas contínuas apesar de que resultados razoavelmente bons podem ser obtidos se existem apenas algumas derivadas. Se for possível avaliar o integrante em pontos igualmente espaçados, então outros métodos, como Quadratura Gaussiana e Quadratura de Clenshaw-Curtis são, geralmente, mais precisas.

O método foi batizado em homenagem a Werner Romberg (1909-2003), que publicou o método em 1955.

Método[editar | editar código-fonte]

Usando

O método pode ser definido da seguinte maneira:

ou

onde

Em big o notation, o erro para R(nm) é (Mysovskikh 2002):

A extrapolação "zeroeth, R(n, 0), é equivalente a regra do trapézio, com 2n + 1 pontos; a primeira extrapolação R(n, 1), é equivalente a Regra de Simpson com 2n + 1 pontos. A segunda extrapolação, R(n, 2), é equivalente a Regra de Boole com 2n + 1 pontos. Demais extrapolações diferem das Fórmulas de Newton-Cotes. Em particular, demais Extrapolações de Romberg expandem na regra de Boole, de maneira suave, modificando pesos em taxas, de maneira similar à regra de Boole. De maneira oposta, demais métodos de Newton-Cotes produzem crescentes diferenças de pesos, levando, eventualmente, a grandes pesos positivos e negativos.Este é um indicativo de como Métodos de Newton-Cotes, para interpolações polinomiais de grande grau, falham em convergir para muitas integrais, enquanto a Integração de Romberg é mais estável.

Quando as avaliações da função são dispendiosas, pode ser preferível substituir a interpolação polinomial de Richardson pela interpolação racional proposta por Bulirsch & Stoer (1967).

Exemplo geométrico[editar | editar código-fonte]

Para estimar a área sob uma curva, a regra trapezoidal é aplicada em um intervalo, após em dois intervalos, em quatro intervalos e assim consecutivamente.

Um intervalo (Aumentar)
Dois intervalos
Quatro intervalos
Oito intervalos

Após obter as estimativas pela regra dos trapézios, aplica-se a extrapolação de Richardson:

  • Para a primeira interação, as estimativas de dois intervalos e de um intervalo são usadas na fórmula (4 X (Mais precisa) - (Menos precisa))/3. A mesma fórmula é então utilizada para comparar as estimativas de quatro e de dois intervalos, e de maneira análoga, para estimativas de maiores intervalos.
  • Para a segunda interação, os valores da primeira interação são usados na fórmula (16(Mais precisa)-Menos precisa)/15.
  • A terceira interação utiliza a próxima potência de 4:(64 (Mais precisa) - Menos precisa)/63 dos valores derivados da segunda interação.
  • Repete-se a operação até que se obtenha uma única estimativa.
Número de Intervalos Estimativas trapezoidais Primeira Interação Segunda Interação Terceira Interação
(4MA-ME)/3* (16MA-ME)/15 (64MA-ME)/63
1 0 (4*480-0)/3 = 640 (16*880-640)/15 =896 (64*1015.11-896)/63 = 1017.002
2 480 (4*780-480)/3 = 880 (16*1006.67-880)/15 = 1015.11..
4 780 (4*950-780)/3 =1006.666..
8 950
  • MA: Mais precisa; ME: Menos precisa

Exemplo[editar | editar código-fonte]

Como exemplo, a Função Gaussiana é integrada de 0 a 1, erro da função erf(1) ≈ 0.842700792949715. A distribuição triangular é calculada célula a célula e o processo é terminado quando as duas últimas entradas diferem menos de 10−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

O resultado no canto inferior direito da distribuição triangular é preciso até os dígitos mostrados. Destaca-se que este resultado deriva de aproximações menos precisas, obtidas pela regra dos trapézios, na primeira coluna da distribuição triangular.

Implementação[editar | editar código-fonte]

Segue um exemplo de uma implementação computacional do Método de Romberg ( em linguagem C). São necessários um vetor e uma variável, bem como uma rotina de trapézios:

 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #define MAX 6

int main()
{
    double s[MAX];
    int i,k;
    double var ;
    for (i = 1; i< MAX; i++)
        s[i] = 1;
 
    for (k=1; k< MAX; k++)
    {
        for (i=1; i <=k; i++)
        {
            if (i==1)
            {
                var = s[i];
                s[i] = Trap(0, 1, pow(2, k-1));     // Rotina de trapézios
            }                                       // Integração de 0 a 1
                                                    /* pow() é o número de sub-divisões*/
            else
            {
                s[k]= ( pow(4 , i-1)*s[i-1]-var )/(pow(4, i-1) - 1); 
                                                                 
                var = s[i];
                s[i]= s[k];  
            }
         }

        for (i=1; i <=k; i++)
            printf ("  %f  ", s[i]);

        printf ("\n");
    }

    return 0;
}

Referências[editar | editar código-fonte]

  • Este artigo foi inicialmente traduzido, total ou parcialmente, do artigo da Wikipédia em inglês cujo título é «Romberg's method».

Ligações externas[editar | editar código-fonte]