実矩形行列の数値ランクを特異値と許容誤差から計算

実矩形行列の数値ランクを特異値と許容誤差から計算

行数と列数が異なる実行列にも対応し、特異値をスケール依存の閾値と比較して数値ランクを求めます。

入力

1行を行列の1行として、有限な実数を空白または半角コンマで区切ります。

ピボットまたは特異値のゼロ近傍判定に使います。指数表記ではなく0.000000000001のような10進表記で入力します。

使い方

  1. ページ先頭の『行列A』へ、行列のランクで計算したい実数行列を貼り付けます。1行を行列の1行として、成分は空白または半角コンマで区切り、各行の列数をそろえます。
  2. 行数・列数、負号、小数点、指数表記を確認します。正方行列が必要なページでは行数と列数を一致させ、矩形対応ページでは不要なゼロ行やゼロ列を追加しません。
  3. 許容誤差は通常1e-12のまま計算し、特異・低ランク・収束境界を調べる場合だけ理由を記録して変更します。値を変えてエラーを隠す目的では使いません。
  4. 計算後は結果表の行列名または指標、行、列、値を確認し、元の式へ代入した残差、既知の小さな例、単位行列やゼロ行列などの境界例と照合します。
  5. 必要なら見出し付きTSVをコピーし、元の入力、計算条件、計算日、使用目的と一緒に保存します。重大な用途では独立した数値ライブラリでも再計算してください。

計算式・考え方

特異値をσ₁≥σ₂≥…≥0とし、スケールを考慮した閾値より大きい特異値の個数をrank(A)とします。自動判定の基礎は max(m,n)×σ₁×ε とし、入力した許容誤差を安全な下限として併用します。

