# intg

integral definida

## Seqüência de Chamamento

    [v,err]=intg(a,b,f [,ea [,er])

## Parâmetros

a, b

  números reais

f

  função externa (função, lista ou string)

ea, er

  números reais

ea

  erro absoluto requerido no resultado. Valor padrão: 1.d-14.

er

  erro relativo requerido no resultado. Valor padrão: 1.d-8.

err

  erro absoluto estimado no resultado

## Descrição

`intg(a,b,f)` avalia a integral definida de `a` a `b` de `f(t)dt`. A função `f(t)` deve ser contínua.

Espera-se que a avaliação satisfaça à seguinte precisão: `abs(I-v)<= max(ea,er*abs(I))` onde I é o valor exato da integral.

`f` é uma função externa :

Se `f` é uma função, sua definição deve ser como segue: `y = f(t)`

Se `f` é uma lista, a lista deve ser como segue: `list(f,x1,x2,...)` onde `f` é uma função com seqüência de chamamento `f(t,x1,x2,...)`.

Se `f` é um string, ele se refere ao nome de uma função FORTRAN ou procedure C com dada seqüência de chamamento:

No caso FORTRAN, a seqüência de chamamento deve ser `double precision function f(x)` onde `x` tabém é um número de dupla precisão.

No caso C, a seqüência de chamamento é `double f(double *x)` .

## Exemplos

    //caso de função Scilab
    function y=f(x),y=x*sin(30*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
    exact=-2.5432596188;
    I=intg(0,2*%pi,f)
    abs(exact-I)

    //caso de função Scilab com parâmetros
    function y=f1(x,w),y=x*sin(w*x)/sqrt(1-((x/(2*%pi))^2)),endfunction
    I=intg(0,2*%pi,list(f1,30))
    abs(exact-I)

    // caso de código FORTRAN (compilador FORTRAN requerido)
    // escreve o código FORTRAN
    cd TMPDIR;
    F=['      double precision function ffun(x)'
       '      double precision x,pi'
       '      pi=3.14159265358979312d+0'
       '      ffun=x*sin(30.0d+0*x)/sqrt(1.0d+0-(x/(2.0d+0*pi))**2)'
       '      return'
       '      end'];
    mputl(F,fullfile(TMPDIR,'ffun.f'))

    // compile o código FORTRAN
    l=ilib_for_link('ffun',fullfile(TMPDIR,'ffun.f'),[],'f');

    // linking incremental
    link(l,'ffun','f')

    //integrando a função
    I=intg(0,2*%pi,'ffun')
    abs(exact-I)

    // caso de código C (compilador C requerido)
    // escreva o código C
    C=['#include <math.h>'
       'double cfun(double *x)'
       '{'
       '  double y,pi=3.14159265358979312;'
       '  y=*x/(2.0e0*pi);'
       '  return *x*sin(30.0e0**x)/sqrt(1.0e0-y*y);'
       '}'];
    mputl(C,fullfile(TMPDIR,'cfun.c'))

    // compile o código C
    l=ilib_for_link('cfun',fullfile(TMPDIR,'cfun.c'),[],'c');

    // linking incremental
    link(l,'cfun','c')

    //integrando a função
    I=intg(0,2*%pi,'cfun')
    abs(exact-I)

## Ver Também

- intc
- intl
- inttrap
- intsplin
- ode

## Funções Utilizadas

As rotinas associadas podem ser encontradas no diretório SCI/modules/differential_equations/src/fortran :

dqag0.f e dqags.f de quadpack