linalg opmatrix → tableimport fullseye as fs; fs.ledger.mat_eigh(a) (実装を直接呼ぶなら import mathops; mathops.mat_eigh(a)、台帳から引くなら opsmath.get("mat_eigh"))fullseye.ledger.mat_eigh(...) は宣言 out 型 table の値だけを返す(本体は補助情報も返す)。捨てられた側が要るときは fullseye.ledger.mat_eigh.raw(...)、または mathops.mat_eigh を直接呼ぶ。Eigen-decomposition of a symmetric matrix (LAPACK syevd).
Returns (w, V): eigenvalues w in ascending order (all real —
guaranteed by symmetry) and orthonormal eigenvectors as the columns of
V (A @ V[:, i] == w[i] * V[:, i]).
Symmetric input only, verified: max|A - A.T| above 1e-10 of the
matrix scale raises ValueError. This is deliberate fail-closing of two
traps at once — a symmetric solver fed a non-symmetric matrix silently
reads one triangle and returns a plausible wrong answer, and a general
matrix has complex eigenvalues this real-valued API cannot even represent.
For a covariance / Hessian / Gram matrix (the metrology cases) symmetry
holds by construction; symmetrise explicitly ((A + A.T) / 2) if yours
is symmetric-up-to-noise.
Sign trap (honest): each eigenvector is defined only up to sign, and
eigenvectors of a repeated eigenvalue only up to rotation in that
subspace. Compare |v·w| or subspaces, never raw columns.
HALCON: eigenvalues_symmetric_matrix.
mathops の全 op は入力を検証してから計算する(黙って通さない):
ValueError — float64 への強制変換は虚部を黙って捨てる(numpy は ComplexWarning だけ出して「もっともらしく間違った」実数を返す)。.real/.imag/abs() を明示するか、複素対応の complexops を使う。ValueError — マスクを剥がして下の生値を使う暗黙変換を拒否。埋める/落とすを明示する。ValueError(件数を明示して拒否 — 結果全体に伝播するため)。ValueError。reshape を明示する)。stat_histogram の bins は mathops.MAX_ELEMENTS(2^26 ≈ 6700 万要素)超で ValueError。py -3.11 examples/math_metrology.pypy -3.11 examples/poc_thermal_radiometry.pytable を入力に取れる)—
linalg)mat_solve · mat_lstsq · mat_svd · mat_pinv · mat_cond
Provenance: mathops.py — MATH operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.