luizaspan icon

[PROVA FSC_COMP] Integração Numérica (Trapézio Otimizado)

luizaspan | PRO | 11/03/15 12:09:30 PM UTC | 0 ⭐ | 799 👁️ | Never ⏰ | []
C |

820 B

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <math.h>
 
#define del 1e-5
 
double f(double x)
{
    return 1/x; // função a ser integrada
}
 
int main(void)
{
    int N = 10;
    double h, I, Iold, eps;
 
    // ------------------------- I_1 -------------------------
 
    int i;
    double soma=0.0f,a=0.1;
 
    h=(1.0-a)/N;
 
    for (i=0;i<N;i++)
    {
        double x1 = a + h*i, x2= a + h*(i+1);
        soma += (h/2)*(f(x1) + f(x2));
    }
 
    I = soma;
 
    // ------------------------- END -------------------------
 
    do {
        Iold = I;
        N = 2*N;
        h = h/2; // otimizando!
 
        double soma = 0; // importante zerar somaaa!!!
 
        for(i = 1; i < N; i += 2) 
        {
            soma += f(a + i*h);
        }
 
        I = 0.5*Iold + h*soma;
 
        eps = 1.0/3 * fabs(I - Iold);
 
        printf("%d %e\n", N, eps);
    } while (eps > del);
 
    return 0;
}
 
// erro = 1/12 * h^2 * [f'(a) - f'(b)]

Comments