# int3d

integral definida 3d pelo método da quadratura e cubatura

## Seqüência de Chamamento

    [result,err]=int3d(X,Y,Z,f [,nf[,params]])

## Parâmetros

X

  um array 4 por `NUMTET` contendo as abscissas dos vértices dos `NUMTET` tetraedros.

Y

  um array 4 por `NUMTET` contendo as ordenadas dos vértices dos `NUMTET` tetraedros.

Z

  um array 4 por `NUMTET` contendo as terceiras coordenadas dos vértices dos `NUMTET` tetraedros.

f

  função externa (function, string ou lista) definindo o integrando `f(xyz,nf)`, onde `xyz` é o vetor das coordenadas de um ponto e nf os números das funções

nf

  o número da função a ser integrada (o padrão é 1)

params

  vetor de reais `[minpts, maxpts, epsabs, epsrel]` .O valor padrão é `[0, 1000, 0.0, 1.d-5]` .

  epsabs

    limite do erro absoluto desejado

  epsrel

    limite do erro relativo desejado

  minpts

    número mínimo de avaliações da função

  maxpts

    número máximo de avaliações da função. O número de avaliações da função sobre cada subregião é 43

result

  o valor da integral, ou vetor de valores da integral.

err

  estimativas do erro absoluto

## Descrição

A função calcula uma aproximação a um dado vetor de integrais definidas

    I  I  I (F ,F ,...,F )      dx(3)dx(2)dx(1),
              1  2      numfun

onde a região de integração são os NUMTET tetraedros e onde

    F = F (X(1),X(2),X(3)), J = 1,2,...,NUMFUN.
     J   J

uma estratégia globalmente adaptativa é aplicada para se computar aproximações `result(k)` esperando-se que satisfaça, para cada componente de I, à seguinte precisão: `ABS(I(K)-RESULT(K))<=MAX(EPSABS,EPSREL*ABS(I(K)))`

`int3d` repetidamente subdivide os tetraedros com maiores erros estimados e estima as integrais e os erros sobre os novos tetraedros até que a exigência de erro seja encontrada ou `MAXPTS` avaliações da função tenham sido feitas.

Uma regra de 43 pontos de integração com todos os pontos de avaliação dentro dos tetraedros é aplicada. A regra tem grau polinomial 8.

Se os valores dos parâmetros de entrada `EPSABS` ou `EPSREL` são suficientemente grandes, uma regra de integração é aplicada sobre cada tetraedro e os valores são aproximados para se fornecer as aproximações `RESULT(K)`. Nenhuma subdivisão posterior dos tetraedros será feita.

Quando `int3d` computa estimativas a um vetor de integrais, é dado tratamento igual a todos os componentes do vetor. Isto é, `I(Fj)` e `I(Fk)` para`j` diferente de `k`, são estimados com a mesma subdivisão da região de integração. Para integrais suficientemente semelhantes, podemos economizar tempo aplicando `int3d` a todos os integrando em uma chamada. Para integrais que variam continuamente em função de um parâmetro, as estimativas produzidas por `int3d` também irão variar continuamente quando a subdivisão é aplicada a todos os componentes. Este geralmente não será o caso quando componentes diferentes são tratados separadamente.

Por outro lado, este recurso deve ser utilizado com cautela quando os componentes diferentes da integral requerem claramente subdivisões diferentes.

## Referências

Rotina FORTRAN dcutet.f

## Exemplos

    X=[0;1;0;0];
    Y=[0;0;1;0];
    Z=[0;0;0;1];
    [RESULT,ERROR]=int3d(X,Y,Z,'int3dex')
    // computa o integrando exp(x*x+y*y+z*z) sobre o
    //tetraedro (0.,0.,0.),(1.,0.,0.),(0.,1.,0.),(0.,0.,1.)

     //integração sobre um cubo  -1<=x<=1;-1<=y<=1;-1<=z<=1

    //  fundo  -topo-    direita -esquerda- frente  -traseira-
    X=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
       -1,-1,   -1,-1,    1, 1,   -1,-1,   -1,-1,   -1,-1;
        1,-1,    1,-1,    1, 1,   -1,-1,    1,-1,    1,-1;
        1, 1,    1, 1,    1, 1,   -1,-1,    1, 1,    1, 1];
    Y=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
       -1,-1,   -1,-1,   -1, 1,   -1, 1,   -1,-1,    1, 1;
       -1, 1,   -1, 1,    1, 1,    1, 1,   -1,-1,    1, 1;
        1, 1,    1, 1,   -1,-1,   -1,-1,   -1,-1,    1, 1];
    Z=[ 0, 0,    0, 0,    0, 0,    0, 0,    0, 0,    0, 0;
       -1,-1,    1, 1,   -1, 1,   -1, 1,   -1,-1,   -1,-1;
       -1,-1,    1, 1,   -1,-1,   -1,-1,   -1, 1,   -1, 1;
       -1,-1,    1, 1,    1, 1,    1, 1,    1, 1,    1, 1];

    function v=f(xyz,numfun),v=exp(xyz'*xyz),endfunction
    [result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])

    function v=f(xyz,numfun),v=1,endfunction
    [result,err]=int3d(X,Y,Z,f,1,[0,100000,1.d-5,1.d-7])

## Ver Também

- intc
- intl
- int2d