(57)【要約】【課題】多数回に渡って連立一次方程式を解く場合における一連の処理時間を短縮する。【解決手段】疎行列を入力係数行列とする複数の連立一次方程式の解を連続して求める連立一次方程式求解装置１０２であって、前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析して部分的にオーダリングを施すべき部分オーダリング領域を決定する差分解析部１０６と、入力係数行列の非零要素全体にオーダリングを施すオーダリング部１０８と、前記部分オーダリング領域に対してのみオーダリングを施す部分オーダリング部１１１と、部分オーダリング領域に対しては部分オーダリングの結果をもとに、それ以外の領域に対しては以前のオーダリング結果を流用して連立一次方程式の解を求める連立一次方程式求解部１１２を備えた。【選択図】        図１
2005018366.tif 000002
【特許請求の範囲】
【請求項１】
疎行列を入力係数行列とする複数の連立一次方程式の解を連続して求める連立一次方程式求解装置であって、
前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析して部分的にオーダリングを施すべき部分オーダリング領域を決定する差分解析部と、
入力係数行列の非零要素全体にオーダリングを施すオーダリング部と、
前記部分オーダリング領域に対してのみオーダリングを施す部分オーダリング部と、
部分オーダリング領域に対しては部分オーダリングの結果をもとに、それ以外の領域に対しては以前のオーダリング結果を流用して連立一次方程式の解を求める連立一次方程式求解部を備えたことを特徴とする連立一次方程式求解装置。
【請求項２】
請求項１記載の連立一次方程式求解装置において、
入力情報は部分オーダリングを実施するか否かを判別するための初期化フラグを備えたことを特徴とする連立一次方程式求解装置。
【請求項３】
前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析して部分的にオーダリングを施すべき部分オーダリング領域を決定する差分解析部と、
入力係数行列の非零要素全体にオーダリングを施すオーダリング部と、
前記部分オーダリング領域に対してのみオーダリングを施す部分オーダリング部と、
部分オーダリング領域に対しては部分オーダリングの結果をもとに、それ以外の領域に対しては以前のオーダリング結果を流用して連立一次方程式の解を求める連立一次方程式求解部を備え、疎行列を入力係数行列とする複数の連立一次方程式の前記入力係数行列を順次入力し、入力した連立一次方程式の解を連続して求める連立一次方程式求解方法であって、
前記差分解析部により、前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析し部分的にオーダリングを施すべき部分オーダリング領域を決定するステップと、
決定された部分オーダリング領域に対しては部分オーダリング部により部分オーダリングを行い、また、部分オーダリング領域以外の領域に対しては以前のオーダリング結果を流用するステップと、
前記部分オーダリングの結果及び以前のオーダリング結果の流用結果をもとに連立一次方程式求解部により連立一次方程式の解を求めるステップとを備えたことを特徴とする連立一次方程式求解方法。
【請求項４】
請求項３記載の連立一次方程式求解方法において、
入力情報は部分オーダリングを実施するか否かを判別するための初期化フラグを備えたことを特徴とする連立一次方程式求解方法。
【請求項５】
コンピュータを、疎行列を入力係数行列とする複数の連立一次方程式の解を連続して求める連立一次方程式求解手段として機能させるためのプログラムであって、
コンピュータを、前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析し部分的にオーダリングを施すべき部分オーダリング領域を決定する差分解析手段と、
入力係数行列の非零要素全体にオーダリングを施すオーダリング手段と、
前記部分オーダリング領域に対してのみオーダリングを施す部分オーダリング手段と、
部分オーダリング領域に対しては部分オーダリングの結果をもとに、それ以外の領域に対しては以前のオーダリング結果を流用して連立一次方程式の解を求める連立一次方程式求解手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は連立一次方程式求解装置及び求解方法に係り、特に事前にオーダリングを施す連立一次方程式求解装置及び求解方法に関する。
【０００２】
【従来の技術】
疎行列を係数行列に持つ連立一次方程式の解法としては、係数行列の非零要素のみを計算対象とし、前処理にオーダリングを実施して解を求める手法がある。オーダリングとは、入力疎行列の節点情報をもとに、適当な置換を作用させることで連立一次方程式を解くのに性質の良い非零構造の行列に変換する方法である。  オーダリングの主な手法としては、Ｍｉｎｉｍｕｍ  Ｄｅｇｒｅｅ法（ＭＤ法）系統の手法（例えば、非特許文献１参照）、及び再帰的な領域分割に基づくＮｅｓｔｅｄ  Ｄｉｓｓｅｃｔｉｏｎ法（ＮＤ法）系統の手法（例えば、非特許文献２参照）が知られている。
【０００３】
【非特許文献１】
Ｔ．Ａ．Ｄａｖｉｓ，Ｐ．Ａｍｅｓｔｏｙ  ａｎｄ  Ｉ．Ｓ．Ｄｕｆｆ：”Ａｎ  Ａｐｐｒｏｘｉｍａｔｅ  Ｍｉｎｉｍｕｍ  Ｄｅｇｒｅｅ  Ｏｒｄｅｒｉｎｇ  Ａｌｇｏｒｉｔｈｍ”，Ｃｏｍｐｕｔｅｒ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｃｉｅｎｃｅｓ  Ｄｅｐｔ．，Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｆｌｏｒｉｄａ，Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ，ＴＲ−９４−０３９，Ｄｅｃｅｍｂｅｒ，１９９４
【０００４】
【非特許文献２】
Ｇ．Ｋａｒｙｐｉｓ  ａｎｄ  Ｖ．Ｋｕｍａｒ：  “Ａ  Ｆａｓｔ  ａｎｄ  Ｈｉｇｈ  Ｑｕａｌｉｔｙ  Ｍｕｌｔｉｌｅｖｅｌ  Ｓｃｈｅｍｅ  ｆｏｒ  Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｉｒｒｅｇｕｌａｒ  Ｇｒａｐｈｓ”，Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＴＲ−９５−０３５，Ｄｅｐａｒｔｍｅｎｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｍｉｎｎｅｓｏｔａ，１９９５（ｕｐｄａｔｅ  ｏｎ  １９９８）
【０００５】
【発明が解決しようとする課題】
従来の技術では、数万回、数十万回と多数回に渡り連立一次方程式を解く必要がある場合、計算の対象となる入力係数行列の非零構造がすべて同じであれば、オーダリングを最初の一回のみ実行すればよい。しかし、入力係数行列の非零構造が少しでも異なる場合には、再度オーダリングしなければならない。このとき、非零構造が一致している部分も、再度のオーダリングの対象となる。このためオーダリングの対象が増大し処理時間が増大する。
【０００６】
本発明はこれらの問題点に鑑みてなされたもので、多数回に渡って連立一次方程式を解く場合における一連の処理時間を短縮する。
【０００７】
【課題を解決するための手段】
本発明は、上記の課題を解決するために次のような手段を採用した。
【０００８】
疎行列を入力係数行列とする複数の連立一次方程式の解を連続して求める連立一次方程式求解装置であって、前回使用した入力係数行列と今回使用する入力係数行列との差分を取得し、取得した差分を解析して部分的にオーダリングを施すべき部分オーダリング領域を決定する差分解析部と、入力係数行列の非零要素全体にオーダリングを施すオーダリング部と、前記部分オーダリング領域に対してのみオーダリングを施す部分オーダリング部と、部分オーダリング領域に対しては部分オーダリングの結果をもとに、それ以外の領域に対しては以前のオーダリング結果を流用して連立一次方程式の解を求める連立一次方程式求解部を備えた。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態を添付図面を参照しながら説明する。図１は、本発明の実施形態にかかる連立一次方程式求解装置を説明する図である。本実施形態においては、オーダリングに前記ＮＤ法を採用する。ＮＤ法は、有限要素法で使うメッシュをセパレータと呼ばれる節点集合により２つの部分領域ＡとＢに分割し、Ａに属する点、Ｂに属する点、セパレータに属する点の順に番号を付け直し、さらに、この処理を各部分領域に対して、再帰的に繰り返すことにより、行列を再帰的縁付きブロック対角行列に変形する手法である。ここで、節点番号は、対称行列の場合、列番号に対応する。また、本実施形態では、ＮＤ法が領域を再帰的に分割していく様子から、ＮＤ法による領域分割をネストといい、ある領域分割が何回目に生成したものかをネストレベルで表す。さらにネストレベルｋの領域分割と同等の表現として、深さｋのネストという表現を使用する。
【００１０】
図１において、連立一次方程式求解装置１０２は初期化部１０３、差分情報抽出部１０５、差分解析部１０６、オーダリング部１０８、テーブル処理部１０９、部分オーダリング部１１１、及び連立一次方程式求解部１１２を有している。
【００１１】
初期化部１０３は、入力情報１０１を入力とし、入力情報１０１に含まれる初期化フラグが零ならば比較要素位置情報１０４を初期化し、初期化フラグが零でないならば比較要素位置情報１０４の初期化を行うことなく入力情報１０１を差分情報抽出部１０５へ出力する。
【００１２】
差分情報抽出部１０５は、初期化部１０３から出力された入力情報１０１を入力とし、比較要素位置情報１０４が初期化状態ならば、入力情報１０１を差分解析部１０６へ出力する。比較要素位置情報１０４が初期化状態ではなく、かつ、比較要素位置情報１０４と入力情報１０１の非零要素位置情報２０１との差分情報がないときは、テーブル情報１１０から取得した置換ベクトル６０２と入力情報１０１を連立一次方程式求解部１１２へ出力する。比較要素位置情報１０４が初期化状態ではなく、かつ、比較要素位置情報１０４と非零要素位置情報２０１との差分情報があるときは、入力情報１０１と比較要素位置情報１０４と差分情報を差分解析部１０６へ出力する。
【００１３】
差分解析部１０６は、内部に部分オーダリング領域解析部１０７を有し、入力情報１０１または、入力情報１０１、比較要素位置情報１０４および差分情報を入力として、差分情報がない場合は入力情報１０１をオーダリング部１０８へ出力し、差分情報がある場合は入力情報１０１とテーブル情報１１０から取得した置換ベクトル６０２と部分オーダリング領域解析部１０７により出力された列範囲情報でテーブル情報１１０の列範囲情報６０７を更新し、列範囲情報６０７を部分オーダリング部１１１へ出力する。
【００１４】
オーダリング部１０８は、入力情報１０１を入力し、置換ベクトルを生成する。さらに、図２に示す入力情報１０１の非零要素位置情報２０１と生成した置換ベクトルをテーブル処理部１０９へ出力し、置換ベクトル６０２と入力情報１０１を連立一次方程式求解部１１２へ出力する。
【００１５】
テーブル処理部１０９は、オーダリング部１０８、または部分オーダリング部１１１から出力された置換ベクトルと非零要素位置情報２０１を入力とし、テーブル情報１１０を更新する。
【００１６】
部分オーダリング部１１１は、差分解析部１０６から出力された入力情報１０１、置換ベクトル６０２、列範囲情報６０７を入力として、部分オーダリング処理し、置換ベクトルを生成する。さらに、非零要素位置情報２０１と生成した置換ベクトルをテーブル処理部１０９へ出力し、置換ベクトル６０２と入力情報１０１を連立一次方程式求解部１１２へ出力する。
【００１７】
連立一次方程式求解部１１２は、置換ベクトル６０２と入力情報１０１を入力として、出力情報１１３を出力する。
【００１８】
図２は、連立一次方程式求解装置１０２の入出力方法を説明する図である。連立一次方程式求解装置１０２の入力情報１０１としては、非零要素位置情報２０１、係数行列２０２、右辺ベクトル２０３及び初期化フラグ２０４を備える。出力情報１１３は解ベクトルである。
【００１９】
図３は、差分情報抽出部１０５の処理を説明する図である。まず、差分情報抽出部１０５は、比較要素位置情報１０４を取得し（ステップ３０１）、比較要素位置情報１０４が初期化状態にあるかチェックする（ステップ３０２）。
【００２０】
比較要素位置情報１０４が初期化状態である場合には、比較要素位置情報１０４を非零要素位置情報２０１に更新し（ステップ３０９）、入力情報１０１を差分解析部１０６へ出力し、処理を終了する（ステップ３１０）。
【００２１】
比較要素位置情報１０４が初期化状態でない場合には、比較要素位置情報１０４と非零要素位置情報２０１との差分情報を求める（ステップ３０３）。次に、ステップ３０３で求めた差分情報の有無を判別し（ステップ３０４）、差分情報がない場合には、テーブル情報１１０から置換ベクトル６０２を取得し（ステップ３０５）、入力情報１０１と置換ベクトル６０２を連立一次方程式求解部１１２へ出力し（ステップ３０６）、処理を終了する。
【００２２】
ステップ３０４で差分情報がある場合には、比較要素位置情報１０４を非零要素位置情報２０１に更新し（ステップ３０７）、比較要素位置情報１０４と入力情報１０１と差分情報を差分解析部１０６へ出力し（ステップ３０８）、処理を終了する。
【００２３】
図４は、差分解析部１０６の処理を説明する図である。まず、差分解析部１０６は入力データの中に差分情報があるかないかを判別する（ステップ４０１）。入力データの中に差分情報がない場合は、テーブル情報１１０のすべての情報を初期化し（ステップ４０２）、入力情報１０１をオーダリング部１０８へ出力した（ステップ４０３）後、処理を終了する。
【００２４】
入力データの中に差分情報がある場合は、テーブル情報１１０から置換ベクトル６０２と列ブロック対応テーブル６０５を取得し（ステップ４０４）、すべての差分要素に対して、置換ベクトル６０２を用いて座標変換し（ステップ４０５）、部分オーダリング領域解析部１０７の処理を実施する（ステップ４０６）。部分オーダリング領域解析部１０７は、置換ベクトル６０２による座標変換後の差分情報と、テーブル情報１１０の列ブロック対応テーブル６０５を入力とし、置換ベクトル６０２による座標変換後の列番号に対応した部分オーダリング対象となる列範囲情報を出力する。次に部分オーダリング領域解析部１０７から出力された列範囲情報と置換ベクトル６０２と入力情報１０１を部分オーダリング部１１１へ出力し（ステップ４０７）、処理を終了する。
【００２５】
図５は、テーブル処理部１０９を説明する図である。テーブル処理部１０９は、置換後非零要素位置情報テーブル５０１、親テーブル作成部５０２、子テーブル作成部５０３、及び列ブロック対応テーブル作成部５０４を備える。
【００２６】
図６はテーブル情報１１０の構成を説明する図である。テーブル情報１１０は、図６に示すように、置換後非零要素位置情報テーブル６０１、置換ベクトル６０２、親テーブル６０３、子テーブル６０４、列ブロック対応テーブル６０５、差分情報６０６、及び列範囲情報６０７を備える。
【００２７】
これらの図において、テーブル処理部１０９は、オーダリング部１０８、または部分オーダリング部１１１から非零要素位置情報２０１、置換ベクトル６０２を入力すると非零要素位置情報２０１を置換処理した置換後非零要素位置情報を親テーブル作成部５０２に出力し、置換後非零要素位置情報テーブル６０１を更新する。
【００２８】
ここで、親テーブル作成部５０２、子テーブル作成部５０３の処理の前に、消去木の概念について説明する。消去木は、コレスキー分解後の行列の非零構造を用いて定義される根付き木であり、対称行列の各列が節点に対応する。節点間には親子関係が存在し、ｌｉｊ  をｉ行ｊ列の行列要素とするとき、第ｋ列の親は、Ｍｉｎ（ｊ；ｋ＜ｊ，ｌｋｊ≠０）で定義する。親が存在しない場合は、−１を指定することで、すべての要素に対して、一意的に親を定義することができる。消去木の詳細は、例えば、Ｇ．Ｋａｒｙｐｉｓ，Ｖ．ｋｕｍａｒ：”Ａ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｓｐａｒｓｅ  Ｃｈｏｌｅｓｋｙ  Ｆａｃｔｏｒｉｚａｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  Ｆｏｒ  Ｓｃａｌａｂｌｅ  Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｅｒｓ”，ＴＲ９４−４１，Ｄｅｐａｒｔｍｅｎｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｍｉｎｎｅｓｏｔａ，１９９４に示されている。
【００２９】
次に、親テーブル作成部５０２及び子テーブル作成部５０３は、上記親子関係を記述する親テーブル６０３、子テーブル６０４を作成するものである。親テーブル６０３は、対象とする節点の親となる節点番号を要素として保持し、子テーブル６０４は、対象とする節点の子となる節点番号を要素として保持する。
【００３０】
親テーブル作成部５０２は処理を開始すると、置換後非零要素位置情報を入力として、親テーブル６０３を更新し、親テーブル６０３の情報を子テーブル作成部５０３に出力する。
【００３１】
子テーブル作成部５０３は、親テーブル６０３の情報を入力とし、子テーブル６０４を更新し、子テーブル６０４の情報を列ブロック対応テーブル作成部５０４へ出力する。
【００３２】
列ブロック対応テーブル作成部５０４は、子テーブル６０４の情報を入力として、親テーブル６０３の情報を取得し、列ブロック対応テーブル６０５の情報を更新する。
【００３３】
図７は、部分オーダリング領域解析部１０７の処理を説明する図である。まず、列ブロック対応テーブル（ＬＢ）６０５と同一の構造をもつＬＢＷＫテーブルを用意し、ＬＢＷＫテーブルを初期化する（ステップ７０１）。次に、未解析の差分要素の有無をチェックする（ステップ７０２）。図７の例では、置換ベクトル６０２による座標変換後の差分要素の座標を（ｉ，ｊ）と表している。
【００３４】
未解析の差分要素がある場合には、差分要素がセパレータに属しているかを列ブロック対応テーブル（ＬＢ）６０５で判別する（ステップ７０４）。列ブロック対応テーブル（ＬＢ）６０５からＮＤ法によるネストの最深値ｋを取得し（ステップ７０５）、ＬＢ（ｉ，ｋ）とＬＢ（ｊ，ｋ）が等しいかどうかを調べる（ステップ７０６）。ＬＢ（ｉ，ｋ）とＬＢ（ｊ，ｋ）が等しいことは、差分情報内の該当要素（以下、差分要素）が深さｋのネストでブロック対角部分行列の内部に位置していることを意味する。ＬＢ（ｉ，ｋ）とＬＢ（ｊ，ｋ）が等しくないことは、差分要素は深さｋのネストでは、ブロック対角部分行列内に存在しないことを意味する。
【００３５】
ステップ７０６でＬＢ（ｉ，ｋ）とＬＢ（ｊ，ｋ）の値が等しい場合には、ＬＢ（ｉ，ｋ）と同一行で数値の等しいＬＢＷＫテーブルの対応位置をすべてインクリメントし（ステップ７０７）、ステップ７０２に戻る。
【００３６】
ＬＢ（ｉ，ｋ）とＬＢ（ｊ，ｋ）の値が異なる場合には、ｋをデクリメントし（ステップ７０８）、ｋが零以下かチェックする（ステップ７０９）。ｋが零より大きい場合には、ステップ７０６に戻り、ｋが零以下である場合には、すべての列番号を部分オーダリングの対象範囲とし、列番号の先頭と最後の番号を出力する（ステップ７１０）。
【００３７】
ステップ７０２で未解析の差分要素がない場合には、ＬＢＷＫテーブルで非零数値が連続して入っている列番号の範囲を先頭と終端の数値でテーブル情報１１０の列範囲情報６０７を更新し、列範囲情報６０７を出力する。列範囲情報に複数の要素がある場合には、該当する数値すべてを使用し、列範囲情報６０７の更新、出力処理する（ステップ７０３）。
【００３８】
図８は、入力情報１０１に含まれる係数行列２０２の上三角行列のみを２次元的に表現した例を示す図である。また、図９は、図８の係数行列８０１に対応した入力情報１０１の例９０１を示す図である。
【００３９】
ここでは、入力情報９０１の非零要素位置情報９０２を列インデックステーブル９０３、及び対角ポインタテーブル９０４で示す。列インデックステーブル９０３は、図８の係数行列８０１の各要素に対応した列番号を示す。係数行列８０１の各要素（斜線部）はいずれも非零要素である。列番号の並べ方は、まず１行目の列番号を昇順に配置し、次の位置からは２行目の列番号を昇順に配置し、最終行まで同様に列番号を昇順に配置していく。対角ポインタテーブル９０４は、列インデックステーブル９０３の対角要素の位置を示す。
【００４０】
また、図１２は図８と同様に入力情報１０１の係数行列２０２を上三角行列のみ２次元的に表現した例１２０１を示す図である。以下、図８および図１２に示す係数行列を順に入力する例（すなわち図８が前回使用した入力係数行列、図１２が今回使用する入力係数行列に相当する）を元に、図３，４を参照して連立一次方程式求解装置１０２の一連の流れを説明する。
【００４１】
まず、図８に示す係数行列８０１、図９に示す非零要素位置情報９０２、右辺ベクトル９０６、及び零を示す初期化フラグ９０７で構成する入力情報９０１を連立一次方程式求解装置１０２に入力する。この場合、初期化フラグ９０７が零であることから、初期化部１０３が比較要素位置情報１０４を初期化し、差分情報抽出部１０５へ入力情報９０１を出力する。初期化部１０３の初期化処理によって、比較要素位置情報１０４のすべての要素は零になる。
【００４２】
差分情報抽出部１０５に、入力情報９０１を入力すると、差分情報抽出部１０５は比較要素位置情報１０４を取得する（ステップ３０１）。このとき比較要素位置情報１０４は、初期化されているので（ステップ３０２）、比較要素位置情報１０４を図９の非零要素位置情報９０２に更新する（ステップ３０９）。次に入力情報９０１を差分解析部１０６へ出力する（ステップ３１０）。
【００４３】
差分解析部１０６へ入力情報９０１を入力すると差分情報は無いので（ステップ４０１）、テーブル情報１１０の情報をすべて初期化し（ステップ４０２）、入力情報９０１をオーダリング部１０８へ出力する（ステップ４０３）。
【００４４】
オーダリング部１０８に、入力情報９０１を入力すると、非零要素位置情報９０２全体に対してオーダリングを実施し、生成した置換ベクトルと、非零要素位置情報９０１をテーブル処理部１０９へ出力する。テーブル処理部１０９によるテーブル情報１１０の更新が終了した後、入力情報９０１と置換ベクトル６０２を、連立一次方程式求解部１１２へ出力し、連立一次方程式求解部１１２へ制御を移す。
【００４５】
１回目のオーダリング結果の係数行列の例を図１０に、更新したテーブル情報１１０を図１１に示す。なお、オーダリング部１０８は、テーブル処理部１０９への出力部分を除き、既存技術であるため、詳述しない。
【００４６】
連立一次方程式求解部１１２は、オーダリング部１０８から入力された入力情報９０１と置換ベクトル６０２を元に、解ベクトルを求め、出力する。連立一次方程式求解部１１２も同様に既存技術であるため詳述しない。
【００４７】
図１３は、図８に示す１回目の入力行列と図１２に示す２回目の入力行列の非零要素位置情報９０２、１４０２の差分を置換前、置換後について示した図である。また、図１４は図１２に示す２回目の入力行列１２０１に対応した入力情報の例１４０１を示す図である。
【００４８】
前記１回目のオーダリングに続いて、図１２に示す係数行列１２０１に対応した図１４に示す入力情報１４０１を連立一次方程式求解装置１０２に入力する。
【００４９】
この場合、入力情報１４０１の初期化フラグ１４０７が零ではないことから、初期化部１０３は、比較要素位置情報１０４に対して何もせず、入力情報１４０１をそのまま差分情報抽出部１０５へ出力し、制御を差分情報抽出部１０５へ移す。
【００５０】
差分情報抽出部１０５は、入力情報１４０１が入力されると、比較要素位置情報１０４を取得する（ステップ３０１）。このとき、比較要素位置情報１０４は、初期化状態にはないので（ステップ３０２）、入力情報１４０１の非零要素位置情報１４０２との差分情報を求める（ステップ３０３）。差分情報は、図１３の差分情報１３０１に示すように行番号と列番号の対で表した要素の集合として表す。図１３の差分情報１３０１は、（９，１１）の一つがあるので（ステップ３０４）、比較要素位置情報１０４を図１４の非零要素位置情報１４０２に更新し（ステップ３０７）、比較要素位置情報１０４と入力情報１４０１および差分情報（９，１１）を差分解析部１０６へ出力する（ステップ３０８）。
【００５１】
差分解析部１０６に比較要素位置情報１０４と入力情報１４０１および差分情報（９，１１）が入力されると、差分情報（９，１１）があることから（ステップ４０１）、テーブル情報１１０１から列ブロック対応テーブル１１０４と置換ベクトル１１０５の情報を取得する（ステップ４０４）。次に差分要素（９，１１）を図１１の置換ベクトル１１０５で座標変換し（ステップ４０５）、図１３に示す座標変換後の差分要素１３０２（７，８）と列ブロック対応テーブル１１０４を部分オーダリング領域解析部１０７に入力する。
【００５２】
続いて、前記部分オーダリング領域解析部１０７は、列ブロック対応テーブル（ＬＢ）１１０４と同一構造のＬＢＷＫテーブルを用意する（ステップ７０１）。差分要素（７，８）は未解析であり（ステップ７０２）、８列目に位置するので列ブロック対応テーブル（ＬＢ）１１０４で照合してもセパレータには属しない（ステップ７０４）。１回目の入力情報９０１のときのオーダリングによるネストの最深値は２であるから（ステップ７０５）、列ブロック対応テーブル１１０４のネストの深さが２を表す行からＬＢの値を調べていくと、ネストの深さが１の行のとき、ＬＢ（７，１）とＬＢ（８，１）が２に等しいことがわかる（ステップ７０６）。したがって、ＬＢ（７，１）と同一行で２となっているＬＢ（６，１）からＬＢ（１０，１）に対応したＬＢＷＫテーブルの位置をインクリメントする（ステップ７０７）。次にＬＢＷＫテーブルでインクリメントした列の先頭の数値６と終端の数値１０で、図１６に示すテーブル情報１１０１の列範囲情報１１１０を更新し、列範囲情報１１１０を差分解析部１０６へ出力する（ステップ７０３）。
【００５３】
図１５は、１回目の置換後入力係数行列１００１に対して置換した差分情報１３０２を加え、部分オーダリング領域解析部１０７により決定した部分オーダリング処理の対象列範囲を示した図である。また、図１６は、列範囲情報６０７の格納例を示す図である。
【００５４】
部分オーダリング領域解析部１０７から出力された列範囲情報（６，１０）、置換ベクトル１１０５、及び入力情報１４０１を部分オーダリング部１１１へ出力する（ステップ４０７）。
【００５５】
部分オーダリング部１１１は、入力された列範囲（６，１０）に対してのみ、オーダリングを施す。部分オーダリング実施後、生成した置換ベクトルと非零要素位置情報１４０２をテーブル処理部１０９に出力し、テーブル処理部１０９はテーブル情報１１０を更新した後、テーブル情報１１０から取得した置換ベクトル及び入力情報１４０１を連立一次方程式求解部１１２へ出力し、制御を連立一次方程式求解部１１２へ移す。
【００５６】
連立一次方程式求解部１１２では、入力された情報から解ベクトルを求め、解ベクトルを標準出力などへ出力し、一連の処理を終了する。
【００５７】
以上説明したように、本実施形態によれば、連立一次方程式求解装置の２回目のオーダリング処理は、図１５に示す５行５列の部分オーダリング対象領域１５０２を対象としたオーダリングで済み、他の非零構造の一致している部分に対しては、１回目のオーダリング結果を流用できる。このため、従来のように１１行１１列全体の大きさのオーダリングをする必要なくなる。すなわち、行列の形状が局所的に異なる係数行列を多数回に渡って解く場合において、前回入力した入力係数行列と今回入力した入力係数行列の非零構造（行列式中の零でない係数の存在する位置が分布する構造）が異なる部分に対しては、再度、オーダリングを施し、非零構造が一致している部分には、以前のオーダリング結果を流用することでオーダリングの処理量を削減することができ、これにより全体の処理時間を短縮することができる。
【００５８】
【発明の効果】
以上説明したように本発明によれば、多数回に渡って連立一次方程式を解く場合における一連の処理時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明の実施形態にかかる連立一次方程式求解装置を説明する図である。
【図２】連立一次方程式求解装置１０２の入出力方法を説明する図である。
【図３】差分情報抽出部１０５の処理を説明する図である。
【図４】差分解析部１０６の処理を説明する図である。
【図５】テーブル処理部１０９を説明する図である。
【図６】テーブル情報１１０の構成を説明する図である。
【図７】部分オーダリング領域解析部１０７の処理を説明する図である。
【図８】入力情報１０１に含まれる係数行列２０２の上三角行列のみを２次元的に表現した例を示す図である。
【図９】図８の係数行列に対応した入力情報の例を示す図である。
【図１０】１回目のオーダリング結果の係数行列の例を示す図である。
【図１１】更新したテーブル情報の例を示す図である。
【図１２】入力情報の係数行列を上三角行列のみ２次元的に表現した例を示す図である。
【図１３】１回目の入力行列と２回目の入力行列の非零要素位置情報の差分を置換前、置換後について示した図である。
【図１４】２回目の入力行列に対応した入力情報の例を示す図である。
【図１５】１回目の置換後入力係数行列に対して置換した差分情報を加え、部分オーダリング処理の対象列範囲を示した図である。
【図１６】列範囲情報の格納例を示す図である。
【符号の説明】
１０１  入力情報
１０２  連立一次方程式求解装置
１０３  初期化部
１０４  比較要素位置情報
１０５  差分情報抽出部
１０６  差分解析部
１０７  部分オーダリング領域解析部
１０８  オーダリング部
１０９  テーブル処理部
１１０  テーブル情報
１１１  部分オーダリング部
１１２  連立一次方程式求解部
１１３  出力情報
【図１】
2005018366.tif 000003
【図２】
2005018366.tif 000004
【図３】
2005018366.tif 000005
【図４】
2005018366.tif 000006
【図５】
2005018366.tif 000007
【図６】
2005018366.tif 000008
【図７】
2005018366.tif 000009
【図８】
2005018366.tif 000010
【図９】
2005018366.tif 000011
【図１０】
2005018366.tif 000012
【図１１】
2005018366.tif 000013
【図１２】
2005018366.tif 000014
【図１３】
2005018366.tif 000015
【図１４】
2005018366.tif 000016
【図１５】
2005018366.tif 000017
【図１６】
2005018366.tif 000018