実数連立一次方程式Ax=bを部分ピボットLU分解で解く

実数連立一次方程式Ax=bを部分ピボットLU分解で解く

実正方係数行列Aと列ベクトルbからAx=bの一意解をLU分解で求め、各成分と残差を表で返します。

入力

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

行列Aと同じ行数の列ベクトルを、1行1成分で入力します。

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

使い方

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

計算式・考え方

部分ピボット付き分解 P A=L U を作り、L y=P b、U x=yの順に前進・後退代入してAx=bの解xを求めます。逆行列を明示的に作らず、残差r=Ax−bも計算します。

注意事項

  • 連立一次方程式Ax=bでは、Aの各行が一つの方程式、xが未知数列、bが右辺です。Aはn×n、bはn×1でなければなりません。本ページは一意解がある実数正方系を対象とし、方程式数と未知数が異なる過決定・劣決定系や最小二乗解は扱いません。
  • 例としてA=[[3,2,-1],[2,-2,4],[-1,0.5,-1]]、b=[[1],[-2],[0]]の解はx=[1,-2,-2]です。結果表は未知数の1始まりの番号、解、対応する残差成分を返します。解を元の各式へ代入し、A x−bが丸め誤差の範囲で0へ近いことを確認してください。
  • 計算は逆行列A⁻¹を先に作ってx=A⁻¹bとするのではなく、P A=L Uを一度作り、L y=P b、U x=yを順に解きます。LAPACK Users' Guideでも一般連立方程式は因子分解と三角方程式で扱います。直接解法にすることで不要な逆行列計算を避け、計算量と丸め誤差を抑えます。
  • Aが特異なら一意解はありません。解が存在しない場合と無数に存在する場合を本ページだけで分類せず、一意解ソルバーとしてエラーにします。ほぼ特異な場合は有限な解が出ても入力の小さな変化で大きく動くことがあります。許容誤差、残差、必要なら条件推定を専門環境で確認してください。
  • 右辺は列ベクトルとして1行1成分で入力します。横一列のb、Aと異なる行数、複数右辺、単位付き文字は受け付けません。複数のbを同じAで解く場合は本来LUを再利用できますが、このページでは誤って列を混ぜないよう1本ずつ計算します。将来の複数右辺対応は別の入力・結果契約として扱います。
  • 残差が小さくても、真の解との前方誤差が必ず小さいとは限りません。悪条件行列ではA xがbへ近くてもxの有効桁が少ない場合があります。係数や右辺が測定値なら元データの不確かさも考慮し、独立したソルバー、既知解、摂動テストで確認してください。複素係数系は専用エンジンが必要なため対象外です。
  • 入力は実数だけを含む行列です。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、ゼロ行列、単位行列、対角行列、特異行列という境界を分けて扱ってください。エラーを回避するため値を少し変えるのではなく、なぜ計算が定義できないかを式から確認することが重要です。
  • 本ツールは入力した数学問題を計算するもので、測定値の品質、モデルの妥当性、単位系、座標系、境界条件を判定しません。構造設計、制御、電気、医療、金融など重大な判断へ使う場合は、独立した実装、専門家のレビュー、既知解、残差、感度解析を組み合わせてください。表示値を根拠に安全率や判定基準を自動で決める機能はありません。
  • 倍精度浮動小数点による一意解の補助計算です。特異・悪条件・過決定・劣決定系、複素数、高精度保証には対応しません。

よくある質問

残差が0なら解は完全に正確ですか?

有限桁表示で0でも内部には小さな誤差があり得ます。また悪条件問題では小さい残差と小さい解誤差は同義ではありません。

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

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日に照合し、確認記録はローカル監査文書へ分離しています。