要素内補間

**要素内補間**（ようそないほかん）とは、数値解析において要素の各節点の既知量から、要素内の値を補間して求めることをいう。この要素内補間は、内挿とも呼ばれることがある。要素内補間は、例えば地図の等高線、CAD、CAE、CGなど、要素が使用される図形処理において、要素内の任意の位置の値を計算する際にも使用される。

与えられた節点情報のみ（要素情報は使用しない）から補間する手法もあるが、これらは本説明に含まれない。

要素には、線分（2節点）、3角形（3節点）、4面体（4節点）などがある。

## 線分要素内の補間

### 全体座標系と局所座標系の関係
線分要素内の点***p*** は、節点***p***0, ***p***1 により
:\boldsymbol{p}=\boldsymbol{p}_0+(\boldsymbol{p}_1-\boldsymbol{p}_0)u
と表せる。ここで局所座標*u* は 0 u=\frac
である。直感的には、基点を *p*0 として、そこから *p*1 までの距離の比率 *u* で線分内の座標値 *p* を求めたことになる。
**u* = 0 の場合には点 *p* は *p*0 を示し、*u* = 1 の場合には *p*1 を示す。
*前述の表現は、直線のパラメトリックまたは、媒介変数*u* による定義と呼ばれることもある。

### 線形補間
全体座標系と局所座標系の関係と同様に、節点 ***p***0, ***p***1 での各値を *C*0, *C*1 とし線形補間すると、点 *p* での値 *C* は
:C=C_0+(C_1-C_0)u
と表せる。

### 計算例
節点***p***0 (5, 5, 0), ***p***1 (10, 10, 0) で各節点の値がそれぞれ*C*0 = 10, *C*1 = 20 の場合に、線分の中点***p*** (15/2, 15/2, 0) での値*C* は、
:u=\frac=0.5
より
:C=C_0+(C_1-C_0)u=15
になる。

## 3角形要素内の補間

### 局所座標系と全体座標系の変換
点 ***p***0 を原点とする、3角形で構成される局所座標系は、基底ベクトル
:\begin{align}
\boldsymbol{e}_u &= \boldsymbol{p}_1 - \boldsymbol{p}_0 \\
\boldsymbol{e}_v &= \boldsymbol{p}_2 - \boldsymbol{p}_0 \\
\end{align}
から得られ、全体座標系への変換行列は、点 ***p*** の局所座標系の座標を *u<sub>p</sub>*, *v<sub>p</sub>* 、全体座標系の座標を *x<sub>p</sub>*, *y<sub>p</sub>*, *z<sub>p</sub>* とすると以下の通りとなる。

: \boldsymbol{p} =  \boldsymbol{p}_0 + u_p\boldsymbol{e}_u + v_p\boldsymbol{e}_v
または成分で表せば、
:
\left(
\begin{array}{c}
x_p \\
y_p \\
z_p \\
\end{array}
\right)
=
\left(
\begin{array}{c}
x_{p0} \\
y_{p0} \\
z_{p0}
\end{array}
\right)
+
\left(
\begin{array}{ccc}
x_{eu} & x_{ev} \\
y_{eu} & y_{ev} \\
z_{eu} & z_{ev}
\end{array}
\right)

\left(
\begin{array}{c}
u_p \\
v_p
\end{array}
\right)


### 線形補間
節点***p***0, ***p***1, ***p***2 での各値を*C*0, *C*1, *C*2とすると、要素内の点***p*** での値*C* は
:C=C_0+u_p(C_1-C_0)+v_p(C_2-C_0)
と表せる。ここで*u<sub>p</sub>*, *v<sub>p</sub>* は点***p*** の局所座標系での座標である。

**u<sub>p</sub>* = 0, *v<sub>p</sub>* = 0 の場合には、*C* = *C*0 （***p***0 の値）を示す。
**u<sub>p</sub>* = 1, *v<sub>p</sub>* = 0 の場合には、*C* = *C*1 （***p***1 の値）を示す。
**u<sub>p</sub>* = 0, *v<sub>p</sub>* = 1 の場合には、*C* = *C*2 （***p***2 の値）を示す。
**u<sub>p</sub>*, *v<sub>p</sub>* &ge; 0 かつ *u<sub>p</sub>* + *v<sub>p</sub>* &le; 1 の場合には、点***p*** は要素の内部に存在する。

### 計算例

節点座標が***p***0 (0, 0, 0), ***p***1 (5, 0, 0), ***p***2 (5, 5, 0) とし、各節点の既知量は、それぞれ*C*0 = 10, *C*1 = 20,*C*2 = 30とすると、

#重心位置での値
#:重心位置***p***G の座標は (10/3, 5/3, 0) で、全体座標系から局所座標系での座標を求めると、(*u*G, *v*G ) = (1/3, 1/3) となる。これを補間式にあてはめると *C* G = 20 となる。重心位置のため、平均値 (*C*0 + *C*1 + *C*2 ) / 3と同じである。
#***p***1 と***p***2 の中点位置座標での値
#:***p***1 と***p***2 の中点位置***p***12 の全体座標系での座標は (5, 5/2, 0) で、全体座標系から局所座標系での座標 (*u*12, *v*12 ) を求めると、(1/2, 1/2) となる。これを補間式にあてはめると *C*12 = 25 となる。

