1
<?xml version="1.0" encoding="UTF-8"?>
3
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4
* Copyright (C) 2008 - INRIA
6
* This file must be used under the terms of the CeCILL.
7
* This source file is licensed as described in the file COPYING, which
8
* you should have received as part of this distribution. The terms
9
* are also available at
10
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
13
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="ja" xml:id="qr">
16
<refpurpose> QR 分解</refpurpose>
20
<synopsis>[Q,R]=qr(X [,"e"])
22
[Q,R,rk,E]=qr(X [,tol])
31
<para>実数または複素数の行列</para>
43
<para>正方直交またはユニタリ行列</para>
50
<literal>X</literal>と同じ次元の行列
64
整数 (<literal>X</literal>のQRランク)
74
<term>[Q,R] = qr(X)</term>
77
<literal>X= Q*R</literal>となるような
78
<literal>X</literal>と同じ次元の
79
上三角行列<literal>R</literal>および直交(複素数の場合はユニタリ)行列
80
<literal>Q</literal>を出力します.
81
<literal>[Q,R] = qr(X,"e")</literal>は次にように
83
<literal>X</literal> が m行n列 (m > n)の場合,
84
<literal>Q</literal>の最初のn列のみが
85
<literal>R</literal>の最初のn行と同時に計算されます.
88
<literal>Q*R = X</literal> から,
89
行列 <literal>X</literal>のk番目の列は,
90
(係数 <literal> R(1,k), ..., R(k,k) </literal>を用いて)
91
<literal>Q</literal>の最初のk列の線形結合で表されます.
92
<literal>Q</literal>の最初のk列は,<literal>X</literal>の最初のk列
94
<literal>X</literal>の列<literal>k</literal>(すなわち, <literal>X(:,k)</literal> )
95
が<literal>X</literal>の最初の<literal>p</literal>列の線形結合の場合,
96
エントリ<literal>R(p+1,k), ..., R(k,k)</literal>は 0 となります.
97
この場合,<literal>R</literal>は上台形となります.
98
<literal>X</literal> がランク<literal>rk</literal>を有する場合,
99
行 <literal>R(rk+1,:), R(rk+2,:), ...</literal> は 0 となります.
104
<term>[Q,R,E] = qr(X)</term>
107
<literal>X*E = Q*R</literal>となるような
108
(列)置換行列<literal>E</literal>,
109
降順の対角要素を有する上三角行列 <literal>R</literal>,
110
直交(またはユニタリ)<literal>Q</literal>
112
<literal>rk</literal>が<literal>X</literal>のランクの場合,
113
<literal>R</literal>の主対角項に沿った
114
最初の<literal>rk</literal>個のエントリ,
115
すなわち,<literal>R(1,1), R(2,2), ..., R(rk,rk)</literal>は
117
<literal>[Q,R,E] = qr(X,"e")</literal> は
119
<literal>X</literal> が m行n列 (m > n)の場合,
120
<literal>Q</literal>の最初のn列のみが
121
<literal>R</literal>の最初のn行と同時に計算されます.
126
<term>[Q,R,rk,E] = qr(X ,tol)</term>
129
<literal>rk</literal> = <literal>X</literal>のランクの推定値
131
すなわち, <literal>rk</literal>は,
132
指定した閾値<literal>tol</literal>より大きな
133
<literal>R</literal>の対角要素の数となります.
138
<term>[Q,R,rk,E] = qr(X) </term>
141
<literal>rk</literal> = <literal>X</literal>のランクの推定値
143
すなわち,<literal>rk</literal> は
144
<literal>tol=R(1,1)*%eps*max(size(R))</literal>より大きな
145
<literal>R</literal>の対角要素の数となります.
146
<literal>R</literal>の条件数を用いる
147
ランク計算型のQR分解については,<literal>rankqr</literal>を
156
<programlisting role="example"><![CDATA[
157
// QR factorization, generic case
158
// X is tall (full rank)
159
X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
161
//X is fat (full rank)
162
X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
164
//Column 4 of X is a linear combination of columns 1 and 2:
165
X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
167
//X has rank 2, rows 3 to $ of R are zero:
168
X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
170
//Evaluating the rank rk: column pivoting ==> rk first
171
//diagonal entries of R are non zero :
172
A=rand(5,2)*rand(2,5);
173
[Q,R,rk,E] = qr(A,1.d-10);
175
svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk))
178
<refsection role="see also">
180
<simplelist type="inline">
182
<link linkend="rankqr">rankqr</link>
185
<link linkend="rank">rank</link>
188
<link linkend="svd">svd</link>
191
<link linkend="rowcomp">rowcomp</link>
194
<link linkend="colcomp">colcomp</link>
199
<title>使用する関数</title>
201
qr 分解はLapack ルーチン DGEQRF, DGEQPF,
202
DORGQR (実数行列)および ZGEQRF, ZGEQPF, ZORGQR (複素数の場合)