固有値・固有ベクトル計算機
行が(2, 1)と(1, 2)の行列の固有値は3と1で、それぞれ長さ1の固有ベクトルと組で示されます。50×50までの正方行列を入力すると、実数の固有値と固有ベクトルの組がすべて大きい順に分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
固有値・固有ベクトル計算機は、行ごとに入力した正方行列(最大50×50)を受け取り、実数の固有ペアの完全な集合を返します。各固有値に対応する固有ベクトルが単位長に正規化され、固有値の大きい順に並びます。固有ペアは線形変換の指紋のようなものです。どの方向を変えずに保ち、それぞれをどれだけ伸ばすかを示し、振動解析や安定性チェックからPageRank、マルコフ連鎖、主成分分析に至るまで、あらゆる分野の基盤となっています。特性多項式を手で展開したり数値ライブラリを導入したりする代わりに、要素を送信すれば、1回の決定的な呼び出しで、選択した精度に丸められた固有ペアが返されます。同じモジュールがこのページのブラウザ上で無料で動作しますので、ワークフローを自動化する場合にのみお支払いいただきます。
固有ペアが示すこと
正方行列Aの固有ベクトルとは、Aが単にスカラー倍するだけの非零ベクトルのことです。つまり、あるスカラーλ(固有値)について A·v = λ·v が成り立ちます。幾何学的には、固有ベクトルは変換が回転もせん断もしない軸に沿った方向を指し、その軸方向にλ倍だけ伸縮するだけです。
このペア(λ, v)を固有ペアと呼び、固有値・固有ベクトル計算機が返すのはまさにこれです。固有値ごとに1件のレコードがあり、固有値そのものと対応する単位固有ベクトルが含まれるため、対応関係を誤読することはありません。ペアは固有値の大きい順に並ぶため、系の支配的な方向——反復プロセスの長期的な挙動を支配する方向——が先頭に来ます。
負の固有値は方向の反転を表し、ゼロの固有値は非自明な零空間と非可逆行列を示し、重複する固有値は問題の対称性を示唆します。また、行列が複素固有値を持つ場合は、実数の数値を捏造するのではなく、その旨を明示します。
計算の仕組み
アルゴリズムは完全に決定的です。ランダムな初期ベクトルや実行ごとに変わる反復回数はないため、同じ行列からは常にバイト単位で同一の固有ペアが返されます。共分散分析、構造力学、最適化に頻繁に現れる対称行列は、巡回ヤコビスイープで処理されます。
これは固定された順序の平面回転によって非対角要素をゼロにしながら、回転を固有ベクトル行列に累積していく手法です。ヤコビ法は理論上最速ではありませんが、このツールが扱う中小規模のサイズでは非常に正確で、単純なべき乗法が失敗する重複固有値の場合も安定して処理します。
一般の非対称行列は、ウィルキンソンシフト付きQR反復で固有値を抽出し、続いて元の行列に対する逆反復で固有値ごとの固有ベクトルを復元します。応答を返す前に、復元された固有ベクトルが線形独立であることを検証します。線形独立でない場合——典型的な欠損行列[[1,1],[0,1]]のように——もっともらしい誤答を返すのではなく、明確なエラーで失敗します。
各固有値と固有ベクトルの各成分は、ご指定の小数精度(0〜15桁、デフォルト10桁)に丸められます。
固有ペアの利用場面
固有ペアは、線形系が発展したり振動したりするあらゆる場面に現れます。工学では、構造物の固有振動数は剛性・質量系の固有値の平方根であり、固有ベクトルはモード形状——各振動数で構造物がどのように動くか——です。データサイエンスでは、主成分分析は共分散行列の固有分解にほかならず、固有ベクトルが主方向、固有値が各方向が捉える分散の大きさを表します。
ウェブ検索も固有ペアのおかげで成り立っています。PageRankはウェブのリンク行列の支配的固有ベクトルです。マルコフ連鎖の解析も同様で、支配的固有値は連鎖が収束するかどうかを示し、その固有ベクトルが定常状態です。
この機能はグローバルエッジ上で応答後に何も保存せずに実行されるため、自動化パイプラインにもすっきり組み込めます。
活用例
主成分を求める
共分散行列を送信して固有ペアを直接読み取ります。固有ベクトルが主方向、固有値が説明される分散です。
振動と安定性を分析する
機械系の剛性行列から固有振動数とモード形状を抽出したり、固有値の符号から線形系が安定かどうかを確認したりできます。
課題や研究を検算する
手計算の固有分解を、提出前に決定的な参照結果と照合できます。精度はご自身で制御できます。
よくある質問
行列が複素固有値を持つ場合は?
複素固有値を持つ行列や、独立な実固有ベクトルの完全な集合を持たない欠損行列は、近似値ではなく明確なエラーで拒否されます。
固有ペアはどのように並びますか?
固有値の大きい順です。 各固有ペアには単位長に正規化された固有ベクトルが付くため、対応関係は一意です。
答えを検算するには?
行列に返された各固有ベクトルを掛けてください。その結果は、選択した丸め精度の範囲で、固有値にその固有ベクトルを掛けたもの(A·v = λ·v)と一致するはずです。
どのような行列を入力できますか?
行ごとに数を並べた、50×50までの正方行列を入力できます。行と列の数が違う行列は、固有値が定義されないため受け付けません。
固有値の値から何が分かりますか?
負の固有値は向きの反転を表し、0の固有値は行列が逆行列を持たないことを示します。同じ固有値が繰り返し現れる場合は、問題に対称性があることの目印になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/eigenvalue-eigenvector \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"matrix":[[2,1],[1,2]]}'const res = await fetch("https://api.kit.forhosting.com/math/eigenvalue-eigenvector", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"matrix": [
[
2,
1
],
[
1,
2
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/eigenvalue-eigenvector",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"matrix": [
[
2,
1
],
[
1,
2
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/eigenvalue-eigenvector", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"matrix":[[2,1],[1,2]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"matrix":[[2,1],[1,2]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/eigenvalue-eigenvector", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"matrix": [
[
2,
1
],
[
1,
2
]
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.eigenvalue_eigenvector",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 50 |
max_abs_entry | 1000000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
固有ペアが示すこと
行列が正方でない場合、固有ペアは正方行列に対してのみ定義されるため、リクエストは即座に拒否されます。
固有ペアの利用場面
スクリプトが夜間ジョブの一部として1回$0.002で行列を送信する一方、人が同じ行列をブラウザで無料かつバイト同一の結果で確認できます。無料のウェブツールと有料APIのこの一致は意図的なもので、同じモジュールが両方のチャネルを支えています。
技術的な質問
料金はいくらですか?
API経由で1リクエスト$0.002です。このページのブラウザ上でも無料で実行でき、結果は同一です。
どのような行列が受け付けられますか?
50×50までの、有限な実数からなる任意の正方行列です。正方でない入力はinvalid_inputエラーで拒否されます。