## 4面体要素内の補間

### 局所座標系と全体座標系の変換
4面体で構成される局所座標系は、基底ベクトル (***e'''<sub>u</sub>'', ***e**<sub>v</sub>'', ***e*'w* ) から得られ、全体座標系への変換行列は、局所座標系の座標を*up*, *vp*, *wp* と置くと以下の通りとなる。

:<math> \boldsymbol{p} = \boldsymbol{p}_0 + u_p\boldsymbol{e}_u + v_p\boldsymbol{e}_v + w_p\boldsymbol{e}_w </math>
または成分で表せば、
:<math>
\left(
\begin{array}{c}
x_p \\
y_p \\
z_p \\
\end{array}
\right)
=
\left(
\begin{array}{c}
x_{p0} \\
y_{p0} \\
z_{p0}
\end{array}
\right)
+
\left(
\begin{array}{ccc}
x_{eu} & x_{ev} & x_{ew} \\
y_{eu} & y_{ev} & y_{ew} \\
z_{eu} & z_{ev} & z_{ew}
\end{array}
\right)

\left(
\begin{array}{c}
u_p \\
v_p \\
w_p
\end{array}
\right)
</math>

ただし
:<math>\begin{align}
&\boldsymbol{e}_u = \boldsymbol{p}_1 - \boldsymbol{p}_0 \\
&\boldsymbol{e}_v = \boldsymbol{p}_2 - \boldsymbol{p}_0 \\
&\boldsymbol{e}_w = \boldsymbol{p}_3 - \boldsymbol{p}_0
\end{align}</math>
である。

全体座標系から局所座標系への変換は、局所座標系から全体座標系への変換行列の[[逆行列]]を求めることで得られる。
:<math>
\left(
\begin{array}{c}
u_p \\
v_p \\
w_p
\end{array}
\right)
=
\left(
\begin{array}{ccc}
x_{eu} & x_{ev} & x_{ew} \\
y_{eu} & y_{ev} & y_{ew} \\
z_{eu} & z_{ev} & z_{ew} 
\end{array}
\right) ^{-1}

\left(
\left(
\begin{array}{c}
x_p \\
y_p \\
z_p \\
\end{array}
\right)
-
\left(
\begin{array}{c}
x_{p0} \\
y_{p0} \\
z_{p0}
\end{array}
\right)
\right)
</math>

===線形補間===
節点***p***<sub>0</sub>, ***p***<sub>1</sub>, ***p***<sub>2</sub>, ***p***<sub>3</sub> での各値を*C*<sub>0</sub>, *C*<sub>1</sub>, *C*<sub>2</sub>, *C*<sub>3</sub> とすると、点***p*** の値*C* は
:<math>C=C_0+u_p(C_1-C_0)+v_p(C_2-C_0)+w_p(C_3-C_0)</math>
と表せる。ここで*up*, *vp*, *wp* は点***p*** の局所座標系での座標である。

**u* = 0, *v* = 0, *w* = 0 の場合には、*C* = *C*<sub>0</sub> （***p***<sub>0</sub> の値）を示す。
**u* = 1, *v* = 0, *w* = 0 の場合には、*C* = *C*<sub>1</sub> （***p***<sub>1</sub> の値）を示す。
**u* = 0, *v* = 1, *w* = 0 の場合には、*C* = *C*<sub>2</sub> （***p***<sub>2</sub> の値）を示す。
**u* = 0, *v* = 0, *w* = 1 の場合には、*C* = *C*<sub>3</sub> （***p***<sub>3</sub> の値）を示す。
**u*, *v*, *w* &ge; 0 かつ *u* + *v* + *w* &le; 1 の場合には、点***p*** は要素の内部に存在する。


=== 計算例 ===
節点座標が***p***<sub>0</sub> (0, 0, 0), ***p***<sub>1</sub> (5, 0, 0), ***p***<sub>2</sub> (5, 5, 0), ***p***<sub>3</sub> (0, 0, 5)、各節点の既知量はそれぞれ*C*<sub>0</sub> = 10, *C*<sub>1</sub> = 20, *C*<sub>2</sub> = 30, *C*<sub>3</sub> = 40 とする。

このとき、重心位置***p***<sub>G</sub> での座標は、(5/2, 5/4, 5/4) で、全体座標系から局所座標系での座標を求めると、 (*u*<sub>G</sub>, *v*<sub>G</sub>, *w*<sub>G</sub> ) = (1/4, 1/4, 1/4)となる。これを補間式にあてはめると*C* = 25 となる。重心位置のため、平均値 (*C*<sub>0</sub> + *C*<sub>1</sub> + *C*<sub>2</sub> + *C''3) / 4 と同じになる。

## 関連項目
*CAD
*CAE
*CG
*計算科学
*シミュレーション
*数値解析