int2d 求積法および立体求積法により2次元積分を定義

## 呼び出し手順

    [I,err]=int2d(X,Y,f [,params])

## 引数

X

  N個の三角形の頂点の横座標軸の値を有する3 行 N 列の配列.

Y

  N個の三角形の頂点の縦座標軸の値を有する3 行 N 列の配列.

f

  被積分関数 `f(u,v)`を定義する 外部 (関数またはリストまたは文字列)

params

  実数ベクトル `[tol, iclose, maxtri, mevals, iflag]` .デフォルト値は `[1.d-10, 1, 50, 4000, 1]` .

  tol

    誤差の境界の指定値. `iflag=0`の場合, `tol` は 相対誤差の境界として解釈されます; `iflag=`1の場合, 絶対誤差の境界と解釈されます.

  iclose

    LQM0 または LQM1の選択を定義する積分パラメータ. `iclose=1`の場合, LQM1 が使用されます. `iclose`がその他の値の場合, LQM0 が使用されます. LQM0 は三角形の内部の点における値のみ関数の値を使用します. LQM1 は通常 LQM0 より正確ですが, 三角形の境界点を含む より多くの点で被積分関数を評価します. 通常,被積分関数が三角形の境界において特異とならない限り, LQM1 を使用するのが良いでしょう.

  maxtri

    領域の最後の三角形分割における三角形の最大数

  mevals

    許容される関数評価の回数の最大値. この値は, LQM1の場合には94*`maxtri`未満, LQM0の場合には56*`maxtri`未満 とした場合にのみ計算負荷を制限する効果があります.

  iflag

I

  積分値

err

  誤差の推定値

## 説明

`int2d` は, `n`個の三角形からなる領域において 関数`f`の2次元積分を計算します. 全体の推定誤差が得られ,このサブルーチンへの入力として指定された 許容誤差 `tol`と比較されます. 許容誤差は`iflag`の入力値に基づき 相対または絶対誤差として扱われます. 'ローカルな求積モジュール'が 各入力三角形に適用され,積分の合計値が推定され, 誤差の合計値が計算されます. ローカルな求積モジュールは,サブルーチン LQM0 または サブルーチン LQM1のどちらかで, 入力変数`iclose`の値によりどちらを 使うかが定義されます.

誤差推定値の合計が許容誤差を超える場合, 絶対誤差が最大となる三角形は最も長い辺の中点で 2つの三角形に分割されます. この後,ローカルな求積モジュールが分割された各三角形に 適用され積分値と誤差の新たな推定値が得られます. この処理は,(1)許容誤差の制約が満たされるか, (2)生成される三角形の数が入力パラメータ`maxtri` を超えるか,(3)被積分関数を評価した数が入力パラメータ `mevals`を超えるか,もしくは(4) 丸め誤差が結果を汚染し始めたとこの関数が検知した場合, まで繰り返されます.

## 例

    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] で被積分関数を計算します

## 参照

- intc
- intl
- int3d
- intg
- mesh