注意事項

  • 行列のランクは一次独立な行または列の最大数です。厳密な実数演算では非ゼロ小行列式や行基本変形で定義できますが、浮動小数点では計算誤差により本来0の値が小さな非ゼロとして残ります。本ページは矩形行列の特異値を求め、明示した閾値より大きい個数を数値ランクとして返します。
  • 例えば[[1,2,3],[2,4,6],[1,1,1]]は2行目が1行目の2倍で、残る2行は独立なのでランク2です。6×9のように列数が多い矩形例にも対応し、rank(A)は0以上min(m,n)以下になります。正方行列だけに縮約したり、余った列を捨てたりしません。
  • ゼロ行列のランクは0、単位行列I_nのランクはnです。転置してもrank(A)=rank(A^T)で、行ランクと列ランクは一致します。これらは実装の境界検算に使えます。行を定数倍した重複行、ほぼ重複する行、非常に尺度の違う列を順に試すと、厳密ランクと数値ランクの違いを確認できます。
  • 自動閾値の代表例はmax(m,n)×σ₁×εで、σ₁は最大特異値、εは倍精度の機械精度です。本ページでは利用者の許容誤差も入力させ、スケールに応じた判定と組み合わせます。同じ行列でも閾値を変えると境界の特異値が数えられたり除外されたりするため、結果には許容誤差を必ず添えてください。
  • データ解析でランクが小さいことは変数間の線形依存を示す場合がありますが、因果関係や不要変数を自動決定するものではありません。測定単位、標準化、欠測補完、丸め、サンプル数によって特異値は変わります。元データを標準化した場合は、標準化前のランクと同じとは限らないことを記録してください。
  • SVDページそのものはU・Σ・Vの全成分、符号規約、縮退特異値の基底、再構成残差を扱うため別の実装課題です。本ページはランク判定に必要な特異値だけを内部利用し、特異ベクトルを結果として公開しません。完全な分解が必要なら、SVDを安定実装した専門ライブラリを使用してください。
  • 入力は実数だけを含む行列です。1行が行列の1行に対応し、成分は空白または半角コンマで区切ります。空行は前後だけを無視し、途中の空行、列数の不一致、数値以外の文字、NaN、Infinity、指数表記として解釈できない断片は暗黙に補正しません。表計算ソフトから貼り付ける場合も、貼り付け後に行数・列数と負号、小数点、桁区切りの有無を確認してください。
  • このページは可変サイズを扱いますが、ブラウザーを停止させないよう成分数と文字数を有界にします。大きな疎行列を密行列として貼り付ける用途や、数千行規模の科学計算を置き換えるものではありません。上限を超える行列は途中まで計算せず、入力エラーとして停止します。大規模計算ではLAPACKを利用する科学計算環境など、目的に合う専門ソフトを使用してください。
  • 計算はIEEE 754の倍精度相当で行います。おおむね15〜16桁の有効数字を持ちますが、入力した全桁が正しい結果として保存される意味ではありません。参照ページにある最大50桁表示をそのまま再現したとは表示せず、本ツールでは最大有効桁と丸め誤差を明記します。非常に大きい値と小さい値を混在させると有効桁が失われるため、必要なら単位や尺度をそろえてください。
  • 部分ピボットは各消去段階で候補列の絶対値が大きい行を選び、ゼロまたは極端に小さい割り算を避ける手順です。多くの一般行列で安定性を改善しますが、すべての悪条件を解消する保証ではありません。行交換が起きた場合は置換情報を計算へ一貫して反映し、行列式の符号、右辺の並べ替え、Lの既計算部分にも同じ交換規約を適用します。
  • 許容誤差は、計算上の小さな値をゼロと判定するための尺度です。既定値1e-12は万能な物理定数ではなく、入力行列の最大成分や次数と組み合わせて使います。誤差を大きくすると特異・低ランクと判定しやすくなり、小さくすると丸め雑音を有効な成分と誤認しやすくなります。結果を比較するときは、行列だけでなく許容誤差も同じにしてください。
  • 検算では結果の見た目だけでなく、元の式へ戻した残差を確認します。逆行列ならA A⁻¹−I、LU分解ならP A−L U、連立方程式ならA x−bが対象です。行列の大きさが変わると同じ絶対残差でも意味が変わるため、必要に応じて入力と結果のノルムに対する相対的な大きさも見ます。残差が小さいことは有力な確認ですが、悪条件問題の真の解に近いことを単独で保証しません。
  • 結果表の行番号と列番号は1から始めます。行列名、行、列、値の各列を持つ表は、見出しを含むTSVとしてコピーできる設計です。画面幅が狭い場合は横スクロールしても列の意味が失われないよう固定した見出しを使います。コピー後に並べ替えると行列の形が変わるため、元の行・列番号を残し、入力、許容誤差、計算日も一緒に記録してください。
  • 正方行列が必要な計算へ矩形行列を入れたり、係数行列と右辺の行数が違ったりする場合は実行しません。足りない成分を0で埋める、余分な列を捨てる、右辺を繰り返すといった推測は結果を別問題へ変えてしまうためです。エラーが出たら、各行の成分数、末尾の区切り文字、全角記号、貼り付け時の改行を見直してください。
  • 一次資料としてNetlib LAPACKのDGETRF、DGETRI、DGESV、DLANGE、DGESVDとLAPACK Users' Guideの一般連立方程式の説明を2026年7月14日に照合しました。これらは実装方針と検算規約の根拠であり、ブラウザーから資料へ通信して計算する仕組みではありません。資料名と確認日は本文に残し、URLは配布定義ではなく別の監査記録で管理します。
  • 入力検査、数値計算、表の描画、コピー用TSVの生成はclient-onlyでブラウザー内だけで完結します。行列や右辺をサーバー、外部API、外部CDNへ送信せず、数値ライブラリを実行時に取得しません。そのため最新データを自動取得する機能もありません。共有端末、画面共有、ブラウザー拡張、クリップボード履歴、貼り付け先の保存設定は利用者側で管理してください。
  • 教育目的では、まず2×2や3×3の手計算可能な例で操作し、次に行交換が起きる例、ゼロ行を含む例、ほぼ従属な例を試すと違いを確認できます。通常例だけでなく、1×1、ゼロ行列、単位行列、対角行列、特異行列という境界を分けて扱ってください。エラーを回避するため値を少し変えるのではなく、なぜ計算が定義できないかを式から確認することが重要です。
  • 本ツールは入力した数学問題を計算するもので、測定値の品質、モデルの妥当性、単位系、座標系、境界条件を判定しません。構造設計、制御、電気、医療、金融など重大な判断へ使う場合は、独立した実装、専門家のレビュー、既知解、残差、感度解析を組み合わせてください。表示値を根拠に安全率や判定基準を自動で決める機能はありません。
  • 浮動小数点の数値ランクです。小さい特異値をゼロとみなす境界は許容誤差に依存し、厳密な記号計算上のランクとは異なる場合があります。

よくある質問

許容誤差を変えるとランクが変わるのは異常ですか?

境界に小さな特異値がある場合は起こり得ます。数値ランクは許容誤差を含む結果なので、使用した値と入力スケールを一緒に記録してください。

行列はどの形式で入力しますか?

1行を行列の1行とし、成分を空白または半角コンマで区切ります。すべての行で列数をそろえ、有限な実数だけを入力してください。

参照ページの50桁表示と同じ精度ですか?

同じではありません。本ページはブラウザーの倍精度計算で、おおむね15〜16桁の有効数字です。表示桁を増やして高精度であるようには見せません。

許容誤差1e-12は変更できますか?

1e-15から1e-3の範囲で変更できます。結果が変わる場合は境界的な問題なので、値、入力スケール、残差を一緒に記録して比較してください。

入力した行列は外部へ送信されますか?

送信しません。入力検査、計算、結果表、TSV生成はclient-onlyで完結し、外部APIやCDNを呼び出しません。共有端末やクリップボード履歴は利用者側で管理してください。

行列のランクはclient-onlyで動作し、行列、右辺、指数、計算条件、結果を外部API、外部CDN、サーバー保存へ送信しません。Netlib LAPACK各資料とLAPACK Users' Guideは2026年7月14日に照合し、確認記録はローカル監査文書へ分離しています。