反復法 一般的に、漸進反復近似 (PIA) は、補間スキームと近似スキームに分類できます。[ 2 ] 補間アルゴリズムでは、制御点の数はデータ点の数と同じです。近似アルゴリズムでは、制御点の数はデータ点の数より少なくなる場合があります。具体的には、局所 PIA、[ 12 ] 暗黙的 PIA、[ 11 ] フェアリング PIA、[ 13 ] および等幾何最小二乗漸進反復近似 (IG-LSPIA) [ 14 ] など、等幾何解析 問題を解くために特化した代表的な反復法があります。[ 15 ]
補間方式:PIA PIAの補間スキーム 左上:データ点と初期制御ポリゴン(ここでは、初期制御点がデータ点として扱われます)。右上:初期曲線と差分ベクトル。左下:差分ベクトルを古い制御点に追加することで、新しい制御ポリゴンが生成されます。右下:新しい制御ポリゴンと新しい曲線(紫色)。 PIAの補間アルゴリズムでは、[ 1 ] [ 3 ] [ 9 ] [ 16 ] すべてのデータポイントが制御点として使用されます。さまざまな形状の曲線や曲面に対するPIA反復フォーマットの説明を容易にするために、次の式が統一的に使用されます。 P ( t ) = ∑ 私 = 1 n P 私 B 私 ( t ) 。 {\displaystyle \mathbf {P} (\mathbf {t} )=\sum _{i=1}^{n}\mathbf {P} _{i}B_{i}(\mathbf {t} ).} 例えば:
もしP ( t ) {\displaystyle \mathbf {P} (\mathbf {t} )} Bスプライン曲線の場合、t \displaystyle \mathbf {t} } スカラーです。B 私 ( t ) {\displaystyle B_{i}(t)} はBスプライン基底関数であり、P 私 \displaystyle \mathbf {P} _{i}} は制御点を表します。[ 8 ] もしP ( t ) {\displaystyle \mathbf {P} (\mathbf {t} )} Bスプラインパッチはn u × n v {\displaystyle n_{u}\times n_{v}} 制御点、そしてt = ( u 、 v ) {\displaystyle \mathbf {t} =(u,v)} そしてB 私 ( t ) = N 私 ( u ) N 私 ( v ) {\displaystyle B_{i}(\mathbf {t} )=N_{i}(u)N_{i}(v)} 、 どこN 私 ( u ) {\displaystyle N_{i}(u)} そしてN 私 ( v ) {\displaystyle N_{i}(v)} Bスプライン基底関数です。[ 8 ] もしP ( t ) {\displaystyle \mathbf {P} (\mathbf {t} )} は、3変数Bスプラインソリッドであり、n u × n v × n w {\displaystyle n_{u}\times n_{v}\times n_{w}} 制御点、そしてt = ( u 、 v 、 w ) {\displaystyle \mathbf {t} =(u,v,w)} そしてB 私 ( t ) = N 私 ( u ) N 私 ( v ) N 私 ( w ) {\displaystyle B_{i}(\mathbf {t} )=N_{i}(u)N_{i}(v)N_{i}(w)} 、 どこN 私 ( u ) {\displaystyle N_{i}(u)} 、N 私 ( v ) {\displaystyle N_{i}(v)} 、 そしてN 私 ( w ) {\displaystyle N_{i}(w)} これらはBスプライン基底関数である。[ 17 ] さらに、これはNURBS曲線と曲面、Tスプライン曲面、三角形ベルンシュタイン・ベジェ曲面にも適用できます。[ 18 ]
順序付けられたデータセットが与えられた場合Q 私 {\displaystyle \mathbf {Q} _{i}} パラメータ付きt 私 t_i 満足t 1 < t 2 < ⋯ {\displaystyle t_{1}<t_{2}<\cdots } のために私 = 1 、 2 、 ⋯ 、 n {\displaystyle i=1,2,\cdots ,n} 初期フィッティング曲線は次のとおりです。[ 1 ] P ( 0 ) ( t ) = ∑ 私 = 1 n P 私 ( 0 ) B 私 ( t ) {\displaystyle \mathbf {P} ^{(0)}(t)=\sum _{i=1}^{n}\mathbf {P} _{i}^{(0)}B_{i}(t)} 初期フィッティング曲線の初期制御点P 私 ( 0 ) {\displaystyle \mathbf {P} _{i}^{(0)}} ランダムに選択できます。k {\displaystyle k} 番目の反復では、k {\displaystyle k} フィッティング曲線P ( k ) ( t ) {\displaystyle \mathbf {P} ^{(k)}(t)} によって生成されます
構築するために( k + 1 ) {\displaystyle (k+1)} st曲線では、まず差分ベクトル を計算します。 Δ 私 ( k ) = Q 私 − P ( k ) ( t 私 ) 、 私 = 1 、 2 、 ⋯ 、 n {\displaystyle \mathbf {\Delta } _{i}^{(k)}=\mathbf {Q} _{i}-\mathbf {P} ^{(k)}(t_{i}),\quad i=1,2,\cdots ,n} そしてそれらを使用して制御点を更新します P 私 ( k + 1 ) = P 私 ( k ) + Δ 私 ( k ) {\displaystyle \mathbf {P} _{i}^{(k+1)}=\mathbf {P} _{i}^{(k)}+\mathbf {\Delta } _{i}^{(k)}} これは( k + 1 ) {\displaystyle (k+1)} st フィッティング曲線: P ( k + 1 ) ( t ) = ∑ 私 = 1 n P 私 ( k + 1 ) B 私 ( t ) 。 \displaystyle \mathbf {P} ^{(k+1)}(t)=\sum _{i=1}^{n}\mathbf {P} _{i}^{(k+1)}B_{i}(t).} このようにして、一連の曲線が得られます。P ( α ) ( t ) 、 α = 0 、 1 、 2 、 ⋯ {\textstyle \mathbf {P} ^{(\alpha )}(t),\alpha =0,1,2,\cdots } これは、与えられたデータ点を補間する極限曲線に収束します。[ 1 ] [ 9 ] すなわち、 リム α → ∞ P ( α ) ( t 私 ) = Q 私 、 私 = 1 、 2 、 ⋯ 、 n 。 {\displaystyle \lim \limits _{\alpha \rightarrow \infty }\mathbf {P} ^{(\alpha )}(t_{i})=\mathbf {Q} _{i},\quad i=1,2,\cdots ,n.}
近似スキーム:LSPIA 近似スキーム:LSPIA 左上:データポイントQ 私 {\displaystyle \mathbf {Q} _{i}} (青い円)、サブセットから構築された初期制御ポリゴン(緑の線)Q {\displaystyle \mathbf {Q} } 、および初期フィッティング曲線P ( 0 ) ( t ) {\displaystyle \mathbf {P} ^{(0)}(t)} 右上:差分ベクトルδ 私 ( k ) {\displaystyle {\boldsymbol {\delta }}_{i}^{(k)}} データポイントと差分ベクトルについてΔ j ( k ) {\displaystyle \mathbf {\Delta } _{j}^{(k)}} コントロールポイント用。下:新しいコントロールポリゴン(紫色の線)は、追加することで生成されます。Δ j ( k ) {\displaystyle \mathbf {\Delta } _{j}^{(k)}} 古い制御点に戻し、次に次の適合曲線を作成します。P ( 1 ) ( t ) {\displaystyle \mathbf {P} ^{(1)}(t)} (紫色の曲線) Bスプライン曲線および曲面フィッティング問題に対して、DengとLinは最小二乗漸進反復近似法 (LSPIA)を提案した[ 10 ] [ 19 ]。 この方法では、制御点の数がデータ点の数よりも少なくなり、大規模なデータフィッティング問題により適している[ 10 ] 。
存在すると仮定するm {\displaystyle m} データポイントとn {\displaystyle n} 制御ポイントでは、n ≤ m {\displaystyle n\leq m} 式(1 )から始め、k {\displaystyle k} th フィッティング曲線として P ( k ) ( t ) = ∑ j = 1 n P j ( k ) B j ( t ) 。 {\displaystyle \mathbf {P} ^{(k)}(t)=\sum _{j=1}^{n}\mathbf {P} _{j}^{(k)}B_{j}(t)。} 生成するために( k + 1 ) {\displaystyle (k+1)} フィッティング曲線を作成するために、まずデータ点の差分ベクトルを計算します[ 10 ] [ 19 ] δ 私 ( k ) = Q 私 − P ( k ) ( t 私 ) 、 私 = 1 、 2 、 ⋯ 、 m {\displaystyle {\boldsymbol {\delta }}_{i}^{(k)}=\mathbf {Q} _{i}-\mathbf {P} ^{(k)}(t_{i}),\quad i=1,2,\cdots ,m} そして、制御点の差分ベクトル Δ j ( k ) = ∑ 私 ∈ 私 j c 私 B j ( t 私 ) δ 私 ( k ) ∑ 私 ∈ 私 j c 私 B j ( t 私 ) 、 j = 1 、 2 、 ⋯ 、 n {\displaystyle \mathbf {\Delta } _{j}^{(k)}={\frac {\sum _{i\in I_{j}}{c_{i}B_{j}(t_{i}){\boldsymbol {\delta }}_{i}^{(k)}}}{\sum _{i\in I_{j}}c_{i}B_{j}(t_{i})}},\quad j=1,2,\cdots ,n} どこ私 j {\displaystyle I_{j}} これは、データポイントのインデックスセットです。j {\displaystyle j} パラメータが局所的なサポートの範囲内にある第 1 グループj {\displaystyle j} th 基底関数、すなわち、B j ( t 私 ) ≠ 0 {\displaystyle B_{j}(t_{i})\neq 0} .c 私 {\displaystyle c_{i}} はアルゴリズムの収束を保証する重みであり、通常は次のように定義されます。c 私 = 1 、 私 ∈ 私 j {\displaystyle c_{i}=1,i\in I_{j}} 。
最後に、( k + 1 ) {\displaystyle (k+1)} th 曲線は更新されますP j ( k + 1 ) = P j ( k ) + Δ j ( k ) 、 {\displaystyle \mathbf {P} _{j}^{(k+1)}=\mathbf {P} _{j}^{(k)}+\mathbf {\Delta } _{j}^{(k)},} につながる( k + 1 ) {\displaystyle (k+1)} フィッティング曲線P ( k + 1 ) ( t ) {\displaystyle \mathbf {P} ^{(k+1)}(t)} このようにして、一連の曲線が得られ、極限曲線は与えられたデータ点に対する最小二乗近似結果に収束する。 [ 10 ] [ 19 ]
ローカルPIA ローカルPIA:制御点が1つだけ調整された場合、ベジェ曲線は調整された制御点に対応するデータ点(赤色)を補間します。 ローカルPIA法では、[ 12 ] 制御点はアクティブ制御点と固定制御点に分けられ、その添え字は次のように表される。私 = { 私 1 、 私 2 、 ⋯ 、 私 私 } {\textstyle I=\left\{i_{1},i_{2},\cdots ,i_{I}\right\}} そしてJ = { j 1 、 j 2 、 ⋯ 、 j J } {\textstyle J=\left\{j_{1},j_{2},\cdots ,j_{J}\right\}} それぞれ。k {\textstyle k} th フィッティング曲線はP ( k ) ( t ) = ∑ j = 1 n P j ( k ) B j ( t ) {\textstyle \mathbf {P} ^{(k)}(t)=\sum _{j=1}^{n}\mathbf {P} _{j}^{(k)}B_{j}(t)} 固定制御点が以下を満たす P j ( k ) = P j ( 0 ) 、 j ∈ J 、 k = 0 、 1 、 2 、 ⋯ 。 {\displaystyle \mathbf {P} _{j}^{(k)}=\mathbf {P} _{j}^{(0)},\quad j\in J,\quad k=0,1,2,\cdots .} すると、一方では、差分ベクトルの反復式Δ h ( k + 1 ) {\textstyle \mathbf {\Delta } _{h}^{(k+1)}} 固定制御点に対応するのは Δ h ( k + 1 ) = Q h − ∑ j = 1 n P j ( k + 1 ) B j ( t h ) = Q h − ∑ j ∈ J P j ( k + 1 ) B j ( t h ) − ∑ 私 ∈ 私 ( P 私 ( k ) + Δ 私 ( k ) ) B 私 ( t h ) = Q h − ∑ j = 1 n P j ( k ) B j ( t h ) − ∑ 私 ∈ 私 Δ 私 ( k ) B 私 ( t h ) = Δ h ( k ) − ∑ 私 ∈ 私 Δ 私 ( k ) B 私 ( t h ) 、 h ∈ J 。 {\displaystyle {\begin{aligned}\mathbf {\Delta } _{h}^{(k+1)}&=\mathbf {Q} _{h}-\sum _{j=1}^{n}\mathbf {P} _{j}^{(k+1)}B_{j}(t_{h})\\&=\mathbf {Q} _{h}-\sum _{j\in J}\mathbf {P} _{j}^{(k+1)}B_{j}(t_{h})-\sum _{i\in I}\left(\mathbf {P} _{i}^{(k)}+\mathbf {\Delta } _{i}^{(k)}\right)B_{i}(t_{h})\\&=\mathbf {Q} _{h}-\sum _{j=1}^{n}\mathbf {P} _{j}^{(k)}B_{j}(t_{h})-\sum _{i\in I}\mathbf {\Delta } _{i}^{(k)}B_{i}(t_{h})\\&=\mathbf {\Delta } _{h}^{(k)}-\sum _{i\in I}\mathbf {\Delta } _{i}^{(k)}B_{i}(t_{h}),\quad h\in J.\end{aligned}}} 一方、差分ベクトルの反復式はD l ( k + 1 ) {\textstyle \mathbf {D} _{l}^{(k+1)}} アクティブ制御点に対応するのは Δ l ( k + 1 ) = Q l − ∑ j = 1 n P j ( k + 1 ) B j ( t l ) = Q l − ∑ j = 1 n P j ( k ) B j ( t l ) − ∑ 私 ∈ 私 Δ 私 ( k ) B 私 ( t l ) = Δ l ( k ) − ∑ 私 ∈ 私 Δ 私 ( k ) B 私 ( t l ) = − Δ 私 1 ( k ) B 私 1 ( t l ) − Δ 私 2 ( k ) B 私 2 ( t l ) − ⋯ + ( 1 − B l ( t l ) ) Δ l ( k ) − ⋯ − Δ 私 私 ( k ) B 私 私 ( t l ) 、 l ∈ 私 。 {\displaystyle {\begin{aligned}\mathbf {\Delta } _{l}^{(k+1)}&=\mathbf {Q} _{l}-\sum _{j=1}^{n}\mathbf {P} _{j}^{(k+1)}B_{j}(t_{l})\\&=\mathbf {Q} _{l}-\sum _{j=1}^{n}\mathbf {P} _{j}^{(k)}B_{j}(t_{l})-\sum _{i\in I}\mathbf {\Delta } _{i}^{(k)}B_{i}(t_{l})\\&=\mathbf {\Delta } _{l}^{(k)}-\sum _{i\in I}\mathbf {\Delta } _{i}^{(k)}B_{i}(t_{l})\\&=-\mathbf {\Delta } _{i_{1}}^{(k)}B_{i_{1}}(t_{l})-\mathbf {\Delta } _{i_{2}}^{(k)}B_{i_{2}}(t_{l})-\cdots +\left(1-B_{l}(t_{l})\right)\mathbf {\Delta } _{l}^{(k)}-\cdots -\mathbf {\Delta } _{i_{I}}^{(k)}B_{i_{I}}(t_{l}),\quad l\in I.\end{aligned}}} 上記の差分ベクトルを1次元のシーケンスに並べると、 D ( k + 1 ) = [ Δ j 1 ( k + 1 ) 、 Δ j 2 ( k + 1 ) 、 ⋯ 、 Δ j J ( k + 1 ) 、 Δ 私 1 ( k + 1 ) 、 Δ 私 2 ( k + 1 ) 、 ⋯ 、 Δ 私 私 ( k + 1 ) ] T 、 k = 0 、 1 、 2 、 ⋯ 、 {\displaystyle \mathbf {D} ^{(k+1)}=\left[\mathbf {\Delta } _{j_{1}}^{(k+1)},\mathbf {\Delta } _{j_{2}}^{(k+1)},\cdots ,\mathbf {\Delta } _{j_{J}}^{(k+1)},\mathbf {\Delta } _{i_{1}}^{(k+1)},\mathbf {\Delta } _{i_{2}}^{(k+1)},\cdots ,\mathbf {\Delta } _{i_{I}}^{(k+1)}\right]^{T},\quad k=0,1,2,\cdots ,} 行列形式での局所反復フォーマットは次のとおりです。 D ( k + 1 ) = T D ( k ) 、 k = 0 、 1 、 2 、 ⋯ 、 {\displaystyle \mathbf {D} ^{(k+1)}=\mathbf {T} \mathbf {D} ^{(k)},\quad k=0,1,2,\cdots ,} どこT {\textstyle \mathbf {T} } 反復行列は次のとおりです。 T = [ E J − B 1 0 E 私 − B 2 ] 、 {\displaystyle \mathbf {T} ={\begin{bmatrix}\mathbf {E} _{J}&-\mathbf {B} _{1}\\0&\mathbf {E} _{I}-\mathbf {B} _{2}\end{bmatrix}},} どこE J {\textstyle \mathbf {E} _{J}} そしてE 私 {\textstyle \mathbf {E} _{I}} は単位行列であり、 B 1 = [ B 私 1 ( t j 1 ) B 私 2 ( t j 1 ) ⋯ B 私 私 ( t j 1 ) B 私 1 ( t j 2 ) B 私 2 ( t j 2 ) ⋯ B 私 私 ( t j 2 ) ⋮ ⋮ ⋮ ⋮ B 私 1 ( t j J ) B 私 2 ( t j J ) ⋯ B 私 私 ( t j J ) ] 、 B 2 = [ B 私 1 ( t 私 1 ) B 私 2 ( t 私 1 ) ⋯ B 私 私 ( t 私 1 ) B 私 1 ( t 私 2 ) B 私 2 ( t 私 2 ) ⋯ B 私 私 ( t 私 2 ) ⋮ ⋮ ⋮ ⋮ B 私 1 ( t 私 私 ) B 私 2 ( t 私 私 ) ⋯ B 私 私 ( t 私 私 ) ] 。 {\displaystyle \mathbf {B} _{1}={\begin{bmatrix}B_{i_{1}}\left(t_{j_{1}}\right)&B_{i_{2}}\left(t_{j_{1}}\right)&\cdots &B_{i_{I}}\left(t_{j_{1}}\right)\\B_{i_{1}}\left(t_{j_{2}}\right)&B_{i_{2}}\left(t_{j_{2}}\right)&\cdots &B_{i_{I}}\left(t_{j_{2}}\right)\\\vdots &\vdots &\vdots &\vdots \\B_{i_{1}}\left(t_{j_{J}}\right)&B_{i_{2}}\left(t_{j_{J}}\right)&\cdots &B_{i_{I}}\left(t_{j_{J}}\right)\\\end{bmatrix}},\mathbf {B} _{2}={\begin{bmatrix}B_{i_{1}}\left(t_{i_{1}}\right)&B_{i_{2}}\left(t_{i_{1}}\right)&\cdots &B_{i_{I}}\left(t_{i_{1}}\right)\\B_{i_{1}}\left(t_{i_{2}}\right)&B_{i_{2}}\left(t_{i_{2}}\right)&\cdots &B_{i_{I}}\left(t_{i_{2}}\right)\\\vdots &\vdots &\vdots &\vdots \\B_{i_{1}}\left(t_{i_{I}}\right)&B_{i_{2}}\left(t_{i_{I}}\right)&\cdots &B_{i_{I}}\left(t_{i_{I}}\right)\\\end{bmatrix}}.} 上記の局所反復形式は収束し、ブレンド曲面[ 12 ]や細分化曲面 [ 20 ] にも拡張できます。
暗黙的PIA 陰関数曲線および曲面再構成のためのPIAフォーマットを以下に示す。[ 11 ] 順序付けられた点群が与えられた場合{ Q 私 } 私 = 1 n {\textstyle \left\{\mathbf {Q} _{i}\right\}_{i=1}^{n}} 単位法線ベクトル{ n 私 } 私 = 1 n {\textstyle \left\{\mathbf {n} _{i}\right\}_{i=1}^{n}} データ点上で、与えられた点群 から暗黙の曲線を再構築したい。自明な解を避けるために、いくつかのオフセット点{ Q l } l = n + 1 2 n {\textstyle \left\{\mathbf {Q} _{l}\right\}_{l=n+1}^{2n}} 点群に追加されます。[ 11 ] 距離だけオフセットされます。σ {\textstyle \sigma } 各点の単位法線ベクトルに沿って Q l = Q 私 + σ n 私 、 l = n + 私 、 私 = 1 、 2 、 ⋯ 、 n 。 {\displaystyle \mathbf {Q} _{l}=\mathbf {Q} _{i}+\sigma \mathbf {n} _{i},\quad l=n+i,\quad i=1,2,\cdots ,n.} と仮定するϵ {\textstyle \epsilon } はオフセット点における 暗黙関数 の値です。f ( Q l ) = ϵ 、 l = n + 1 、 n + 2 、 ⋯ 、 2 n 。 {\displaystyle f\left(\mathbf {Q} _{l}\right)=\epsilon ,\quad l=n+1,n+2,\cdots ,2n.} 陰関数曲線はα {\textstyle \alpha } th 回目の反復は f ( α ) ( x 、 y ) = ∑ 私 = 1 N u ∑ j = 1 N v C 私 j ( α ) B 私 ( x ) B j ( y ) 、 {\displaystyle f^{(\alpha )}(x,y)=\sum _{i=1}^{N_{u}}\sum _{j=1}^{N_{v}}C_{ij}^{(\alpha )}B_{i}(x)B_{j}(y),} どこC 私 j ( α ) {\textstyle C_{ij}^{(\alpha )}} 制御点です。
データ点の差分ベクトルを次のように定義します[ 11 ] δ k ( α ) = 0 − f ( α ) ( x k 、 y k ) 、 k = 1 、 2 、 ⋯ 、 n 、 δ l ( α ) = ϵ − f ( α ) ( x l 、 y l ) 、 l = n + 1 、 n + 2 、 ⋯ 、 2 n 。 {\displaystyle {\begin{aligned}{\boldsymbol {\delta }}_{k}^{(\alpha )}&=0-f^{(\alpha )}(x_{k},y_{k}),\quad k=1,2,\cdots ,n,\\{\boldsymbol {\delta }}_{l}^{(\alpha )}&=\epsilon -f^{(\alpha )}(x_{l},y_{l}),\quad l=n+1,n+2,\cdots ,2n.\end{aligned}}} 次に、制御係数の差分ベクトルを計算します。 Δ 私 j ( α ) = μ ∑ k = 1 2 n B 私 ( x k ) B j ( y k ) δ k ( α ) 、 私 = 1 、 2 、 ⋯ 、 N u 、 j = 1 、 2 、 ⋯ 、 N v 、 {\displaystyle {\boldsymbol {\Delta }}_{ij}^{(\alpha )}=\mu \sum _{k=1}^{2n}B_{i}(x_{k})B_{j}(y_{k}){\boldsymbol {\delta }}_{k}^{(\alpha )},\quad i=1,2,\cdots ,N_{u},\quad j=1,2,\cdots ,N_{v},} どこμ {\textstyle \mu } は収束係数です。結果として、新しい制御係数は次のようになります。 C 私 j ( α + 1 ) = C 私 j ( α ) + Δ 私 j ( α ) 、 {\displaystyle C_{ij}^{(\alpha +1)}=C_{ij}^{(\alpha )}+{\boldsymbol {\Delta }}_{ij}^{(\alpha )},} これにより、新しい代数Bスプライン曲線が得られる。 f ( α + 1 ) ( x 、 y ) = ∑ 私 = 1 N u ∑ j = 1 N v C 私 j ( α + 1 ) B 私 ( x ) B j ( y ) 。 {\displaystyle f^{(\alpha +1)}(x,y)=\sum _{i=1}^{N_{u}}\sum _{j=1}^{N_{v}}C_{ij}^{(\alpha +1)}B_{i}(x)B_{j}(y).} 上記の手順を繰り返し実行することで、一連の代数的Bスプライン関数を生成する。{ f ( α ) ( x 、 y ) 、 α = 0 、 1 、 2 、 ⋯ } {\textstyle \left\{f^{(\alpha )}(x,y),\quad \alpha =0,1,2,\cdots \right\}} 初期制御係数がC 私 j ( 0 ) = 0 {\textstyle C_{ij}^{(0)}=0} [ 11 ]
暗黙の曲面が生成されたと仮定します。α {\textstyle \alpha } 番目の反復は f ( α ) ( x 、 y 、 z ) = ∑ 私 = 1 N u ∑ j = 1 N v ∑ k = 1 N w C 私 j k ( α ) B 私 ( x ) B j ( y ) B k ( z ) 、 {\displaystyle f^{(\alpha )}(x,y,z)=\sum _{i=1}^{N_{u}}\sum _{j=1}^{N_{v}}\sum _{k=1}^{N_{w}}C_{ijk}^{(\alpha )}B_{i}(x)B_{j}(y)B_{k}(z),} 反復形式は曲線の場合と同様である。[ 11 ] [ 21 ]
フェアリング-PIA フェアリングPIAを開発するために、まず次のように関数を定義します。[ 13 ] F r 、 j ( f ) = ∫ t 1 t m B r 、 j ( t ) f d t 、 j = 1 、 2 、 ⋯ 、 n 、 r = 1 、 2 、 3 、 {\displaystyle {\mathcal {F}}_{r,j}(f)=\int _{t_{1}}^{t_{m}}B_{r,j}(t)fdt,\quad j=1,2,\cdots ,n,\quad r=1,2,3,} どこB r 、 j ( t ) {\textstyle B_{r,j}(t)} はr {\textstyle r} 基底関数の 階微分B j ( t ) {\textstyle B_{j}(t)} [ 8 ] (例:B スプライン基底関数 )。
曲線の後にk {\textstyle k} th 回目の反復は P [ k ] ( t ) = ∑ j = 1 n B j ( t ) P j [ k ] 、 t ∈ [ t 1 、 t m ] 。 {\displaystyle \mathbf {P} ^{[k]}(t)=\sum _{j=1}^{n}B_{j}(t)\mathbf {P} _{j}^{[k]},\quad t\in [t_{1},t_{m}].} 新しい曲線を作成するP [ k + 1 ] ( t ) {\textstyle \mathbf {P} ^{[k+1]}(t)} まず、( k + 1 ) {\textstyle (k+1)} データポイントの差分ベクトル、[ 13 ] d 私 [ k ] = Q 私 − P [ k ] ( t 私 ) 、 私 = 1 、 2 、 ⋯ 、 m 。 {\displaystyle \mathbf {d} _{i}^{[k]}=\mathbf {Q} _{i}-\mathbf {P} ^{[k]}(t_{i}),\quad i=1,2,\cdots ,m.} 次に、制御点の適合差ベクトルとフェアリングベクトルは[ 13 ]によって計算されます。 δ j [ k ] = ∑ h ∈ 私 j B j ( t h ) d h [ k ] 、 j = 1 、 2 、 ⋯ 、 n η j [ k ] = ∑ l = 1 n F r 、 l ( B r 、 j ( t ) ) P l [ k ] 、 j = 1 、 2 、 ⋯ 、 n {\displaystyle {\begin{aligned}{\boldsymbol {\delta }}_{j}^{[k]}&=\sum _{h\in I_{j}}B_{j}(t_{h})\mathbf {d} _{h}^{[k]},\quad j=1,2,\cdots ,n\\{\boldsymbol {\eta }}_{j}^{[k]}&=\sum _{l=1}^{n}{\mathcal {F}}_{r,l}\left(B_{r,j}(t)\right)\mathbf {P} _{l}^{[k]},\quad j=1,2,\cdots ,n\\\end{aligned}}} 最後に、( k + 1 ) {\displaystyle (k+1)} st曲線は[ 13 ]によって生成される。 P j [ k + 1 ] = P j [ k ] + μ j [ ( 1 − ω j ) δ j [ k ] − ω j η j [ k ] ] 、 j = 1 、 2 、 ⋯ 、 n 、 {\displaystyle \mathbf {P} _{j}^{[k+1]}=\mathbf {P} _{j}^{[k]}+\mu _{j}\left[\left(1-\omega _{j}\right){\boldsymbol {\delta }}_{j}^{[k]}-\omega _{j}{\boldsymbol {\eta }}_{j}^{[k]}\right],\quad j=1,2,\cdots ,n,} どこμ j {\displaystyle \mu _{j}} は正規化重みであり、ω j {\displaystyle \omega _{j}} は、j {\displaystyle j} 制御点。平滑化重みは個別に平滑度を調整するために使用でき、平滑度に関して大きな柔軟性をもたらします。[ 13 ] 平滑化重みが大きいほど、生成される曲線は滑らかになります。新しい曲線は次のように得られます。 P [ k + 1 ] ( t ) = ∑ j = 1 n B j ( t ) P j [ k + 1 ] 、 t ∈ [ t 1 、 t m ] 。 {\displaystyle \mathbf {P} ^{[k+1]}(t)=\sum _{j=1}^{n}B_{j}(t)\mathbf {P} _{j}^{[k+1]},\quad t\in [t_{1},t_{m}].} このようにして、一連の曲線が得られます。{ P [ k ] ( t ) 、 k = 1 、 2 、 3 、 ⋯ } {\textstyle \left\{\mathbf {P} ^{[k]}(t),\;k=1,2,3,\cdots \right\}} 。すべての平滑化重みが等しい場合、このシーケンスはエネルギー最小化 に基づく従来の平滑化方法の解に収束します(ω j = ω {\textstyle \omega _{j}=\omega } ) [ 13 ] 同様に、フェアリングPIAは表面ケースにも拡張できます。
IG-LSPIA 等幾何最小二乗漸進反復近似法 (IG-LSPIA)。[ 14 ] 境界値問題 が与えられた場合[ 15 ] { L u = f 、 で Ω 、 G u = g 、 の上 ∂ Ω 、 {\displaystyle \left\{{\begin{aligned}{\mathcal {L}}u=f,&\quad {\text{in}}\;\Omega ,\\{\mathcal {G}}u=g,&\quad {\text{on}}\;\partial \Omega ,\end{aligned}}\right.} どこu : Ω → R {\textstyle u:\Omega \to \mathbb {R} } 未知の解は、L {\textstyle {\mathcal {L}}} は微分演算子 です。G {\textstyle {\mathcal {G}}} は境界演算子であり、f {\textstyle f} そしてg {\textstyle g} これらは連続関数です。等幾何解析法 では、この境界値問題の数値解を求めるために、NURBS基底関数[ 8 ]が形状関数として使用されます。 [ 15 ] 数値解を表すためにも同じ基底関数が適用されます。u h {\textstyle u_{h}} そして幾何学的マッピングG {\textstyle G} : u h ( τ ^ ) = ∑ j = 1 n R j ( τ ^ ) u j 、 G ( τ ^ ) = ∑ j = 1 n R j ( τ ^ ) P j 、 {\displaystyle {\begin{aligned}u_{h}\left({\hat {\tau }}\right)&=\sum _{j=1}^{n}R_{j}({\hat {\tau }})u_{j},\\G({\hat {\tau }})&=\sum _{j=1}^{n}R_{j}({\hat {\tau }})P_{j},\end{aligned}}} どこR j ( τ ^ ) {\textstyle R_{j}({\hat {\tau }})} はNURBS基底関数を表し、u j {\textstyle u_{j}} は制御係数です。コロケーション点[ 22 ]を代入した後 τ ^ 私 、 私 = 1 、 2 、 。 。 。 、 m {\textstyle {\hat {\tau }}_{i},i=1,2,...,{m}} PDE の強い形式にすると、離散化された問題が得られます[ 22 ] { L u h ( τ ^ 私 ) = f ( G ( τ ^ 私 ) ) 、 私 ∈ 私 L 、 G u h ( τ ^ j ) = g ( G ( τ ^ j ) ) 、 j ∈ 私 G 、 {\displaystyle \left\{{\begin{aligned}{\mathcal {L}}u_{h}({\hat {\tau }}_{i})=f(G({\hat {\tau }}_{i})),&\quad i\in {\mathcal {I_{L}}},\\{\mathcal {G}}u_{h}({\hat {\tau }}_{j})=g(G({\hat {\tau }}_{j})),&\quad j\in {\mathcal {I_{G}}},\end{aligned}}\right.} どこ私 L {\textstyle {\mathcal {I_{L}}}} そして私 G {\textstyle {\mathcal {I_{G}}}} それぞれ、内部および境界のコロケーション点の添え字を表す。
制御係数の配置u j {\textstyle u_{j}} 数値解のu h ( τ ^ ) {\textstyle u_{h}({\hat {\tau }})} に1 {\textstyle 1} 次元列ベクトルU = [ u 1 、 u 2 、 。 。 。 、 u n ] T {\textstyle \mathbf {U} =[u_{1},u_{2},...,u_{n}]^{T}} 離散化された問題は、行列形式で次のように再定式化できます。 A U = b {\displaystyle \mathbf {AU} =\mathbf {b} } どこA {\textstyle \mathbf {A} } はコロケーション行列であり、b {\textstyle \mathbf {b} } は荷重ベクトルです。
離散化された負荷値はデータポイントであると仮定する。{ b 私 } 私 = 1 m {\textstyle \left\{b_{i}\right\}_{i=1}^{m}} 適合させる。制御係数の初期推定値を与える{ u j ( 0 ) } j = 1 n 、 n < m {\textstyle \left\{u_{j}^{(0)}\right\}_{j=1}^{n},n<m} 初期ブレンド関数[ 14 ]が得られます。 U ( 0 ) ( τ ^ ) = ∑ j = 1 n A j ( τ ^ ) u j ( 0 ) 、 τ ^ ∈ [ τ ^ 1 、 τ ^ m ] 、 {\displaystyle U^{(0)}({\hat {\tau }})=\sum _{j=1}^{n}A_{j}({\hat {\tau }})u_{j}^{(0)},\quad {\hat {\tau }}\in [{\hat {\tau }}_{1},{\hat {\tau }}_{m}],} どこA j ( τ ^ ) {\textstyle A_{j}({\hat {\tau }})} 、j = 1 、 2 、 ⋯ 、 n {\textstyle j=1,2,\cdots ,n} は、演算子を使用して決定されたNURBS基底関数の異なる次数の導関数の組み合わせを表します。L {\textstyle {\mathcal {L}}} そしてG {\textstyle {\mathcal {G}}} A j ( τ ^ ) = { L R j ( τ ^ ) 、 τ ^ で Ω p 私 n 、 G R j ( τ ^ ) 、 τ ^ で Ω p b d 、 j = 1 、 2 、 ⋯ 、 n 、 {\displaystyle A_{j}({\hat {\tau }})=\left\{{\begin{aligned}{\mathcal {L}}R_{j}({\hat {\tau }}),&\quad {\hat {\tau }}\ {\text{in}}\ \Omega _{p}^{in},\\{\mathcal {G}}R_{j}({\hat {\tau }}),&\quad {\hat {\tau }}\ {\text{in}}\ \Omega _{p}^{bd},\quad j=1,2,\cdots ,n,\end{aligned}}\right.} どこΩ p 私 n {\textstyle \Omega _{p}^{in}} そしてΩ p b d {\textstyle \Omega _{p}^{bd}} それぞれパラメータ領域の内部と境界を示します。A j ( τ ^ ) {\textstyle A_{j}({\hat {\tau }})} 対応するj {\textstyle j} th制御係数。J 私 n {\textstyle J_{in}} そしてJ b d {\textstyle J_{bd}} は、それぞれ内部制御係数と境界制御係数のインデックス集合です。一般性を失うことなく 、境界制御係数は強または弱の制約を使用して取得され、固定されているとさらに仮定します。 u j ( k ) = u j * 、 j ∈ J b d 、 k = 0 、 1 、 2 、 ⋯ 。 {\displaystyle u_{j}^{(k)}=u_{j}^{*},\quad j\in J_{bd},\quad k=0,1,2,\cdots .} のk {\textstyle k} th ブレンド関数は、k {\textstyle k} IG-LSPIAの第 1 回目の反復[ 14 ] は、次のように仮定される。 U ( k ) ( τ ^ ) = ∑ j = 1 n A j ( τ ^ ) u j ( k ) 、 τ ^ ∈ [ τ ^ 1 、 τ ^ m ] 。 {\displaystyle U^{(k)}({\hat {\tau }})=\sum _{j=1}^{n}A_{j}({\hat {\tau }})u_{j}^{(k)},\quad {\hat {\tau }}\in [{\hat {\tau }}_{1},{\hat {\tau }}_{m}].} 次に、コロケーション点の差分ベクトル(DCP)は、( k + 1 ) {\textstyle (k+1)} st反復は以下を使用して得られます δ 私 ( k ) = b 私 − ∑ j = 1 n A j ( τ ^ 私 ) u j ( k ) = b 私 − ∑ j ∈ J b d A j ( τ ^ 私 ) u j ( k ) − ∑ j ∈ J 私 n A j ( τ ^ 私 ) u j ( k ) 、 私 = 1 、 2 、 。 。 。 、 m 。 {\displaystyle {\begin{aligned}{\boldsymbol {\delta }}_{i}^{(k)}&=b_{i}-\sum _{j=1}^{n}A_{j}({\hat {\tau }}_{i})u_{j}^{(k)}\\&=b_{i}-\sum _{j\in J_{bd}}A_{j}({\hat {\tau }}_{i})u_{j}^{(k)}-\sum _{j\in J_{in}}A_{j}({\hat {\tau }}_{i})u_{j}^{(k)},\quad i=1,2,...,m.\end{aligned}}} さらに、パラメータがローカルサポートの範囲内にあるすべての負荷値をグループ化します。j {\textstyle j} 階微分関数、すなわち、A j ( τ ^ 私 ) ≠ 0 {\textstyle A_{j}({\hat {\tau }}_{i})\neq 0} へj {\textstyle j} に対応する 番目のグループj {\textstyle j} 番目の制御係数、そして、のインデックスセットを表す。j {\textstyle j} 負荷値のグループとして私 j {\textstyle I_{j}} 最後に、制御係数の差分(DCC)は次のように構築できます。[ 14 ] d j ( k ) = μ ∑ h ∈ 私 j A j ( τ ^ h ) δ h ( k ) 、 j = 1 、 2 、 。 。 。 、 n 、 {\displaystyle d_{j}^{(k)}=\mu \sum _{h\in I_{j}}A_{j}({\hat {\tau }}_{h}){\boldsymbol {\delta }}_{h}^{(k)},\quad j=1,2,...,n,} どこμ {\textstyle \mu } これは、アルゴリズムの収束を保証するための正規化重みです。
したがって、新しい制御係数は次の式によって更新されます。 u j ( k + 1 ) = u j ( k ) + d j ( k ) 、 j = 1 、 2 、 。 。 。 、 n 、 {\displaystyle u_{j}^{(k+1)}=u_{j}^{(k)}+d_{j}^{(k)},\quad j=1,2,...,n,} したがって、( k + 1 ) {\textstyle (k+1)} stブレンド関数は次のように生成されます。 U ( k + 1 ) ( τ ^ ) = ∑ j = 1 n A j ( τ ^ ) u j ( k + 1 ) 。 {\displaystyle U^{(k+1)}({\hat {\tau }})=\sum _{j=1}^{n}A_{j}({\hat {\tau }})u_{j}^{(k+1)}.} 上記の反復処理は、所望の適合精度に達し、一連のブレンド関数が得られるまで実行されます。 { U ( k ) ( τ ^ ) 、 k = 0 、 1 、 … } 。 {\displaystyle \left\{U^{(k)}({\hat {\tau }}),k=0,1,\dots \right\}.} IG-LSPIAは、制約付き最小二乗コロケーション問題の解に収束する。[ 14 ]