QR分解
実数の行列を、正規直交な列を持つQと上三角行列Rの積に、グラム・シュミット法で分解します。行が3, 1と0, 2の行列はすでに上三角なので、Qは単位行列、Rは元の行列と同じです。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
このQR分解計算機は、実数行列 A の列にグラム・シュミット法を適用し、正規直交な因子 Q と上三角な因子 R に分解して A が Q と R の積になるようにします。演算は完全に決定的です。内積、ユークリッドノルム、列の更新は有限の浮動小数点演算のみを用い、ネットワーク通信もサンプリングも日付に依存する近道もありません。線形代数の宿題、最小二乗の準備、プログラミングコンテストのフィクスチャにはブラウザ上で無料でご利用いただけます。
QR分解の意味と結果に含まれるもの
行数が m、列数が n で m が少なくとも n である実数行列 A の QR 分解は、列が正規直交な m 行 n 列の行列 Q と、n 行 n 列の上三角行列 R の積として A を表します。正規直交とは、Q の転置と Q の積が位数 n の単位行列になること、つまり各列のユークリッド長が 1 で、相異なる列が互いに直交することを意味します。
R の対角が厳密に正であるこの薄い分解が存在することは、A の列が線形独立であることと同値です。後の列がそれ以前の列の張る空間に入っていれば、グラム・シュミット法はユークリッドノルムがゼロの残差を生み、きちんと定義された単位列は作れません。
この計算機は数値安定性のために修正したグラム・シュミット法を、入力された列に適用し、連続する内積を R に記録し、各残差を正規化して Q を得ます。ハウスホルダー反射の経路もギブンス回転の経路も、ランク明示のフォールバックもありません。
拒否されるケースには、行列の欠落、配列でない行、不揃いな形、行より多い列、有限でない成分、上限を超える大きさ、列が線形従属な行列が含まれます。逆行列、行列式、ランクの数え上げ、A x が b に等しい系の求解が必要な場合は、その問いに専用のツールをご利用ください。
行列の読み取り方と Q と R の再現性の保ち方
成分の文字列に付く先頭のプラス記号や指数表記は、有限の十進数として解釈できる限り許可されます。埋め込まれた空白や十六進プレフィックス、数値でないトークンは、誤ったセルが誤った因子にならないよう、明確なメッセージとともに拒否されます。形は縦長または正方でなければなりません。
m 行 n 列で m は少なくとも n です。列が行より多いと線形独立にはなり得ないためです。計算は修正グラム・シュミット法を使います。
作業中の各列は、すでに受け入れた単位列に対して直交化され、残差の長さが R の次の正の対角成分になり、残差は単位長にスケールされます。
学習・科学・ソフトウェアにおける QR 分解の位置づけ
学習者が QR 分解に出会うのは、線形代数の授業がグラム・シュミット直交化から最小二乗へと進むとき、小さな整数行列の Q と R を求めるコンテスト問題に取り組むとき、手計算を信じる前に Q の転置と Q の積が単位行列になることを確かめるときです。
教師は、黙ってハウスホルダー反射に切り替えたり列の符号を反転したり従属列を黙って落としたりする不透明な電卓アプリを信用せずに、控えめな m と n の解答例を事前に作れます。
開発者は同じ契約をスクリプトから呼び出し、ソルバー向けの決定的なテストベクターを用意したり、投影デモの前に利用者入力の基底列を正規直交化したり、スケッチではなくグラム・シュミットの QR 対を求めるプログラミング課題の条件を満たしたりします。
工学やデータ実務では、時間制限の中で本格的な数式処理一式を使わずに最小二乗残差や基底の取り換えを確認できる、小さなフルランク系の高速なオフライン分解がしばしば必要です。製品や教育向けツールは、学習者が行列を入力し、画面が手法名とともに Q を R の横に示さなければならないときに、この分解を使います。このページ上の処理はすべてブラウザ内で完結します。
m と n は控えめに、係数は通常の浮動小数点の大きさに収めて、打ち消しが支配しないようにしてください。教室の整数と典型的な工学スケールでは、因子は倍精度の範囲で正確です。
活用例
宿題とグラム・シュミットの確認
教科書の行列を Q と R に分解し、試験や最小二乗の授業の前に、Q の列が正規直交で A が Q と R の積になることを確かめてください。
決定的なテスト用フィクスチャ
手元の数値ライブラリに依存してはならない単体テスト、性質検査、継続的インテグレーションのアサーション向けに、再現可能な Q と R の値を生成します。
ソルバーと教材ソフトウェア
利用者が入力した基底列を薄い QR 対に正規直交化し、投影デモ、最小二乗の補助、対話的な線形代数の授業に使います。
よくある質問
QR分解計算機の料金はいくらですか?
このページではブラウザ上で無料です。無効な入力は課金されません。
Q と R はどのように計算されますか?
A の列に対する修正グラム・シュミット法です。各列はすでに受け入れた単位列に対して直交化され、残差の長さが R の正の対角成分になり、残差は単位長にスケールされて Q の次の列になります。
列が線形従属だとどうなりますか?
ほぼゼロの長さの残差は、後の列がそれ以前の列の張る空間に入っていることを意味し、対角が厳密に正の薄い QR は存在しません。このツールは列を落とさず、ランク明示の代替も返しません。
長方形の行列でも使えますか?
使えます。 行列が縦長または正方(列数以上の行数)で、列が線形独立である場合です。列が行より多い横長の行列は、それらの列が独立になり得ないため拒否されます。
結果がある精度に丸められるのはなぜですか?
既定の精度は小数点以下 10 桁です。precision は 0 から 15 まで指定できます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/qr-decomposition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"matrix":[[1,1],[1,0],[0,1]]}'const res = await fetch("https://api.kit.forhosting.com/math/qr-decomposition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"matrix": [
[
1,
1
],
[
1,
0
],
[
0,
1
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/qr-decomposition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"matrix": [
[
1,
1
],
[
1,
0
],
[
0,
1
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/qr-decomposition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"matrix":[[1,1],[1,0],[0,1]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"matrix":[[1,1],[1,0],[0,1]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/qr-decomposition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"matrix": [
[
1,
1
],
[
1,
0
],
[
0,
1
]
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.qr_decomposition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_rows | 20 |
max_cols | 20 |
max_abs_entry | 1000000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
列が線形独立であるときは、両方の行列、行数と列数、手法タグ、安定した JSON 契約のための丸め精度を返します。ある列がそれ以前の列の線形結合であるときは、直交化後の残差が潰れ、ランク明示の代替やハウスホルダー経路をでっち上げる代わりに、無効な入力としてリクエストを拒否します。CI や教材ソフトウェア、指導用デモで再現可能な QR 対が必要な場合は、成功したリクエスト1件につき $0.002 で API をご利用ください。
QR分解の意味とレスポンスに含まれる内容
レスポンスは、指定した精度に丸めた Q と R、入力行列のエコー、次元、手法タグ gram_schmidt、使用した精度、短い公式の説明を返します。エンジンは、文書化されたサイズと大きさの制限内で列フルランクの分解を終えるか、invalid_input として入力を拒否します。このページが答えるのは QR 対だけであり、ワークシートや単体テスト、代替分解をでっち上げてはならない API 利用者に適した安定した数値出力を提供します。
行列の読み取り方と Q と R の再現性の保ち方
優先されるフィールドは matrix で、各行の列数が同じ有限数の行からなる入れ子の配列です。ただし、スプレッドシートやクエリ文字列、型付きフォームで同じ契約を再利用できるよう、エイリアス a、A、mat も受け付けます。任意の precision フィールド(エイリアス decimals、dp)は、Q と R の各成分を何桁の小数で出すかを選び、既定は十、上限は十五で、JSON のゴールドンが安定するようにしています。絶対および相対の厳しい許容を下回る残差は線形従属とみなされ、invalid_input で失敗します。自動化パイプラインの中でグラム・シュミット法を自分で再実装せずに同じ数学的結果が必要な場合は、このページの無料のブラウザ実行と有料の API を組み合わせてご利用ください。
学習・科学・ソフトウェアにおける QR 分解の位置づけ
API 経由では成功した照会1件ごとに $0.002 がかかり、検証に失敗した場合は課金されず、応答を返したあとに何も保存されません。無料の対話的な探索と、同じ結果を返す有料 API という分け方は、ティア A カタログの他の部分と一致しており、教室のデモから数学的結果を変えずに自動化パイプラインへ移ることを可能にします。