segunda-feira, 7 de outubro de 2019
Calculando uma integral com inttrap e intsplin
Muitos problemas requerem o cálculo de integrais definidas em um intervalo definido $(a,b)$. Algumas vezes esse cálculo é bem simples, em outros uma solução analítica não é possível. Se a função for contínua poderemos usar os comandos inttrap e intsplin do Scilab. O inttrap usa a regra dos trapézios repetida e é computacionalmente mais simples e menos preciso que o intsplin.
Vejamos um exemplo simples. A integral da função $y(t) = sin( \pi t)$ no intervalo $(0, 1)$ resulta no valor $\frac{2}{\pi}$. Temos que definir o passo do tempo $t$. Podemos, por exemplo, fazer o passo igual a $1/10$: t = 0:0.1:1, código Scilab é:
clc;
t = 0:0.1:1;
y = sin(%pi * t);
Inty1 = inttrap(t,y);
Inty2 = intsplin(t,y);
Intt = 2/%pi;
erro1 = 100*abs(Inty1 - Intt)/Intt;
erro2 = 100*abs(Inty2 - Intt)/Intt;
disp([Inty1, erro1, Inty2, erro2]);
Resultando em:
0.6313752 0.8238231 0.6366199 0.0000138
Claramente, o resultado que obtemos com o comando intsplin é muito superior. Naturalmente, se o passo que adotamos para o "tempo" for reduzido (ex: 0,05), os erros serão ainda menores. Um desafio - calcular a integral abaixo:
\[ \int_0^{\infty} \frac{sin(\pi t)}{\pi t} dt\]
Obs: existem dois problemas no cálculo numérico acima: a divisão por zero e o "infinito" na integral. Como contornar esses problemas?
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário