1 <?xml version="1.0" encoding="utf-8"?>
4 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
5 * Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
7 * This file must be used under the terms of the CeCILL.
8 * This source file is licensed as described in the file COPYING, which
9 * you should have received as part of this distribution. The terms
10 * are also available at
11 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
15 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="eigs" xml:lang="ja">
19 <refname>eigs</refname>
35 d = eigs(A [,B [,k [,sigma [,opts]]]])
37 [d, v] = eigs(A [,B [,k [,sigma [,opts]]]])
41 d = eigs(Af, n [,B [,k [,sigma [,opts]]]])
43 [d, v] = eigs(Af, n [,B [,k [,sigma [,opts]]]])
61 <para>通常または疎, 実数または複素数, 対称または非対称正方行列</para>
87 スカラー, Aが関数の場合のみ <literal>A</literal> 定義
103 <literal> A</literal>と同じ次元の
119 <para>整数, 計算する固有値の数</para>
131 <para>実スカラーまたは長さ2の文字列</para>
155 <para>実数または複素数の固有値ベクトルまたは対角行列 (対角項に固有値)</para>
187 eigs関数の目的は,疎で大きな行列の最大固有値を計算することです.
195 <term>d = eigs(A) または d = eigs(Af, n)</term>
201 は,固有値問題<literal>A * v = lambda * v</literal>を解きます.
203 このコールは,大きさが最大の6個の固有値を有する
205 ベクトル <literal>d</literal>を返します.
207 <literal>A</literal> は正方行列で,
209 対称または非対称, 実数または複素数, 通常または複素数
217 <literal>A</literal> は関数<literal>Af</literal>で
221 ベクトル引数の長さを指定するスカラー<literal>n</literal>を
225 この関数は,以下のヘッダを有する必要があります:
229 <programlisting role="no-scilab-exec">
239 この関数 <literal>Af</literal> は以下の4つの式の1つを返す必要があります:
247 <para> sigmaが指定されないか文字列が'SM'以外の場合.</para>
255 <para>sigmaが0または'SM'の場合.</para>
261 <term>(A - sigma * I) \ x</term>
263 <para>標準固有値問題の場合, ただし I は単位行列.</para>
269 <term>(A - sigma * B) \ x</term>
271 <para> 一般化固有値問題の場合.</para>
285 <term>[d, v] = eigs(A) or [d, v] = eigs(Af, n)</term>
291 は,6個の最大固有値を対角項に有する対角行列 <literal>d</literal> を返します.
293 <literal>v</literal> は n行6列の行列で,
295 その列は返された固有値に対応する6個の固有値ベクトルです.
305 <term>d = eigs(A, B)</term>
311 は,正定行列<literal>B</literal>を指定して,
313 一般化固有値問題 <literal>A * v = lambda * B * v </literal>
325 <literal>B</literal> が指定されない場合,
327 <literal>B = []</literal> が使用されます.
337 <literal>B</literal> が指定された場合,
339 <literal>B</literal> はAと同じ大きさとする必要があります.
353 <term>d = eigs(A, B, k)</term>
359 は,<literal>k</literal>個の固有値をベクトル<literal>d</literal>に返します.
361 <literal>k</literal> が指定されない場合,
363 <literal>k = min(n, 6)</literal>, ただし, nはAの行数となります.
373 <term>d = eigs(A, B, k, sigma)</term>
379 は,<literal>sigma</literal>で定義された<literal>k</literal>個の固有値を
381 ベクトル<literal>d</literal>に返します.
383 <literal>sigma</literal> は,0を含む実数または複素数,または文字列
387 sigma が長さ2の文字列の場合, 以下の値のどれかとします :
397 <literal>'LM'</literal> は,大きさが最大の<varname>k</varname>個の
409 <literal>'SM'</literal> は,大きさが最小の<varname>k</varname>個の
411 固有値を計算します(sigma = 0 と同じ).
421 <literal>'LA'</literal> は,実対称問題のみに適用され,
423 <varname>k</varname>個の代数的最大固有値を計算します.
433 <literal>'SA'</literal> は,実対称問題のみに適用され,
435 <varname>k</varname>個の代数的最小固有値を計算します.
445 <literal>'BE'</literal> は,実対称問題のみに適用され,
447 スペクトラムの各端から半分づつ,<varname>k</varname>個の固有値を計算します.
457 <literal>'LR'</literal> は,実非対称または複素問題のみに適用され,
459 <varname>k</varname>個の実部最大の固有値を計算します.
469 <literal>'SR'</literal> は,実非対称または複素問題のみに適用され,
471 <varname>k</varname>個の実部最小の固有値を計算します.
481 <literal>'LI'</literal> は,実非対称または複素問題のみに適用され,
483 <varname>k</varname>個の虚部最大の固有値を計算します.
493 <literal>'SI'</literal> は,実非対称または複素問題のみに適用され,
495 <varname>k</varname>個の虚部最小の固有値を計算します.
509 <term>d = eigs(A, B, k, sigma, opts)</term>
515 <literal> opts </literal> 構造体が指定された場合,
517 <literal>k</literal> 個の固有値を計算する際に
533 所要の収束閾値. デフォルトで, <literal>tol = %eps</literal>.
549 最大反復回数. デフォルトで, <literal>maxiter = 300</literal>.
567 実非対称問題の場合, <literal>ncv</literal>の値は
569 <literal>2 * k + 1 </literal>以上とする必要があり,
571 デフォルトで <literal>ncv = min(max(2 * k + 1, 20), nA) </literal>です.
573 実対称または複素数問題の場合,<literal>ncv</literal>は
575 <literal>2 * k </literal>以上とする必要があり,
577 デフォルトで<literal> ncv = min(max(2 * k, 20), nA) </literal>
579 です.ただし,<literal> nA = size(A, 2) </literal>.
599 デフォルトで,<literal>resid</literal> はランダムな
617 <literal>B</literal>ではなく
619 <literal>chol(B)</literal>を指定します.
623 , <literal>cholB</literal> は %f です.
639 <literal>Af</literal> が指定された場合,
641 <literal>isreal</literal> を定義できます.
643 デフォルトで, <literal>isreal</literal> は %t です.
645 この引数は,<literal>A</literal>が行列の場合,
663 <literal>Af</literal> が指定された場合,
665 <literal>issym</literal> を定義できます.
667 デフォルトで <literal>issym</literal> は %f です.
669 この引数は,<literal>A</literal>が行列の場合,
695 この関数はR. Lehoucq, K. Maschhoff, D. Sorensen, および C. Yang.により書かれた
705 <para>実対称問題用のDSAUPD および DSEUPD ルーチン,</para>
711 <para>実非対称行列用のDNAUPD および DNEUPD ルーチン.</para>
717 <para>複素問題用のZNAUPD および ZNEUPD.</para>
727 <title>実対称問題の例</title>
729 <programlisting role="example">
732 A = diag(10*ones(10,1));
733 A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
734 A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(9,1));
744 d = eigs(A, B, k, sigma)
745 [d, v] = eigs(A, B, k, sigma)
747 d = eigs(A, B, k, sigma, opts)
748 [d, v] = eigs(A, B, k, sigma, opts)
757 d = eigs(AS, BS, k, sigma)
758 [d, v] = eigs(AS, BS, k, sigma)
760 d = eigs(AS, BS, k, sigma, opts)
761 [d, v] = eigs(AS, BS, k, sigma, opts)
772 d = eigs(fn, 10, [], k, 'LM', opts)
778 d = eigs(fn, 10, [], k, 'SM', opts)
781 y = (A - 4 * eye(10,10)) \ x;
784 d = eigs(fn, 10, [], k, 4, opts)
793 <title>実非対称問題の例</title>
795 <programlisting role="example">
800 A = diag(10*ones(10,1));
801 A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
802 A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
812 d = eigs(A, B, k, sigma)
813 [d, v] = eigs(A, B, k, sigma)
815 d = eigs(A, B, k, sigma, opts)
816 [d, v] = eigs(A, B, k, sigma, opts)
824 d = eigs(AS, BS, k, sigma)
825 [d, v] = eigs(AS, BS, k, sigma)
827 d = eigs(AS, BS, k, sigma, opts)
828 [d, v] = eigs(AS, BS, k, sigma, opts)
839 d = eigs(fn, 10, [], k, 'LM', opts)
845 d = eigs(fn, 10, [], k, 'SM', opts)
848 y = (A - 4 * eye(10,10)) \ x;
851 d = eigs(fn, 10, [], k, 4, opts)
860 <title>複素問題の例</title>
862 <programlisting role="example">
865 A = diag(10*ones(10,1) + %i * ones(10,1));
866 A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
867 A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
877 d = eigs(A, B, k, sigma)
878 [d, v] = eigs(A, B, k, sigma)
879 d = eigs(A, B, k, sigma, opts)
880 [d, v] = eigs(A, B, k, sigma, opts)
889 d = eigs(AS, BS, k, sigma)
890 [d, v] = eigs(AS, BS, k, sigma)
892 d = eigs(AS, BS, k, sigma, opts)
893 [d, v] = eigs(AS, BS, k, sigma, opts)
904 d = eigs(fn, 10, [], k, 'LM', opts)
910 d = eigs(fn, 10, [], k, 'SM', opts)
913 y = (A - 4 * eye(10,10)) \ x;
916 d = eigs(fn, 10, [], k, 4, opts)
923 <refsection role="see also">
927 <simplelist type="inline">
931 <link linkend="spec">spec</link>
947 <revnumber>5.4.0</revnumber>
953 dnaupd, dneupd, dsaupd, dseupd, znaupd および zneupdは廃止されました.