特性多項式計算機
12×12までの正方行列の特性多項式を求めます。行が 2, 1 と 1, 2 の行列なら λ² − 4λ + 3 になり、確認用にトレース4と行列式3も表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
計算にはファデエフ・ルベリエ(Faddeev–LeVerrier)の漸化式を用い、トレースと行列式も組み込みの検算として返すほか、レポートにそのまま貼り付けられる人間が読みやすい多項式文字列も付きます。行列は入れ子の配列でも、プレーンテキストの行形式でも送信でき、どちらでも毎回同じ決定的な結果が得られます。正方でない行列や数値以外の入力は、曖昧な結果を返すのではなく、明確なエラーで拒否されます。
特性多項式が実際に教えてくれること
正方行列 A の特性多項式、すなわち p(λ) = det(λI − A) は、行列が持つ最もコンパクトな指紋です。その根は重複度まで含めて A の固有値そのものなので、スペクトルの振る舞いに関するほぼすべての問い — 力学系の安定性、構造物の共鳴周波数、漸化式の長期的な成長 — は、この多項式を書き下すことから始まります。
係数のうち2つはそれ自体が有名です。λⁿ⁻¹ の係数は A のトレースのマイナスに等しく、定数項は次元が偶数か奇数かによってプラスかマイナスの行列式になります。さらにケーリー・ハミルトン(Cayley–Hamilton)の定理によれば、すべての行列は自分自身の特性多項式を満たします。
これが、対角化なしに行列の高べき乗や行列指数関数を計算する仕掛けです。手計算で p(λ) を求めるには、対角に λ を含む行列式を展開しますが、2×2を超えるとミスが起きやすくなります。
係数はどう計算されるか
det(λI − A) を記号的に展開する方法は中間式が膨れ上がり、汎用的に行うと遅くなります。そこでこのソルバーはファデエフ・ルベリエの漸化式を用います。これは行列の積とトレースだけですべての係数を復元する古典的なアルゴリズムです。
単位行列から出発し、各ステップで A を掛け、トレースを取り、ステップ番号のマイナスで割ることで、1回の反復ごとに新しい係数が1つ得られます。n×n行列ならn回の乗算、全体で O(n³) の演算量です。この漸化式は厳密算術では厳密であり、このツールが扱う程度のサイズでは浮動小数点でも安定しています。
すべての答えには2つの独立した検算が付きます。2番目の係数はトレースのマイナスに等しく、最後の係数は符号を除いて行列式に等しいはずで、これらの導出値も係数ベクトルと一緒に返されるため、ご自身の計算と照合できます。
入力形式・エラー・制限
行列の送信方法は2通りあります。どちらの形式も同一に検証されます。行列は正方でなければなりません。
各要素は絶対値10¹²までの有限の数値で、次元は12×12が上限です。それを超えると浮動小数点での係数の増大により汎用的な数値解が誤解を招くため、そもそも専用の計算機代数システムを使うべきです。エラーには課金されず、成功した計算だけが利用量にカウントされます。
活用例
多項式の根求解器への入力
p(λ) の係数をプログラムから取得し、根求解ステップに渡して、閉形式で解ける2×2を超える行列の固有値を求められます。
宿題や教科書の演習の検算
3×3や4×4行列について手計算した特性多項式を検算できます。トレースと行列式のチェックがすべての係数を裏付けます。
線形力学系の解析
状態行列の特性多項式を取り出して安定性を調べられます。p(λ) の根の位置が、系が収束するか発散するかを決定するからです。
よくある質問
具体的に何が返されますか?
p(λ) = det(λI − A) の係数を最高次の係数から順に並べた配列(多項式はモニックなので常に1から始まります)に加え、文字列形式の多項式、トレース、行列式、そして漸化式のステップごとのトレースが返されます。
行列が拒否されたのはなぜですか?
行列は正方である必要があります。すべての行が行数とちょうど同じ数の要素を持たなければなりません。
どのアルゴリズムが使われていますか?
ファデエフ・ルベリエの漸化式です。記号的な行列式展開を行わず、行列の積とトレースから O(n³) の演算量で各係数を計算します。
行列はどこかに保存されますか?
いいえ。 行列はメモリ上で処理された後に破棄され、返されるのは多項式の結果だけです。
結果を手で確かめるにはどうすればよいですか?
2番目の係数がトレースの符号を反対にした値と、最後の係数が符号を除いて行列式と一致するかを見ます。例では −4 がトレース4に、3 が行列式3に対応しています。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/characteristic-polynomial \
-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/characteristic-polynomial", {
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/characteristic-polynomial",
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/characteristic-polynomial", 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/characteristic-polynomial", 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.characteristic_polynomial",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs | 1000000000000 |
max_dim | 12 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
特性多項式APIは、最大12×12の正方行列を受け取り、p(λ) = det(λI − A) の係数を最高次の係数から順に返します。このページではブラウザ上で無料で実行でき、ご自身のコードからAPIを呼び出す場合は1リクエストあたり$0.002です。
特性多項式が実際に教えてくれること
このエンドポイントは、最大12×12の任意の正方行列について展開を数値的かつ決定的に行い、根の求解器や記号計算ツール、あるいはご自身のパイプラインにそのまま渡せる形で係数を返します。
係数はどう計算されるか
すべての数値は小数点以下12桁に丸められるため、無料のブラウザ版と有料APIがどのマシンでもバイト単位で同一のJSONを返します。
入力形式・エラー・制限
APIクライアントは通常、入れ子のJSON配列 — 行の配列で、各行は数値の配列 — を渡し、ウェブフォームでは1行につき1行ずつ(またはセミコロン区切り)、要素をカンマまたはスペースで区切ったテキストの貼り付けを受け付けます。いずれかの行の長さが行数と異なる場合、その意味での特性多項式は存在しないため、どの行が誤りかを明示する invalid_input エラーでリクエストは拒否されます。このエンドポイントは純粋な計算のみを行い、何も保存せず、第三者に送信されることもなく、同じ入力には常に同じ出力を返します。
技術的な質問
料金はいくらですか。
1リクエストあたり$0.002です。このページではブラウザ上で無料で実行できます。同じコードで、結果も同じです。
結果は厳密ですか。
小さな整数行列では、丸め後の係数は通常厳密な整数になります。すべての値は小数点以下12桁に丸められるため、ブラウザとAPIは常にバイト単位で一致します。