<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="int2d" xml:lang="ja">
    <refnamediv>
        <refname>int2d</refname>
        <refpurpose>求積法および立体求積法により2次元積分を定義</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>
            [I, err] = int2d(X, Y, f)
            [I, err] = int2d(X, Y, f, params)
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>引数</title>
        <variablelist>
            <varlistentry>
                <term>X</term>
                <listitem>
                    <para>
                        N個の三角形の頂点の横座標軸の値を有する3 行 N 列の配列.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>Y</term>
                <listitem>
                    <para>
                        N個の三角形の頂点の縦座標軸の値を有する3 行 N 列の配列.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>f</term>
                <listitem>
                    <para>
                        被積分関数 <literal>f(u,v)</literal>を定義する
                        外部 (関数またはリストまたは文字列)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>params</term>
                <listitem>
                    <para>
                        実数ベクトル <literal>[tol, iclose, maxtri, mevals,
                            iflag]
                        </literal>
                        .デフォルト値は <literal>[1.d-10, 1, 50, 4000,
                            1]
                        </literal>
                        .
                    </para>
                    <variablelist>
                        <varlistentry>
                            <term>tol</term>
                            <listitem>
                                <para>
                                    誤差の境界の指定値.
                                    <literal>iflag=0</literal>の場合, <literal>tol</literal> は
                                    相対誤差の境界として解釈されます;
                                    <literal>iflag=</literal>1の場合,
                                    絶対誤差の境界と解釈されます.
                                </para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>iclose</term>
                            <listitem>
                                <para>
                                    LQM0 または LQM1の選択を定義する積分パラメータ.
                                    <literal>iclose=1</literal>の場合, LQM1 が使用されます.
                                    <literal>iclose</literal>がその他の値の場合,
                                    LQM0 が使用されます.
                                    LQM0 は三角形の内部の点における値のみ関数の値を使用します.
                                    LQM1 は通常 LQM0 より正確ですが, 三角形の境界点を含む
                                    より多くの点で被積分関数を評価します.
                                    通常,被積分関数が三角形の境界において特異とならない限り,
                                    LQM1 を使用するのが良いでしょう.
                                </para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>maxtri</term>
                            <listitem>
                                <para>
                                    領域の最後の三角形分割における三角形の最大数
                                </para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>mevals</term>
                            <listitem>
                                <para>
                                    許容される関数評価の回数の最大値.
                                    この値は,
                                    LQM1の場合には94*<literal>maxtri</literal>未満,
                                    LQM0の場合には56*<literal>maxtri</literal>未満
                                    とした場合にのみ計算負荷を制限する効果があります.
                                </para>
                            </listitem>
                        </varlistentry>
                        <varlistentry>
                            <term>iflag</term>
                            <listitem>
                                <para/>
                            </listitem>
                        </varlistentry>
                    </variablelist>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>I</term>
                <listitem>
                    <para>積分値</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>err</term>
                <listitem>
                    <para>誤差の推定値</para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>説明</title>
        <para>
            <literal>int2d</literal> は,
            <literal>n</literal>個の三角形からなる領域において
            関数<literal>f</literal>の2次元積分を計算します.
            全体の推定誤差が得られ,このサブルーチンへの入力として指定された
            許容誤差 <literal>tol</literal>と比較されます.
            許容誤差は<literal>iflag</literal>の入力値に基づき
            相対または絶対誤差として扱われます.
            'ローカルな求積モジュール'が
            各入力三角形に適用され,積分の合計値が推定され,
            誤差の合計値が計算されます.
            ローカルな求積モジュールは,サブルーチン LQM0 または
            サブルーチン LQM1のどちらかで,
            入力変数<literal>iclose</literal>の値によりどちらを
            使うかが定義されます.
        </para>
        <para>
            誤差推定値の合計が許容誤差を超える場合,
            絶対誤差が最大となる三角形は最も長い辺の中点で
            2つの三角形に分割されます.
            この後,ローカルな求積モジュールが分割された各三角形に
            適用され積分値と誤差の新たな推定値が得られます.
            この処理は,(1)許容誤差の制約が満たされるか,
            (2)生成される三角形の数が入力パラメータ<literal>maxtri</literal>
            を超えるか,(3)被積分関数を評価した数が入力パラメータ
            <literal>mevals</literal>を超えるか,もしくは(4)
            丸め誤差が結果を汚染し始めたとこの関数が検知した場合,
            まで繰り返されます.
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
X = [0,0 ; 1,1 ; 1,0];
Y = [0,0 ; 0,1 ; 1,1];
deff('z = f(x,y)', 'z = cos(x+y)')
[I,e] = int2d(X, Y, f)
// 正方形の区間 [0 1]x[0 1] で被積分関数を計算します
     ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="mesh2d">mesh2d</link>
            </member>
            <member>
                <link linkend="int3d">int3d</link>
            </member>
            <member>
                <link linkend="intg">intg</link>
            </member>
            <member>
                <link linkend="intl">intl</link>
            </member>
            <member>
                <link linkend="intc">intc</link>
            </member>
        </simplelist>
    </refsection>
</refentry>