<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="int3d" xml:lang="pt">
    <refnamediv>
        <refname>int3d</refname>
        <refpurpose>integral definida 3d pelo método da quadratura e
            cubatura
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Seqüência de Chamamento</title>
        <synopsis>
            [result, err] = int3d(X, Y, Z, f)
            [result, err] = int3d(X, Y, Z, f, nf)
            [result, err] = int3d(X, Y, Z, f, nf, params)
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Parâmetros</title>
        <variablelist>
            <varlistentry>
                <term>X</term>
                <listitem>
                    <para>
                        um array 4 por <literal>NUMTET</literal> contendo as abscissas
                        dos vértices dos <literal>NUMTET</literal> tetraedros.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Y</term>
                <listitem>
                    <para>
                        um array 4 por <literal>NUMTET</literal> contendo as ordenadas
                        dos vértices dos <literal>NUMTET</literal> tetraedros.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Z</term>
                <listitem>
                    <para>
                        um array 4 por <literal>NUMTET</literal> contendo as terceiras
                        coordenadas dos vértices dos <literal>NUMTET</literal>
                        tetraedros.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>f</term>
                <listitem>
                    <para>função externa (function, string ou lista) definindo o
                        integrando <literal>f(xyz,nf)</literal>, onde <literal>xyz</literal>
                        é o vetor das coordenadas de um ponto e nf os números das
                        funções
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nf</term>
                <listitem>
                    <para>o número da função a ser integrada (o padrão é 1)</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>params</term>
                <listitem>
                    <para>
                        vetor de reais <literal>[minpts, maxpts, epsabs, epsrel]
                        </literal>. O valor padrão é <literal>[0, 1000, 0.0, 1.d-5]
                        </literal>.
                    </para>
                    <variablelist>
                        <varlistentry>
                            <term>epsabs</term>
                            <listitem>
                                <para>limite do erro absoluto desejado</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>epsrel</term>
                            <listitem>
                                <para>limite do erro relativo desejado</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>minpts</term>
                            <listitem>
                                <para>número mínimo de avaliações da função</para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>maxpts</term>
                            <listitem>
                                <para>número máximo de avaliações da função. O número de
                                    avaliações da função sobre cada subregião é 43
                                </para>
                            </listitem>
                        </varlistentry>
                    </variablelist>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>result</term>
                <listitem>
                    <para>o valor da integral, ou vetor de valores da integral.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>err</term>
                <listitem>
                    <para>estimativas do erro absoluto</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Descrição</title>
        <para>A função calcula uma aproximação a um dado vetor de integrais
            definidas
        </para>
        <screen><![CDATA[
I  I  I (F ,F ,...,F )      dx(3)dx(2)dx(1),
          1  2      numfun
]]></screen>
        <para>onde a região de integração são os NUMTET tetraedros e onde</para>
        <screen><![CDATA[
F = F (X(1),X(2),X(3)), J = 1,2,...,NUMFUN.
 J   J
]]></screen>
        <para>uma estratégia globalmente adaptativa é aplicada para se computar
            aproximações <literal>result(k)</literal> esperando-se que satisfaça, para
            cada componente de I, à seguinte precisão:
            <literal>ABS(I(K)-RESULT(K))&lt;=MAX(EPSABS,EPSREL*ABS(I(K)))</literal>
        </para>
        <para>
            <literal>int3d</literal> 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
            <literal>MAXPTS</literal> avaliações da função tenham sido feitas.
        </para>
        <para>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.
        </para>
        <para>
            Se os valores dos parâmetros de entrada <literal>EPSABS</literal> ou
            <literal>EPSREL</literal> 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 <literal>RESULT(K)</literal>. Nenhuma
            subdivisão posterior dos tetraedros será feita.
        </para>
        <para>
            Quando <literal>int3d</literal> computa estimativas a um vetor de
            integrais, é dado tratamento igual a todos os componentes do vetor. Isto
            é, <literal>I(Fj)</literal> e <literal>I(Fk)</literal> para<literal>
                j
            </literal>
            diferente de <literal>k</literal>, são estimados com a mesma
            subdivisão da região de integração. Para integrais suficientemente
            semelhantes, podemos economizar tempo aplicando <literal>int3d</literal> a
            todos os integrando em uma chamada. Para integrais que variam
            continuamente em função de um parâmetro, as estimativas produzidas por
            <literal>int3d</literal> 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.
        </para>
        <para>Por outro lado, este recurso deve ser utilizado com cautela quando
            os componentes diferentes da integral requerem claramente subdivisões
            diferentes.
        </para>
    </refsection>
    <refsection>
        <title>Referências</title>
        <para>Rotina FORTRAN dcutet.f</para>
    </refsection>
    <refsection>
        <title>Exemplos</title>
        <programlisting role="example"><![CDATA[
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])
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Ver Também</title>
        <simplelist type="inline">
            <member>
                <link linkend="intc">intc</link>
            </member>
            <member>
                <link linkend="intl">intl</link>
            </member>
            <member>
                <link linkend="int2d">int2d</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
