列空間計算機
どんな行列でも列空間の基底を求められます。行が(1, 2, 3)、(2, 4, 6)、(1, 0, 1)の行列では、元の列(1, 2, 1)と(2, 4, 0)が基底になり、次元は2です。消去の各手順も表示され、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
列空間計算機は、線形代数の古典的な問い「どのベクトルが実行列の列空間を張るのか」に答えます。行列は数値行のネスト配列として、またはカンマと改行を含むプレーンテキストとして入力してください。ツールは作業用コピー上で部分ピボット付きガウス消去法を実行し、固定イプシロンのもとでピボット列を特定し、元の行列の該当する列を基底として返します。これは基本行変形が列間の線形関係を保存するため、簡約形のピボット列が入力の独立な列を選び出すからです。応答には基底ベクトル、次元(ランクに等しい)、ゼロ始まりのピボット列インデックス、丸められた元の行列、行階段形、順序付き消去ステップが含まれます。宿題の確認、試験対策、最小二乗法の事前検証、コーディング課題のフィクスチャは、どれも計算代数システムを起動せずに同じ基底を必要とします。
列空間とは何か、なぜピボット列が基底になるのか
実m×n行列Aの列空間(Col Aと表記)は、その列のすべての線形結合の集合であり、Ax = bが解を持つようなベクトルbの集合と正確に一致します。その次元はAのランクであり、基底とは空間全体を依然として張る最小の列の集合です。ここで用いる標準的な定理は、基本行変形が列間の線形関係を保存するというものです。
行階段形の第3列が第1列の2倍なら、元の行列の第3列も第1列の2倍です。したがって、階段形のピボット位置にあるAの列は線形独立であり、他のすべての列はそれらの結合となり、全体としてCol Aの基底を形成します。学生が見落としがちな微妙な点に注意してください。
基底ベクトルは簡約行列ではなく元の行列から取られます。階段形のピボット列は一般にR^mの異なる部分空間を張りますが、両方の空間は同じ次元を共有します。消去後に絶対値が固定イプシロン以下になった要素は厳密なゼロとして扱われるため、ほぼ従属な列での浮動小数点の桁落ちが幻のピボットを生み、報告される次元を水増しすることはありません。
出力はすべての交換と消去ステップを順番に示すため、算術を自分で再導出することなく、手計算やテストスイートでアルゴリズムの経路を検証できます。
実践的なヒント、制限、関連する検索
すべての要素を公開された絶対値の範囲内に保ち、クライアントを制御できる場合はネストした数値配列を送信することを推奨します。テキスト形式はスプレッドシートからの貼り付けに便利ですが、同じ数値ルールで解析されます。古典的な実例として、行が[1,2,3]、[2,4,6]、[1,0,1]の3×3行列があります。
第2列は第1列の2倍で行空間が縮退し、消去は列0と列1のみにピボットを見つけ、基底は元の最初の2列で次元は2です。テストで覚えておくべき境界ケースはゼロ行列です。ピボットを持たず、列空間はゼロベクトルのみの単点集合であり、このツールはエラーではなく、次元0の空の基底と説明メッセージを返します。
センサーデータや最小二乗計画行列でよくある、ほぼ従属だが厳密ではない列の場合は固定イプシロンが判定するため、境界上の列は脆弱なフルランク基底として報告されるのではなく、先行する列の結合として落とされると想定してください。このランディングは、列空間計算機、列空間の基底オンライン、ピボット列基底などを検索する人を対象としています。
SVDツールでも、正規直交化ツールでも(基底はGram-Schmidtの出力ではなく元の列の部分集合です)、零空間ソルバーでもありません。必要ならランクや零空間の機能と組み合わせてください。
往復確認は簡単です。 行階段形から読み取った従属係数を基底に掛け、丸め後に落とされた各列が正確に再現されることを確認し、2つの入力列を交換するとピボット集合が予測通りに変わることを確認してください。
活用例
列空間の基底演習の宿題チェック
学生は教科書の行列を貼り付け、提出前に自分で選んだピボット列や基底ベクトルを決定論的な結果と比較します。
学生の線形代数コードの単体テスト
フルランク、ランク落ち、ゼロ行列の既知の正しい基底と、意図的な非有限要素の拒否を生成し、コーディング課題の期待値に利用します。
データパイプラインにおける特徴選択の事前チェック
パイプラインは計画行列内の冗長な数値列を検出します。非ピボット列は先行する列の線形結合であり、適合前に削除できます。
よくある質問
ここでは列空間の基底はどのように計算されますか?
ツールは行列の作業用コピーを部分ピボット付きで行階段形に簡約し、その後ピボット位置にある元の行列の列を取ります。それらの列が列空間の基底を形成します。
なぜ基底は簡約行列ではなく元の行列の列を使うのですか?
行変形は列空間そのものを変えますが、列間の線形関係は保存します。ピボット位置はどの元の列が独立かを特定するため、基底は入力行列から取る必要があります。
ゼロ行列は何を返しますか?
次元0の空の基底を返します。ゼロ行列の列空間はゼロベクトルのみであり、基底ベクトルを持ちません。これはエラーではなく有効な成功結果です。
列空間から連立方程式 Ax = b について何が分かりますか?
列空間は、Ax = b に解があるようなベクトル b の集まりそのものです。b が列空間の外にあれば、どんな x を試しても解はありません。
表計算ソフトから行列を貼り付けられますか?
はい、貼り付けられます。行ごとに改行するかセミコロンで区切り、各成分はコンマか空白で区切ってください。最大32行・32列まで同じ規則で読み取ります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/column-space \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"matrix":[[1,2,3],[2,4,6],[1,0,1]]}'const res = await fetch("https://api.kit.forhosting.com/math/column-space", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"matrix": [
[
1,
2,
3
],
[
2,
4,
6
],
[
1,
0,
1
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/column-space",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"matrix": [
[
1,
2,
3
],
[
2,
4,
6
],
[
1,
0,
1
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/column-space", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"matrix":[[1,2,3],[2,4,6],[1,0,1]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"matrix":[[1,2,3],[2,4,6],[1,0,1]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/column-space", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"matrix": [
[
1,
2,
3
],
[
2,
4,
6
],
[
1,
0,
1
]
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.column_space",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_rows | 32 |
max_cols | 32 |
max_abs | 1000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
NaN、Infinity、非数値テキストなどの非有限な要素は、暗黙のゴミを出力する代わりにinvalid_inputとしてリクエストを拒否します。処理経路は純粋に決定論的な算術であり、ネットワークも乱数シードも時計依存もないため、無料のブラウザ実行とプリペイドAPIは、呼び出すたびに固定小数丸め後の同一のJSONを返します。
列空間とは何か、なぜピボット列が基底になるのか
このツールは部分ピボット付きガウス消去法を実行し、現在の列で絶対値が最大の要素を持つ行と作業中の行を交換することで、IEEE倍精度の純粋な基本行演算で可能な限り割り算係数の条件を良好に保ちます。
APIの呼び出し方と返される内容
等長の数値行の配列(例:各3つの数値からなる3行)、または行を改行またはセミコロンで、要素をカンマまたは空白で区切ったテキストブロックのいずれかを受け付けます。各要素は絶対値が公開上限の1兆以内に収まる有限の数値でなければならず、行列全体はWorkerとブラウザでの処理を対話的に保つため最大32行32列です。そこでは各非ピボット列が左側のピボット列をどのように結合するかを表しています。必須フィールドmatrix(別名rows、A、data)を1つ含むJSONボディを送信してください。成功時の応答は、dimensionを基底のサイズ(ランクに等しい)に、rowsとcolsを入力の次元に、pivot_columnsを走査順のゼロ始まりピボット列インデックスに、basisをそれらのインデックスにおける元の行列の列ベクトルの配列に、matrixを丸められた元の行列に、row_echelonを丸められた簡約形に、messageを短い英語の要約に、stepsを順序付き消去メモの配列に設定します。検証失敗(matrixの欠落、空行、非有限または範囲外の要素、上限超過の次元、不整合な行長)はinvalid_inputを返し、課金されることはありません。料金は成功したリクエストごとに一律$0.002で、単位アイテム付き、限界単価はゼロです。次元だけが必要なクライアントはdimensionフィールドを読み基底を無視でき、従属関係が必要なクライアントはrow_echelonフィールドから復元できます。
実践的なヒント、制限、関連する検索
invalid_inputを返す失敗タスクはプリペイド残高を消費しないため、学習者が故意にジャグ行や記号テキストを送る探索的スクリプトを安価に保てます。
技術的な質問
要素が有限の数値でない場合はどうなりますか?
NaN、Infinity、欠落セル、非数値テキストは、問題の位置を示すメッセージ付きでリクエストをinvalid_inputにします。失敗したリクエストに課金されることはありません。
列空間計算機は無料ですか?
ブラウザツールは無料でローカルで動作します。API呼び出しは成功したリクエストごとに$0.002のプリペイドKIT残高を使用し、失敗したタスクに課金されることはありません。