freeCodeCamp/guide/portuguese/mathematics/simpsons-rule/index.md

3.9 KiB

title localeTitle
Simpson's Rule Regra de Simpson

Regra de Simpson

Na análise numérica, a regra de Simpson é um método para integração numérica (aproximação numérica de integrais definidas) .

A regra de Simpson aproxima a integração da forma,

Onde,

  • f(x) é chamado o integrando
  • a = limite inferior de integração
  • b = limite superior de integração

Regra 1/3 de Simpson

Simpson's Rule

Como mostrado no diagrama acima, o integrando f(x) é aproximado por um polinômio de segunda ordem; o interpolante quadrático sendo P(x) .

A aproximação segue,

Substituindo (ba)/2 como h , obtemos,

Como você pode ver, há um fator de 1/3 na expressão acima. É por isso que se chama Regra 1/3 de Simpson .

Se uma função é altamente oscilatória ou não possui derivativos em certos pontos, a regra acima pode falhar em produzir resultados precisos. Uma maneira comum de lidar com esse problema é dividindo o intervalo [a,b] em vários subintervalos pequenos. A regra de Simpson é então aplicada a cada subintervalo, com os resultados sendo somados para produzir uma aproximação para a integral ao longo de todo o intervalo. Esse tipo de abordagem é chamado de regra do composto Simpson .

Suponha que o intervalo [a,b] seja dividido em n subintervalos, com n sendo um número par. Então, a regra do composto Simpson é dada por,

onde x j = a + jh para j = 0,1,…, n-1, n com h = (ba) / n ; em particular, x 0 = a e x n = b .

Exemplo:

Aproxima o valor da integral dada abaixo, tomando n = 8.

A implementação da Regra 1/3 de Simpson em C ++ é a seguinte:

#include<iostream> 
 #include<cmath> 
 using namespace std; 
 
 float f(float x) 
 { 
    return x*sin(x);    //Define the function f(x) 
 } 
 
 float simpson(float a, float b, int n) 
 { 
    float h, x[n+1], sum = 0; 
    int j; 
    h = (ba)/n; 
 
    x[0] = a; 
 
    for(j=1; j<=n; j++) 
    { 
        x[j] = a + h*j; 
    } 
 
    for(j=1; j<=n/2; j++) 
    { 
        sum += f(x[2*j - 2]) + 4*f(x[2*j - 1]) + f(x[2*j]); 
    } 
 
    return sum*h/3; 
 } 
 
 int main() 
 { 
    float a,b,n; 
    a = 1;      //Enter lower limit a 
    b = 4;      //Enter upper limit b 
    n = 8;      //Enter step-length n 
    if (n%2 == 0) 
        cout<<simpson(a,b,n)<<endl; 
    else 
        cout<<"n should be an even number"; 
    return 0; 
 } 

Regra 3/8 de Simpson

A regra 3/8 de Simpson é semelhante à regra de 1/3 de Simpson. A única diferença é que, aqui, o interpolante é um polinômio cúbico. A regra 3/8 é duas vezes mais precisa que a regra 1/3, mas usa mais um valor de função.

A regra 3/8 de Simpson afirma:

Substituindo (ba)/3 como h , obtemos,

A regra 3/8 de Simpson para n intervalos (n deve ser um múltiplo de 3):

onde x j = a + jh para j = 0,1,…, n-1, n com h = (ba) / n ; em particular, x 0 = a e x n = b .

Mais Informações:

  1. Regra de Simpson
  2. Regra 1/3 de Simpson