QR 分解を使って、a x = b を最小二乗の意味で解きます。R の qr.solve() と同等です。
a x = b
qr.solve()
ランクが min(nrow, ncol) より小さい場合は例外を投げます。b を省略した場合は、a の逆行列を返します (正方行列の場合だけです)。横長の行列では、使われない列の係数は 0 になります (R と同じです)。
min(nrow, ncol)
b
a
LAPACK による分解 (qr(a, { lapack: true })) にはランクがありません。そのため、ある |R[k][k]| が tol * |R[0][0]| 以下 (tol は options の値で、既定は 1e-7) の場合は、代わりに例外を投げます。R の qr.solve() はこれを検出しません。
qr(a, { lapack: true })
|R[k][k]|
tol * |R[0][0]|
tol
options
1e-7
行列 (行の配列です) または qr が返す QR 分解です。
Optional
右辺です。ベクトルまたは行列です。既定: 単位行列です。
tol: a が行列の場合に qr へ渡す許容誤差です。既定: 1e-7 です。
b がベクトルの場合はベクトルです。それ以外の場合は行の配列です。
qrSolve([[2, 1], [1, 3]], [3, 5]); // [0.8, 1.4]qrSolve([[1, 1], [1, 2], [1, 3]], [1, 2, 4]); // [-0.6667, 1.5] コピー
qrSolve([[2, 1], [1, 3]], [3, 5]); // [0.8, 1.4]qrSolve([[1, 1], [1, 2], [1, 3]], [1, 2, 4]); // [-0.6667, 1.5]
QR 分解を使って、
a x = bを最小二乗の意味で解きます。R のqr.solve()と同等です。ランクが
min(nrow, ncol)より小さい場合は例外を投げます。bを省略した場合は、aの逆行列を返します (正方行列の場合だけです)。横長の行列では、使われない列の係数は 0 になります (R と同じです)。LAPACK による分解 (
qr(a, { lapack: true })) にはランクがありません。そのため、ある|R[k][k]|がtol * |R[0][0]|以下 (tolはoptionsの値で、既定は1e-7) の場合は、代わりに例外を投げます。R のqr.solve()はこれを検出しません。