ヴァージョンが上がるごとにファイルサイズは単調増加している。
-rw-r--r-- 1 mk lab00 8041 1 3 2003 Intlab_Unix_V4.1.2/intval/verifylss.m -rw-r--r-- 1 mk lab00 38913 12 12 2017 Intlab_V10.2/intval/verifylss.m -rw-r--r-- 1 mk lab00 17050 3 16 2010 Intlab_V6/intval/verifylss.m -rw-r--r-- 1 mk staff 37919 5 23 2014 Intlab_V9/intval/verifylss.m |
ハイブリッドな(密行列係数)連立1次方程式ソルバー
最初の段階は、近似解の誤差を包み込む修正を施した Krawcyzk 作用素に基づく。 Krawcyzk 作用素については
R. Krawczyk: Newton-Algorithmen zur Bestimmung von Nullstellen mit Fehlerschranken, Computing 4, 187-201, 1969.
R. E. Moore: A Test for Existence of Solutions for Non-Linear Systems, SIAM J. Numer. Anal. 4, 611-615, 1977を見よ (Krawczyk [2], Moore [18])。
反復スキームと、イプシロン・インフレーションについては、Rump による次 の論文で与えられている (Rump [29], [22])。
S. M. Rump: Kleine Fehlerschranken bei Matrixproblemen, Ph.D. Thesis, University of Karlsruhe, 1980. (これは入手できてない。)
S. M. Rump: Verification methods for dense and sparse systems of equations, in : J. Herzberger (ed.), Topics in Validated Computations - Studies in Computational Mathematics, Elsevier, Amsterdam, 63-136, 1994.
疎行列係数は s.p.d (対称正定値) であるとする。そうでない場合は、通常の 方程式として扱う (疎行列は、係数行列が対称正定値の場合はそれを生かした 計算をするが、そうでない場合は特別扱いはしない、という意味かな?「通常 の方程式」は「正規方程式」かな?)。対称な場合は
X = verifylss(A,b,1);と呼び出さねばならない。これは条件数を2乗にすることに注意 3。
7回反復しても成功しない場合は、第2段階。それは
A. Neumaier: A simple derivation of the Hansen-Bliek-Rohn-Ning-Kearfott enclosure for linear interval equations, Reliable Computing 5 (1999), 131-136, and Erratum, Reliable Computing 6 (2000), 227. (入手済み)による (Neumaier [30], [31])。
Krawcyzk 作用素に基づく第1段階を飛ばして、直接第2段階から始めること も出来る。そうするには intvalinit('LssSecondStage') とする。 詳しいことは intvalinit を見よ4。
第2段階の結果は、非常に悪条件の連立1次方程式については(第1段階)より 良い品質となる可能性があり、通常は同程度の品質である。
第2段階は、第1段階よりも少し遅い。800MHzのラップトップでの時間計測 (timing) は次のようになる5。
t1 = 第1段階のみ, t2 = 第2段階のみ
A and b point data | A and b point data | |||||
n | t1 | t2 | t2/t1 | t1 | t2 | t2/t1 |
100 | 0.04 | 0.05 | 1.33 | 0.04 | 0.05 | 1.31 |
200 | 0.17 | 0.25 | 1.49 | 0.23 | 0.31 | 1.35 |
500 | 2.1 | 3.2 | 1.52 | 2.8 | 3.9 | 1.40 |
1000 | 13.7 | 21.6 | 1.58 | 18.0 | 26.3 | 1.46 |
疎行列係数に対するソルバーは
S. M. Rump: Validated Solution of Large Linear Systems, Computing Supplementum 9, 191-212, 1993(Rump [32]) に基づく。 現時点での実装は正値対称行列のみ6。
intvalinit('ImprovedResidual') とすると、 点行列について残差改良をする7。
intvalinit('QuadrupleResidual') とすると、 4倍精度演算を用いた残差改良をする。
解釈(インタープリテーション)のオーバーヘッドのため、これは、密な点行列 に対してのみ行われる8。
追加で必要な計算時間は以下の表を見よ。やはり 800MHz ラップトップ、点行 列と点ベクトル、相対誤差は...9
time[sec] t1 = doubleresidual, t2 = improvedresidual, t3 = quadrupleresidual max.rel.error r1 = doubleresidual, r2 = improvedresidual, r3 = quadrupleresidual
行列の条件数 1e10:
n | t1 | t2 | t3 | t2/t1 | t3/t1 | t1 | r2 | r3 |
100 | 0.03 | 0.03 | 0.07 | 1.20 | 2.63 | 1.6e-05 | 6.0e-11 | 2.2e-16 |
200 | 0.13 | 0.17 | 0.37 | 1.34 | 2.85 | 4.6e-05 | 1.5e-10 | 2.2e-16 |
500 | 1.7 | 2.2 | 4.0 | 1.25 | 2.28 | 1.4e-04 | 6.7e-10 | 2.2e-16 |
行列の条件数 1e15:
n | t1 | t2 | t3 | t2/t1 | t3/t1 | t1 | r2 | r3 |
100 | 0.04 | 0.05 | 0.17 | 1.21 | 3.71 | 2.8e-00 | 1.3e-05 | 1.4e-15 |
200 | 0.27 | 0.30 | 0.45 | 1.11 | 1.66 | 2.8e-00 | 1.3e-05 | 1.4e-15 |
500 | 3.2 | 3.5 | 4.4 | 1.11 | 1.39 | 2.8e-00 | 1.3e-05 | 1.4e-15 |
(時間のことはさておき、非常にきれいな結果と思う。 オプション1つで切り替えられるのは素晴らしい。)
第3段階の、過剰な、あるいは不定な連立1次方程式については
S. M. Rump: Solving Algebraic Systems with High Accuracy, in "A New Approach to Scientific Computation", eds. U. Kulisch and W. Miranker, Academic Press, 51-120, 1983.を見よ (Rump [33])。
桂田 祐史