横田さん × AI · 数学探索ノート · 2026 09 20 / 更新 2026 10 03

見えない内部は、
どこまで減らせる?

同じ熱の応答を、もっと小さな模型で再現したい。
そのとき「数式では3状態、物理的には4個必要」という差が現れる。

熱の動きを観察し、測定を行列へ変え、減らせない理由をたどる。図を操作しながら読める研究ノートです。

最初から読む 成果と新規性を先に見る最新:容量の予算と、有限の最適回路へ
入門8節の目安:15〜20分 / 証明・文献84件・再現コードまで、この1ページに収録
01 / OBSERVE

温度を変えても、内部はすぐには追いつかない。

物体を小さな「熱を蓄える点」と、それらをつなぐ「熱の通り道」で表してみます。外側の温度を変えると、内側の温度は時間をかけて追いつきます。この遅れが、外から見た過去の影響=記憶を生みます。

ここでは、熱容量は正、伝導率は非負で、どちらの向きにも同じ伝導率を持つ線形模型に絞ります。

4つの境界と、4つの内部熱容量
熱回路の温度
境界:温度を外から指定内部:温度が自由に変わる細線:境界間の直接伝導 / 太線:内部との伝導

入力する境界を選び、時間を動かしてみてください。他の3境界は基準温度に保ちます。

合成回路の解析解。各内部容量4 J/K、内部から隣接境界への伝導率0.5 W/K。境界の直接伝導は隣接間0.75 W/K、対向間1 W/K。温度差1 Kを1秒で立ち上げます。表示している4個は境界を除いた内部の個数です。線の交差は接続点ではありません。

内部を表示から消しても、熱を蓄える働きまで消えるわけではありません。その働きを、より少ない状態で代役できるかが今回の問いです。
カオス理論とのつながりは?

出発点は、多数の変数を少数へ置き換える「粗視化」でした。内部を消すと記憶が残るという問題は、カオスやMori–Zwanzig理論ともつながります。ただし、このページで扱うのはカオスのない線形熱伝導。ここで得た下限を、非線形カオスの予測保証へそのまま広げることはできません。背景の式と文献

次へ:内部を開けずに、何を測る? →
02 / MEASURE

4回の実験で、外からの応答を集める。

毎回、全体を同じ初期平衡へ戻します。B1、B2、B3、B4を一つずつ同じ波形で加熱し、各境界で温度を保つために注入する熱流を測ります。1つの入力に4つの出力。合わせて16本の応答が得られます。

温度を指定B1〜B4のうち1か所
同じ物体内部は直接観測しない
熱流を測定4か所すべて

応答には、最後まで残る定常分と、次第に弱くなる過渡分が混ざります。内部の遅れを取り出すため、立上り完了後に、同じ長さの窓を二つ並べて積分します。

入力出力
第1窓の積分
−
第2窓の積分
=
差 Dᵢⱼ

同じ長さなので、定常分は引き算で消えます。一定のセンサーオフセットも相殺できます。時間とともに変わる誤差は残るので、後で誤差幅に含めます。

この表示は計算例で、実測データではありません。正負を含む熱流を、温度上昇幅で割っています。窓は1秒の立上り+0.1秒の待機の後に置きます。

次へ:16本の応答を、1枚の行列へ →
03 / TRANSLATE

二つの窓の差を並べると、内部の情報が残る。

「出力の境界」を行に、「入力の境界」を列にして、16個の差を並べます。これが4×4行列 D です。前の図で選んだ実験に対応するマスを枠で示しています。

二窓から得た D 単位 J/K

この合成例では、窓の取り方を変えると全体が同じ倍率 a で変わります。

D = a H₀

既知の倍率で割れば、後で何度も登場する H₀ になります。

H₀は対角が2、四角形の隣同士が1、向かい合う組が0。ここでaを知っているのは合成例だからです。実測の判定はD自体に適用でき、aの推定は不要です。
指定した測定条件の下では、内部が3状態以下なら、Dを3本以下の非負ベクトルから作れます。逆に、そのように作れないDが測れれば、3状態以下の模型を排除できます。
「非負ベクトルから作る」とは?

4つの境界への寄与を、4個の非負の数 f=(f₁,f₂,f₃,f₄) で表し、すべての組の積 fᵢfⱼ を並べます。これが外積 ffᵀ。その足し合わせが D=FᵀF、F≥0 です。Fの行が1本のベクトルに対応します。

理想ステップの後に置く二窓では、任意の内部状態数rについてcp-rank(D)≤r。一般の共通単調ランプでは、ここで必要なr≤3の主張を証明しています。数学的な因子を、実物の各部品に一意に対応づけて同定したという意味ではありません。測定からの因子分解の証明

次へ:なぜ「3」と「4」が分かれる? →
04 / COMPARE

引き算を許すと3本。非負だけなら4本。

H₀は、符号を自由に使えば3本のベクトルで作れます。でも、非負のベクトルだけを使うと4本必要です。切り替えて、各ベクトルの寄与を見比べてください。

4本の非負ベクトル
外積を全部足すと H₀

H₀のゼロは、B1とB3、B2とB4の組にあります。非負の積は足しても打ち消せないため、1本のベクトルが向かい合う2点を同時に受け持つことはできません。結果として、四角形の4辺にそれぞれ1本が必要になります。

通常ランクは3、完全正値ランクは4。後者は「非負の外積が最低何本必要か」を数える量です。量子論の完全正値写像やテンソルのCPランクとは別の概念です。

特定の単一緩和率を持つ熱回路では、この完全正値ランクが必要な内部熱容量の最少個数と一致します。抽象的な3状態で外部応答を計算することと、3個の熱容量・非負の伝導率で同じ応答を作ることは、異なる要求なのです。

熱回路へ結びつける正確な条件

正の対角内部容量、非負の相反熱伝導、指定した境界温度→境界熱流の応答を考えます。目標が Y(s)=K+sCB+sλH/(s+λ) のとき、Hが完全正値、かつ −Kᵢⱼ≥λHᵢⱼ(i≠j)が実現条件です。成立すると、最少内部容量数=cp-rank(H)。既知の境界容量CBは個数に数えません。

「数式の3状態」は既知の微分項sCBを除いた動的部分の次数です。負の温度差そのものが禁止なのではなく、混合座標を個別の熱容量へ戻す際の結合条件が問題になります。必要性と構成による十分性の証明

次へ:ゼロでなくても、4個が必要? →
05 / FIND THE LIMIT

ゼロを少し埋めても、壁は残る。

H₀の全ての成分に同じρを加えた行列 Hρ=H₀+ρJ を考えます。ゼロがなくなっても、すぐには3状態へ減りません。必要数が3になる境界はρ=1/2です。この族と境界は既知の研究に基づきます。[34] [56]

通常ランク3
最少内部熱容量4

異なるρでは目標応答も変わります。1つの物体が物理的な相転移を起こす図ではありません。ここでのρ∈[0,1]は、指定した回路構成が可能な範囲内です。

d:対角の最大値m:四辺の最小値z:向かい合う組の最大値

この3種類の値から、限界を1本の線にする。

今回の導出では、既知の幾何定理を使って、3状態以下に必ず成り立つ境界を求めました。

m ≤ M(d,z)
M(d,z) = min{ √[z(2d−z)], (d+z)/2 }d≥0、0≤z≤d、m≥0。z>dならdへ切り詰めます。

境界ぴったりの例を作って「鋭さ」を確かめる

対角上限をd=1にそろえ、zを選ぶと、境界を達成する3行以下の因子を構成できます。

境界より上なら3状態以下では不可能。境界以下ならこの三つの集約値では排除できない。「鋭い」とは、この三つの情報だけを使う範囲で限界まで詰めた、という意味です。

個々の測定値全てに一致する3状態模型がある、と判定する式ではありません。今回の明示式の学術的な初出は未確認です。境界の証明と文献照合

3個に減らすと、結合をゼロにする必要がある?

同じ行列でも、因子の成分にゼロを許すか、すべて正を要求するかで必要な本数が変わります。後者の最少本数をCP-plusランクと呼びます。公開著者稿の概念・定理と既知の境界を組み合わせると、この族では次の違いが分かります。[61]

ゼロ結合を許す最少数4
すべて正にした最少数4

上のρスライダーと連動します。表示は非負Gram因子Fの丸め値で、FᵀF=Hρ。各行が一つの内部点に対応し、ゼロはその境界との結合がないことを表します。数値の大きさは伝導率そのものではありません。

ρ=1/2では「ゼロを許せば3個、全結合を正にすると4個」。ただしρを少し増やすと正の3行因子で任意に近づけられます。これは厳密実現の差であり、正の近似誤差下限ではありません。分類・証明・回路条件

次へ:測定値に誤差があっても使える? →
06 / ALLOW ERROR

誤差を、3状態に有利な向きへ広げてみる。

現実の測定はぴったりの値ではありません。以下は、既知の倍率aで割ったH₀の無次元尺度での説明です。その各成分に、最大ηの誤差を認めます。四辺は小さめに、対角と向かい合う組は大きめに見積もり、それでも境界を越えるかを調べます。

四辺の下限 c1 − η
対向の上限 z0 + η
対角の上限 d2 + η
四辺の下限 c
3状態の限界 M

上段は三集約の判定。下段は、H₀の全成分が指定された誤差内にある場合の追加保証です。

H₀の場合、この条件はとても短い計算になります。

3状態以下なら (1−η)² ≤ η(4+η)
したがって η ≥ 1/6
誤差が1/6未満なら、どんな3状態候補でも届きません。等号では三集約の判定は保留です。対角の下限と四辺の上限も使うと、さらに11/62 ≈ 0.177419以下まで排除できます。
自分の集約値を入れて判定する

4×4の対称化済み測定行列から、四辺の最小値m、対向する2組の最大値z、対角の最大値dを求めます。ηは、全成分を同時に覆う誤差幅です。全て同じ単位で入力してください。

簡易判定器 — 最良集約式 c² > Ξ(d,z)

最良集約式 c² > Ξ(d,z) による十分条件。初期値は熱回路の設計例。測定値の集約と誤差幅を変更できます。

標準偏差や相対誤差率を、そのままηに入れることはできません。統計的な信頼区間を使う場合も、全成分を同時に覆う保証が必要です。

情報を二つ追加すると、保証が強まります。たとえば誤差0.17では三集約式は保留ですが、全成分の上下限を使えば3状態以下を排除できます。導出と有理数の証明書

五つの上下限で、もう一段詳しく判定する

各成分の誤差をすでに含めた上下限を入力します。Lは対角の下限の最小、Dは対角の上限の最大、mは四辺の下限の最小、Mは四辺の上限の最大、zは対向する2組の上限の最大です。同じ単位でそろえてください。

まず既存の三集約式を試し、保留なら五値条件を試します。五値条件は0<z<m≤M<L≤Dなどの前提を満たす場合だけ適用します。条件を満たさない場合も「3状態で十分」とは判定しません。画面の小数計算には保守的な丸め余裕を設け、11/62の定理自体は別の有理数コードで厳密検算しています。条件と証明

次へ:この下限は、現実で何に役立つ? →
07 / USE IT

達成できない精度を、設計の前に見分ける。

少ない状態で実装したいとき、調整を続ければ目標精度へ届くとは限りません。この判定は、選んだ模型の種類と状態数で、目標精度が原理的に可能かを調べるために使えます。

合成熱回路での保証7.79 mW3状態以下では避けられない熱流誤差の下限

1 Kを1秒で線形に立ち上げ、0.1秒待ってから、各5.025725秒の二窓を測る例です。容量の尺度1 J/K、緩和率0.25 s⁻¹。4回の入力実験・4出力・観測区間のどこかで、この大きさ以上の誤差が必要になります。

行列の誤差下限を、波形の誤差へ戻すには、積分の長さを使います。熱流応答の最大誤差をEとすると、二窓差の誤差は高々2hE。新しい係数下限11/62を使うと、この合成例では E≥11a/(124h) です。前の窓幅スライダーと同じ解析式による換算です。

全ての出力に常時7.79 mWの誤差が出る、という意味ではありません。温度予測の誤差下限でもありません。合成回路での理論値で、実物・製品データによる検証は未実施です。

熱モデル

複数境界を持つ簡略化モデルで、内部状態をどこまで減らすかの判断に。ただし、ここでの入力は温度、出力は熱流です。

抵抗・コンデンサ回路

電圧と電流で同じ数式を実験できます。総立上り1 msの区分二次波形など、指定した電気的縮尺では約7.784 µAの対応下限が得られます。

実験へ移すときにそろえる条件
  • 各入力実験を同じ初期平衡から始める。
  • 境界ごとに同じ単調な立上り波形を使い、立上り後に二窓を置く。
  • 正の熱容量・非負の相反伝導という模型クラスを用いる。
  • 測定誤差、数値積分誤差、許容する模型誤差を合わせた幅で判定する。

測定器の動特性を除いた真の熱流、または妥当に補正した熱流を使うことも必要です。模型の内部状態数は、実物の材料の層数や部品の個数そのものとは限りません。有限時間の検証では、候補模型の緩和率を目標に一致させる必要はありません。測定条件と適用範囲 / 最新の単位換算

測定器にも「記憶」があると、どうなる?

内部熱容量が0個の合成回路でも、既知の境界容量とセンサーの一次遅れが組み合わさると、観測された二窓差はH₀に比例します。そのまま判定すると、測定器の動きを物体の内部と取り違えます。

内部0個、境界容量CB=4I、境界伝導K=2I−A(C₄)。単位ステップ、センサー時定数1秒、最初の窓は0.1秒後、各窓1秒。単位入力で割った二窓差を表示。理想化した解析的反例で、実測データではありません。

時定数θが既知なら、観測yの二窓差Dyと3時刻の端点値から補正できます。微分の数値計算は不要です。

Dq = Dy + θ[2y(T+h)−y(T)−y(T+2h)]

補正は雑音も増幅します。観測誤差を全時刻でσ以下と保証できる場合、二窓差の誤差は高々(2h+4θ)σ。積分誤差・時定数の校正誤差も別途加えます。未校正の測定器へこの式をそのまま適用することはできません。反例・補正式・誤差予算の証明

補正後、未知の一定の正ゲインは相反する2測定の幾何平均と対角正規化で消せます。状態数の判定には使えますが、mWへ換算するには絶対校正が必要です。倍率の相殺と個別誤差の伝播

次へ:どこまで証明でき、新規性はどこに残る? →
08 / TAKE STOCK

分かったことと、まだ分からないこと。

到達点は、既知の幾何定理から、状態数を判定する鋭い数式を導き、誤差のある有限時間測定へつないだことです。証明の有無と、学術的に初めてかどうかは別に評価しています。

内容現在の位置づけ
H₀の「通常ランク3/CPランク4」、Hρの境界、基礎の幾何定理既知先行研究へ帰属。
三集約値の最良境界、五値による11/62下界、有限時間の熱流下限証明を記録今回導出・独立監査。同じ式の先取性は未確定。
ρ=0.4で既存SDPの一つは下界3に留まり、今回の式は3状態を排除厳密比較有理数の証明書を検算。既存手法全体より強いとは言わない。
ゼロ結合を許すかで異なる最少数:境界では3と4既知結果の具体化CP-plusランクで説明。近似誤差下限とは区別。
一次遅れの補正、一定ゲインの相殺、測定誤差の区間伝播証明を記録モデル条件を明示した代数的な拡張。実機検証は未実施。
定常結合を厳密に保つ集団測定での最少内部容量数(例:n=10、ε/c₀=0.05で85個)、任意の非負測定核での上限 Ck、総容量による観測上界 (B/4)Gw証明を記録下限と構成が一致。2026 10 03に数値を独立検算。85の節 / 一般定理 / 総容量
最小近似誤差そのもの、実機での有効性、未読文献との重複未解決・未確認次の検証対象。

最小の誤差は、まだこの間にある。

H₀から3行以下の非負因子で作れる行列までの、最大成分誤差の最小値をD₃とします。

11/62 ≤ D₃ < 0.196676467057347

上側は具体的な近似行列の構成から、下側は各成分の上下限を使った新しい評価から得ています。以前の1/6から約6.45%強まりましたが、元の行列へ最も近い3状態模型まで決定したわけではありません。

本ノートの局所探索では約0.196676467を得ており、追加査読でも同じ値が繰り返し得られたと報告されています。この値へ下界を近づけることは残る数学的課題という数値的な手掛かりです。ただし、よりよい近似が存在しないことの証明ではありません。

新たにBomze–Dickinson–Stillの公開著者稿を本文照合し、正距離の存在や正因子化の一般論を既知結果へ帰属しました。追加リストの古典回路論文・2026年公開の角度条件論文・書籍の中心本文は未取得です。具体的な式と手順の先取性は未確定です。照合の詳細

役立つ問いは、「小さくできたか」だけでなく、「その制約と精度のままで、これ以上小さくできるのか」。このページは、その限界を確かめる方法と、検証可能な証拠をまとめたものです。
RESEARCH DIRECTION / 2026 09 22

何を保存するかが、減らせる限界を変える。

最初の目的は、現実の複雑な物体を、どこまで小さな模型に置き換えられるかを知ることでした。ここからは、4境界の数値を改善する段階を進め、境界の数・許容誤差・保存する物理条件の関係を調べます。

今回の中心命題は、定常応答を厳密に保存する場合には、誤差を許した過渡応答にも二乗規模の内部状態が必要になる例があることです。定常応答にも誤差を許すと、既知の疎化定理によって大幅に減らせます。これは一般の物体すべてに二乗の下限があるという主張ではありません。

同じ対象に課す条件この族での結論
符号を自由に使い、全応答を厳密再現通常の最小次数は 2n−1
熱回路として全応答を厳密再現最少内部容量数は n²
定常応答を厳密保存し、集団加熱の過渡応答には一定の誤差を許す必要数はなお 少なくとも定数×n²
定常・過渡の両方に相対尺度 δ の誤差を許す既知の構成で O(n/δ²) 個にできる

nは左右それぞれの境界数で、合計2n境界。第3行は今回の下界、第4行はBSS疎化定理の応用です。第3行の集団測定の誤差と、第4行の全周波数の作用素誤差は異なる定義です。以下で両方を固定します。命題と証明

2026 09 29の追記:下の図は従来の一般下界です。定常応答を厳密に保つ場合には、次節で下界と構成が一致し、最少個数まで決まりました。

境界を増やすと、下限はどう変わる?

左右それぞれnか所。右側をすべて同じ温度だけ上げ、左側の熱流の平均を測ります。必要な定常結合の情報は、設計仕様などで別に与えられているものとします。各境界の温度振幅は固定ですが、全体の加熱資源まで固定した比較ではありません。

β=0は定常結合の元の上限。β>0では交差結合の上限をλc₀(1/n+β)へ緩めます。同じ側の定常結合のゼロは保つ比較です。そこにも誤差を許す場合は、後述の漏れを含む評価が必要です。

全応答の通常最小次数19
全応答の厳密な物理最小数100
現在の条件での物理下限28個以上
破線:厳密な物理最小数 n²緑:現在の条件の下界橙:通常次数 2n−1

この緑の線は従来の一般下界です。定常応答を厳密に保つ場合の最少個数は、次節のラボで計算できます(n=10、0.05では28ではなく85)。

合成例。容量尺度c₀、緩和率λ。温度の時間微分が三角形になる立上りを0.2/λ秒かけて行い、0.1/λ秒待機、各窓1/λ秒。α=e−0.1[(1−e−0.1)/0.1]²(1−e−1)²。表示は必要数の下限で、最適近似模型の個数ではありません。誤差には測定・積分・補正・許容近似を含めます。

使い道は、模型が小さくならない原因を見分けることです。設計で保存したい定常結合が、削減を妨げているのか。それを少し変えれば、小さな模型を作れるのか。この二つを同じ対象について比較できます。

新理論へ進むための、次の中心問題。

候補となる研究の軸は、「指定した物理条件と実験精度の下での最少状態数」です。誤差εだけでなく、入力の組み合わせ、観測時間、定常結合の許容幅も引数に持たせます。名前を付けたこと自体を新規性とは数えません。

今回、一般グラフでの下界と、ゼロ結合に漏れがある場合の補正まで証明を記録しました。この時点での課題だった下界に近い模型の構成と有限精度への補正は、次節で進展しました。熱伝導データで既存の削減法と比較する実証は残っています。小信号の範囲では非線形熱回路にも橋を架けられますが、カオスの予測限界を得たわけではありません。

数学的状態:証明を記録し、独立に監査。学術的新規性:未確定。既知のCPランク・Kron縮約・BSS疎化を使い、今回の差分候補を「定常結合の上限+有限時間の集団測定による近似次数下界」に絞っています。先行研究との対応

中心命題の正確な条件と証明を読む

1. 対象と、数えるもの

正の対角内部容量C、非負の相反伝導、r個の内部状態、境界から到達できる安定な内部部分を持つ熱回路を考える。Q=C⁻¹ᐟ²LIIC⁻¹ᐟ²は正定値Stieltjes行列、B=C⁻¹ᐟ²(−LIB)≥0。定常応答をK=LBB−BᵀQ⁻¹Bとする。境界容量は数えず、立上り完了後の窓でその直接微分項を除く。

c₀>0、λ>0、n≥2とし、Jはn×n全1行列、

H̄ = [ I J/n ; J/n I ]
L = [ I −J/n ; −J/n I ]
K = λc₀L, Y(s) = K + sλc₀H̄/(s+λ).

各交差辺に1個、容量4c₀/n、両端への伝導率2λc₀/nの星を置けば、この応答を実現する。総容量は4nc₀、各境界の伝導率の合計は2λc₀で、境界当たりの資源をnとともに増やしてはいない。ただし個々の部品値は1/nで小さくなり、製造できる最小部品値は仮定していない。H̄は通常ランク2n−1。非負因子の各行は左右各1点までしか同時に支えられず、n²交差辺があるのでCPランクn²。このCPランクは既知の例でもある。[70] 従来の単一緩和率の実現命題から、厳密な物理最小数もn²である。

2. 任意の緩和率を持つ候補に対する下界

候補模型の緩和率や内部接続は、目標と一致させなくてよい。理想ステップの過渡行列をM(t)=BᵀQ⁻¹e−QtBと置くと、成分ごとに

M(t)≥0, M′(t)=−Bᵀe−QtB≤0,
0≤Mᵢⱼ(t)≤Mᵢⱼ(0)≤−Kᵢⱼ (i≠j).

最後の不等式はM(0)=LBB−KとLBB,ij≤0による。Kを保存すると、同じ側の非対角成分は0、交差成分はλc₀/n以下である。

理想ステップ後t>0の二窓差DはFᵀFで、F=e−Qt/2[∫₀ʰe−Qsds]B≥0。従ってcp-rank(D)≤r。また0≤Dᵢⱼ≤h(−Kᵢⱼ)。自己畳み込みによる有限立上りにも、既述の非負因子分解と、M(0)以下の正の平均であることから同じ結論が成立する。

同じ側の非対角が0なので、Fの各行は交差辺を高々1つしか担当できない。正の交差成分の数をmとするとm≤cp-rank(D)≤r。集団応答d=(1/n)Σi∈左,j∈右Dᵢⱼについて、

d ≤ r hλc₀/n².

これは右側すべてに単位温度を入力し、左側の熱流を平均して二窓差を取った値である。n²成分の平均ではなく、交差成分の総和をnで割っている。定常Kの情報が別に必要であり、これだけの実験で全定常結合まで分かるとは主張しない。

目標ではD*=c₀αH̄、d*=c₀α。|d−d*|≤εを要求するすべての候補は、

r ≥ n²(α−ε/c₀)₊/(λh).

ここでx₊=max(x,0)。理想ステップならα=e−λt(1−e−λh)²。長さTの一様分布と自身の畳み込みを温度微分に使い、2Tで立上りを完了、τ待機する場合はα=e−λτ[(1−e−λT)/(λT)]²(1−e−λh)²。αとλhを固定しε/c₀<αなら、下界はn²に比例する。□

3. 定常結合の許容幅を変える

同じ側のゼロを保ち、交差成分について−K̃ᵢⱼ≤λc₀(1/n+β)だけを要求する場合は、同じ証明で

r ≥ n²(α−ε/c₀)₊ / [λh(1+nβ)].

固定したβ>0では、この下界は大きなnに対して一次の規模へ弱まる。これは下界の変化であり、同じ個数で構成できるという十分条件ではない。

4. 定常応答も近似してよければ、小さい構成がある

S=diag(I,−I)と置くとH̄=SLS。既知のBSS定理から、0<δ<1に対し、元の交差辺を重み付きで選んだL̃が存在し、(1−δ)L≼L̃≼(1+δ)L、辺数≤⌈4(2n−1)/δ²⌉となる。H̃=SL̃S、K̃=λc₀L̃を同じ星構成へ戻す。

r ≤ min{ n², ⌈4(2n−1)/δ²⌉ },
‖K̃−K‖₂ ≤ 2λc₀δ,
supω∈ℝ ‖Ỹ(iω)−Y(iω)‖₂ ≤ 4λc₀δ.

‖L‖₂=‖H̄‖₂=2と|iωλ/(iω+λ)|≤λから最後の式が従う。選ばれた辺の重みは元より大きくなり得るため、K厳密保存の場合の下界とは矛盾しない。固定δに対してO(n/δ²)個だが、有限nでは表示した上界がn²を下回るとは限らない。BSSを新しい結果とは扱わず、この物理族への応用として帰属する。[68]

一般の結合グラフと、小さな漏れまで拡張する

一般の定常結合グラフ

κᵢⱼ=−Kᵢⱼ>0の辺からなるグラフGを考える。二窓行列Dの非負因子1行の支持はGのクリーク(全頂点対が辺で結ばれた集合)である。よってr状態の動的応答が使える辺は、高々r個のクリークの和集合に含まれる。

辺ごとの非負重みwₑを指定し、Γᵣを「高々r個のクリークの和集合に入る辺のΣwₑκₑの最大値」と定めると、

Σₑ wₑDₑ ≤ h Γᵣ.

各辺のDₑ≤hκₑを、因子が使う辺の和集合で足せばよい。三角形のないグラフでは、Γᵣはwₑκₑの大きい順r辺の和になる。一般グラフでのΓᵣの計算が効率的とは主張しない。クリーク制約の基礎は既知の非負因子・Kron縮約の構造である。[69]

同じ側のゼロにも漏れがある場合

DがCPで、二群U,Vに分かれるとする。SUV=Σ交差成分、TU,TV=各群の対角総和、WU,WV=各群の非対角総和とする。Wは順序付きの和で、対称な一つの辺を2回数える。b>0が交差成分の共通上限なら、

SUV ≤ rb + √(TUWV)
+ √(TVWU) + √(WUWV).

証明:因子1行のU部分をu≥0、m=max uᵢ、a=Σuᵢ−mとすると、wᵤ=(Σuᵢ)²−‖u‖²≥(Σuᵢ)a≥a²。V側も同様。行ごとの交差総和を、最大座標同士の積と残り3項へ展開する。最大同士の積はb以下、残りを行方向にCauchy–Schwarzで合計すれば上式を得る。□

従って左辺の下限から平方根3項の上限を引き、bの上限で割れば状態数下界になる。b=0なら交差総和も0であり、交差信号からは下界を出せない。正の信号とb=0が同時に保証されるなら、模型クラスとの不整合である。実測で使うには対角総和の上限など追加情報が必要で、集団加熱1回だけでは全てそろわない。

非線形模型への限定的な橋

正の対角容量と、瞬時・相反・受動的な辺の熱流則を持つ滑らかな非線形回路を、一様平衡の周りで線形化すると同じ構造を得る。そのため、r状態で上の一次応答を再現できない場合、非線形化だけで誤差をo(a)へ消すことはできない(aは入力振幅)。有限振幅の保証aγ−Ma²には二階変動の上界Mが必要で、全模型へ共通に言うなら共通のMを仮定する。これは標準的な線形化の系で、一般受動モデルや非線形カオス全体への下界ではない。

何が既知で、どこが今回の差分候補か

既知:非負実現で通常次数より多い状態が必要になること、二部グラフのCPランク、時間Hankel因子からの次数下界、Kron縮約後のクリーク構造、BSSによる疎化。Kordaらの§4.2 Lemma 13・式(51)はCP支持の被覆による下界を既に扱い、Example 14は完全二部グラフのn²を示す。重み付き被覆という整理も既存の因子数下界の自然な具体化であり、独立した新理論とは数えない。[70]

今回の差分候補:固定した定常結合の成分別上限から、有限立上り・有限二窓の集団測定に対し、候補の緩和率を固定せずに得る近似次数の下界。一般グラフの重み付き評価と、同群成分への漏れを含む不等式も、今回導出した命題として記録する。数学的証明と学術的な初出の判定は別である。

公開本文ではBSSのTheorem 1.1・3.1、Dörfler–BulloのarXiv v1 Theorem 6を照合した。既存の正値実現理論には、Hankel非負因子だけでは同じ次数の時間発展を実現できない例もある。時間データを増やすだけで実現の必要十分条件が得られる、という拡張は採用しなかった。

残る重要な検証:古典的な接地容量RC合成・最小性の未取得本文、制約付き近似次数に関する別表現の結果、現実の熱回路データとの比較。全ての近似ノルムや物理模型に対する一般理論が完成したとは主張しない。形式証明、外部の専門家による査読、実機実験は未実施。

独立数値検証と再現コード

250個の物理ネットワークで、理想ステップと有限立上りの計500条件を確認。さらに一般CP因子750例と境界例5例で漏れの不等式を確認した。解析的証明が主であり、有限検査は証明や新規性の判定を代用しない。

Python 3、NumPy、SciPyを使用。コードを実行すると全例のJSONを生成する。

#!/usr/bin/env python3
"""Independent finite-dimensional checks for the Round 7 fixed-K certificate.

These reproducible numerical checks are not proofs.  The physical generator
builds conductances and diagonal capacities before forming Q and B.  No target
CP factor is used to construct the physical cases.

Definitions: U,V each contain n boundary ports; S = sum(D[U,V]); d = S/n is
the average left output when all right inputs have amplitude one.  It is not
the average over n**2 matrix entries.  W_U and W_V are ORDERED off-diagonal
sums in their respective principal blocks.
"""
from __future__ import annotations

import json
import math
from pathlib import Path

import numpy as np
from scipy.linalg import block_diag, eigh, expm, solve


SEED = 20260922
RNG = np.random.default_rng(SEED)
TOL = 2e-8


def laplacian_from_edges(size, edges):
    out = np.zeros((size, size))
    for i, j, g in edges:
        out[i, i] += g
        out[j, j] += g
        out[i, j] -= g
        out[j, i] -= g
    return out


def physical_case(index, approximate=False):
    n = int(RNG.integers(1, 7))
    lam = float(10 ** RNG.uniform(-1, 1))
    kappa = lam / n
    delta = float(kappa * RNG.uniform(0.001, 0.3)) if approximate else 0.0
    kcross = (kappa + RNG.uniform(-delta, delta, (n, n))
              if approximate else np.full((n, n), kappa))
    num_components = 0 if index == 0 else int(RNG.integers(1, 13))
    comps = []
    for _ in range(num_components):
        i, j = map(int, RNG.integers(0, n, 2))
        size = int(RNG.integers(1, 5))
        caps = 10 ** RNG.uniform(-1, 1, size)
        internal = laplacian_from_edges(size, [
            (a, a + 1, float(10 ** RNG.uniform(-1, 1)))
            for a in range(size - 1)
        ])
        spokes = np.zeros((size, 2))
        if RNG.random() < 0.5:
            spokes[0, 0] = 10 ** RNG.uniform(-1, 1)
            spokes[-1, 1] = 10 ** RNG.uniform(-1, 1)
        else:
            spokes = 10 ** RNG.uniform(-1, 1, (size, 2))
        lint = internal + np.diag(spokes.sum(axis=1))
        cross0 = float((spokes.T @ solve(lint, spokes, assume_a="pos"))[0, 1])
        comps.append(dict(i=i, j=j, size=size, caps=caps, lint=lint,
                          spokes=spokes, cross0=cross0))
    for i in range(n):
        for j in range(n):
            chosen = [c for c in comps if c["i"] == i and c["j"] == j]
            if not chosen:
                continue
            weights = RNG.dirichlet(np.ones(len(chosen)))
            occupancy = 1.0 if index % 13 == 0 else float(RNG.uniform(0.02, 0.98))
            for c, weight in zip(chosen, weights):
                alpha = occupancy * kcross[i, j] * weight / c["cross0"]
                c["lint"] *= alpha
                c["spokes"] *= alpha
    r = sum(c["size"] for c in comps)
    if r:
        lint = block_diag(*(c["lint"] for c in comps))
        caps = np.concatenate([c["caps"] for c in comps])
        spokes = np.zeros((r, 2 * n))
        offset = 0
        for c in comps:
            sl = slice(offset, offset + c["size"])
            spokes[sl, c["i"]] = c["spokes"][:, 0]
            spokes[sl, n + c["j"]] = c["spokes"][:, 1]
            offset += c["size"]
        cinvhalf = 1 / np.sqrt(caps)
        Q = cinvhalf[:, None] * lint * cinvhalf[None, :]
        B = cinvhalf[:, None] * spokes
        M0 = B.T @ solve(Q, B, assume_a="pos")
        poles, eigenvectors = eigh(Q)
        assert poles[0] > 0
    else:
        Q, B = np.empty((0, 0)), np.empty((0, 2 * n))
        M0 = np.zeros((2 * n, 2 * n))
        spokes = np.zeros((0, 2 * n))
        poles, eigenvectors = np.array([]), np.empty((0, 0))
    direct_cross = kcross - M0[:n, n:]
    assert direct_cross.min() >= -TOL * max(1., kappa)
    direct = laplacian_from_edges(2 * n, [
        (i, n + j, max(0., direct_cross[i, j]))
        for i in range(n) for j in range(n)
    ])
    Lbb = direct + np.diag(spokes.sum(axis=0))
    K = Lbb - M0
    expected_K = laplacian_from_edges(2 * n, [
        (i, n + j, kcross[i, j]) for i in range(n) for j in range(n)
    ])
    assert np.max(np.abs(K - expected_K)) <= TOL * max(1., np.max(np.abs(K)))
    h = float(10 ** RNG.uniform(-1, 1) / lam)
    wait = 0.0 if index % 11 == 0 else float(RNG.uniform(0.01, 1) / lam)
    duration = 0.1 / lam  # each uniform factor; total ramp duration = 2*duration
    results = []
    for protocol in ("ideal_step", "triangular_derivative_ramp"):
        if r:
            ah = -np.expm1(-poles * h) / poles
            ph = np.ones(r) if protocol == "ideal_step" else (
                -np.expm1(-poles * duration) / (poles * duration))
            f = np.exp(-poles * wait) * ph**2 * ah**2
            VtB = eigenvectors.T @ B
            D = VtB.T @ (f[:, None] * VtB)
            # Independent matrix-exponential factor computation, without the
            # eigenvectors used for D. A_h(Q)=Q^-1(I-exp(-Q*h)).
            ah_matrix = solve(Q, np.eye(r) - expm(-Q * h), assume_a="pos")
            ramp_matrix = (np.eye(r) if protocol == "ideal_step" else
                           solve(Q, np.eye(r) - expm(-Q * duration),
                                 assume_a="pos") / duration)
            F = expm(-Q * wait / 2) @ ramp_matrix @ ah_matrix @ B
            factor_error = float(np.max(np.abs(D - F.T @ F)))
            factor_min = float(F.min())
            assert factor_error <= TOL * max(1., float(np.max(np.abs(D))))
            assert factor_min >= -TOL * max(1., float(np.max(np.abs(F))))
        else:
            D = np.zeros((2 * n, 2 * n))
            factor_error, factor_min = 0.0, 0.0
        within_u = D[:n, :n] - np.diag(np.diag(D[:n, :n]))
        within_v = D[n:, n:] - np.diag(np.diag(D[n:, n:]))
        within_max = float(max(np.max(np.abs(within_u)), np.max(np.abs(within_v))))
        S = float(D[:n, n:].sum())
        d = S / n
        b = float(D[:n, n:].max())
        cap = h * (kappa + delta)
        psd_kernel_min = float(np.linalg.eigvalsh(h * M0 - D).min())
        entrywise_kernel_min = float((h * M0 - D).min())
        assert within_max <= TOL * max(1., float(np.max(np.abs(D))))
        assert entrywise_kernel_min >= -TOL * max(1., float(np.max(np.abs(h * M0))))
        assert psd_kernel_min >= -TOL * max(1., float(np.max(np.abs(h * M0))))
        assert S <= r * b + TOL * max(1., S)
        assert b <= cap + TOL * max(1., cap)
        assert d <= r * cap / n + TOL * max(1., d)
        # An observation a with known error epsilon can be above the true d;
        # the conservative lower endpoint remains d in this constructed case.
        epsilon = float(RNG.uniform(0, 0.1) * max(1., d))
        a = d + epsilon
        inferred_lower = n * max(0., a - epsilon) / cap
        assert inferred_lower <= r + TOL * max(1., r)
        results.append(dict(
            index=index, protocol=protocol, n=n, hidden_states=r,
            components=num_components, approximate_K=approximate,
            lambda_reference=lam, kappa=kappa, delta=delta, h=h, wait=wait,
            ramp_factor_duration=(0.0 if protocol == "ideal_step" else duration),
            S=S, d_average_cross_row_sum=d, mean_cross_entry=S/(n*n),
            b=b, cross_entry_cap=cap, row_mean_bound=r*cap/n,
            inferred_state_lower=inferred_lower,
            bound_ratio=(d/(r*cap/n) if r else 0.0),
            within_offdiag_max_abs=within_max,
            entrywise_hM0_minus_D_min=entrywise_kernel_min,
            psd_hM0_minus_D_min=psd_kernel_min,
            nonnegative_factor_min=factor_min,
            independent_factor_error=factor_error,
            min_pole=(float(poles[0]) if r else None),
            max_pole=(float(poles[-1]) if r else None)))
    return results


def check_root_leak(F, n, label):
    D = F.T @ F
    r = len(F)
    du, dv, cross = D[:n, :n], D[n:, n:], D[:n, n:]
    TU, TV = float(np.trace(du)), float(np.trace(dv))
    # Explicit off-diagonal extraction avoids cancellation at tiny leakage.
    WU = float(du[~np.eye(n, dtype=bool)].sum())
    nv = len(dv)
    WV = float(dv[~np.eye(nv, dtype=bool)].sum())
    S, b = float(cross.sum()), float(cross.max())
    penalty = math.sqrt(TU * WV) + math.sqrt(TV * WU) + math.sqrt(WU * WV)
    bound = r * b + penalty
    assert S <= bound + TOL * max(1., S, bound)
    lower = max(0., S - penalty) / b if b else 0.0
    assert lower <= r + TOL * max(1., r)
    return dict(label=label, rows=r, nU=n, nV=nv, S=S, b=b,
                TU=TU, TV=TV, WU=WU, WV=WV, penalty=penalty,
                upper_bound=bound, bound_ratio=(S/bound if bound else 0.0),
                inferred_factor_rows_lower=lower)


def random_cp_case(index):
    n = int(RNG.integers(1, 10))
    nv = int(RNG.integers(1, 10))
    r = int(RNG.integers(1, 25))
    if index % 3 == 0:
        F = 10 ** RNG.uniform(-7, -2, (r, n + nv))
        for row in F:
            row[int(RNG.integers(n))] = 10 ** RNG.uniform(-2, 2)
            row[n + int(RNG.integers(nv))] = 10 ** RNG.uniform(-2, 2)
    else:
        F = 10 ** RNG.uniform(-3, 3, (r, n + nv))
        F[RNG.random(F.shape) < RNG.uniform(0, 0.95)] = 0
    return check_root_leak(F, n, f"random_{index}")


def main():
    physical = []
    for i in range(250):
        physical.extend(physical_case(i, approximate=(i >= 200)))
    cp = [random_cp_case(i) for i in range(750)]
    cp.extend([
        check_root_leak(np.zeros((3, 4)), 2, "zero"),
        check_root_leak(np.array([[1., 0, 0, 0], [0, 2., 0, 0]]), 2, "only_U"),
        check_root_leak(np.ones((1, 7)), 3, "rank_one_dense"),
        check_root_leak(np.array([[1., 0, 1, 0], [0, 1., 0, 1.]]), 2,
                        "zero_leak_equality"),
        check_root_leak(np.array([[1., 0, 1, 0], [1., 0, 1, 0.]]), 2,
                        "repeated_pair_strict"),
    ])
    report = dict(
        seed=SEED,
        status="all_assertions_passed",
        caveat="Numerical validation only; not a proof or novelty claim.",
        conventions=dict(
            n="boundary ports per partition in physical cases",
            S="sum over U x V block, each cross entry counted once",
            d="S/n, average output on U under equal unit inputs on V",
            within_leak="ordered off-diagonal sums, not unordered edge sums",
            K_budget="-K_ij <= kappa + delta on cross entries",
            exact_bound="d <= r*h*lambda/n^2 when kappa=lambda/n and delta=0",
            approximate_bound="r >= n*max(a-epsilon,0)/(h*(kappa+delta))",
            ramp="derivative is convolution of two uniform probability densities"),
        summary=dict(
            physical_networks=250,
            physical_protocol_checks=len(physical),
            exact_K_networks=200,
            approximate_K_networks=50,
            random_CP_cases=750,
            deterministic_CP_edge_cases=5,
            max_physical_bound_ratio=max(x["bound_ratio"] for x in physical),
            max_CP_leak_bound_ratio=max(x["bound_ratio"] for x in cp),
            max_within_zero_error=max(x["within_offdiag_max_abs"] for x in physical),
            max_independent_factor_error=max(x["independent_factor_error"] for x in physical),
            min_nonnegative_factor_entry=min(x["nonnegative_factor_min"] for x in physical),
            min_entrywise_hM0_minus_D=min(x["entrywise_hM0_minus_D_min"] for x in physical),
            min_psd_hM0_minus_D=min(x["psd_hM0_minus_D_min"] for x in physical)),
        physical_cases=physical,
        CP_leak_cases=cp)
    output = Path(__file__).with_suffix(".json")
    output.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n")
    print(json.dumps(report["summary"], indent=2))
    print(f"Saved {output}")


if __name__ == "__main__":
    main()
{
  "seed": 20260922,
  "status": "all_assertions_passed",
  "caveat": "Numerical validation only; not a proof or novelty claim.",
  "conventions": {
    "n": "boundary ports per partition in physical cases",
    "S": "sum over U x V block, each cross entry counted once",
    "d": "S/n, average output on U under equal unit inputs on V",
    "within_leak": "ordered off-diagonal sums, not unordered edge sums",
    "K_budget": "-K_ij <= kappa + delta on cross entries",
    "exact_bound": "d <= r*h*lambda/n^2 when kappa=lambda/n and delta=0",
    "approximate_bound": "r >= n*max(a-epsilon,0)/(h*(kappa+delta))",
    "ramp": "derivative is convolution of two uniform probability densities"
  },
  "summary": {
    "physical_networks": 250,
    "physical_protocol_checks": 500,
    "exact_K_networks": 200,
    "approximate_K_networks": 50,
    "random_CP_cases": 750,
    "deterministic_CP_edge_cases": 5,
    "max_physical_bound_ratio": 0.24741946707742124,
    "max_CP_leak_bound_ratio": 1.0,
    "max_within_zero_error": 0.0,
    "max_independent_factor_error": 9.28812582401406e-13,
    "min_nonnegative_factor_entry": 0.0,
    "min_entrywise_hM0_minus_D": 0.0,
    "min_psd_hM0_minus_D": -6.243044435269559e-15
  }
}
SHARP RESULT / 2026 09 29

「少なくとも何個」から、
「ちょうど何個あれば足りる」へ。

前節の下限を、実際に作れる模型と突き合わせました。すると、この実験条件では必要な内部容量の最少個数を、式で決められます。個数の下限と、その個数で作る方法が一致しました。

下限 28 → 最少 85

左右10か所ずつ、定常応答を厳密に保存。集団応答の許容誤差を ε/c₀=0.05 とした合成例です。84個以下では不可能で、85個なら条件を満たす模型を構成できます。

ここで合わせるのは、右側をまとめて加熱し、左側の熱流を平均して得る二つの時間窓の差、一つの数値です。全時刻・全境界の応答を合わせる問題とは、区別して読んでください。目標全体を厳密に再現する最少個数100は、そのままです。

1. 一つの容量には、受け持てる信号の上限がある。

定常結合を保つと、各左右ペアに使える伝導率の予算が決まります。さらに、二窓の差が最も大きくなる緩和の速さを選んでも、一つの容量が作れる信号には上限があります。遅すぎると二窓の差が小さく、速すぎると測定前に変化が終わるからです。

rmin = ⌈ n² (α − ε/c₀)+ / γ ⌉α ≈ 0.32741820 / γ ≈ 0.32764159 / (x)₊ = max(x,0)
⌈ ⌉ は端数の切上げ。αは目標の信号、γは一つの容量を最適化した効率です。

対象は前節の均一な完全二部グラフ。基準緩和率を λ₀、窓幅を h=1/λ₀ とし、温度微分が三角形になる立上りを2T=0.2h、待機をτ=0.1hと固定します。定常応答Kを厳密に保存し、正の内部容量・非負の相反伝導を許します。候補模型の緩和率や内部接続は自由です。

容量を減らして、信号が届くか確かめる
前節の下限28
今回の最少個数85
全応答の厳密再現100
容量を置けるペア伝導だけのペア

1マス=左右の境界1ペア。緑の各マスに1容量を置き、必要なら最後の1個の容量と伝導率を調整します。

85個で条件を満たす模型を作れます。

定常応答はすべて同じに保ちます。

表示は式の浮動小数点近似です。整数が切り替わる境界付近の厳密な判定には、係数の区間評価が必要です。緑の到達範囲は、この個数の星型構成で実際に作れる信号です。

2. 複雑な内部構造で、抜け道を作れないのか?

同じ側の定常結合はゼロ内部成分の接続先は、左右1境界ずつまで 各成分の信号 ≤ k a q*k:内部状態数 / a:その成分の定常予算 足し合わせると d/c₀ ≤ r γ/n²目標の下端 α−ε/c₀ に届く個数が必要

定常応答に三角形がないと、一つにつながった内部部分は、三つ以上の境界にまたがれません。この接続の制約は既知のKron縮約の性質です。[69]

残る核心は、内部に2個、3個……と容量をつなげても、容量1個当たりの信号が上限を超えないこと。2状態は指数分布の和を使って評価し、3状態以上は測定窓の高さだけで一括評価できます。この二つをつなぐことで、任意の内部構造に対する下限になります。

3. 下限と同じ個数で、実際に作る。

選んだ各左右ペアの間に、容量を一つ置き、両側へ同じ伝導率でつなぎます。最適な緩和率は λ*h≈0.9609333。容量のないペアは、伝導だけでつなぎます。最後の1ペアを部分的に使えば、許容範囲の下端へ正確に合わせられます。

この族では、許容誤差がε/c₀=0.05なら、必要な容量数は約0.8467 n²の切上げです。測る数値は一つでも、n²個の定常結合を全部保つという条件と組み合わさることで、多数の内部容量が必要になります。必要数の大部分は、測定値ではなく定常結合の保存から来ています。

現実での使い道は、熱模型の設計仕様を点検することです。「容量数をここまで削る」と「この定常結合と測定値を保つ」が両立するか、模型を最適化する前に判断できます。現物への適用には、定常結合・測定誤差・センサー補正を別に確かめる必要があります。ここで示した数値は合成例です。

この結果の範囲:均一な定常予算、厳密なゼロ結合、指定した立上りと窓、集約された一つの観測値。部品値を任意に小さくできる理想化も含みます。不均一な辺の予算と一般の非負観測窓は、次の一般定理で拡張しました。定常ゼロへの漏れ、全応答の近似は、この最少個数の式の対象外です。

2026 10 03の検算メモ:この節の証明だけなら、測定条件に依存していた。

この節の証明のうち、3状態以上の連結成分を抑える部分(下の証明C)は、3q* ≥ w*という不等式に頼っています。立上りTと待機τを変えて 3q*/w* を計算すると(窓幅h=1)、次のようになります。

T \ τ00.10.30.5
0(理想ステップ)1.221.090.900.77
0.11.131.017(本文)0.860.74
0.31.000.920.800.70

本文の条件はぎりぎり成立する側で、待機を0.2h程度に延ばすと、この節の議論だけでは崩れます。この依存は、次節の一般定理(D ≤ aCkq、Ck ≤ k)で取り除かれました。次節を経由すれば、窓の条件 3q* ≥ w* は不要です。

独立の数値確認:乱数で作った連結RC成分(各4,000個)で D/(a q*) の最大値を測ると、2状態1.34、3状態1.43、4状態1.46、6状態1.33。それぞれ C2≈1.47、C3≈1.83、C4≈2.12、C6≈2.62 を下回り、一般定理と矛盾しません。表の値は数値計算です。

数学的主張と学術的新規性は別です。以下は下限と構成が一致する解析的な命題です。今回の文献照合の範囲と判定は、この節の後半に記録しました。「新理論が確立した」とはまだ扱いません。

最少個数が決まる理由を、式で順に検証する

A. 温度応答を、非負の分布と測定窓に分ける

正の対角容量と非負の相反伝導を持つ、安定で境界から到達できる模型を考える。一つの内部連結成分の状態数をk、容量で正規化した行列をQ、左右への非負結合ベクトルをu,vとする。Qは対称正定値Stieltjes行列。

M(t)=uᵀQ⁻¹e−Qtv, a=M(0),
f(t)=uᵀe−Qtv/a ≥ 0, ∫₀∞f(t)dt=1.

a=0の成分は交差信号に寄与しないので除く。fは確率密度として扱え、M(t)/aはその生存関数になる。U₁,U₂を[0,T]の独立一様分布、V=U₁+U₂と置く。温度微分をVの密度とし、立上り完了2Tからτ待った二つの幅hの窓を使うと、

ψh(t)=max{0,h−|t−h|},
w(t)=E[ψh(t+V−2T−τ)],
D=a∫₀∞w(t)f(t)dt.

指数密度f(t)=μe−μtに対する信号をq(μ)と置く。

q(μ)=e−μτ [(1−e−μT)/(μT)]² (1−e−μh)²/μ,
q*=maxμ>0q(μ), w*=supt≥0w(t).

以下の十分条件は3q*≥w*。これが満たされれば、どの状態数kでもD≤kaq*が成り立つ。

B. 2状態だけを、少し丁寧に扱う

k=1なら定義からD≤aq*。k=2で固有値が等しい場合はQがスカラー行列なので同じ評価になる。異なる固有値0<a₁<a₂の場合、生存関数は

M(t)/a=c₁e−a₁t+(1−c₁)e−a₂t.

長時間の非負性からc₁≥0、t=0での密度の非負性からc₁≤a₂/(a₂−a₁)。従ってこれは、Exp(a₂)と、独立なExp(a₁)+Exp(a₂)の生存関数との凸結合になる。二つ目の指数係数が負でもよく、Mの完全単調性は仮定していない。

0<a≤bとし、二つの指数分布の和の密度をpa,b、率cの指数密度をgcと書く。全t≥0で

pa,b(t) ≤ 2ga/2(t).

a<bではp=2b/a−1>1、z=at/2と置くと、左辺と右辺の比の最大値は

maxz≥0 [(p+1)/(p−1)](e−z−e−pz)
= [(p+1)/p] p−1/(p−1) ≤ 1.

最後は log p≥(p−1)/p≥(p−1)log(1+1/p)による。a=bでは比が2ze−z≤2/e。非負のwを掛けて積分すれば、指数分布の和の信号は2q*以下。凸結合も2q*以下だから、k=2ではD≤2aq*。

C. 3状態以上と、十分条件の厳密な確認

k≥3なら、fが確率密度なのでD/a≤w*≤3q*≤kq*。今回のT=τ=h/10では、wは二つの対称単峰な三角形の畳み込みを平行移動したものなので、中心t=h+T+τで最大になる。T≤hを使うと

w*=h−E|V−T|=h−T/3=29h/30.

一方、μ=1/hを一度代入するだけで、数値最適化に頼らず条件を証明できる。e−0.1>0.9、e−0.1<0.905、e−1<0.37より、

q*/h ≥ q(1/h)/h > (9/10)(19/20)²(63/100)²
=12895281/40000000,
3q*/h−29/30 > 57529/120000000 > 0.

指数の有理数評価も、e−x>1−x、e0.1>1+0.1+0.1²/2=221/200>200/181、e>1+1+1/2+1/6+1/24=65/24>100/37から従う。

D. 各成分の上限を、模型全体に足す

定常Kのグラフが三角形を持たないとする。内部連結成分の逆Stieltjes行列は成分ごとに正なので、その成分が接続する境界はK上のクリークになる。従って各成分の接続先は高々2境界である。[69]

各辺の定常伝導率が共通のκで、辺eに接続する成分の予算をacとするとΣc→eac≤κ。特にac≤κなので、全辺の二窓差の総和Sについて

S ≤ Σckcacq* ≤ rκq*.

内部成分の極は共通でなくてよい。この証明は、指定した自己畳み込み立上りのCP分解に依存せず、定常Kのゼロと応答の非負性から進んでいる。

E. 同じ値を達成する構成

定常伝導率σ∈(0,κ]を担当する1状態の星を作る。両側の伝導率を2σ、内部容量を4σ/μ*に取れば、定常伝導率はσ、緩和率はqの最大化点μ*、二窓差はσq*。その辺に直結伝導κ−σを加えてKを保つ。

m辺のうちr≤m辺でσ=κを使うとS=rκq*。最後の辺だけσを調整すれば、0≤S≤mκq*の任意の目標に対し、必要最少数は⌈S/(κq*)⌉。0を作る場合は容量を置かない。

前節の族ではm=n²、κ=λ₀c₀/n、h=1/λ₀、d=S/n。dの許容誤差をεとすると、許される下端S=n(c₀α−ε)₊に合わせられる。よって

rmin=⌈n²(α−ε/c₀)₊/γ⌉, γ=q*/h.

α<γなので常にrmin≤n²。非均一な予算では、強い辺へ複数状態を使う選択が弱い辺の1状態に勝つ可能性があり、この単純な最少個数の式は主張しない。

F. 最適な緩和率の求め方

x=μh、A=T/h、B=τ/h、F(x)=x/(eˣ−1)と置くと、

x d[log(q/h)]/dx=−Bx+2F(Ax)+2F(x)−3.

Fはx>0で厳密に減少する。右辺は1から負の値へ厳密に減少するため零点は一つで、qの最大点も一つ。二分法でμ*h≈0.9609333068、γ≈0.32764158599を得る。係数の小数表示と、Cで示した十分条件の証明は分けて扱う。

現実の測定へ近づける:小さな漏れを、まとめて評価する。

85という最小数は、定常結合を厳密に保存する条件で得られました。実機では「結合が完全にゼロ」を測定だけで保証するのは難しいため、漏れを許したまま使える、別の下限も導きました。こちらは必要数の認証で、最適模型との一致までは主張しません。

交差信号 S右側をまとめて加熱し、左側の熱流を合計する。
同じ側の漏れ W左同士・右同士の交差応答を合計して上限を付ける。
不均衡 I左右へ逆符号の温度変化を加え、同じ符号で熱流を集計する。

すべて同じ二窓測定を使います。交差成分それぞれの上限が b と分かっているとき、r状態の模型には次が必要です。

S ≤ rb + W + √(IW).

目標のように左右が釣り合っていれば I=0で、漏れの補正はWそのものになります。従来の補正は小さな漏れの平方根を含んでいました。新しい式は釣り合いのよい領域で有利ですが、すべてのデータで旧式より強いわけではありません。

実験で使う形
信号の下限 Slo、漏れ・不均衡の上限 Wup, Iup、各交差成分の共通上限 bup>0 があれば、
r ≥ ⌈[Slo−Wup−√(IupWup)]₊ / bup⌉。
交差上限は独立の校正や設計情報から与えます。一度の実験で全ての結合が判明するという意味ではありません。整数境界では区間演算が必要です。
漏れの命題、その証明と反例を確認する

D=FᵀF、F≥0、Fの行数r。群をU,Vとし、S=Σi∈U,j∈VDᵢⱼ、W=WU+WV、WU=Σi≠j∈UDᵢⱼ(順序付きの和)、I=(1U−1V)ᵀD(1U−1V)≥0と定める。非一様な上限Dᵢⱼ≤bᵢⱼがあれば、rbを、交差上限の大きい順min(r,|U||V|)個の和Brへ置き換えられる。

S ≤ Br + W + √(IW).

Fの一行をu,vに分け、成分和をa,b、最大成分をm,ℓ、wu=a²−‖u‖²、wv=b²−‖v‖²とする。ab=0は自明。ab>0ならm≥a−wu/a、ℓ≥b−wv/bなので、

ab−mℓ ≤ (b/a)wu+(a/b)wv−wuwv/(ab)
≤ wu+wv+(a−b)₊√wv+(b−a)₊√wu.

最後の不等式はa≥bとa<bを分け、wv≤b²などを使う。各行の最大成分対を一つ選ぶと、選ばれた異なる対は高々r個。同じ対へ割り当てたmℓの合計は、そのD成分以下なので、全行の合計はBr以下。残りをCauchy–Schwarzで足せば√(IW)が得られる。□

u=(1,0,…), v=(1/k,…,1/k)の一行ではI=0、S=1、B₁=1/k、W=1−1/kとなり等号。Wの係数1は一律に小さくできない。正の群倍率θを使えば、WをθWU+θ⁻¹WVへ、Iを(√θ1U−θ⁻¹ᐟ²1V)ᵀD(√θ1U−θ⁻¹ᐟ²1V)へ変えても成立する。

「一対では小さい漏れ」に注意する理由

n個の内部節点を置き、節点iを左iへ伝導率2λc₀で、全ての右境界へ各2λc₀/nで接続し、容量を各4c₀とする。この模型は、元のn²状態の例と交差ブロックの全周波数応答が一致する。一方、右同士には各λc₀/nの定常結合が生まれる。

H=c₀[ I J/n ; J/n J/n ],
K=λc₀[ I −J/n ; −J/n 2I−J/n ].

D=αHではS=nc₀α、W=(n−1)c₀α、I=0、Bn=c₀αとなり、新不等式は等号になる。一対の漏れは1/nでも、合計はnに比例して増える。この模型は定常Kを厳密保存せず、右側の対角応答も変わるため、85の定理への反例ではない。対角定常誤差λc₀(1−1/n)は小さくならず、全体の作用素誤差が消えるという主張でもない。

正負の入力は動作温度のまわりの微小な上下変化を意味する。対象の初期化・センサー補正・誤差上限の妥当性は従来と同じく必要。今回の確認は証明と合成データに限り、実機実験は未実施。

先行研究と比べて、何が成果として残るか。

新規性の中心候補を、「指定した有限時間の測定値と、厳密な定常応答を両立させる最少状態数を、物理的な構成と一致させたこと」へ絞りました。正値性による次数増大や、定常応答を保つ削減法そのものは以前からあります。

照合した分野・資料既知として扱う部分今回の命題との差
Kron縮約・CPランク
[69] [70]
内部成分が境界にクリークを作る性質。完全二部支持のCPランクn²。有限時間の信号上限q*と達成構成を合わせ、近似する単一観測値の最小数を決める。
正値実現
[35] [36]
正値制約による次数増大。正値構造を保つ低次元化。相反伝導・正の対角容量・厳密K・二窓の集団観測という組合せを固定する。
SparseRC
[71]
DCの最初の二モーメントを保つ削減と受動性。本文§III-C2では合成後の負容量を許す。今回の正素子だけの模型とは許容クラスが異なる。
有限時間balanced truncation
[29]
指定した方法による有限時間L²誤差の上界。今回の指標は一つの集団観測。全許容模型の必要数と達成数を一致させる問題であり、誤差指標も異なる。
Phase-type分布
[72] [73]
固定相数でのErlangの最小変動性。三モーメントからの必要相数・近最小構成。今回の三角形状の測定核は全域凸でも単調でもない。その既知の極値原理をそのまま使わず、二状態の密度と核の高さを評価する。
近似非負ランク下界
[41] [44]
誤差があっても因子の必要数を下から評価する一般的手法。漏れW・不均衡I・交差上限Brだけの明示式と、平衡時の一次補正を今回の差分候補とする。
現時点の判定:限定された条件での最小状態数の定理と、測定誤差へ接続する補助命題が得られました。本文を比較した一次資料では同じ主張を確認できていません。歴史的な新規性は未確定であり、一般的な新理論が完成したという段階ではありません。
文献の取得範囲と、残っている照合を読む

2026 09 29時点で、RC/熱回路の最少実現、DC保存、有限時間削減、正値実現、phase-typeの相数、CP/近似非負ランクを検索し、該当する一次資料の設定・定理を照合した。検索結果の不在だけでは新規性を結論しない。

今回追加した公開資料は、SparseRCの本文(DCモーメント・受動性・素子の符号)、Aldous–Sheppの公開スキャン冒頭p.467(主張を画像で確認、証明全体は未精読)、Osogami–Harchol-Balterの著者稿§§1–3(三モーメント一致の定義と必要相数)。関連する公開資料は引き続き文献表で確認できる。

未取得の本文として、SheehanのRealizable Reduction of RC Networks(2007)、O’CinneideのPhase-Type Distributions and Majorization(1991)、Duffin–KnowlesのOptimal thermal phase shift filters(1983)が残る。Heらの2019年論文は、その後の一般化で本文を取得し、密度の増加率・モーメント境界を確認した。[78] 他の未取得資料は要旨から同じ定理の有無を断定していない。古い多端子RC合成論も含め、引用をたどる照合が必要。

数学的確認:解析的証明・独立監査・有理数での整数閾値確認まで実施。形式証明・人間の専門家による査読・実機検証は未実施。「独立監査」は別のAIによる確認を指す。

全応答の誤差を保証する、別の構成もある

元のn²辺からk個の完全マッチングを残し、そのnk辺に元の容量と緩和率λ₀を保つ。残りは同じ定常伝導率の直結伝導へ置き換える。Kを厳密保存し、内部状態数r=nkで、

supω∈ℝ‖Y(iω)−Ỹ(iω)‖₂ = 2λ₀c₀(1−k/n).

消した辺は(n−k)正則な二部グラフ。その符号なしLaplacianの最大固有値が2(n−k)であることから従う。これは全伝達関数について使える構成上界で、全模型の最小数と一致するという定理ではない。初等的な既知の道具による構成として扱う。

有理数での85の確認・数値検査・再現資料を開く

独立の有理数演算で最大点を区間に挟み、「84状態では不足、85状態で足りる」を小数丸めに依存せず確認した。3,200個の物理的な連結RC成分、63個の全応答構成、最適85状態の構成、5,000個の非負因子を検査。全て通過した。有限の検査は解析的証明や新規性の証明の代わりにはしない。

84状態の信号上限/c₀ < 0.275219
必要な信号/c₀ > 0.277418
85状態で作れる最大信号/c₀ > 0.278495

Python 3、NumPy、SciPyを使用。各スクリプトを実行すると、同じ場所へJSONの検証結果を書き出す。上の数値は表示用に外向きに丸め、判定自体は整数比で計算している。

有理数による閾値の証明と、連結RC成分の独立検査
"""Independent exact-rational scalar threshold and randomized RC-component checks.

Requires Python 3, numpy, scipy. Example: python -m pip install numpy scipy
Writes a JSON result beside this script; no project-directory layout is needed.
"""
from fractions import Fraction as F
from pathlib import Path
import json
import numpy as np
from scipy.optimize import brentq

# Alternating series, exact rationals, 0 <= x <= 1.
def expneg(x, n=32):
    term=F(1); even=term
    for k in range(1,n+1):
        term *= -x/k
        even += term
    odd=even + term*(-x)/(n+1)
    return odd, even

def G_bounds(x):
    xl,xh=expneg(x)
    yl,yh=expneg(x/10)
    return (2*x*xl/(1-xl)+2*(x/10)*yl/(1-yl)-3-x/10,
            2*x*xh/(1-xh)+2*(x/10)*yh/(1-yh)-3-x/10)

lo=F('0.96093330677944'); hi=F('0.96093330677945')
assert G_bounds(lo)[0]>0 and G_bounds(hi)[1]<0
el,eh=expneg(lo/10); fl,fh=expneg(hi/10)
gl,gh=expneg(lo); hl,hh=expneg(hi)
qlo=fl*(1-eh)**2*(1-gh)**2*100/hi**3
qhi=eh*(1-fl)**2*(1-hl)**2*100/lo**3
al,ah=expneg(F(1,10)); bl,bh=expneg(F(1))
alpha_lo=al*(1-ah)**2*100*(1-bh)**2
alpha_hi=ah*(1-al)**2*100*(1-bl)**2
assert F(84,100)*qhi < alpha_lo-F(1,20)
assert F(85,100)*qlo > alpha_hi-F(1,20)
# The finite-ramp k>=3 certificate also verified by exact rational arithmetic.
assert 3*alpha_lo>F(29,30)

def q(x):
    return np.exp(-x*.1)*(-np.expm1(-x*.1)/(x*.1))**2*(-np.expm1(-x))**2/x
xstar=brentq(lambda x:2*x/np.expm1(x)+.2*x/np.expm1(.1*x)-3-.1*x,.8,1.1)
qstar=q(xstar)
rng=np.random.default_rng(902913)
rows=[]
for k in range(1,9):
    maximum=0.; max_budget_ratio=0.; negative_residue=0
    for trial in range(400):
        edges=rng.uniform(.02,1.,(k,k)); edges=np.triu(edges,1); edges=edges+edges.T
        # Include sparse port attachment to give negative spectral residues.
        left=rng.uniform(.02,1.,k); right=rng.uniform(.02,1.,k)
        if k>1 and trial%2==0:
            left[1:]=0.; right[:-1]=0.
        cap=10**rng.uniform(-.6,.6,k)
        lap=np.diag(edges.sum(axis=1)+left+right)-edges
        inv=np.diag(cap**-.5); Q=inv@lap@inv
        u=inv@left; v=inv@right
        rates,V=np.linalg.eigh(Q)
        residues=(V.T@u)*(V.T@v)
        negative_residue += int(np.any(residues< -1e-12))
        budget=u@np.linalg.solve(Q,v)
        response=np.sum(residues*np.exp(-rates*.1)*(-np.expm1(-rates*.1)/(rates*.1))**2*(-np.expm1(-rates))**2/rates**2)
        assert response >= -1e-11 and response <= k*budget*qstar+1e-10
        maximum=max(maximum,response/(k*budget*qstar))
        max_budget_ratio=max(max_budget_ratio,response/(budget*qstar))
    rows.append({'states':k,'trials':400,'max_D_over_k_a_qstar':maximum,'max_D_over_a_qstar':max_budget_ratio,'negative_spectral_residue_cases':negative_residue})
result={'root_bracket':[float(lo),float(hi)],'qstar_bounds':[float(qlo),float(qhi)],'alpha_bounds':[float(alpha_lo),float(alpha_hi)],'84_upper':float(F(84,100)*qhi),'required_lower':float(alpha_lo-F(1,20)),'85_lower':float(F(85,100)*qlo),'required_upper':float(alpha_hi-F(1,20)),'threshold_85_certified_by_rational_arithmetic':True,'kernel_height_condition_certified_by_rational_arithmetic':True,'random_checks':rows}
Path(__file__).with_suffix('.json').write_text(json.dumps(result,indent=2), encoding='utf-8')
print(json.dumps(result,indent=2))
物理部品から組み立てる、85状態と全応答の構成
#!/usr/bin/env python3
"""Finite checks of the edge-star construction; not a proof of optimality."""
import json, math
from pathlib import Path
import numpy as np

def stable_r(x):
    return x/math.expm1(x) if x < 700 else 0.0

def kernel(mu,t,h,T):
    return math.exp(-mu*t)*(-math.expm1(-mu*h))**2/mu*((-math.expm1(-mu*T)/(mu*T))**2 if T else 1.0)

def optimum(t,h,T):
    a,b=t/h,T/h
    def g(x):return 2*stable_r(x)+(2*stable_r(b*x) if b else 2)-3-a*x
    lo,hi=0.0,1.0
    while g(hi)>0:hi*=2
    for _ in range(100):
        mid=(lo+hi)/2
        if g(mid)>0:lo=mid
        else:hi=mid
    mu=(lo+hi)/(2*h)
    return mu,kernel(mu,t,h,T)

def build(n,lam,c0,budgets,rates):
    ports=2*n; kappa=lam*c0/n
    active=[(i,j,float(budgets[i,j]),float(rates[i,j])) for i in range(n) for j in range(n) if budgets[i,j]>0]
    r=len(active);spokes=np.zeros((r,ports));diag=np.zeros(r);caps=np.zeros(r)
    for z,(i,j,a,mu) in enumerate(active):
        spokes[z,i]=spokes[z,n+j]=2*a;diag[z]=4*a;caps[z]=4*a/mu
    direct=np.zeros((ports,ports))
    for i in range(n):
        for j in range(n):
            v=np.zeros(ports);v[i]=1;v[n+j]=-1
            direct+=(kappa-budgets[i,j])*np.outer(v,v)
    Lbb=direct+np.diag(spokes.sum(axis=0))
    K=Lbb-(spokes.T/diag)@spokes if r else Lbb.copy()
    B=spokes/np.sqrt(caps)[:,None] if r else spokes
    return K,Lbb,B,np.array([mu for _,_,_,mu in active])

def target(n,lam,c0):
    I=np.eye(n);J=np.ones((n,n))/n
    H=c0*np.block([[I,J],[J,I]])
    K=lam*c0*np.block([[I,-J],[-J,I]])
    return K,H

out={'checks':[]}
for n in range(2,11):
    for k in range(n+1):
        lam,c0=1.7,.8;kappa=lam*c0/n
        budgets=np.zeros((n,n));rates=np.full((n,n),lam)
        for i in range(n):
            for shift in range(k):budgets[i,(i+shift)%n]=kappa
        K,Lbb,B,poles=build(n,lam,c0,budgets,rates)
        Kstar,H=target(n,lam,c0)
        static=float(np.max(np.abs(K-Kstar)))
        HF=Kstar+lam*H
        actual=float(np.linalg.norm(HF-Lbb,2));expected=2*lam*c0*(1-k/n)
        assert static<1e-12 and abs(actual-expected)<1e-12
        for omega in [.2,1,20]:
            if len(poles):Y=Lbb-B.T@((1/(poles+1j*omega))[:,None]*B)
            else:Y=Lbb.astype(complex)
            Ys=Kstar+(1j*omega*lam/(1j*omega+lam))*H
            got=float(np.linalg.norm(Ys-Y,2))
            want=expected*abs(1j*omega/(1j*omega+lam))
            assert abs(got-want)<1e-12
        out['checks'].append({'n':n,'k':k,'states':n*k,'static_error':static,'high_frequency_norm':actual,'exact_formula':expected})
n=10;lam=c0=h=1.;t=T=.1;eps=.05
mu,qmax=optimum(t,h,T);alpha=lam*kernel(lam,t,h,T)
quotient=n*n*(alpha-eps)/(lam*qmax);r=math.ceil(quotient);kappa=lam*c0/n
budgets=np.zeros((n,n));budgets.flat[:r-1]=kappa;budgets.flat[r-1]=(quotient-r+1)*kappa
rates=np.full((n,n),mu)
K,Lbb,B,poles=build(n,lam,c0,budgets,rates)
Kstar,H=target(n,lam,c0)
# D=B.T f(Q) B, with f(mu)=q(mu)/mu because B.T B coefficients are a*mu.
D=B.T@((np.array([kernel(p,t,h,T)/p for p in poles]))[:,None]*B)
d=float(D[:n,n:].sum()/n)
assert np.max(np.abs(K-Kstar))<1e-12
assert abs(d-(alpha-eps))<1e-12
assert abs(r-85)==0
out['scalar_case']={'states':r,'real_quotient':quotient,'mu':mu,'qmax':qmax,'alpha':alpha,'actual_d':d,'target_lower_endpoint':alpha-eps,'partial_budget_fraction':quotient-r+1,'static_error':float(np.max(np.abs(K-Kstar)))}
path=Path(__file__).with_suffix('.json');path.write_text(json.dumps(out,indent=2))
print(json.dumps({'cases':len(out['checks']),'scalar':out['scalar_case'],'all_passed':True},indent=2))
漏れの不等式と、その等号・物理例
import json
from pathlib import Path
import numpy as np
rng=np.random.default_rng(829)

def check(F,n,theta=1.0):
    D=F.T@F; m=F.shape[1]-n; r=F.shape[0]
    S=D[:n,n:].sum(); AU=D[:n,:n].sum(); AV=D[n:,n:].sum()
    WU=D[:n,:n].sum()-np.trace(D[:n,:n]); WV=D[n:,n:].sum()-np.trace(D[n:,n:])
    # Explicit nonnegative sums avoid cancellation for sparse limiting tests.
    WU=sum(D[i,j] for i in range(n) for j in range(n) if i!=j)
    WV=sum(D[i,j] for i in range(n,n+m) for j in range(n,n+m) if i!=j)
    W=theta*WU+WV/theta
    a=np.sqrt(theta)*F[:,:n].sum(axis=1); b=F[:,n:].sum(axis=1)/np.sqrt(theta)
    I=np.square(a-b).sum()
    B=np.sort(D[:n,n:].ravel())[::-1][:r].sum()
    rhs=B+W+np.sqrt(I*W)
    error=(S-rhs)/max(1,S)
    assert error<2e-12,(F,n,theta,error)
    old=np.sqrt(np.trace(D[:n,:n])*WV)+np.sqrt(np.trace(D[n:,n:])*WU)+np.sqrt(WU*WV)
    return {'S':float(S),'B_r':float(B),'W':float(W),'I':float(I),'new_penalty':float(W+np.sqrt(I*W)),'old_penalty':float(old),'relative_violation':float(error)}

maxviol=-1.;count=0
for trial in range(5000):
    n=int(rng.integers(1,10));m=int(rng.integers(1,10));r=int(rng.integers(1,15))
    F=np.exp(rng.uniform(-7,7,(r,n+m)))*(rng.random((r,n+m))<rng.uniform(.05,1))
    theta=float(np.exp(rng.uniform(-7,7)))
    x=check(F,n,theta);maxviol=max(maxviol,x['relative_violation']);count+=1

sharp=[]
for n in [2,3,5,10,20]:
    # n factors; U is coordinate-aligned, V is uniform. Every row is balanced.
    F=np.column_stack((np.eye(n),np.ones((n,n))/n))
    x=check(F,n);x['n']=n;assert abs(x['S']-x['B_r']-x['W'])<1e-10
    sharp.append(x)

physical=[]
for n in [2,3,5,10]:
    lam=.7;c0=1.3;h=.9;t=.2
    F=np.column_stack((np.sqrt(c0)*np.eye(n),np.sqrt(c0)*np.ones((n,n))/n))
    v=F.sum(axis=1);C=np.diag(v*v);g=lam*v[:,None]*F
    LII=np.diag(g.sum(axis=1));LBB=np.diag(g.sum(axis=0));LIB=-g
    K=LBB-LIB.T@np.linalg.solve(LII,LIB)
    H=F.T@F
    Htarget=c0*np.block([[np.eye(n),np.ones((n,n))/n],[np.ones((n,n))/n,np.eye(n)]])
    Ktarget=lam*c0*np.block([[np.eye(n),-np.ones((n,n))/n],[-np.ones((n,n))/n,np.eye(n)]])
    max_cross=0.
    for omega in [0,.1,.7,2,100]:
        s=1j*omega
        Y=LBB-LIB.T@np.linalg.solve(s*C+LII,LIB)
        Ytar=Ktarget+s*lam/(s+lam)*Htarget
        max_cross=max(max_cross,float(np.max(np.abs(Y[:n,n:]-Ytar[:n,n:]))))
    assert max_cross<1e-12
    kV=-K[n:,n:]+np.diag(np.diag(K[n:,n:]))
    assert np.max(np.abs(kV-(np.ones((n,n))-np.eye(n))*lam*c0/n))<1e-12
    physical.append({'n':n,'r':n,'cross_transfer_max_error':max_cross,'within_V_steady_leak':float(lam*c0/n),'total_capacity':float(np.trace(C))})

out={'cases':count,'max_relative_violation':maxviol,'sharp_family':sharp,'physical_family':physical,'interpretation':'Finite checks support implementation; analytic proof is primary. Not a novelty certificate.'}
Path(__file__).with_suffix('.json').write_text(json.dumps(out,indent=2))
print(json.dumps(out,indent=2))

ZIPのSHA-256:2eb5071d3ae3068fc22583f5d7049da1bd7b45210d2b6a583bb3faa6a4a39cee。資料はこのHTMLに埋め込まれており、ダウンロードに外部通信は不要です。

GENERAL THEOREM / 2026 09 29

測り方を変えても残る、
時間への集中の限界。

前節では、決まった二つの時間窓から最少85状態を求めました。さらに抽象化すると、時間ごとの重みが非負である、任意の測り方に共通する上限が得られます。内部を複雑にして、熱の伝わる時刻をどこまで狙い撃ちできるか。その限界です。

集中の強さ ≤ Ck ≈ 1.084 √k

同じ定常結合を持つ「最適な1状態」を基準にすると、k状態で得られる観測値は最大でもCk倍。この係数は、あらゆる非負の測定窓をまとめて扱う上限として、これ以上小さくできません。

一つの容量による応答は、指数関数的に広がります。容量をいくつも経由させれば、特定の時刻付近へ応答を集められます。しかし、状態数を増やしたときの集中の上限は、約√kの速さでしか増えません。この制限は、窓幅や待ち時間を先に固定せずに証明できます。

Dw ≤ a Ck qw
Ck = kk e1−k / (k−1)!a:定常結合 / Dw:重みwで測った過渡応答
qw:同じ測り方に対して、1状態の速さを最適化した値

対象は、正の内部容量・非負の相反伝導を持つ、安定な有限熱回路/接地容量RC回路です。一対の境界間の過渡応答を調べます。w≥0が必要で、符号が混じる任意の測定処理まで主張を広げていません。全伝達関数を1状態で置き換えられる、という意味でもありません。

状態を増やすと、応答はどこまで時刻1に集まる?
k段の極限応答基準の1状態Ck倍した包絡線
最適1状態に対する比(倍)—
普遍上限(倍)—

窓を狭くすると、応答の比が鋭い上限に近づきます。

緑はErlang(k, rate k)の密度、灰色はe−t、破線はCke−tです。比の分母には、窓に合わせて速さを改めて最適化した1状態を使います。色の付いた帯が測定窓です。

緑はRC回路で近づける「極限」の曲線です。k>1では、この図を有限の部品値での厳密な実現例とは扱いません。上限の鋭さには、窓を狭めることと、部品値の制約を設けないことを使っています。

大きい集中が見えれば、内部の個数を逆算できる。

測定からR=Dw/(a qw)が分かれば、Ck≥Rを満たす個数が必要です。大きなRに対して必要個数は概ねRの二乗で増えます。有限の値の判定では近似式ではなく、上のCkを使います。

また、Ck≤kなので、前節の「各状態が使える信号予算」を足す議論も、任意の非負測定窓へ拡張できます。定常結合が均一で三角形を含まない境界グラフでは、条件が整えば測定窓を固定した最少個数の式も、そのまま一般化できます。

さらに、内部構造の最適化を、k本の「速さ探し」へ落とせる。

測定核wを一つ決めた場合には、√k型の共通上限よりも強く言えます。複雑な内部接続や多数の部品値を全て探索して得る観測値の上限は、Erlang分布の段数j=1,…,kを比べ、各々の速さρだけを最適化した値と厳密に一致します。

sup状態数≤kの回路 Dw/a = Ek(w)
Ek(w) = max1≤j≤k supρ>0 ∫0∞w(t)pj,ρ(t)dtpj,ρ:j段・率ρのErlang密度
接続構造も自由な回路の最適化 → k個の、1変数の最適化

分解定理から上限が従い、それぞれのErlang密度へ近づく物理回路が逆向きの一致を与えます。等しいのはsup、つまり到達可能な値の上限です。有限の部品値でその端点そのものを作れるとは限りません。

定常応答の支持グラフが三角形を含まなければ、辺ごとの予算が不均一でも、さらに全回路の上限を各辺へ何状態を割り当てるかという整数最適化へ変換できます。これは最適な1状態へ限定した配分ではなく、各辺のEkまで含む主張です。端点での等号と、上限を厳密に下回る目標の実現は区別します。

物理の条件相反性と非負性から、過渡応答を可逆な吸収時間へ移す。
既知の分解定理を適用
確率の構造最大k段の待ち時間を、Erlang分布の混合として表す。
ガンマ・Dirichlet分解
測定に共通の上限各密度を指数密度で点ごとに抑え、w≥0を掛けて積分する。
鋭い係数Ck

証明できたことと、新規性は分けます。可逆な吸収時間の分解はMicloの既知定理です。ガンマ分布と指数分布の比較も既知の道具として扱います。ここでの成果候補は、それらから導いた任意の非負測定核に対する鋭い上限と、物理的な状態数への帰結です。同一の主張が既に公表されていないかは、引き続き照合が必要です。[74][75][76]

一般定理の仮定、証明、鋭さを検証する

定式化:非負の測定核を、後から自由に選ぶ

Qをk×kの対称正定値Stieltjes行列(非対角成分は非正)、u,v≥0とし、a=uᵀQ−1v>0とする。正規化された密度fと、1状態の最適観測値qwを

f(t)=uᵀe−Qtv/a, ∫0∞f(t)dt=1,
Dw=a∫0∞w(t)f(t)dt,
qw=supμ>0∫0∞w(t)μe−μtdt

と定義する。任意の非負可測wについて、次が成り立つ。qw=∞なら不等式自体は自明なので、実際に下界として使うのはqw<∞の場合である。

∃ 確率測度 ν: f(t) ≤ Ck∫(0,∞)μe−μtν(dμ) (t≥0),
ゆえに Dw ≤ a Ck qw.

同じνが全てのtを同時に支配する。その後で、どの非負測定核wを選んでもよい。元の二窓の差も、過渡応答の減衰率に対する非負核へ変換して扱う。

1. 可逆な吸収時間への変換

まずQが既約とする。h=Q−1v>0、H=diag(h)と置き、

T=−H−1QH, αi=uihi/a, β=H−1v

と定める。Tの非対角成分は非負で、T1=−β≤0。αは確率ベクトルで、足りない行和を吸収先への遷移率とすると、吸収時間密度はαᵀeTtβ=f(t)となる。πi∝hi²に関してπiTij=πjTjiなので、過渡部分は可逆である。

Miclo「On absorption times and Dirichlet eigenvalues」Theorem 1.2(仮定B1・B2)を適用すると、fは最大k個の独立指数変数の和の密度の凸混合になる。ここが既知の非初等的な入力である。Qが可約なら対角ブロックごとに適用し、正のaを持つブロックを、そのaの比で混ぜる。[74]

2. 指数変数の和を、Erlangの混合に変える

独立なEi∼Exp(1)からX=Σi=1jEi/λiを作る。R=ΣEiとPi=Ei/Rに変数変換すると、

R∼Gamma(j,1), P∼Dirichlet(1,…,1), RとPは独立,
X=R A(P), A(P)=ΣPi/λi.

実際、変換後の密度はe−RRj−1で、Rと単体上の一様分布に分離する。Pを固定すれば、Xは形状j・率ρ=1/A(P)のErlang分布である。同じ率が重なっていても、この議論はそのまま成り立つ。

3. 密度を点ごとに抑えると、全ての非負窓に効く

指数密度gμ(t)=μe−μtとErlang密度pj,ρ(t)=ρjtj−1e−ρt/(j−1)!の比は

pj,ρ(t)/gρ/j(t)
=j(ρt)j−1e−(1−1/j)ρt/(j−1)! ≤ Cj.

j>1ではρt=jで最大になり、その値がCj。j=1では恒等的に等号になる。さらに

Cj+1/Cj=(1+1/j)j+1/e >1,
[Cj+1/(j+1)]/[Cj/j]=(1+1/j)j/e <1

だから、j≤kならCj≤Ck、かつCk≤k。前の二段階の混合に沿って指数包絡線を混ぜれば、総質量がCk以下の包絡線を得る。不足分を任意の正の率へ加えてCkで割ると、上の確率測度νとなる。w≥0を掛け、Tonelliの定理で積分順を交換すれば主張を得る。

C1=1, C2=4/e, C3=27/(2e²),
Ck ∼ e√(k/(2π)) ≈ 1.08444√k.

最後の近似はStirlingの公式による漸近式であり、全ての有限kでの等式や厳密な下界としては使わない。

4. 係数Ckは、物理回路の範囲でも小さくできない

Aをk頂点の道グラフの隣接行列とする。0<ε<1/2に対してQε=I−εA、u=e1、v=ekと取る。Qεは対称正定値Stieltjes行列。両端の最短歩道がただ一つであることから、級数展開で

ε−(k−1)(e−Qεt)1k → e−ttk−1/(k−1)!,
ε−(k−1)(Qε−1)1k → 1.

したがって、正規化した密度はErlang(k,1)へ、各コンパクト時間区間で一様に近づく。時刻kの周りの幅2δの矩形窓wδを取り、まずε→0、次にδ→0とすると、

qwδ/(2δ) → 1/(ek),
∫wδ(t)fε(t)dt / qwδ → Ck.

よって全ての回路と非負核に共通する定数は、Ck未満にできない。図では時間を拡大縮小し、平均時刻を1に揃えている。滑らかで非負の、幅が縮む窓でも同じ極限が得られる。

5. 対称行列から、正の部品だけを持つ熱回路へ戻す

既約なQに対しz=Q−1(u+v)>0と置き、内部容量Ciと伝導率を

Ci=zi², gij=−Qijzizj (i≠j),
giL=ziui, giR=zivi

と選ぶ。Qz=u+vなので、内部Laplacianはdiag(z)Qdiag(z)となる。容量は正、伝導率は非負で、二境界以外の熱の逃げ先は要らない。定常伝導率はa=uᵀQ−1v。容量と伝導率を全てκ/a倍すれば、fとQを変えずに、定常伝導率を任意のκ>0へ揃えられる。

この鋭さは上限値への接近を意味する。有限幅の窓と、非退化な一つの有限回路で等号が達成されるという主張ではない。ε→0で部品値が発散したりゼロへ近づいたりし得る。最小部品値、容量の総予算、時定数の範囲などを制限すれば、より小さい上限を得られる可能性が残る。

前節の「最少個数」が、任意の非負測定窓へ拡張される条件

厳密に保存する定常応答Kの支持グラフが三角形を含まず、m本の辺の伝導率が全てκ>0であるとする。全ての辺に同じ非負核wを使い、観測値をS=ΣeDeとする。さらに0<qw<∞で、1状態の最適率を有限の正のμで達成できると仮定する。

内部の連結成分は、定常応答のゼロを保つ限り、各々ただ一つの境界辺にしか寄与できない。k状態の成分の寄与はaCkqw≤akqw。a≤κなので、全体でS≤rκqwとなる。

逆にr≤mなら、r本の異なる辺へ最適率の1状態を一つずつ置ける。最後の辺は必要に応じて動的な伝導率を減らし、残る定常伝導は直接の伝導素子で補う。従って、目標0≤Starget≤mκqwと許容誤差η≥0に対して

rmin=⌈ (Starget−η)+ /(κqw) ⌉.

前節の「3qw≥sup w」という窓の条件が不要になった。上限がsupとして存在するだけで達成されない場合には、ちょうど端点へ合わせる主張は別途調べる必要がある。上限未満への近似構成と個数の下界は引き続き有効である。不均一な定常予算については、単純な切上げ式をそのまま使わない。

設計で使う形:限られた状態数を、どの辺へ割り当てるか。

定常応答を変えずに、狙った時間帯の応答を大きくしたい。この設計問題では、強い辺に内部状態を追加する方が、弱い辺に新しい状態を置くより有利な場合があります。三角形を含まない定常グラフなら、あらゆる内部回路を含めた性能の上限を次の式で表せます。

Vr = maxΣke≤r Σe ceEke(w)r:使える内部状態数 / ke:辺eへの配分(非負整数)
ce = 観測の重みηe × 定常伝導率κe / E0=0

例えば時間0.9〜1.1だけを測り、3本の辺の予算を1、0.5、0.1とします。全辺の観測の重みは1です。2状態では上限約0.11055、3状態では約0.14512。したがって目標0.14には3状態が必要十分です。3個目は最も弱い辺ではなく、最も強い辺へ追加します。

状態数r上限を与える配分
強・中・弱
全回路の上限Vr
21・1・00.11054848
32・1・00.14511748
86・2・00.24559936

表の値は解析式の浮動小数点評価です。各辺を1状態だけで作る方式は合計約0.11792で頭打ちです。上限の端点の達成とは区別し、0.14のように上限を厳密に下回る値は有限回路で実現できます。一般の観測核で最少個数を数値的に保証するには、1変数の最大化にも誤差保証が要ります。

目標0.14を、極限を使わない有限の3状態回路で実現する

境界をb0〜b3とし、定常グラフは伝導率1、1/2、1/10の3辺の道とする。強い辺には、b0—x1—x2—b1の順に伝導率11、11/9、11を置き、内部容量を両方55/9とする。中間の辺はb1—x3—b2に伝導率1、1、内部容量2。弱い辺は伝導率1/10の直接辺だけにする。

強い辺のQは対角2、非対角−1/5で、緩和率は9/5と11/5。中間の辺の率は1。q(ρ)=e−0.9ρ−e−1.1ρと置くと、信号は厳密に

S = [(11/5)q(9/5)−(9/5)q(11/5)]/(2/5)+q(1)/2
= 0.1447470384… > 0.14.

この大小関係は有理数のTaylor上下界でも保証した。θ=0.14/Sとし、内部状態に関わる容量と伝導率を全てθ倍する。強い辺と中間の辺にそれぞれ1−θ、(1−θ)/2の直接伝導を追加すれば、定常応答は変わらず、信号は厳密に0.14になる。有限の正の部品で完成する。

2状態の不可能性は丸め誤差に依存せず示せる。μe−μt≤1/(et)だからqw≤2/(9e)。2状態の配分の上界はmax(3/2,4/e)qw=(3/2)qwであり、

S2状態以下 ≤ 1/(3e) < 1/8 < 0.14.

ここでe>8/3を用いた。従って「最少3状態」は、数値表だけによる推測ではなく、下界と有限構成が一致した結果である。

厳密な変分縮約・状態配分・端点の扱いの証明

固定した観測核に対するEkの厳密性

w≥0を可測、qw<∞とする。先の分解により、任意のk状態の正規化応答は、j≤kのErlang密度の混合である。各混合成分の観測値はEk以下だから、全体も以下になる。逆に任意のj≤k、ρ>0について、率ρへ拡大縮小した対称道グラフの密度fεはpj,ρへ点ごとに収束する。Fatouの補題から

∫w pj,ρ ≤ lim infε→0 ∫w fε
≤ sup物理回路、状態数≤k ∫w f.

ρとjについて上限を取ると逆向きの不等式を得る。wの連続性や有界性は不要である。各道グラフは先の正の部品による構成で実現でき、定常結合も固定できる。従って、一変数最適化への縮約は単なる緩和ではなく、上限値の一致である。

固定する静的行列Kの条件

Kは三角形を含まないグラフのLaplacianで、辺eの伝導率κe>0を厳密に保存する。内部容量は正の対角行列、伝導は相反・非負、内部成分は境界へ接続され安定とする。境界温度は入力なので内部状態に数えない。全辺で共通の非負核wを使い、観測の重みηeも非負とする。

非負回路では、内部連結成分が触れる境界集合はK上のクリークになる。これは既知のKron縮約の性質である。[69] 三角形がないため一つの成分が寄与する境界辺は高々一つ。辺e上の各成分の定常寄与ae,jは、Σjae,j≤κeを満たす。残りは直接伝導である。

辺eに合計ke状態を使うと、Ekの単調性から、その辺の信号はκeEke以下。全辺で足すとVrが上界になる。逆に有限個の整数配分から最良を選び、それぞれの辺にEkeへ近づく道回路を独立に置き、定常伝導率をκeへ揃えると、Vrへ任意に近づける。

計算法と必要十分の意味

V0,s=0,
Vℓ,s=max0≤k≤s{Vℓ−1,s−k+cℓEk},
Vr=Vm,r.

Ekが与えられた後の演算量はO(mr²)。任意のwでEkの離散凹性を証明したわけではないので、限界利得の並べ替えだけで解けるとは主張しない。動的計画法そのものは標準的な方法である。

  • 要求値Sreq>Vrなら、r状態では不可能。
  • 0≤Sreq<Vrなら、r状態以下で実現可能。目標を超える有限回路を選び、全動的部品の容量と伝導率を同じ比率で縮小する。失った定常伝導を直接の辺で補う。極の位置は変わらず、観測値を正確に合わせられる。要求値0なら直接伝導のみでよい。
  • Sreq=Vrの端点では別途、達成可能性を調べる。

表の矩形窓は、速さの最適値も解析的に求まる

w=1[a,b]、0<a<bとする。j段Erlangの区間確率のρ微分は、bje−ρb−aje−ρaと同符号。正から負への変化は一度だけで、

ρj = j log(b/a)/(b−a),
qj = e−ρja Σℓ=0j−1(ρja)ℓ/ℓ!
− e−ρjb Σℓ=0j−1(ρjb)ℓ/ℓ!.

従って表は局所探索の結果ではなく、この大域最適率と有限の動的計画法を評価したものになる。

より簡単な性能保証:凹な係数列と、集中の二乗に比例する状態数下界

W*=sup w、d0=0、dk=min(qwCk,W*)と置く。C(x)=xxe1−x/Γ(x)は増加かつ厳密に凹で、C(0)=0へ連続拡張できる。従ってdkの増分は非負で減少する。

S ≤ Br = maxΣke≤r Σecedke
=「全てのce(dk−dk−1)」の大きい方からr個の和.

Brは計算しやすい上界だが、固定したwの厳密な上限Vrとは区別する。Stirlingの厳密不等式とCauchy–Schwarzを使うと、r>0についてさらに

S ≤ (e/√(2π))qw√(rΣece²),
r ≥ (2π/e²) Sreq² /(qw²Σece²).

凹性の証明:A(x)=(log C)'=log x−ψ(x)=∫e−xtφ(t)dt、φ(t)=1/(1−e−t)−1/tと置く。φは1/2から1へ増加し、0<u<tならφ(u)φ(t−u)<φ(t)。畳み込みのLaplace変換からA²<−A′、従ってC″/C=A²+A′<0。増加性はA>0、原点の極限はC(x)∼exから従う。完全な証明と配分コードは再現資料に収録した。

もう一つの抽象化:保存則から、隠れた構造を縛る。

時間の応答とは別に、以前のCP行列の議論にも一般化が得られました。非負の隠れた因子が作る行列について、群ごとの釣り合いがあり、群内の余分な結合が小さければ、各群から一つだけを選ぶ組合せ構造に近いことを、誤差の式で保証できます。観測座標の総数に依存せず、必要な因子数も増やしません。

熱回路から得たCP観測行列にも使えますが、これは行列の構造を近似する定理です。近似した行列を同じ定常応答の回路として実現できることや、全時間応答の近似まで自動で保証するものではありません。

多群の構造安定性:最良係数、保存則を保つ版、証明

D=FᵀF、F≥0とし、Fの行数はr以下とする。座標をp≥2個の非空群G1,…,Gpに分割する。群内の漏れWと、群の総量の不釣合いIを

W=ΣgΣi≠j∈GgDij,
I=Σg<h(1Gg−1Gh)ᵀD(1Gg−1Gh)

と定義する。Wでは(i,j)と(j,i)を両方数える。I≥0で、I=0はD(1Gg−1Gh)=0が全群対に成り立つことと同値。全ての因子行で群の総和が等しくなる。

因子数を増やさない、構造への距離

各因子・各群から最大座標を一つ残してF0を作る。D0=F0ᵀF0はr以下の非負因子を持ち、群内の非対角成分はゼロ、0≤D0≤Dが成分ごとに成り立つ。そして

‖D−D0‖成分和 ≤ (2p−1/2)W + 2√((p−1)IW).

‖M‖成分和=Σij|Mij|。二つの係数はこの形式の一様な評価としてそれぞれ最良である。特にI=0では漏れWに対して線形で、観測座標数や因子数によらない評価となる。p=2なら7W/2。

証明の要点:一因子の群gの和をag、最大値をmg、漏れをwg=ag²−‖fg‖²とすると、mg≥ag−wg/ag。捨てた対角質量はwg/2以下。二群の和がa≥b>0、漏れがu,vなら、群間の質量損失は

ab−mℓ ≤ (b/a)u+(a/b)v−uv/(ab)
≤ u+v+(a−b)√v.

全ての因子・群対で足し、Cauchy–Schwarzで不釣合いの項を評価すると、順序を区別しない群間損失は(p−1)W+√((p−1)IW)以下。これを2倍し、群内損失Wと対角損失W/2を足せば式を得る。群和が0の項は直接ゼロとして扱う。

線形係数の鋭さ:一因子で、p−1群は単独座標1、残る群だけ(1/2,1/2)とする。I=0、W=1/2で、最良の成分支配された1因子近似の損失が(2p−1/2)Wに一致する。平方根係数の鋭さは、p−1群を単独A、残る群をm個のb/mとし、A/b→∞、m→∞で得る。

保存則まで維持すると、重み付きハイパーグラフになる

I=0なら、各因子の全群の和は同じaである。各群の最大座標を選び、その値を全群共通のt=mingmgまで下げる。この因子は「各群から一つずつ選ぶ集合」の指示ベクトルのt倍となる。対応するD♭はr以下の因子数、成分ごとの0≤D♭≤D、全ての群釣り合いの保存則を満たし、

‖D−D♭‖成分和 ≤ (3p²/2)W.

この係数も最良。最小の最大値tを持つ群jでa²−t²≤3wj/2だから、一因子の損失p²(a²−t²)を足せばよい。鋭さは上と同じ(1/2,1/2)の例で得る。p=2なら、二部グラフの辺に対応するt²(ei+ej)(ei+ej)ᵀの和になる。

限界:構成には非負因子Fが与えられている必要がある。Dだけからの効率的な因子化アルゴリズムではない。成分ごとの支配は半正定値順序での支配を意味せず、通常D−D0は不定符号になる。最初のD0は釣り合いを保つとは限らない。最大座標を残す方法自体は既知なので、それを新規発見としない。[77]

既知の道具と、今回検討する差分。

評価は「既知の確率論を接続した、強く有用な系」です。成立の証明は得られましたが、学術的新規性の確認は未完了です。特にCkの式そのものを新しい定数として主張できません。

内容確認した既知部分今回の差分候補
可逆な吸収時間MicloのTheorem 1.2:指数変数の和の混合。[74]正の相反回路に適用し、任意の非負測定の最適化へつなぐ。
Erlangによる縮約YuのTheorem 3の証明に尺度混合。[76]物理的な道回路の極限と合わせて上限値の一致を示す。
√k型の最良係数Ross第6版p.615演習8に同じ係数。指数密度を使う棄却法の古典的計算。[75]可逆正半群全体の一様な包絡と、固定定常応答の状態数下界。
PH分布の集中HeらのLemma 1・2、Corollary 1:密度の増加率・確率順序・モーメント境界。今回本文を取得。[78]任意の非単調な非負窓の観測値を扱う点を分けて比較。
多群CP安定性最大座標の丸めはChen–He–Zhang §3.2 Lemma 7に既出。[77]群の釣り合い、成分和の距離、因子数維持、最良係数の組合せ。

既知の分解と極限閉包から今回の主張が容易な系として導かれている可能性もある。探索で同じ式が見つからなかったことは、先取性の証明にはならない。証明と照合記録を分けて保存し、相型分布・正値実現・CP錐の誤差評価の専門文献との比較を残す。

次に現実へ近づけるなら、総容量、最小伝導率、許される時定数の範囲を入れる。この章の最良例は極端な部品値を許すため、製作可能な範囲でどれだけ上限が下がるかが、実用上の次の問いになる。
今回の証明ノートと、独立検算をダウンロード

一般核・重み付き配分・CP安定性の証明ノート、既知文献との比較、独立監査、検算コードと結果をまとめた。確率論の定理を除く今回の導出は各ノートで追える。検算は証明の代用ではなく、式・物理実現・実装の取り違えを確認するもの。

  • 物理的な容量・伝導率と定常応答の対応を、1〜9状態で有理数により確認。
  • 最良係数へ近づく道回路と、Erlangの包絡を確認。
  • CP行列1,200例を厳密有理数で独立検算。加えて600例を行列レベルで検算し、係数の鋭さを確認。
  • 矩形窓の解析的最適率、配分の動的計画法、有限回路の具体例を再現。

外部論文のPDFは同梱せず、文献表の公開リンクから辿れる。今回の標準ライブラリ版コードはPython 3で実行できる。ファイルごとの依存関係は同梱READMEに記載。

FINITE RESOURCES / 2026 10 03

容量の予算が決まると、
複雑にしても越せない壁がある。

前節の最良例では、部品値の大きさを制限しませんでした。現実の設計へ一歩近づけるため、今回は内部の総容量に上限Bを置きます。すると、状態数による限界とは別の、どれほど内部を複雑にしても越えられない上限が現れます。

容量が少ない領域では、1状態だけで全回路の最適値に届く。

時間窓の観測値を増やす目的に対して、正の容量を何個に分割し、どのように配線しても、同じ総容量を使った単純な1状態を上回れない領域があります。有限の部品で等号を達成できます。

ここで固定するのは、二つの端子間の定常伝導係数κと、内部容量の総量です。端子同士を直接つなぐ伝導も使えます。直接伝導で定常的な結合を補いつつ、内部容量を測りたい時間帯に合わせて配置します。熱回路なら、容量Cの単位はJ/K、伝導係数gはW/Kです。

定常的な結合 κ十分に時間がたったときの、二端子間の伝わりやすさを固定する。
総容量の予算 B内部に置く容量Ciの合計をB以下にする。状態数とは別の制約。
測定する時間帯 w過渡応答を非負の時間重みで積分する。同じ測定方法で比較する。
Dw ≤ (B/4) Gw
Gw = supλ>0 λq(λ), q(λ)=∫0∞w(t)λe−λtdtDw:端子間の過渡核hを、時間重みwで積分した値
B:総容量の上限。行列の記号Bとは別の、スカラーの予算

Gwは測り方だけから決まります。右辺には状態数がありません。従って、状態を増やして得られる集中にも、総容量による絶対的な上限がかかります。逆向きに読むと、測定値Dwを実現するには少なくとも4Dw/Gwの総容量が必要です(0<Gw<∞の場合)。

仮定は、二端子だけに接続された、正の内部容量と非負の相反伝導を持つ安定な有限回路です。他の端子・環境への漏れは含めません。Dwは端子間の過渡核の積分値であり、投入熱量や最高温度そのものではありません。任意の非負可測wで評価でき、有限の性能保証に使うときはGw<∞を仮定します。

容量を増やすか、内部の個数を増やすか。

無次元化した例:定常伝導係数κ=1、測定窓は時刻0.9〜1.1。kは「使ってよい内部状態数の上限」です。実際の熱容量・伝導係数の単位へ戻す際は、選んだ時間・容量の基準を用います。

k状態以下の全回路に対する保証上界—
有限の1状態で達成できる値—
容量の少ない領域では、上界と有限回路の達成値が一致します。
全回路に対する保証上界最適な1状態の達成値

淡い緑の範囲では二つの値が重なり、どのk≥1でも厳密な最適値です。その他の範囲では、破線は上界であり、達成できるとは限りません。k=1なら、緑の曲線そのものが全てのBで厳密な最適値です。

容量上界 B Gw/4:—状態数上界 κEk:—

下の値は、この有限回路で作れる。

内部容量を一つ置き、左右に同じ伝導係数gの枝をつなぎます。必要に応じて直接伝導dで補うと、定常伝導係数は常にg/2+d=1です。Bが大きいときは予算の一部だけを使います。

直接 d C 伝導 g伝導 g左端子右端子内部容量を一つ使う緩和率 λ=2g/C、定常伝導係数 κ=g/2+d
実際に使う容量 C—
左右それぞれの伝導 g—
直接伝導 d—

部品値は予算と定常伝導係数の制約を満たします。

「最良」は、今回は極限まで待たずに達成できる。

λq(λ)を最大にする率λcが存在し、Bλc/4≤κなら、容量Bの1状態で上界に等しくなります。左右の伝導係数をBλc/2、直接伝導係数をκ−Bλc/4とすればよいからです。B>0のとき内部容量と左右の伝導係数は正で、直接伝導は非負です。B=0なら内部状態を置きません。

B ≤ 4κ/λc なら
max容量合計≤Bの全回路 Dw = (B/4)Gwλcが最大化率として存在する場合。状態数は自由でも、1状態で達成。

この例ではλc≈2.01348、Gw≈0.10900。従ってB≤約1.98661なら、1状態が全ての有限回路に対して最適です。容量を小分けにする工夫を続ける前に、容量そのものが支配的な制約かを判断できます。

容量が増えたら、2状態が実際に有利になる例もある

同じ窓[0.9,1.1]、κ=1で予算B=5にすると、有限の2状態でD≈0.097555を達成できる。同じ予算での最適1状態は約0.073699なので、約32.4%大きい。

直列経路「左端子—容量1—容量2—右端子」の二つの容量を各5/2、両端の伝導係数を各15/4、中央を15/8とし、端子間に直接伝導1/16を加える。総容量は5、定常結合は1である。

h(t)=(45/16)(e−3t/2−e−3t),
D=(15/8)q(3/2)−(15/16)q(3).

この値は上の図の緑線より上にある、別の達成例。2状態または全回路の大域最適値とは主張しない。小容量では分割しても無益だが、予算が増えると内部構造の工夫が役立つことを、二つの有限構成で比較できる。

ある瞬間の応答にも、同じ予算から限界が出る。

h(t) ≤ B/(e²t²) (t>0)h(t)=uᵀe−Qtv:二端子間の過渡核

この式は、遅い時刻tに大きな過渡核を残すための容量負担を表します。時刻tを先に固定すれば、率2/tの1状態がこの容量上界に達します。ただし、固定した定常伝導係数κに対してB/(2t)≤κという実現条件も必要です。同じ回路が全時刻で同時に等号を満たすという意味ではありません。

今回加わった判断軸は、何個あれば作れるかに加えて、合計でどれだけ容量がなければ作れないかです。少ない容量の領域では、最適な設計も有限の1状態として決まります。

波形全体を指定すると、必要容量が正確に決まる例。

もう一歩進めて、観測値一つではなく、二端子間の過渡核h(t)を全時刻で一致させます。異なる減衰率λjを使ってh(t)=Σrje−λjtと書けるなら、どんな有限回路でも

Ctot ≥ 4 Σj (rj)+/λj²(r)+=max(r,0)。同じ減衰率の項は、先に係数を合算する。

特に、h(t)=Ae−αt−be−βt、A≥b>0、0<α<βなら、最小総容量は4A/α²で、2状態の有限回路が達成します。ここでは小文字bが速い指数の係数で、容量予算Bとは異なります。

具体例:h(t)=e−t−¼e−2t を、全時刻で再現する。
3/21/21/23/21g = 1/8 C=2C=2 LR

Lは左端子、Rは右端子。枝の数値は伝導係数で、全て非負です。

総容量4が必要で、4で十分。回路の内部を増やしても、同じ波形を総容量4未満では作れません。

図の容量は2+2。動的部分の定常結合は7/8で、直接枝1/8を足すと定常結合κ=1になります。

平均遅延だけから分かる容量下限は15/4=3.75です。波形全体の係数を使うことで、これを厳密な4へ引き上げられます。

固定したのは一つのクロス応答h(t)です。自己応答も含めた全ポート伝達行列を固定した最小実現問題とは区別します。数値は無次元例です。

証明:容量の上限と、波形からの最小容量

1.物理量を、対称な行列へ移す

C=diag(Ci)を正の内部容量、Lを内部伝導行列、gL,gRを非負の境界伝導ベクトルとする。相反性からLは対称で、非対角成分は非正。各内部連結成分は境界につながり、Lは正定値とする。二端子以外への漏れがなければL1=gL+gR。

Q=C−1/2LC−1/2, u=C−1/2gL, v=C−1/2gR,
h(t)=uᵀe−Qtv ≥ 0,
z=Q−1(u+v)=C1/21, y=Q−1(u−v).

したがって‖z‖²=Ctot。動的な定常結合をadyn=∫h=uᵀQ−1vと書く。直接枝はhに含まれず、総定常結合はκ=adyn+gdirect。

2.正のスペクトル評価で、全ての回路をまとめて抑える

4h(t)=zᵀQ²e−Qtz−yᵀQ²e−Qty
≤ zᵀQ²e−Qtz.

Q²e−Qtは半正定値。w≥0で積分し、Qを直交対角化すると、各固有値λの係数はλ²∫we−λt=λq(λ)≤Gw。従って4Dw≤CtotGw≤BGw。無限積分は、非負項へのTonelliの定理で扱える。

最大化率λcで、C=B、gL=gR=Bλc/2とすればy=0で等号。直接枝κ−Bλc/4が非負である条件が、本文の小容量条件になる。

点ごとの評価にはmaxλ>0λ²e−λt=4/(e²t²)を使う。遅い時刻の積分には、w=1[T,∞)としてmaxλe−λT=1/(eT)を使えば

∫T∞h(t)dt ≤ B/(4eT), T>0.

B≤4κTなら、率1/Tの同じ1状態構成が等号を達成する。なおw=1[0,T]など開始時刻0を含む窓ではGw=∞となり、この容量上界は役に立たない。定常結合からのDw≤κ‖w‖∞は残る。

3.漏れや他の端子があっても、容量上界は残る

観測する二端子以外に非負の漏れ・境界伝導があれば、Qzphys=u+v+r、r≥0、zphys=C1/21。Q−1が成分ごとに非負なので、zeff=Q−1(u+v)≤zphys。証明のzをzeffに変え、‖zeff‖²≤Ctotを使えば同じ上界を得る。他端子は基準温度・電位に固定する。以下の容量の等式は漏れなしの場合に限定する。

4.全波形の正の残差が必要容量を決める

λjの固有空間への直交射影をPjとする。異なる指数関数の一次独立性と上の恒等式により

rj=¼λj²(‖Pjz‖²−‖Pjy‖²),
Ctot≥4Σj(rj)+/λj².

正のrjに必要な‖Pjz‖²を足せばよい。観測に現れないモードを追加しても下界は弱まらない。他端子がある場合もzeffで証明できる。全てrj≥0なら、各項に容量4rj/λj²の左右対称な1状態を置いて並列にすれば、下界を達成する。

二指数の差Ae−αt−be−βtには、次を選ぶ。

C₁=C₂=2A/α², g₁₂=A(β−α)/α²,
gL=((A+√Ab)/α, (A−√Ab)/α),
gR=((A−√Ab)/α, (A+√Ab)/α).

Qの対角成分は(α+β)/2、非対角成分は−(β−α)/2。対称モードの率と残差はα,A、反対称モードではβ,−bとなり、全時刻で一致する。定常結合κも指定するならκ≥A/α−b/βが必要十分で、差を直接枝で補う。b>0なら二つの非零極があるので、状態数も最小の2。b=0なら1状態でよい。

容量の余裕が小さいと、波形の自由度も制限される

漏れのない二端子系で、p=L−1gL、f=h/adyn、μ=∫tfと置く。pは左右の境界値を1と0にしたときの内部の定常値で、0≤p≤1。

adynμ=ΣCipi(1−pi),
δ=Ctot−4adynμ=ΣCi(2pi−1)² ≥ 0.

最初の恒等式は既知の遷移経路理論に対応する。δ=0ならp=1/2、u=vとなり、hは非負の指数関数の混合になる。内部配線そのものが消えるという主張ではない。

さらにh±=¼(z または y)ᵀQ²e−Qt(z または y)とし、b−=∫h−とすると、h+=h+h−。λmax(Q)≤Λなら、指数分布の混合g=h+/(adyn+b−)に対し

TV(f,g) ≤ Λδ/(4adyn+Λδ).

ここでTVはL¹距離の半分。緩和率上限がない場合でも、時間で重み付けした密度F=th/(adynμ)とG=4th+/CtotはTV(F,G)≤δ/Ctotを満たす。GはErlang形状2の混合であり、元のfについての無条件の指数混合近似とは異なる。証明は、それぞれの密度を二つの確率密度の凸結合として書くことによる。

緩和率にも上限を置くと、状態数による性能向上は有限個で止まる

0<ℓ<Uの帯域にQの全固有値があるとする。容量と伝導係数の大きさは制限しない。このとき、非負の測定窓wに対する、k状態以下の正規化核fの観測値の厳密な上限は

Ek,[ℓ,U](w)=max1≤j≤k supρ∈[ℓ,U] ∫w(t)Erlang(j,ρ)(t)dt.

前節の可逆吸収時間の分解とGamma–Dirichlet表現で現れる率は、元の固有値の重み付き調和平均なので帯域内に残る。逆向きは、対称な細い経路Qε=ρ(I−εApath)でErlang核へ近づける。帯域端点は内側から近づける。これは上限の等式であり、有限回路での最大値の達成は保証しない。

wが[0,T]だけを測るなら、j≥UTに対しErlang(j+1,ρ)/Erlang(j,ρ)=ρt/j≤1。従って

J=max(1,⌈UT⌉), k≥Jなら Ek,[ℓ,U]=EJ,[ℓ,U].

例として帯域[0.8,1.2]、窓[0.9,1.1]では、J=2。1状態の上限は約0.073699、2状態以上の上限は約0.086605で、それ以上の状態数では改善しない。対象はこの単一観測値で、全波形や複数の観測値の同時再現ではない。

理想的な多段化には、この構成では容量が必要になる

j状態の対称経路では、目標Erlang核との全変動距離はTV≤(j−1)ε²。一方、動的定常結合κを固定したとき、総容量はε→0で

Ctot ∼ 2κ/(ρεj−1), j≥2.

2状態なら厳密にCtot=2κ(1+ε)/[ρε(1−ε)]。近似誤差を0へ追い込むこの経路族では、容量が発散する。これはこの構成の費用であり、全ての近似方法に共通する必要量の下界ではない。容量制限まで課した最適化は、別途解く必要がある。

例外:ℓ=UならQ=ℓIで指数核しか残らないため、上のErlang式へそのまま代入できない。また前節の普遍定数Ckは率を自由に選べる1状態との比較である。同じ帯域に制限された1状態との比には、任意の非負窓に共通する有限定数は存在しない。証明・反例・15経路の数値確認は再現資料に収録。

操作図の計算式と、上界・達成値の区別

図はκ=1、a=0.9、b=1.1、w=1[a,b]を使う。このa,bは測定窓の端であり、定常結合を表す旧節のaとは別である。

q(λ)=e−aλ−e−bλ,
μ1=log(b/a)/(b−a),
Gw=λcq(λc).

λcは(λq(λ))'=0の正の最大化率で、次の方程式を二分法で求める。

(1−aλ)e−aλ−(1−bλ)e−bλ=0.

数値計算では同値な対数微分1/λ−a+(b−a)/(e(b−a)λ−1)=0を使う。左辺は厳密に減少し、正から負へ一度だけ変わるため、最大化率は一意である。λq(λ)=λ²∫abe−λtdtの導関数はλ≤2/bで正、λ≥2/aで負。実装は符号の異なる端点から二分する。1状態の最大化率μ1とは異なる。

橙色:二つの独立した上界の小さい方

U(B,k)=min{κEk(w), B Gw/4}.

Ekは前節の状態数だけを制限した厳密な上限。j段の最適率ρj=jμ1を使い、j=1,…,kのErlang区間確率の最大値を取る。二つの上界を合わせたUは、一般に両制約下の最適値と断定できない。

緑色:有限の1状態で実現する厳密な最適値

L(B)=maxλ>0min{κ,Bλ/4}q(λ).

B>0としλ0=4κ/Bと置く。この矩形窓では最適率は、λ0≥λcならλc、μ1<λ0<λcならλ0、λ0≤μ1ならμ1となる。得られた率λに対し

A=min{κ,Bλ/4},
C=4A/λ, g=2A, d=κ−A

とすれば、C≤B、g,d≥0、定常結合κで、観測値はAq(λ)=L(B)。B=0はC,gを置かず直接伝導d=κだけにする。表示値とグラフは浮動小数点評価であり、一般核の数値的な大域最適化や製造誤差の保証を行うものではない。

先行研究と照らした、今回の位置づけ。

主張・分野本文照合と今回の判断
容量と平均遅延Metznerら(2009)の式(2.21)、§2.6、およびRoux(2022)p.134111-5の「反応経路の平均時間=占有量/流束」と対応する。既知結果として扱う。[80][81]
容量による鋭い観測上界・小容量域の有限最適回路今回、解析的証明と等号構成を検証した。対称半群のスペクトル評価から短く導けるため、同じ式が検索で見つからなくても先取性は確定しない。
波形からの容量下界・二指数の厳密解クロス応答全体について必要量と達成構成が一致した。ただし、古典的な容量最小化との照合が未完了。Hagopian–Frisch(1970)、Boesch–Hagopian(1971)の中心本文は未取得。[83][84]
RCの実設計Vandenberghe・Boyd・El Gamal(1998)は主要時定数と回路の大きさの最適化を扱う。今回の観測核に対する全配線共通の下界とは目的・制約が異なる。実機適用には形状、接触、製造誤差などの追加条件が必要。[82]
最小電気回路実現Hughes(2018)は多ポートも扱い、RLCT回路の容量素子・誘導素子の最少数を評価する。今回との差はスカラー/多ポートではなく、変圧器・インダクタを許す範囲と、非負伝導・接地容量という制約にある。[79]

2026 10 03の検算メモ:容量上界(ランダム300回路で 4D/(CtotGw) の最大0.952、点ごとの評価で最大0.970)、λc・Gw・部品値、B=5の2状態回路(D≈0.0975547)、波形e−t−¼e−2tの回路(全時刻で一致・総容量4)、aμ=ΣCipi(1−pi)とδの恒等式、帯域制限の値(0.0736990・0.0866048)を独立に再計算し、いずれも一致。照合候補(推測):平均遅延の式はRC回路のElmore遅延(1948)や、Rubinstein–Penfield–Horowitz(1983)のRC木の遅延上下界と形が近く、容量と遅延の文献として優先して照合したい。なお、この節では a・b を測定窓の両端、B を容量予算の意味で使っており、前節までの記号とは別物です。

今回言える成果:総容量という資源制約を加えると、測定値から必要容量を保証でき、一部の設計問題では最適値と有限回路が一致する。学術的新規性は未確定。一般の最小正値実現・最小相型実現の未解決問題を解決したとは扱わない。

以前の「任意の測定窓で成立」は、窓を一つ選ぶたびに最適化できるという意味。同じ一つの回路が、全ての窓で同時に最適・全応答一致になるとは限らない。今回は別途、二指数のクロス応答全体を固定した問題を明示して解いている。

証明・検証スクリプト・照合記録を持ち帰る

解析的証明、独立監査、一次資料の照合箇所、容量の数値確認(300回路・100構成)、15経路の近似と容量の確認を収録。数値実験は証明の代わりではなく、式と実装の整合確認です。

Python 3、NumPy、SciPyで実行できます。外部論文のPDFは含めず、出典リンクを記載しています。

VERIFY / 詳細を検証する

証明、出典、再現コード。

ここからは専門的な記録です。本文の説明に対応する詳細を開けます。探索途中の数値と判断は、当時の記録として保持しています。最新成果は「総容量の制約と有限の最適回路」。一般化の到達点は「測り方によらない一般定理」と「最少状態数の具体例」を優先してください。

数値の変遷 — 現在の下限は11/62

以下は同じH₀に対する最大成分誤差の下限の推移です。上界0.196676467…は別の具体的な近似構成から得た値で、下限の更新と混同しません。

記録係数誤差の下限指定実験での熱流下限
初期の結果約0.049038この段階では同じ二窓実験の値を提示していない
追究2約0.097168約4.2687 mW
追究3約0.101021約4.4379 mW
追究41/6 ≈ 0.166667約7.3219 mW
2026 09 21・現在11/62 ≈ 0.177419約7.7942 mW

熱流を記載した4行は、容量尺度1 J/K、緩和率0.25 s⁻¹、1 Kを1秒の線形ランプで立上げ、0.1秒待機、各窓5.025725秒の同じ合成例。下限の保証が強まったのであって、模型の実際の誤差を減らした結果ではありません。数式と現在の判断は最新の証明を参照してください。

A. 最新の証明:成分別の下限・測定補正・集約式と文献照合
2026 09 21 · 公開本文の照合と測定条件の深化証明を独立監査・学術的新規性は未確定

誤差下限を強め、測定器の記憶を分ける

新たに取得した公開著者稿との照合から、一般論の帰属を更新した。その上で、捨てていた成分情報を使って下限を強め、一次遅れを持つ測定器でも使える補正・正規化を導いた。以下の結果は解析的な証明と合成例に基づき、実機の性能値ではない。

追加の二つの上限・下限対角下限と四辺上限を戻すと、3次元の残る高さが大きすぎることを証明できる。
厳密なゼロ結合の扱い境界では非負3因子と正4因子が分かれる。ただし任意精度の近似は可能。
測定器の動きを除く二窓積分と3端点で一次遅れを補正し、未知の一定倍率を相反ペアで消す。

A. 捨てていた上下限を使い、距離下限を11/62へ改善する

前の三集約式は、対角の上限・反対頂点間の上限・サイクル四辺の下限だけを使う範囲で最良だった。今回は、対角の下限とサイクル四辺の上限も使う。この追加情報により、既知の四角形行列H₀に対する結果を次まで進められる。

11/62 ≤ D₃ < 0.196676467057347
11/62 ≈ 0.1774193548、D₃=infF∈ℝ₊3×4∥FᵀF−H₀∥max。

上界は前に有理数演算で検証した代数的な可行例による。今回改善したのは下界である。以下の証明は誤差11/62以下の閉じた箱も排除する。表示では保守的に「≤」を使うが、11/62ちょうどを判定保留へ戻す必要はない。最小誤差そのものや大域最適解は未決定である。

これは、既知の幾何学的配置定理を使った新しい導出候補であり、式や手法の学術的先取性は未確定。三集約の最良境界を上回ったのではなく、そこでは捨てていた追加の測定情報を使っている。

1. 各成分の異なる誤差幅を、五つの安全な値へまとめる

測定から、対称な真の行列Xについて個別の区間 ℓij≤Xij≤uij が保証されているとする。サイクルは12・23・34・41、反対頂点間は13・24である。

記号区間から作る値真の行列に課される条件
Lmini ℓii全ての対角成分がL以上
Dmaxi uii全ての対角成分がD以下
mmincycle max(0,ℓij)四辺の全てがm以上
Mmaxcycle uij四辺の全てがM以下
zmax(0,u13,u24)反対頂点間がz以下

同じ誤差幅を全成分に仮定する必要はない。ただし、区間そのものが真値を覆うという保証は必要である。以下は、分岐を少なくした十分条件として次の領域で使う。

0 < z < m ≤ M < L ≤ D、かつ m² > Dz。

この領域の外では、この新しい判定は保留とする。既存の三集約式などが使える場合まで否定するものではない。

2. 判定式

次の四つの補助量を計算する。いずれの分母も、上の前提で正である。

A=max{L, z+m²/z−D}、 U=(m²−Dz)/(D−z)、
V=min{M, mz(D−z)/(m²−Dz)}、
R=min{M, 2Dzm/(z²+m²)}。

さらに 0<U≤z、A≤D、R≥m、V≥m を確認する。この整合条件を満たす場合、A≥L>M≥Rなので A>R、Am>Rz も自動的に成立する。

Pmax = [A(U²+V²)−2RUV] / (A²−R²)
L−Pmax > M ⇒ 区間に整合するCPランク3以下の行列は存在しない。

したがって、測定行列のCPランクが内部状態数以下になる実験条件の下では、3状態以下の候補模型を排除できる。前提や整合条件を満たさない場合は、実装を単純にするため保留としてよい。この十分条件を満たさないことは、3状態で十分だという意味ではない。

五値判定の証明:平面への配置から、残る高さを評価する

反対に、区間内のXが X=FᵀF、F≥0、Fの行数≤3 と書けたとする。必要なら零行を足し、4本の列ベクトルをℝ³内で考える。対角はL以上、全ての非対角成分はM以下で、L>Mだから、どの2列についてもGram行列の行列式は L²−M²>0 以上。従って全列は非零で、対ごとに一次独立である。

Brandts–KřížekのCorollary 3.6をそのまま適用できる。非負八分空間内で、二つの列が同じ座標を0に持つ配置を選べる。これは既知の定理であり、その仮定はここで全て満たされている。今回はL>Mを前提にしたため、退化例の摂動処理を必要としない。[34]

反対頂点の組が座標平面にある場合:全列をその平面へ射影する。各サイクル辺は平面上の列に接しているため、その内積は変わらない。対角と反対頂点間の内積は増えず、全列は非負の2次元に入る。

角度が最小の列をviとし、そのサイクル上の隣接列をvj,vkとする。二つの行列式は同符号なので、2次元のLagrange恒等式から

(vi·vj)(vi·vk)−∥vi∥²(vj·vk)
=−det(vi,vj)det(vi,vk)≤0。

j,kは反対頂点である。よってm²≤Dzとなり、前提に反する。射影後の零列はm>0に反するため生じない。これは前の2次元補題と同じ議論である。

隣接する組が座標平面にある場合:サイクルの対称性により列1,2と置いてよい。次の記号を使う。

a=X₁₁、b=X₂₂、r=X₁₂、u=X₁₃、x=X₂₄、v=X₁₄、w=X₂₃、
Δ=ab−r²≥L²−M²>0。

列3,4の座標平面への射影内積はP=N/Δであり、

N=buv−r(ux+wv)+awx。

射影が非負座標平面にあるため、P≥0、従ってN≥0である。この必要条件から、元の区間を次のように絞れる。

v,wの上限:a,b≤D、r≥mを使い、u,xをzへ増やすと上界は増える。偏微分はDv−mx、Dw−muで、m(D−z)>0以上である。よって

0≤N≤Dz(v+w)−m(z²+vw)。

右辺のwに関する偏微分はDz−mv≤Dz−m²<0。wを下限mへ置くと、v(m²−Dz)≤mz(D−z)が得られる。v≤Mも合わせてv≤V。対称にw≤Vである。

rの上限:rを置き換えず、a,b≤Dだけを使うと

r≤D(uv+wx)/(ux+wv)
≤Dz(v+w)/(z²+vw)≤2Dzm/(z²+m²)。

最初の分母はwv≥m²>0。中央の比はu,xを増やすと増加する。例えばu微分の分子はw(v²−x²)>0である。最後の比はv,w≥m>zで各々減少し、両者をmにすると最大になる。r≤Mと合わせ、r≤Rを得る。

a,bの下限:b≤D、r≥mを使い、u,xをzへ増やす。この際の偏微分Dv−mxとaw−muは、前提L>M≥m>zから正である。すると

a≥mz/w+mv/z−Dv/w。

右辺のv微分はm/z−D/w≥(m²−Dz)/(mz)>0、w微分は(Dv−mz)/w²>0である。v=w=mで最小となるためa≥z+m²/z−D。a≥Lも合わせてa≥A、対称にb≥Aとなる。

u,xの下限:a,b≤D、r≥mを使い、xだけをzへ増やすと、

u≥w(mv−Dz)/(Dv−mz)。

分母と分子はm²>Dzから正。wを増やすと増え、v微分の分子はz(D²−m²)>0である。v=w=mにしてu≥(m²−Dz)/(D−z)=Uを得る。対称にx≥Uである。ここまでで、a,b≥A、r≤R、v,w≤V、u,x≥Uがそろった。

射影ノルムの上限:列3の射影の二乗ノルムは

P₃=(bu²−2ruw+aw²)/(ab−r²)。

a,bについての偏微分は、それぞれ −(bu−rw)²/Δ²、−(aw−ru)²/Δ² で非正。従ってa,bを下限Aへ置くとP₃は増える。この変更中もA>R≥rにより分母は正である。

a=b=Aとした後は、Au≤Dz<m²≤rw、ru≤Rz<Am≤Awである。従ってP₃はuに関して減少、wに関して増加する。またr微分の符号は

(Au−rw)(ru−Aw)>0

で決まり、rについても増加する。よってu=U、w=V、r=Rを代入したPmaxが上限になる。列4の射影ノルムP₄=(bv²−2rvx+ax²)/Δも、xが小さい側、vが大きい側として同じ上限を持つ。

残る高さから矛盾:列3,4の第3座標をh₃,h₄≥0とする。全体の二乗ノルムはL以上なのでh₃²,h₄²≥L−Pmax。判定条件L−Pmax>M≥m>0の下では、

X₃₄=P+h₃h₄≥L−Pmax>M。

これはサイクル辺の上限X₃₄≤Mに反する。平面に置かれる二列が反対頂点でも隣接頂点でも不可能なので、区間内のCP3行列は存在しない。□

3. H₀の閉じた誤差箱への代入

∥X−H₀∥max≤e、e=11/62と仮定する。CP3の候補ならXは成分非負なので、五値はL=2−e、D=2+e、m=1−e、M=1+e、z=eと取れる。前提と全ての整合条件を、有理数演算で確認できる。

量厳密値
L、D、m、M、z113/62、135/62、51/62、73/62、11/62
A、U、V、R113/62、9/62、187/186、75735/84382
Pmax1607793697181 / 2499351279048
L−M−Pmax4690998979 / 2499351279048 > 0

最後の正の余裕は約0.0018768866。符号の判定はこの小数表示に頼らず、分子・分母が正の整数であることから行う。従って誤差e以下の閉箱にCP3行列はない。対角下限Lと辺上限Mの差が正なので、零列・比例列も前提によって除かれ、閉箱の端点に未処理の例外はない。

再現コード round6_geometry_certificate.py はPython標準ライブラリのFractionだけで全ての符号と分母を検算する。最適化ソルバーの「解が見つからなかった」という判定は使っていない。11/62はこの手順で証明した下界であり、この手順自体を最適化した値でもない。

同じ合成実験への換算

容量尺度1 J/K、λ=0.25 s⁻¹、1 Kを1秒の線形ランプで立上げ、0.1秒待って各h=5.025725秒を測る条件では、a=e−0.025(1−e−0.25)/0.25·(1−e−λh)²。真の熱流の最大誤差Eは、

E ≥ aD₃/(2h) ≥ 11a/(124h) ≈ 7.794238 mW.

以前の三集約による7.321860 mWに対して33/31倍。区分二次ランプでは約7.784105 mW、既述の電気的縮尺では約7.784105 µA。これは全4入力・4出力・観測区間のどこかで避けられない誤差であり、全時刻・全出力で常に生じる値ではない。

B. ゼロ結合を禁止したときの最少数 — 既知結果の具体化

Bomze–Dickinson–StillのDefinition 1.1は、H=FᵀFの因子Fの全成分を厳密に正にしたときの最少行数をcp⁺(H)と定義する。分解不能なら∞。以下の頁・定理番号は、取得した2014 11 04の公開著者稿に対応し、刊行版の番号との一致は未確認である。[61]

ρ通常ランク非負因子の最少行数正因子の最少行数
034∞
0<ρ<1/2344
ρ=1/2334
ρ>1/2333

この表は、既知のCPランクの境界と、同稿の正因子化の議論を組み合わせた具体化として扱う。独立した新理論とは主張しない。

正因子の構成と、境界に正の3行因子がない証明

F₀を四角形の0/1辺因子とし、各行・列の和を2とする。α=(√(1+ρ)−1)/2と置くと、F₄=F₀+αJはρ>0で全成分が正であり、

F₄ᵀF₄=H₀+(4α+4α²)J=Hρ.

これはBDS Theorem 4.8(p.6)のPerron方向への加算による正因子化の直接例。H₀の正規化Perronベクトルx=1/2·1、固有値4、加算係数μ=4ρを使う。定理の証明は、このように零成分を持つ非負行列も明示的に扱う。ρ<1/2では既知のcp(Hρ)=4が下限を与え、ρ=0ではH₁₃=0のため正因子は不可能。

ρ>1/2ではh=√(1+ρ)、q=√(3/8)として、既存の直交回転から得た3行因子は次のとおり。

F₃ =
[ h/2−q, h/2+q, h/2+q, h/2−q ]
[ qh−1/4, qh−3/4, qh+1/4, qh+3/4 ]
[ qh+3/4, qh+1/4, qh−3/4, qh−1/4 ].

F₃ᵀF₃=Hρ、h/2>q、qh>3/4なので全成分が正。通常ランク3が下限を与える。境界ρ=1/2では非負3行因子はあるが、別の正3行因子もないことを示す必要がある。

H*=H₁/₂=GᵀG、G>0、Gが3行と仮定する。x=1/2·1、y=GxとするとH*x=6x、Gᵀy=6x、yᵀy=6。十分小さいt>0ではGₜ=G−tyxᵀも正で、

GₜᵀGₜ=H*−6(2t−t²)xxᵀ=H1/2−3t+(3/2)t².

右辺のパラメータは0と1/2の間になるため、CPランク4という既知結果に矛盾する。よって境界のcp⁺は4。CP錐の内部を仮定するBDS Theorem 4.9を、ランク3のHρへ無条件に適用した証明ではない。□

熱回路で「結合が正」と読み替えられる条件

前掲の熱回路モデルでQ=CI−1/2LIICI−1/2、B=CI−1/2(−LIB)とする。H=BᵀQ−2BだからF=Q−1Bが非負Gram因子になる。全境界–内部結合が正ならB>0、Q−1は非負で対角が正なのでF>0。従って内部数r≥cp⁺(H)。より一般に、各内部連結成分が全境界へ接続する場合も同じ必要条件が成立する。

逆に正の因子Fの各行fについてv=Σⱼfⱼ、容量C=v²、境界との伝導gⱼ=λvfⱼを選べば、全結合が正の独立星形を構成できる。境界間の残余伝導−Kᵢⱼ−λHᵢⱼ≥0という、もとの実現条件は別に必要。したがってこの条件下では、全境界–内部結合を正にした最少内部数がcp⁺(H)となる。

さらに単一極の厳密実現でr=rank(H)=3なら、Bの行ランクも3。対称Qの各固有空間の留数が半正定値なので、目標にない極を相殺することはできずQB=λB。従ってQ=λIで、内部同士の伝導はゼロとなる。ρ=1/2のどの厳密な3内部実現にも、少なくとも一つの境界–内部結合のゼロが必要である。全境界への結合が正という条件は、内部点同士もつながっているという条件ではない。

厳密実現の差と、近似誤差の下限は別。δ>0ならH₁/₂₊δは正の3行因子を持ち、∥H₁/₂₊δ−H₁/₂∥max=δ。従って境界行列から正3因子集合までの距離は0。微小な結合を禁じる量的条件なしに、頑健な4状態認証へ読み替えない。

C. 測定器の遅れを補正してから、状態数を判定する

真の熱流をqᵢⱼ、観測をyᵢⱼとする。入力実験jの一定の正の倍率bⱼ、出力iの一定の正の倍率aᵢ、一次遅れθᵢ>0を許し、観測区間で次を満たすと仮定する。

θᵢ ẏᵢⱼ+yᵢⱼ=aᵢbⱼqᵢⱼ+cᵢⱼ.

cᵢⱼは定数オフセット。各出力チャンネルの倍率・時定数は実験間で一定、立上りの形は全入力で共通、物体の初期平衡と回路条件は従来どおり。未知の任意フィルター、時刻ずれ、チャンネル混合はこのモデルに含めない。

Jᵢⱼ=∫TT+hyᵢⱼ(u)du−∫T+hT+2hyᵢⱼ(u)du,
Eᵢⱼ=2yᵢⱼ(T+h)−yᵢⱼ(T)−yᵢⱼ(T+2h),
Aᵢⱼ=Jᵢⱼ+θᵢEᵢⱼ=aᵢbⱼDᵢⱼ.

証明はセンサーの微分方程式を各窓で積分して引くだけ。等長窓なので定数は消え、微分項が3端点の式になる。センサーの初期値は任意でよく、立上り中の境界容量の応答も補正される。ただし、物体そのものの初期化条件は残る。

補正しないと、内部0個からCPランク4が現れる反例

A(C₄)を四角形の隣接行列、K=2I−A(C₄)、CB=4Iとする。内部容量は0個。単位ステップの真の応答はq=K·1t≥0+CBδ₀で、t>0では一定である。同じゼロ初期値の一次遅れk(t)=e−tを全出力へかけると、

y(t)=K(1−e−t)+CBe−t=K+H₀e−t,
J=e−T(1−e−h)²H₀.

JのCPランクは4だが、物体の内部数は0。共通かつ非負のセンサーフィルターという条件だけでは、従来の判定は保証されない。θ=1の端点差Eは−Jなので、補正A=J+Eは厳密に0へ戻る。

この反例は理想ステップだけに依存しない。立上りが共通の単調ランプで、正の微分測度μが[0,T₀]にある場合、窓の開始T>T₀では係数e−Tが∫e−(T−v)μ(dv)>0に置き換わる。同じ偽のH₀信号が残る。無限尾を持つ遅れに対し、有限時間待つだけでは厳密には消えない。

一定の正の倍率は、相反する二つの測定から消せる

補正後のAは倍率のため対称とは限らない。算術平均ではなく、相反ペアの幾何平均を使う。

Gᵢⱼ=√(AᵢⱼAⱼᵢ)=sᵢsⱼDᵢⱼ, sᵢ=√(aᵢbᵢ),
Cᵢᵢ=1, Cᵢⱼ=√[AᵢⱼAⱼᵢ/(AᵢᵢAⱼⱼ)]=Dᵢⱼ/√(DᵢᵢDⱼⱼ).

Dの対角が正のときに限り後式を使える。正の対角合同はCPランクを保存する既知の操作であり、cp(C)=cp(D)。[58] 従って、正の一定ゲインの分離形aᵢbⱼと共通波形が検証されていれば、絶対倍率が未知でも状態数の排除はできる。H₀に比例する理想信号ならC=H₀/2となる。mWなどの絶対誤差へ戻すには、別途振幅・ゲインの校正が必要。

時定数の校正誤差と、各測定の異なる誤差幅

|J−Ĵ|≤εJ、|E−Ê|≤εE、|θ−θ̂|≤δθ、0<θ≤θ⁺を全対象で同時に保証する。Â=Ĵ+θ̂Êについて、

|A−Â|≤εA:=εJ+θ⁺εE+δθ|Ê|.

A−Â=(J−Ĵ)+θ(E−Ê)+(θ−θ̂)Êに三角不等式を適用した。端点誤差がε₀,ε₁,ε₂ならεE=ε₀+2ε₁+ε₂。各窓の積分誤差は和をεJへ入れる。全時刻で観測誤差≤σ、時定数が正確ならεA≤(2h+4θ)σに数値積分誤差を加えればよい。独立雑音の仮定は不要。

各Aの区間をℓᵢⱼ=max(0,Âᵢⱼ−εA,ij)、uᵢⱼ=Âᵢⱼ+εA,ijと置く。すべてのuが非負、対角のℓが正なら、

Lᵢⱼ=√[ℓᵢⱼℓⱼᵢ/(uᵢᵢuⱼⱼ)],
Uᵢⱼ=√[uᵢⱼuⱼᵢ/(ℓᵢᵢℓⱼⱼ)]

がCᵢⱼの安全な下限・上限になる。c=mincycleLᵢⱼ、z⁺=min(1,maxoppositeUᵢⱼ)としてc>M(1,z⁺)なら3状態以下を排除する。上の五値判定にも、対角上下限を1、サイクル上限をmin(1,maxcycleUᵢⱼ)として渡せる。

uᵢⱼ<0やLᵢⱼ>1なら、まず仮定した測定器・物理模型のクラスとの不整合である。「だから4状態」とは結論しない。対角下限が0以下なら、この正規化は使わない。統計的区間を使う場合は全成分・使用した窓選択を同時に覆う必要があり、標準偏差をそのまま決定論的な幅へ置き換えない。

適用範囲の追加監査:窓を増やせばよいとは限らない

二窓の重みを(1,−3,3,−1)の四窓へ変えると、定常以外のドリフトも消せるが、CP性は一般には保てない。Q=[[2,−1],[−1,2]]、B=I、T=h=log(10/9)で、内部核Q−2e−QT(I−e−Qh)⁴の非対角成分は厳密に−346880018961/2000000000000000。半正定値でも非負とは限らない。

全状態数へ拡張する自己畳み込みdg=ν*νも、νが非負であることが必要。ν=2δ₀−δlog2を許すと、同じ二内部系の二窓差に負の非対角成分が生じる。また、内部容量を非対角へ広げると、CI=[[2,−1],[−1,2]]、LII=−LIB=LBB=I、T=h=3log2で非対角成分−143/1024となる。相反・受動という条件だけで、対角内部容量の仮定を省略してはいけない。

いずれも適用範囲を確認する独立な解析例。これらの注意一般の学術的新規性を主張するものではない。

D. 公開本文の照合で、帰属をどう更新したか

BDSの15頁公開著者稿を本文・文献表まで照合した。全定理を独立に証明し直したという意味ではない。比較に直接使った箇所は、Definition 1.1、Theorems 2.4・4.8・5.1、Lemma 5.2、§6の半代数的な集合の議論である。[61]

先行結果今回の扱い
Theorem 2.4(p.3):CPランクの下半連続性H₀からCP3まで正の距離があるという存在論は既知。最大成分ノルムでの具体的定数は同定理にない。同稿が帰属する2013年原論文の命題本文は未取得。
Theorem 4.8(p.6):Perron方向への加算で正因子化Hρの正4因子構成を、同定理の直接例へ帰属。正成分の族を作ること自体は成果候補から外す。
Theorem 5.1(p.7)、Lemma 5.2(p.8)4×4の最大CPランク4、正成分のCP行列のCP-plusランク≤4を既知として利用する。
内部での局所一定性、genericity全Hρはランク3の4×4行列でCP錐の境界にある。錐の内部の定理や全空間での一般性を、この族へそのまま移さない。
三集約極値式、11/62の個別成分評価、二窓測定同じ命題は読んだBDS稿では確認できない。これは一資料との比較結果であり、先取性の確定ではない。基礎の認識定理・正規化・線形フィルターの代数は既知。

追加リストの取得状況も反映した。以下の「未取得」は無料本文が存在しないという断定ではない。

照合候補2026 09 21時点の確認範囲
Basson–Halkias 1965 [62]IEEE登録書誌・DOIを確認。中心本文は未取得。
Stein–Moore 1971 [63]DOI、巻頁年を確定。中心本文は未取得。
Stein 1971会議稿 [64]Stein1973の参考文献で題名・会議・頁を確認。会議録番号71 C 53-CT。本文未取得。
Mathew–Chandrashekaran [65]出版社の要旨・書誌・参考文献まで。オンライン公開2026 09 19、巻号は2027年。購読限定で具体的な角度閾値は未照合。
De Tommasiほか 2014 [66]著者掲載の要旨とDOIまで。時間領域の受動RC同定との本文比較は残る。
Berman–Shaked-Monderer 2003/Shaked-Monderer–Berman 2021 [60] [67]書誌・目次・試し読み入口まで。必要な小サイズ・CPランクの章本文は未取得。

回路側では、共通帰線を持つことと全内部容量が接地されることを区別する。またZ(s)の実現からY(s)=Z(s)−1へ移す際は、可逆性・極構造・入出力・容量配置・数える状態が保たれるかを確認する。今回のKは特異であり、「インピーダンスとアドミタンスは容易に読み替えられる」として未読の最小性定理を代用しない。

残す成果候補:既知の幾何定理から導いた具体的な集約・成分別の不等式、検算可能な誤差定数とSDP分離例、明示した測定器モデル下の状態数判定への組み合わせ。数学的な証明と、歴史的な新規性の確認は引き続き分けて扱う。

11/62の厳密な有理数検算 — Python標準ライブラリ
"""Exact rational margins for the Round 6 coordinate-plane exclusion.

The mathematical implication is proved in round6_geometry.md; this script
certifies the chosen constants and strict signs without floating-point tests.
"""
from fractions import Fraction as Q
from pathlib import Path
import json


def certify(e):
    assert Q(1, 6) < e < Q(1, 4)
    m, M, L, D = 1-e, 1+e, 2-e, 2+e
    assert 0 < e < m <= M < L <= D
    A = max(L, 1/e-4+e)
    V = min(M, 2*e*m/(1-4*e))
    R = min(M, 2*D*e*m/(e*e+m*m))
    U = (1-4*e)/2
    assert 0 < U <= e < m
    assert L <= A <= D
    assert m <= V <= M and m <= R <= M
    assert A > R
    assert m*m > D*e
    assert D*m > M*e
    assert A*m > R*e
    Pmax = (A*(U*U+V*V)-2*R*U*V)/(A*A-R*R)
    assert Pmax >= 0
    assert L-Pmax > M
    return dict(error_budget=e, m=m, M=M, L=L, D=D,
                A=A, U=U, V=V, R=R,
                opposite_pair_margin=m*m-D*e,
                projected_norm_upper=Pmax,
                fourth_edge_margin=L-M-Pmax)


def main():
    main_result = certify(Q(11, 62))
    # A slightly larger rational budget certifies a uniform strict margin
    # for general-position approximation of a boundary/degenerate factor.
    perturbation_result = certify(Q(17742, 100000))
    assert perturbation_result['error_budget'] > main_result['error_budget']
    data = {'status': 'Exact rational assertions passed',
            'proved_lower_bound': str(main_result['error_budget']),
            'main_exact': {k: str(v) for k,v in main_result.items()},
            'display_only': {k: float(v) for k,v in main_result.items()},
            'strict_perturbation_budget': str(perturbation_result['error_budget']),
            'strict_perturbation_margin': str(perturbation_result['fourth_edge_margin']),
            'pairwise_independence_directly_from_L_greater_than_M': True,
            'global_optimality_claimed': False}
    output = Path(__file__).with_name('round6_geometry_certificate.json')
    output.write_text(json.dumps(data, indent=2)+'\n')
    print(json.dumps(data, indent=2))


if __name__ == '__main__':
    main()
センサー・正因子・倍率相殺の独立数値検査 — Python + NumPy
"""Independent numerical checks accompanying round6_independent_audit.md.
Analytic arguments are in the note; floating-point checks are not proofs.
"""
import json
import math
from pathlib import Path
import numpy as np


H0 = np.array([[2, 1, 0, 1], [1, 2, 1, 0],
               [0, 1, 2, 1], [1, 0, 1, 2]], dtype=float)
J = np.ones((4, 4))
A = H0 - 2 * np.eye(4)
K = 2 * np.eye(4) - A
CB = 4 * np.eye(4)


def e_integral(rate, left, right):
    return (math.exp(-rate * left) - math.exp(-rate * right)) / rate


def two_window(fun_integral, T, h):
    return fun_integral(T, T+h) - fun_integral(T+h, T+2*h)


def F3(rho):
    h, q = math.sqrt(1+rho), math.sqrt(3/8)
    return np.array([[h/2-q, h/2+q, h/2+q, h/2-q],
                     [q*h-.25, q*h-.75, q*h+.25, q*h+.75],
                     [q*h+.75, q*h+.25, q*h-.75, q*h-.25]])


def F4(rho):
    F0 = np.array([[1, 1, 0, 0], [0, 1, 1, 0],
                   [0, 0, 1, 1], [1, 0, 0, 1]], dtype=float)
    return F0 + ((math.sqrt(1+rho)-1)/2) * J


def main():
    result = {'checks_are_numerical': True}
    # Zero-internal-node sensor counterexample.
    T, h = .7, .8
    y = lambda t: K + H0 * math.exp(-t)
    iy = lambda l, r: K * (r-l) + H0 * e_integral(1, l, r)
    Dy = two_window(iy, T, h)
    Ey = 2*y(T+h) - y(T) - y(T+2*h)
    coefficient = math.exp(-T) * (1-math.exp(-h))**2
    result['fake_sensor'] = {
        'coefficient': coefficient,
        'uncorrected_residual': float(np.max(np.abs(Dy-coefficient*H0))),
        'corrected_residual': float(np.max(np.abs(Dy+Ey))),
        'K_min_eigenvalue': float(np.linalg.eigvalsh(K).min()),
        'K_row_sums': K.sum(axis=1).tolist(),
    }
    assert np.max(np.abs(Dy-coefficient*H0)) < 1e-14
    assert np.max(np.abs(Dy+Ey)) < 1e-14

    # General first-order sensor: q(t)=q0+sum weights exp(-alpha t).
    # Independent exact antiderivatives; nonzero sensor initialization.
    records = []
    q0, weights, rates, initial = 1.7, [2.3, -.4], [.31, 1.73], -1.2
    for beta in [.2, .9, 3.1, 7.0]:
        for T, h in [(.03, .07), (.5, .8), (1.4, 2.0)]:
            def y(t):
                return q0 + (initial-q0)*math.exp(-beta*t) + sum(
                    w*beta/(beta-a)*(math.exp(-a*t)-math.exp(-beta*t))
                    for w, a in zip(weights, rates))
            def iq(l, r):
                return q0*(r-l) + sum(w*e_integral(a, l, r)
                                      for w, a in zip(weights, rates))
            def iy(l, r):
                return q0*(r-l) + (initial-q0)*e_integral(beta, l, r) + sum(
                    w*beta/(beta-a)*(e_integral(a, l, r)-e_integral(beta, l, r))
                    for w, a in zip(weights, rates))
            Dq, Dy = two_window(iq, T, h), two_window(iy, T, h)
            Ey = 2*y(T+h)-y(T)-y(T+2*h)
            residual = abs(Dq-Dy-Ey/beta)
            assert residual < 3e-14
            records.append({'beta': beta, 'T': T, 'h': h, 'residual': residual})
    result['sensor_identity'] = records

    # Shared-endpoint composite trapezoidal weights and exact l1 noise bound.
    trap_records = []
    for N in [1, 2, 5, 10]:
        h = .8
        dt = h/N
        for tau in [.01, .2, 1.0]:
            w = np.r_[dt/2, np.full(N-1, dt), 0.,
                      np.full(N-1, -dt), -dt/2]
            w[0] -= tau
            w[N] += 2*tau
            w[-1] -= tau
            exact = abs(dt/2-tau)+3*tau+dt/2+2*(N-1)*dt
            assert abs(np.sum(np.abs(w))-exact) < 1e-14
            trap_records.append({'N': N, 'tau': tau, 'l1_weight': exact})
    result['trapezoid_noise_weights'] = trap_records

    factor_records = []
    for rho in [1e-6, .1, .49, .5, .500001, .7, 1., 5.]:
        expected = H0 + rho*J
        g4 = F4(rho)
        assert g4.min() > 0
        assert np.max(np.abs(g4.T@g4-expected)) < 2e-14
        record = {'rho': rho, 'F4_min': float(g4.min()),
                  'F4_gram_residual': float(np.max(np.abs(g4.T@g4-expected)))}
        if rho >= .5:
            g3 = F3(rho)
            assert g3.min() >= -2e-16
            if rho > .5: assert g3.min() > 0
            assert np.max(np.abs(g3.T@g3-expected)) < 2e-14
            record.update(F3_min=float(g3.min()),
                          F3_gram_residual=float(np.max(np.abs(g3.T@g3-expected))))
        factor_records.append(record)
    result['factors'] = factor_records

    # Gain cancellation through symmetric geometric means.
    H = H0+.3*J
    a, b = np.array([.3, 2., 1.2, 4.]), np.array([3., .7, 2., .4])
    M = a[:, None] * H * b[None, :]
    C = np.sqrt(M*M.T/np.outer(np.diag(M), np.diag(M)))
    normalized_H = H / np.sqrt(np.outer(np.diag(H), np.diag(H)))
    result['gain_normalization_residual'] = float(np.max(np.abs(C-normalized_H)))
    assert np.max(np.abs(C-normalized_H)) < 1e-14

    out = Path(__file__).with_suffix('.json')
    out.write_text(json.dumps(result, indent=2)+'\n')
    print('All independent numerical checks passed.')
    print('Maximum sensor identity residual:', max(x['residual'] for x in records))
    print('Results:', out)


if __name__ == '__main__':
    main()
有理数検算の実行記録
{
  "status": "Exact rational assertions passed",
  "proved_lower_bound": "11/62",
  "main_exact": {
    "error_budget": "11/62",
    "m": "51/62",
    "M": "73/62",
    "L": "113/62",
    "D": "135/62",
    "A": "113/62",
    "U": "9/62",
    "V": "187/186",
    "R": "75735/84382",
    "opposite_pair_margin": "9/31",
    "projected_norm_upper": "1607793697181/2499351279048",
    "fourth_edge_margin": "4690998979/2499351279048"
  },
  "display_only": {
    "error_budget": 0.1774193548387097,
    "m": 0.8225806451612904,
    "M": 1.1774193548387097,
    "L": 1.8225806451612903,
    "D": 2.1774193548387095,
    "A": 1.8225806451612903,
    "U": 0.14516129032258066,
    "V": 1.0053763440860215,
    "R": 0.897525538621981,
    "opposite_pair_margin": 0.2903225806451613,
    "projected_norm_upper": 0.6432844037007102,
    "fourth_edge_margin": 0.0018768866218704544
  },
  "strict_perturbation_budget": "8871/50000",
  "strict_perturbation_margin": "964422841882034536069568877539212231/519259289904624073914823037628800000000",
  "pairwise_independence_directly_from_L_greater_than_M": true,
  "global_optimality_claimed": false
}
独立数値検査の実行記録
{
  "checks_are_numerical": true,
  "fake_sensor": {
    "coefficient": 0.15058382721735358,
    "uncorrected_residual": 5.551115123125783e-16,
    "corrected_residual": 8.881784197001252e-16,
    "K_min_eigenvalue": -8.586881206085195e-16,
    "K_row_sums": [
      0.0,
      0.0,
      0.0,
      0.0
    ]
  },
  "sensor_identity": [
    {
      "beta": 0.2,
      "T": 0.03,
      "h": 0.07,
      "residual": 3.011479954295737e-15
    },
    {
      "beta": 0.2,
      "T": 0.5,
      "h": 0.8,
      "residual": 2.220446049250313e-16
    },
    {
      "beta": 0.2,
      "T": 1.4,
      "h": 2.0,
      "residual": 1.3322676295501878e-15
    },
    {
      "beta": 0.9,
      "T": 0.03,
      "h": 0.07,
      "residual": 4.683753385137379e-16
    },
    {
      "beta": 0.9,
      "T": 0.5,
      "h": 0.8,
      "residual": 1.3322676295501878e-15
    },
    {
      "beta": 0.9,
      "T": 1.4,
      "h": 2.0,
      "residual": 1.7763568394002505e-15
    },
    {
      "beta": 3.1,
      "T": 0.03,
      "h": 0.07,
      "residual": 1.8735013540549517e-16
    },
    {
      "beta": 3.1,
      "T": 0.5,
      "h": 0.8,
      "residual": 5.551115123125783e-16
    },
    {
      "beta": 3.1,
      "T": 1.4,
      "h": 2.0,
      "residual": 1.3877787807814457e-16
    },
    {
      "beta": 7.0,
      "T": 0.03,
      "h": 0.07,
      "residual": 4.163336342344337e-17
    },
    {
      "beta": 7.0,
      "T": 0.5,
      "h": 0.8,
      "residual": 3.8163916471489756e-16
    },
    {
      "beta": 7.0,
      "T": 1.4,
      "h": 2.0,
      "residual": 2.5673907444456745e-16
    }
  ],
  "trapezoid_noise_weights": [
    {
      "N": 1,
      "tau": 0.01,
      "l1_weight": 0.8200000000000001
    },
    {
      "N": 1,
      "tau": 0.2,
      "l1_weight": 1.2000000000000002
    },
    {
      "N": 1,
      "tau": 1.0,
      "l1_weight": 4.0
    },
    {
      "N": 2,
      "tau": 0.01,
      "l1_weight": 1.2200000000000002
    },
    {
      "N": 2,
      "tau": 0.2,
      "l1_weight": 1.6
    },
    {
      "N": 2,
      "tau": 1.0,
      "l1_weight": 4.8
    },
    {
      "N": 5,
      "tau": 0.01,
      "l1_weight": 1.46
    },
    {
      "N": 5,
      "tau": 0.2,
      "l1_weight": 2.08
    },
    {
      "N": 5,
      "tau": 1.0,
      "l1_weight": 5.28
    },
    {
      "N": 10,
      "tau": 0.01,
      "l1_weight": 1.54
    },
    {
      "N": 10,
      "tau": 0.2,
      "l1_weight": 2.24
    },
    {
      "N": 10,
      "tau": 1.0,
      "l1_weight": 5.4399999999999995
    }
  ],
  "factors": [
    {
      "rho": 1e-06,
      "F4_min": 2.499999375293882e-07,
      "F4_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 0.1,
      "F4_min": 0.024404424085075815,
      "F4_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 0.49,
      "F4_min": 0.11032778078668515,
      "F4_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 0.5,
      "F4_min": 0.11237243569579447,
      "F4_gram_residual": 4.440892098500626e-16,
      "F3_min": -1.1102230246251565e-16,
      "F3_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 0.500001,
      "F4_min": 0.11237263981990575,
      "F4_gram_residual": 8.881784197001252e-16,
      "F3_min": 2.0412411128045704e-07,
      "F3_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 0.7,
      "F4_min": 0.15192024052026487,
      "F4_gram_residual": 4.440892098500626e-16,
      "F3_min": 0.0395478048244704,
      "F3_gram_residual": 4.440892098500626e-16
    },
    {
      "rho": 1.0,
      "F4_min": 0.20710678118654757,
      "F4_gram_residual": 4.440892098500626e-16,
      "F3_min": 0.0947343454907531,
      "F3_gram_residual": 2.220446049250313e-16
    },
    {
      "rho": 5.0,
      "F4_min": 0.7247448713915889,
      "F4_gram_residual": 1.7763568394002505e-15,
      "F3_min": 0.6123724356957945,
      "F3_gram_residual": 1.7763568394002505e-15
    }
  ],
  "gain_normalization_residual": 1.1102230246251565e-16
}
追究4 · 原論文の照合から、鋭い不等式へ証明を記録・式の先取性は未確定

三つの集約値から得られる、最良の状態数判定

以下は2026 09 20の記録。三集約式の最良性はそのままで、全成分を使う下界は翌日の11/62へ強化した。最新の本文照合は追究6を参照。

今回の文献照合から、前回は予想として残した不等式を証明できた。既知のCPランク3の幾何学的判定定理を、測定量の三つの集約値だけで使える鋭い式へ変換した結果である。係数誤差の下限は約0.101から1/6へ改善し、特定の既存SDPでは判定できない行列も、この式で排除できると厳密に確認した。

1/63状態以下との係数誤差の下限。最小誤差そのものを決定したわけではない。
鋭い集約式対角上限・反対頂点間の上限・隣接成分の下限だけを使う範囲で最良。
厳密な比較例既存SDPは下界3に留まるが、強化式は4状態以上を認証する。

A. 何を測り、どの三つの数へまとめるか

前節からの対象は、正の熱容量と非負の相反熱伝導だけからなる線形模型である。4か所の境界温度を一つずつ同じ波形で変え、各境界の熱流を二つの等長窓で積分して差を取る。この4×4行列をXとする。所定の初期化・波形・観測条件の下で、内部状態3個以下ならX=FᵀF、F≥0、Fの行数≤3となる。実験条件の全体は追究2と追究3に記す。

d:全対角成分の上限
z:X₁₃、X₂₄の上限(反対頂点の組)
m:X₁₂、X₂₃、X₃₄、X₄₁の下限(サイクルの四辺)

d≥0、0≤z≤d、m≥0として、これらの条件を満たすCPランク3以下の行列で、サイクル最小値をどこまで大きくできるかを考える。

M(d,z)=min{√[z(2d−z)], (d+z)/2}.

この上限は全てのd,zで達成できる。したがってm>M(d,z)なら3状態以下を排除でき、m≤M(d,z)なら、この三つの不等式を満たす3行以下の非負因子が実際に存在する。後者は、元の測定行列の全成分に一致する模型があるという意味ではない。z>dの場合はCauchy–Schwarzによりzをdへ切り詰められ、d=0の場合は零行列だけである。

「最良」の範囲:対角≤d、反対頂点間≤z、四辺≥mという集約した制約に対する最良性。個々の成分の上下限、時間情報、他の測定を全て使った最良判定や、物理模型の最小近似誤差の決定ではない。

B. 既知の幾何定理からの完全な証明

中心となる先行結果は、Brandts–Křížek(2016)のCorollary 3.6と式(6)。対ごとに一次独立な有限個の3次元ベクトルが非負八分空間へ等長に配置できるなら、2本が同じ座標を0に持つ、すなわち一つの座標平面上にある配置も選べる。比例する組や零ベクトルがある場合は、下の摂動と極限の段落で扱う。この既知定理を使い、「その2本が隣接するか、反対頂点か」を尽くす。[34]

補題:2次元なら m²≤dz

4本のベクトルが非負の2次元平面にあるとする。零ベクトルがあればm=0で自明。そうでなければ角度が最小のviを取り、そのサイクル上の隣接2本をvj,vkとする。両方が同じ角度側にあるので、det(vi,vj)、det(vi,vk)は非負。次の式は、Lagrange恒等式の2次元版である。

(vi·vj)(vi·vk)−∥vi∥²(vj·vk)
=−det(vi,vj)det(vi,vk)≤0.

j,kは反対頂点の組だから、m²≤XijXik≤XiiXjk≤dz。□

強い不等式 m²≤z(2d−z) の証明

まず3次元のGramベクトルが全て非零で、どの2本も比例しない、すなわち対ごとに一次独立な場合を考える。既知定理によって2本を一つの座標平面へ置ける。z=dならm≤dから自明なので、z<dとする。

反対頂点の組を平面へ置ける場合:例えばv₁,v₃とする。全ベクトルをその座標平面へ射影しても非負性は保たれ、全てのサイクル内積は変わらない。各サイクル辺が必ずv₁かv₃に接しているためである。対角成分と反対頂点間の内積は増えない。射影で落とす座標は各ベクトルで非負なので、内積から引かれるのは非負数どうしの積(対角ならその平方)だからである。2次元の補題からm²≤dz≤z(2d−z)。

隣接組を平面へ置ける場合:例えばv₁,v₂とし、a=X₁₁、b=X₂₂、r=X₁₂、u=X₁₃、x=X₂₄、v=X₁₄、w=X₂₃と置く。残る2本の射影内積はP=N/Δ、Δ=ab−r²>0で、

N=buv−r(ux+wv)+awx.

射影先が非負座標平面だからP≥0。ここでm²>z(2d−z)を仮定して矛盾を出す。d≥a,b、r≥m、u,x≤z、v,w≥mから

N≤d(uv+wx)−m(ux+wv)
≤dz(v+w)−m(z²+vw)
≤m[2dz−z²−m²]<0.

第2行へ進むときはu,xをzへ増やす。偏微分はdv−mx、dw−muで、ともにm(d−z)以上。最後はv,wをmへ下げる。偏微分dz−mw、dz−mvは、仮定からdz−m²<0。従って全ての不等式の向きが保証される。P≥0と矛盾する。

比例・零ベクトルや階数低下は、Fを任意に近い正の3行行列で一般位置に摂動し、その行列のd,z,mを取って極限を送ればよい。非負性を保つ近似を選べ、集約値は連続、z≤dはCauchy–Schwarzから常に成立する。実際の集約値から、与えられた上下限への拡張は単調性による。□

もう一つの上限と、両方の達成例

∥v₁−v₂+v₃−v₄∥²≥0より、四辺の和は2(d+z)以下。従ってm≤(d+z)/2。この部分は半正定値性だけで成立する。

0≤z≤d/5:a=√(z/2)、b=√(d−z/2)、c=√(d−2z)とし、Fの3行を次のように取る。

0ab2a
2aba0
c00c

全対角はd、反対頂点間はz、三辺が2ab=√[z(2d−z)]、残る一辺がd−2zとなる。(d−z)(d−5z)≥0から残る辺も2ab以上。平方根の上限を達成する。

d/5≤z<d:対角d、反対頂点間z、四辺(d+z)/2の対称巡回行列を取る。これはsHρ、s=(d−z)/2、ρ=2z/(d−z)≥1/2。既知定理から得たHρの判定、または§6の明示非負因子によりCPランク≤3である。z=dではdJが達成する。両上限の交点はz=d/5であり、全領域で表示した最小値が達成できた。□

C. 測定誤差と、実用単位への換算

実測D̂の全成分誤差がη以下なら、c=max(0,mincycleD̂−η)、z₊=max(0,maxoppositeD̂+η)、d₊=max(0,maxdiagD̂+η)を使う。上包絡はd,zに対して非減少なので、

u=min(z₊,d₊), Ξ(d₊,z₊)=min{u(2d₊−u),(d₊+u)²/4},
c>0、c²>Ξ(d₊,z₊) ⇒ 全ての3状態以下の候補を排除。

判定器をこの最良集約式へ更新した。測定と模型の許容誤差を合わせるなら、前と同じくη=ηmeas+2hE。区間に整合する模型の排除であって、雑音の分布や実物の材料層数を推定するものではない。

既知の四角形行列H₀(対角2、四辺1、反対頂点間0)からの最大成分誤差をε<1とすると、(1−ε)²≤ε(4+ε)、従ってε≥1/6。前回の代数的上界と合わせ、

1/6 ≤ D₃ < 0.196676467057347
D₃=infF∈ℝ₊3×4∥FᵀF−H₀∥max.

集約境界の達成行列は、H₀の全成分の誤差条件を満たすとは限らない。例えばε=1/6の最初の達成因子には、四辺の一つが11/6になるものがあり、許容上限7/6を超える。よってD₃=1/6を証明したわけではない。

同じ合成回路での設計値前回の保証今回の保証
係数誤差の下限0.1010205144…1/6≈0.1666667
1秒の線形ランプ、1 K加熱4.437948 mW7.321860 mW
1秒の区分二次ランプ、1 K加熱4.432179 mW7.312341 mW

s=1 J/K、λ=0.25 s⁻¹、待機0.1秒、各窓5.025725秒。4回の境界入力実験・4出力・観測区間のどこかで避けられない誤差の床である。実測や製品性能の値ではない。電気的縮尺s=1 µF、λ=250 s⁻¹、1 V入力なら、総立上り1 ms、待機0.1 ms、各窓5.025725 msへ時間も縮尺した区分二次ランプの対応値は約7.312 µA。

対角成分の尺度が大きく違う場合:既知の正規化を使う

Xの対角が正ならRij=Xij/√(XiiXjj)としてよい。正の対角合同はCPランクを保存する既知の操作である。[58] Rの対角は1だから、サイクル最小値と反対頂点間の最大値にM(1,z)を使える。

個別の区間Lij≤Xij≤Uijがあり、全てのLii>0なら、安全な集約値は次のとおり。

cR=mincycle max(0,Lij)/√(UiiUjj),
zR=min{1,maxopposite max(0,Uij)/√(LiiLjj)}.

cR>M(1,zR)ならCP3を排除できる。対角の下限が0以下のときはこの割り算を使わない。これは既知の正規化と今回の包絡の直接系で、全区間を使う最良の判定ではない。下の三数値の判定器は元の共通単位の式を使っており、この正規化を自動では行わない。

D. 特定の既存SDPを上回る、厳密な比較例

前回は、以前の簡易式よりFawzi–ParriloのSDPが強い範囲を示した。今回の強化式では比較結果が変わる。Fawzi–ParriloのarXiv:1404.3240v1の式(51)の最適値が厳密に3へ留まるのに、強化式はCPランク3以下を排除する例を得た。[41]

A=H2/5=(1/5)·circ(12,7,2,7),
τcpsos(A)=3、 m²−z(2d−z)=1/5>0.

ここでcircは最初の行を(12,7,2,7)として巡回させた4×4行列。t=3のSDP可行点を有理数で明示し、全36個の小行列式制約と16個の対角制約を検算した。半正定値制約は正の有理係数による外積和で証明し、浮動小数点ソルバーの成功表示に依存しない。通常ランク3による既知下界と合わせ、最適値が3と確定する。

有理数の可行点と半正定値性の証明

追究3の有理直交列Uを使い、g=28/5、A=U diag(g,2,2)Uᵀとする。9次元の列順座標でp=e₀₀、q₁=e₁₁、q₂=e₂₂、a=gp+2q₁+2q₂、v₁=e₀₁+e₁₀、v₂=e₀₂+e₂₀と置く。

Y=aaᵀ/3+(4/3)(q₁−q₂)(q₁−q₂)ᵀ+(2g/3)(v₁v₁ᵀ+v₂v₂ᵀ),
X=(U⊗U)Y(U⊗U)ᵀ、t=3.

Y−aaᵀ/3≥0は表示から分かる。D=diag(g,2,2)⊗diag(g,2,2)に対し、D−Yは次の外積和である。下式でw₁=e₀₁−e₁₀、w₂=e₀₂−e₂₀。

D−Y=[(gp−2q₁)(gp−2q₁)ᵀ+(gp−2q₂)(gp−2q₂)ᵀ]/3
+(g/3)(v₁v₁ᵀ+v₂v₂ᵀ)+g(w₁w₁ᵀ+w₂w₂ᵀ)
+4e₁₂e₁₂ᵀ+4e₂₁e₂₁ᵀ≥0.

残る対角制約の余裕Aij²−Xij,ijは1/25、148/75、8/75のいずれかで全て正。小行列式の36等式も全て厳密に一致する。下のコードで元の16×16変数へ戻して検算できる。□

この比較は既存の式(51)への単純な包含ではないことを示す。他の強いモーメント階層や既知の完全なCPランク3判定より優れる、という意味ではない。また、この集約式は通常ランク4の全行列を検出するわけでもなく、既存SDPを一般に置き換えるものではない。

Hρでの比較3状態以下を排除できる範囲・例
追究3の簡易式ρ<3−2√2≈0.171573
既存SDP・式(51)解析的に少なくともρ<0.309017を保証。ρ=0.4では最適値3で排除できない。
Melissen(1998)の球面配置定理からの直接判定ρ<(√3−1)/2≈0.366025 [57]
今回の強化した集約式ρ<1/2。既知の正確な境界まで到達する。

E. 古典的な回路合成論文は、どこまで照合できたか

文献今回読めた範囲具体的な比較結果
Matsumoto 1981大学公開原論文。定義・定理・証明・回路図を確認。[54]「接地」はポートの共通帰線。浮遊容量を許すため、全容量が対角という今回の条件と同一ではない。
Ali 1976大学公開学位論文、pp.6–7、式(2.1)–(2.5)。[55]正則な平方変換による境界応答の不変性。全ての物理的次数にわたる最小性は述べていない。
Kandić–Reljin 2008出版社PDFで欠けていた式(5.3)–(5.4)も確認。[48]他ポートを開放したスカラーimpedanceの合成。指定された多端子行列全体のCP最小実現とは一致しない。
Stein 1973、Matsumoto 1982、Kandić–Reljin 2009要旨・書誌を越える中心本文は依然未取得。[46] [33] [47]これらの結果との重複を確定したとは言えない。特に接地容量の個数・非最小実現は重要な未照合点。

Matsumoto(1981)の式(6b)では、容量行列は[[A∞+LᵀL,LᵀP],[PᵀL,PᵀP]]。回路図にも節点間の浮遊コンデンサがある。本文は十分構成条件を与え、失敗時には非最小実現を使う案も述べる。したがって「古典理論は非最小実現を考えていない」とも言えない。1981年と未読の1982年を同一の定理として扱わない。[54]

古典変換と今回のCP条件の、近さを数式で確認する

以下は原論文の主張の引用ではなく、今回の独立な比較である。単一極の目標をY(s)=D+sCB−λ²H/(s+λ)、D=K+λHと書き、H=RᵀR、n=rank Hとする。最小な抽象実現は内部行列−λI、入力λRで表せる。

Howitt変換のT=[[I,0],[L,P]]はPが正則な平方行列。容量を全て対角に制限するとPᵀL=0からL=0、PᵀPを正対角にするにはP=OS(O直交、S正対角)。境界と内部の伝導の符号条件はOᵀR≥0になる。これはrank H本で非負Gram分解できるかという既知の幾何問題と同じである。

さらにr>nへの拡大を許す非負因子の問題は、

cp-rank(H)=min{r : V∈ℝr×n, VᵀV=I, VR≥0}

と書ける。平方の座標変換と高次元への埋め込みを区別する必要がある。今回の星形構成には境界辺の非負条件も要る。これで古典枠との数学的な接続は明確になったが、未読論文が同じ最小性を既に扱うかは、この書き換えだけでは判定できない。

新しい取得候補としてRichard Adolph Steinの1968年UBC学位論文も見つかったが、本文は取得できていない。要旨が扱うimpedance・容量木の条件を、1973年のadmittance定理の代わりには使わない。[59]

F. 新規性について、今回確定したことと残ること

Hρの作り方自体も、Shaked-Monderer(2001)Example 2.1のA+ε(A1)(A1)ᵀと一致する。H₀1=4·1なのでρ=16εで同じ族になる。さらにMelissen(1998)の球面八分域への4点配置からも、最適化不要の定量的なCP3排除条件が得られる。「正成分の例」や「計算の軽い量的判定」という一般概念も独自性には数えない。[56] [57]

Melissen(1998)の既知の定量判定との対応

非負の単位球面上の4点について、最小相互距離を最大化した値は√(2−2/√3)。従ってCP3の4本の非零Gramベクトルには、正規化した内積が1/√3以上となる組がある。Hρでの最大内積は(1+ρ)/(2+ρ)なので、ρ<(√3−1)/2なら排除できる。H₀の全成分誤差箱ではε<(3√3−5)/2≈0.0980762が十分となる。これらの代入計算は今回行ったもので、原論文に同じ式が掲載されているという主張ではない。[57]

既知結果は全6組の最大相関を制約する。今回の式は四辺の最小値と反対頂点間の最大値を区別するため、同一の極値問題ではない。

現在の成果候補は、既知の認識定理から導いた鋭い三集約値の境界、その誤差区間への適用、既存SDPと分離する厳密例である。同じ明示式・同値な極値問題の先取性は未確定。既知定理への依存を明示した、有用な系として記録する。

追加査読では400初期値の局所探索で約0.196676467を再現し、それを下回る値は得られなかったと報告された。この追加計算は査読報告に基づくもので、ここで再実行した結果ではない。下界側を詰める手掛かりとして、既存の上界因子の零成分を参考に、3×4非負因子の支持パターンごとの必要条件を調べる方法が考えられる。ただし、最適因子が同じ支持を持つとは未証明であり、全成分が正の因子も含めて検討する必要がある。

次の数学的な問いは、全成分を使ったH₀からCP3までの最適距離、対角スケーリングも選びながら非一様な誤差区間を最良に判定する方法、そしてこの最良集約式に相当する既刊の幾何学的極値問題があるか。実用側は、RCアナログで校正誤差を含めても棄却余裕が残るかである。実機検証や未取得本文の照合を済ませたことにはしない。

追加査読から、Berman–Shaked-Monderer(2003)の単行本と、Bomze–Dickinson–Still(2015)を次の照合候補に加えた。前者は書誌、後者は書誌・要旨を確認した段階で、当時は関連定理の本文照合が残っていた。現在は2014年公開著者稿を本文照合し、帰属を更新した。2015年論文の主題はCPランクとCP-plusランクの位相構造などであり、今回の4×4の三集約境界と同じ明示式があると確認したわけではない。[60] [61]

証明は別担当が独立監査。SDP比較は有理演算で全制約を確認。達成因子の両枝・端点・尺度は33ケースで実装確認し、最大相対差4.45×10⁻¹⁶。数値検査は一般証明を置き換えない。文献台帳は61件で、本文確認と要旨のみを区別している。

最良集約式の達成因子・設計値の再現
"""Reproduce sharp aggregate bounds and the physical design constants.

Python standard library only. The general theorem is proved in the HTML;
these finite checks verify explicit attaining factors and implementation.
This script does not claim a global solution of the H0 approximation problem.
"""
from pathlib import Path
import json
import math


def envelope_squared(d, z):
    d = max(0.0, d)
    z = min(max(0.0, z), d)
    return min(z*(2*d-z), (d+z)**2/4)


def gram(f):
    return [[sum(row[i]*row[j] for row in f) for j in range(4)]
            for i in range(4)]


def attaining_factor(d, z):
    assert d > 0 and 0 <= z <= d
    if z <= d/5:
        a, b, c = math.sqrt(z/2), math.sqrt(d-z/2), math.sqrt(d-2*z)
        return [[0,a,b,2*a],[2*a,b,a,0],[c,0,0,c]]
    if z == d:
        return [[math.sqrt(d)]*4,[0]*4,[0]*4]
    # Scaled H_rho with rho=2z/(d-z), using the known octant rotation.
    s = (d-z)/2
    h = math.sqrt((d+z)/(d-z))
    q = math.sqrt(3/8)
    return [[math.sqrt(s)*v for v in row] for row in
            [[h/2-q,h/2+q,h/2+q,h/2-q],
             [q*h-1/4,q*h-3/4,q*h+1/4,q*h+3/4],
             [q*h+3/4,q*h+1/4,q*h-3/4,q*h-1/4]]]


def phi(x):
    return -math.expm1(-x)/x if x else 1.0


def main():
    cycles = [(0,1),(1,2),(2,3),(3,0)]
    worst = 0.0
    count = 0
    for d in [1e-6,1.0,1e6]:
        for ratio in [0,.001,.01,.05,.1,.199,.2,.201,.4,.75,1]:
            z = d*ratio
            f = attaining_factor(d,z)
            a = gram(f)
            assert min(min(row) for row in f) >= -1e-12*math.sqrt(d)
            m = min(a[i][j] for i,j in cycles)
            error = max(max(abs(a[i][i]-d) for i in range(4)),
                        abs(a[0][2]-z),abs(a[1][3]-z),
                        abs(m-math.sqrt(envelope_squared(d,z))))/d
            assert error < 5e-13
            worst = max(worst,error)
            count += 1
    lam,total_rise,tau = .25,1.,.1
    h = 1.2564312086261697/lam
    linear_a = math.exp(-lam*tau)*phi(lam*total_rise)*(-math.expm1(-lam*h))**2
    quadratic_a = math.exp(-lam*tau)*phi(lam*total_rise/2)**2*(-math.expm1(-lam*h))**2
    result = dict(
        theorem_source='Brandts-Krizek 2016 Corollary 3.6; quantitative specialization derived here',
        exact_noise_radius='1/6 (sufficient open max-entry ball; not the exact distance)',
        attaining_factor_cases=count,
        maximum_relative_factor_error=worst,
        full_matrix_distance_lower='1/6',
        full_matrix_distance_upper_strict='0.196676467057347',
        design=dict(s_J_per_K=1.,lambda_per_second=lam,total_rise_seconds=total_rise,
                    hold_seconds=tau,window_seconds=h,
                    linear_coefficient=linear_a,quadratic_coefficient=quadratic_a,
                    linear_heat_flow_floor_W_per_K=linear_a/(12*h),
                    quadratic_heat_flow_floor_W_per_K=quadratic_a/(12*h)),
        scope='Synthetic mathematical model; no laboratory measurement. Attainment concerns aggregate constraints, not all entries of the H0 error box.')
    (Path(__file__).resolve().parent/'round4-sharp-results.json').write_text(json.dumps(result,indent=2))
    print(json.dumps(result,indent=2))


if __name__ == '__main__':
    main()
既存SDPとの分離:全制約の厳密検算
"""Exact rational Eq51 primal certificate: tau_cp^sos(H_(2/5)) = 3.

No numerical optimization, no floating-point assertions. PSD constraints
are verified through explicit outer-product decompositions with positive
rational coefficients. All original 36 minor constraints are checked.
"""
from pathlib import Path
from fractions import Fraction as F
import json
import numpy as np

HERE=Path(__file__).resolve().parent
U=np.array([[1,1,1],[1,1,-1],[1,-1,-1],[1,-1,1]],dtype=object)*F(1,2)
W=np.kron(U,U)
g=F(28,5);t=F(3)
A=U@np.diag([g,F(2),F(2)])@U.T
def e(i):
    v=np.zeros((9,1),dtype=object);v[i,0]=1;return v
def outer(v):return v@v.T
p=e(0);q1=e(4);q2=e(8);a=g*p+2*q1+2*q2
Y=outer(a)/3+F(4,3)*outer(q1-q2)
for i,j in [(1,3),(2,6)]:Y+=F(2,3)*g*outer(e(i)+e(j))
X=W@Y@W.T
assert np.array_equal(A.reshape(16,1,order='F'),W@a)
schur=Y-outer(a)/3
schur_sum=F(4,3)*outer(q1-q2)
for i,j in [(1,3),(2,6)]:schur_sum+=F(2,3)*g*outer(e(i)+e(j))
assert all(z==0 for z in (schur-schur_sum).ravel())

# Congruence of a positive outer-product sum proves A tensor A - X PSD.
upper=np.diag(np.kron([g,F(2),F(2)],[g,F(2),F(2)]))
upper_sum=(outer(g*p-2*q1)+outer(g*p-2*q2))/3
for i,j in [(1,3),(2,6)]:
    upper_sum+=g/F(3)*outer(e(i)+e(j))+g*outer(e(i)-e(j))
upper_sum+=4*outer(e(5))+4*outer(e(7))
assert all(z==0 for z in (upper-Y-upper_sum).ravel())

slacks=[]
for i in range(4):
    for j in range(4):
        slack=A[i,j]**2-X[i+4*j,i+4*j]
        assert slack>=0
        slacks.append(slack)
for i in range(4):
    for k in range(i+1,4):
        for j in range(4):
            for l in range(j+1,4):
                assert X[i+4*j,k+4*l]==X[i+4*l,k+4*j]

m=F(7,5);d=F(12,5);z=F(2,5)
assert m*m>z*(2*d-z)
assert m*m<=4*z*(d-z) # Do not claim a counterexample for the old weak test.
result=dict(
    rho='2/5',t='3',A=[[str(x) for x in row] for row in A],
    U=[[str(x) for x in row] for row in U],
    Y=[[str(x) for x in row] for row in Y],
    X=[[str(x) for x in row] for row in X],
    block_psd_by_outer_product_sum=True,
    upper_psd_by_outer_product_sum=True,
    all_36_original_minor_equalities_exact=True,
    diagonal_slack_values=sorted(set(str(x) for x in slacks)),
    strong_certificate_margin=str(m*m-z*(2*d-z)),
    weak_certificate_margin=str(m*m-4*z*(d-z)),
    exact_tau='3: feasible t=3 plus Fawzi-Parrilo ordinary-rank lower bound',
    status='Exact counterexample to inclusion for the strengthened test only; old-test general inclusion remains unresolved.')
(HERE/'round4_sdp_primal_exact.json').write_text(json.dumps(result,indent=2))
print(json.dumps({k:v for k,v in result.items() if k not in ['A','U','Y','X']},indent=2))
実行結果:round4-sharp-results.json
{
  "theorem_source": "Brandts-Krizek 2016 Corollary 3.6; quantitative specialization derived here",
  "exact_noise_radius": "1/6 (sufficient open max-entry ball; not the exact distance)",
  "attaining_factor_cases": 33,
  "maximum_relative_factor_error": 4.440892098500626e-16,
  "full_matrix_distance_lower": "1/6",
  "full_matrix_distance_upper_strict": "0.196676467057347",
  "design": {
    "s_J_per_K": 1.0,
    "lambda_per_second": 0.25,
    "total_rise_seconds": 1.0,
    "hold_seconds": 0.1,
    "window_seconds": 5.025724834504679,
    "linear_coefficient": 0.44157182494271235,
    "quadratic_coefficient": 0.4409977585909775,
    "linear_heat_flow_floor_W_per_K": 0.007321859689953764,
    "quadratic_heat_flow_floor_W_per_K": 0.007312340891328713
  },
  "scope": "Synthetic mathematical model; no laboratory measurement. Attainment concerns aggregate constraints, not all entries of the H0 error box."
}
実行結果:round4_sdp_primal_exact.json
{
  "rho": "2/5",
  "t": "3",
  "A": [
    [
      "12/5",
      "7/5",
      "2/5",
      "7/5"
    ],
    [
      "7/5",
      "12/5",
      "7/5",
      "2/5"
    ],
    [
      "2/5",
      "7/5",
      "12/5",
      "7/5"
    ],
    [
      "7/5",
      "2/5",
      "7/5",
      "12/5"
    ]
  ],
  "U": [
    [
      "1/2",
      "1/2",
      "1/2"
    ],
    [
      "1/2",
      "1/2",
      "-1/2"
    ],
    [
      "1/2",
      "-1/2",
      "-1/2"
    ],
    [
      "1/2",
      "-1/2",
      "1/2"
    ]
  ],
  "Y": [
    [
      "784/75",
      "0",
      "0",
      "0",
      "56/15",
      "0",
      "0",
      "0",
      "56/15"
    ],
    [
      "0",
      "56/15",
      "0",
      "56/15",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "0",
      "0",
      "56/15",
      "0",
      "0",
      "0",
      "56/15",
      "0",
      "0"
    ],
    [
      "0",
      "56/15",
      "0",
      "56/15",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "56/15",
      "0",
      "0",
      "0",
      "8/3",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "0",
      "0",
      "56/15",
      "0",
      "0",
      "0",
      "56/15",
      "0",
      "0"
    ],
    [
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0"
    ],
    [
      "56/15",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "0",
      "8/3"
    ]
  ],
  "X": [
    [
      "284/75",
      "154/75",
      "8/25",
      "154/75",
      "154/75",
      "48/25",
      "14/75",
      "8/25",
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "154/75",
      "8/25",
      "14/75",
      "48/25"
    ],
    [
      "154/75",
      "48/25",
      "14/75",
      "8/25",
      "48/25",
      "154/75",
      "8/25",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "8/25",
      "14/75",
      "4/75",
      "14/75"
    ],
    [
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25"
    ],
    [
      "154/75",
      "8/25",
      "14/75",
      "48/25",
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25",
      "48/25",
      "14/75",
      "8/25",
      "154/75"
    ],
    [
      "154/75",
      "48/25",
      "14/75",
      "8/25",
      "48/25",
      "154/75",
      "8/25",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "8/25",
      "14/75",
      "4/75",
      "14/75"
    ],
    [
      "48/25",
      "154/75",
      "8/25",
      "14/75",
      "154/75",
      "284/75",
      "154/75",
      "8/25",
      "8/25",
      "154/75",
      "48/25",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75"
    ],
    [
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "8/25",
      "154/75",
      "48/25",
      "14/75",
      "14/75",
      "48/25",
      "154/75",
      "8/25",
      "4/75",
      "14/75",
      "8/25",
      "14/75"
    ],
    [
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25"
    ],
    [
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25"
    ],
    [
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "8/25",
      "154/75",
      "48/25",
      "14/75",
      "14/75",
      "48/25",
      "154/75",
      "8/25",
      "4/75",
      "14/75",
      "8/25",
      "14/75"
    ],
    [
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "48/25",
      "154/75",
      "8/25",
      "8/25",
      "154/75",
      "284/75",
      "154/75",
      "14/75",
      "8/25",
      "154/75",
      "48/25"
    ],
    [
      "14/75",
      "4/75",
      "14/75",
      "8/25",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "8/25",
      "154/75",
      "48/25",
      "8/25",
      "14/75",
      "48/25",
      "154/75"
    ],
    [
      "154/75",
      "8/25",
      "14/75",
      "48/25",
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25",
      "48/25",
      "14/75",
      "8/25",
      "154/75"
    ],
    [
      "8/25",
      "14/75",
      "4/75",
      "14/75",
      "14/75",
      "8/25",
      "14/75",
      "4/75",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25"
    ],
    [
      "14/75",
      "4/75",
      "14/75",
      "8/25",
      "4/75",
      "14/75",
      "8/25",
      "14/75",
      "14/75",
      "8/25",
      "154/75",
      "48/25",
      "8/25",
      "14/75",
      "48/25",
      "154/75"
    ],
    [
      "48/25",
      "14/75",
      "8/25",
      "154/75",
      "14/75",
      "4/75",
      "14/75",
      "8/25",
      "8/25",
      "14/75",
      "48/25",
      "154/75",
      "154/75",
      "8/25",
      "154/75",
      "284/75"
    ]
  ],
  "block_psd_by_outer_product_sum": true,
  "upper_psd_by_outer_product_sum": true,
  "all_36_original_minor_equalities_exact": true,
  "diagonal_slack_values": [
    "1/25",
    "148/75",
    "8/75"
  ],
  "strong_certificate_margin": "1/5",
  "weak_certificate_margin": "-31/25",
  "exact_tau": "3: feasible t=3 plus Fawzi-Parrilo ordinary-rank lower bound",
  "status": "Exact counterexample to inclusion for the strengthened test only; old-test general inclusion remains unresolved."
}
B. 模型の定義と基礎の証明:熱回路、最少実現、3と4の例

3. 対象を、実際に作れる熱ネットワークへ絞る

固定した境界Bの温度uを外から指定し、その温度を保つために注入する熱流qを測る。内部Iの温度は自由に変化する。各部品は正の熱容量を持ち、部品間は非負の熱伝導率で結ぶ。

  • L:無向グラフのLaplacian。辺がなければ伝導率0。各内部連結成分は少なくとも一つの境界へつながるものとし、LIIは正定値とする。
  • CI:正の対角内部熱容量。CB:既知の対角境界熱容量。
  • 外への熱漏れはモデルに隠さない。温度浴を使うなら境界として数える。
  • 境界ラベルと温度/熱流の意味を固定。初期条件0の応答を比較する。
  • 減らす数は内部熱容量の個数。既知の境界容量はこの数に含めない。
q(s) = Y(s)u(s)
Y(s) = LBB + sCB − LBI(LII + sCI)−1LIB

sはLaplace変数。K=Y(0)は定常応答、H=Y′(0)−CBは、境界自身の熱容量を引いた低周波の記憶係数である。内部温度を境界の定常温度で表す行列Wを使うと、

W = −LII−1LIB ≥ 0, W1 = 1
H = Wᵀ CI W

となる。ここで≥0は各成分が非負という意味。M-matrixの逆行列とKron縮約は既知理論であり、この式の部品を新規と数えない。[24] [32]

完全正値ランク(cp-rank)
Hを「非負ベクトルfの外積 f fᵀ」の和に表すために必要な最少本数。H=Σ fafaᵀ, fa≥0。通常の行列ランクとは異なる。量子論の完全正値写像や、テンソルのCPランクとも別の概念である。

4. 候補命題:単一緩和極の、厳密な最少実現数

独立導出・証明点検済み既存回路理論との同値性未確定

Kを連結グラフのLaplacian、κij=−Kij(i≠j)、λ>0、CBを指定された非負対角行列とする。次の境界応答を考える。

Y(s) = K + sCB + [sλ / (s+λ)] H

このYを、上の物理クラスの熱ネットワークで厳密に実現できる必要十分条件は、

① H が完全正値  ② κij ≥ λHij (全ての i≠j)
実現可能なら、最少内部熱容量数 rmin = cp-rank(H)

λは、境界温度を指定した応答に現れる隠れ内部系の緩和率である。境界まで自由に動かした全物体の減衰率が、全てλになるという意味ではない。H=0ならrmin=0。

証明:必要性と、最少数を達成する構成

必要性

内部がr個なら H=WᵀCIW はr本の非負ベクトルの外積和。よってHは完全正値で、cp-rank(H)≤r。また、高周波極限より LBB=K+λH。LBBの非対角成分は非正なので、κij≥λHijが必要。

十分性

最少の完全正値分解 H=Σa=1r fafaᵀ をとる。零因子は除き、ta=1ᵀfa、wa=fa/ta、ca=ta²、da=λcaとする。

内部点aに容量caを置き、境界iとの伝導率をdawaiとする。内部点どうしは結ばない。境界どうしの直接伝導率はκij−λHijとする。仮定によって全て非負。

直接境界部分のLaplacianは Kdir=K−λ[diag(H1)−H]。内部点aを消去した応答は、

dadiag(wa) − [da²/(da+sca)] wawaᵀ
= da[diag(wa)−wawaᵀ] + [sλ/(s+λ)] fafaᵀ

である。総和とKdir、sCBを加えると指定Yに一致する。Kの各正辺は直接辺か内部星を通る経路として残るため、Kが連結なら構成全体も連結。r=cp-rank(H)で必要数を達成する。□

通常の線形系なら、Hの符号を制限しないGram分解を使い、有限極の動的部分をrank(H)状態で表せる。ここで数えるのは、既知の微分項sCBを除いた有限極部分の次数である。非properなY全体を無条件に「通常の3状態ODE」と呼ばない。

定常+一次低周波係数だけを合わせる場合

CBを固定すると、(K,H)の実現可能性は「Hが完全正値、かつKij=0ならHij=0」で特徴づけられ、最少数は同じcp-rank(H)。必要性は、同じ内部連結成分が二つの境界へつながると、その間に正のKron辺が生じることから従う。十分性はλを小さく選んで上の命題を適用する。

ただしλを小さくすれば記憶は遅くなる。二つの低周波係数の一致から、有限周波数帯や有限時間での精度保証は出ない。境界容量を自由に変更してよい場合も別問題となる。

5. 既知の行列を使った、物理的な「3と4」の差

次の行列の固有値は4,2,2,0。通常のランクは3、完全正値ランクは4。この行列例は、置換・定数倍を除いてBrandts–Křížek(2016)§1.2に既出である。[34]

H₀ =
2101
1210
0121
1012

4サイクルの各辺に対応する f=(1,1,0,0)ᵀ等の4本で分解できる。非負因子が二つの異なる辺を同時に担当すると、H₁₃またはH₂₄にも正の値が出てしまう。両成分は0なので、4本が必要になる。

K=4I−J(4境界間の単位伝導率完全グラフ)、λ=1/4、CB=Iとする。内部容量を各4、各内部点から対応する2境界への伝導率を各1/2、境界の直接伝導率をサイクル辺3/4・対角辺1とすれば、

Y(s) = K + sI + [s/(1+4s)] H₀

が厳密に実現される。この境界応答は数学的な3内部モードで表せるが、同じ応答を持つ非負伝導・対角容量の温度ネットワークには少なくとも4個の内部熱容量が必要。

B1B2B3B4 C=4C=4C=4C=4 内部容量は 4 個青:指定する境界温度緑:自由に変わる内部温度緑の辺の伝導率:1/2境界の外周辺:3/4境界の対角辺:1全て非負の伝導率・正の容量

Jは全成分1の行列。値は無次元化したモデル単位。3モードモデルを禁止する理由は「温度が負になるから」ではなく、任意の混合座標を、非負伝導率でつながる個別の温度節点へ戻せないからである。

2026-09-20T06:41:47.566126 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/

境界B1の温度をu₁(t)=t²e−tで変化させた数値例。緑線は4内部熱容量、丸は3つの抽象状態による境界熱流。同じYなので応答は一致する。これは3個の「物理的な熱容量」で実現できたことを意味しない。

6. ゼロ成分だけに頼らない、明示的な境界

Hρ=H₀+ρJ(ρ≥0)を考える。全てのρでrank(Hρ)=3。ρ>0では全成分が正になる。この族を独立に計算・証明したところ、

cp-rank(Hρ) = 4 (0 ≤ ρ < 1/2)
cp-rank(Hρ) = 3 (ρ ≥ 1/2)

という境界を得た。追究3の照合で、Brandts–Křížek(2016)のCorollary 3.6と式(6)から直接得られると確認した。新規結果には数えない。既知定理への代入を上に、独立に得た証明を下に記す。物理系の相転移を主張しているわけでもない。K=4I−J、λ=1/4を固定した熱回路の実現には、さらにρ≤3が必要である。

ρ = 0.25通常ランク:3最少内部熱容量:4 個

この操作は証明済みの式を表示するもの。最適化ソルバーでCP-rankを推定しているのではない。

閾値1/2の証明

h=√(1+ρ)とし、Rの列を(h,1,0), (h,0,1), (h,−1,0), (h,0,−1)とするとRᵀR=Hρ。3行の非負Gram因子が存在することは、ある3×3直交行列QでQR≥0となることと同値。

Qの第j行を(aj,bj,cj)と書くと、h aj≥max(|bj|,|cj|)。aj>0なので、uj=(bj,cj)/(h aj)は正方形[−1,1]²に入る。直交性より、異なるj,kでuj·uk=−1/(1+ρ)。

正方形の補題

[−1,1]²内の3点には、内積が−2/3以上の組が必ずある。全組が−2/3未満と仮定する。微小摂動で軸上の点を除き、正方形の対称性を用いてA=(−a,b), B=(−c,−d), C=(e,f)、各成分0〜1と書ける。同じ象限の二点は非負内積なので、三点は異なる象限にある。d,eを1へ増やすと、どの内積も増えない。

仮定からb−ac>2/3、a−bf>2/3、c+f>2/3。一方a,b>2/3であり、

c+f < (b−2/3)/a + (a−2/3)/b ≤ 2/3

となって矛盾する。最後の不等式は、3a²+3b²−2ab−2a−2b≤0と同値。この凸二次式は[2/3,1]²の頂点で最大を取り、頂点値は−8/9,−1/3,−1/3,0。

従って1/(1+ρ)≤2/3、すなわちρ≥1/2が必要。達成にはq=√(3/8)としてQの行を(1/2,−q,q), (q,−1/4,−3/4), (q,3/4,1/4)と取る。Qは直交行列で、ρ=1/2のときQRの行は(0,√(3/2),√(3/2),0), (1/2,0,1,3/2), (3/2,1,0,1/2)。全て非負。ρを増やしても全成分は減らない。

4行の非負因子は全ρで存在する。H₀の辺因子を行に並べた行列をF₀とし、α=(√(1+ρ)−1)/2とすれば、Fρ=F₀+αJに対してFρᵀFρ=Hρ。以上で最少数が決まる。□

C. 研究の履歴:カオスからの出発、旧下限、測定の証明と訂正

探索過程を残すための記録です。旧下限0.049、0.097、0.101などは、三集約では1/6、現在の全成分評価では11/62へ改善されています。各節の新規性判断も最新の照合を優先してください。節番号は元の研究記録に対応します。

1. カオス理論とは、どこでつながるか

粗視化は、多数の変数を少数へ置き換える操作。カオスは、決定論的な運動が初期値に敏感になる性質である。両者は接点があるが同じものではない。カオスのない線形熱伝導でも、内部を消せば記憶が残る。

ẋ = −Ax + Bz + f, ż = Bᵀx − Dz
⇒ ẋ(t) = −Ax(t) + ∫₀ᵗ B e−D(t−s)Bᵀ x(s) ds + B e−Dtz(0) + f(t)

x は残す変数、z は消す変数。消去は厳密でも、過去の x と初期の z の影響が残る。これを短い履歴・少数の補助状態・雑音などで近似するのが記憶を扱う粗視化である。Mori–Zwanzig は、この発想を非線形・確率系へ広げる枠組みの一つ。[1] [3]

保証したいもの意味別物として扱う理由
短時間の軌道温度・位置・速度が同じ時刻に近いカオスでは誤差が増幅しうる。
一時刻の分布・長時間平均平均、分散、滞在頻度など軌道が異なっても一致する場合がある。
二時刻相関・閾値到達記憶の長さ、過熱のタイミングなど一時刻分布が合うだけでは保証されない。

カオスから確率モデルへの極限や、乱流の記憶モデルには先行研究がある。今回は線形で証明を追える土台から始めた。以下の命題は、非線形カオス系の予測保証を証明したものではない。[5] [7] [8] [9]

2. 先行研究によって候補から外した一般論

当初の切り口既にあるもの残すなら必要な差分
指数和で記憶を短縮Gaussian求積・Prony・有理近似、正値性と収束 [10–13]特定の物理構造を保つ最小数や最適性。
有限時間の誤差保証MZ近似、時間制限付きBT、非零初期値 [3] [29] [39–40]既存の一般上界より鋭く、観測から計算できる条件。
受動性・物理性を保存受動RC、正実補題、グラフ集約 [12] [26–28]受動性と「対角熱容量+非負の辺」の区別。
FDTを守って雑音も変更FDT保持の実現法と、二つの核を変える一般SVE誤差 [10] [17–22]摩擦核だけから雑音因子と動的誤差まで結ぶ鋭い保証。
スカラーの上下界を行列へ作用素凸性、block求積、resolventの順序 [14–16]成分別順序・半正定値順序・時間域を区別した条件。

特に、Lang–LuはFDT整合雑音の変更を将来課題としているが、一般SVEの研究はドリフト核・雑音フィルタの同時近似を既に扱う。「ある論文が未解決と書いている」だけを、分野全体の空白と見なさなかった。[20] [22]

当初の文献台帳には主要59件を掲載した。追加査読と取得候補を加えた現在の台帳は84件である。「本文確認」は関連箇所を読んだことを指し、論文全体の全証明の独立検証を意味しない。要旨のみの文献を本文確認済みとして数えていない。

証明草案を収録・独立監査学術的新規性は未確定

測定から、これ以上小さくできない物理模型を見分ける

追究4を追加:原論文照合から強化式を証明。誤差下限1/6、最良集約境界、既存SDPと分離する有理数例。今回の調査結果へ。

同じ外部応答を、何個の「本物の熱容量」で再現できるか。単なる数式の状態数と、正の熱容量・非負の熱伝導率だけで作る物理模型の状態数は一致しないことがある。この差を、特定の熱ネットワーク群について厳密に特徴づける命題を導いた。

最少数物理的な隠れ節点数を完全正値ランクで表す。
3 → 4数学的な3状態実現に、4個の内部熱容量が必要な例。
誤差の床3個以下では、指定した有限時間の熱流応答にも誤差の床が残る。

「新しい粗視化手法」だけでなく、どの簡略化が原理的に不可能かを明示する方向である。熱モデル・受動回路・物理シミュレーションの設計時に、達成できない次数を目標にして探索を続ける無駄を避ける用途が考えられる。

新規性の結論:既知の幾何学的判定定理から、三つの集約値に対して最良の不等式を導出し、測定誤差と物理的な応答誤差へ適用した。特定の既存SDPでは判定できない厳密例も得た。式そのものの先取性は未確定で、古典回路合成の重要な本文比較も残る。最新の証明と照合結果
追究3 · 文献照合と量的改善新規性を確定した定理は、まだない

既存理論との差を調べ、実測に使う不等式を磨く

この節は追究3の時点の記録。追究4で未証明の強化式を証明し、距離下限は1/6へ改善。以前の簡易式とSDPの比較はそのまま有効だが、新しい式は既存SDPを上回る例も持つ。以下の「未証明」「まだ未達成」は、その時点を示す。

今回の重点は、関連する論文の定理・仮定を照合し、既存の判定法と同じ行列で比較することだった。結論は、広い原理や正確な状態数の境界は既知理論に含まれる。残る候補は、計算の軽い誤差区間の判定式と具体的な測定手順である。同じ式の既刊での使用までは確定できず、「新発見」とは認定しない。

帰属を修正ρ=1/2の境界は2016年の既知定理から直接導ける。
0.1010…3状態以下との距離下限を改善。上界も有理演算で認証。
波形を設計有限の立上りで、全状態数について非負因子分解を保つ。

A. 新規性の判定を更新する

主張照合した先行研究現時点の判定
正の素子だけで作ると状態数が増える正値実現の古典理論・survey [35] [43]既知。一般現象を新規性に数えない。
誤差があっても低次数模型を排除するFawzi–Parriloの近似非負ランク下界、Theorem 3 [44]定量的な頑健性の原理も既知。
HρのCPランクがρ=1/2で変わるBrandts–Křížek、Corollary 3.6と式(6) [34]既知定理の直接系と確認。下記に代入を記す。
二窓の非負Gram分解正Hankel核を同じ非負フィルタで両側から積分 [35] [43]既存の構造からの直接的な導出。新しい基本原理とは呼ばない。
単一極の最少内部容量数接地容量を使う多端子RC合成:Stein 1973、Matsumoto 1982、Kandić–Reljin 2009 [46] [33] [47]自足的証明はあるが、重要な原論文本文が未読。独立の新定理とは認定できない。
下記の簡単な不等式・誤差区間への適用既存のCPランクSDPと直接比較 [41] [45]独立に導出・監査済み。式そのものの先取性、既存SDPから一般に導けるかは未確定。

特にStein(1973)の要旨は、全容量の一端を接地した多端子回路と容量個数の最小化を明示している。「抽象状態数より容量個数が多いから古典理論の対象外」という切り分けはできない。本文未読のため、その最小性の範囲や今回の単一極条件との同値性は未判断である。[46]

ρ=1/2を既知の判定定理に代入して得る

h²=1+ρとし、v₁=(h,1,0)、v₂=(h,0,1)、v₃=(h,−1,0)、v₄=(h,0,−1)と置く。Gram行列はHρ。Brandts–KřížekのCorollary 3.6は、この4ベクトルを非負の八分空間へ回転できるなら、その中の2本が一つの座標平面上にある配置を選べるとする。式(6)により、その平面の法線gは、成分ごとにVᵀV≥VᵀggᵀV≥0を満たす必要十分条件で判定できる。[34]

隣接する組v₁,v₂に対しg=(1,−h,−h)/√(1+2h²)。残りの組の射影内積は

v₃ᵀ(I−ggᵀ)v₄ = h²(2h²−3)/(1+2h²).

これが非負なのはρ≥1/2。他の隣接組も対称性により同じで、反対頂点の組を座標平面へ置く場合には残り二本のg方向成分の符号が逆になり、式(6)が失敗する。全6組を尽くすので、既知定理から正確な閾値が出る。§6の独立な正方形の証明も正しいが、この閾値を新規発見には数えない。

B. 改善した、最適化を解かない判定式

X=FᵀF、F≥0、Fの行数≤3とする。d=max対角成分、z=max(X₁₃,X₂₄)、m=min(X₁₂,X₂₃,X₃₄,X₄₁)と置く。次が必要である。

m² ≤ Ψ(d,z), Ψ(d,z)=4u(d−u), u=min(z,d/2).

z≤d/2ならm²≤4z(d−z)。前回の4zdより強い。z≥d/2ならΨ=d²となり、通常のCauchy–Schwarzの評価に接続する。これは3行非負因子の条件であり、一般の半正定値行列だけでは保証されない。

支持の選び方と対角成分の予算を使う証明

Fの各行を(a,b,c,d₀)と書く。{a,c}の大きい方と{b,d₀}の大きい方を選ぶとサイクルの一辺が定まる。3行以下なので選ばれない辺があり、添字を変えて12とする。全行でa≤cまたはb≤d₀。I={a≤c}、J=その補集合とすると、Jではb≤d₀である。

x=ΣIa²≤X₁₃≤z、y=ΣJb²≤X₂₄≤z。残りの対角予算とCauchy–Schwarzから

X₁₂ ≤ √[x(d−y)] + √[y(d−x)].

右辺はx+y≤dの範囲で各変数について非減少。実際、微分の符号は(d−x)(d−y)−xy=d(d−x−y)で決まり、境界は連続性で処理できる。z≤d/2ならx,yをzに上げて、X₁₂≤2√[z(d−z)]。m≤X₁₂で主張を得る。z≥d/2では全ての辺がd以下なのでm²≤d²。□

測定値D̂の全成分の誤差幅がηなら、c=max(0,mincycleD̂ij−η)、z₊=max(0,maxoppositeD̂ij+η)、d₊=max(0,maxdiagD̂ii+η)とする。Ψはd,zの双方について非減少なので、

c>0 かつ c²>Ψ(d₊,z₊) ⇒ 区間内の全ての3状態以下の模型を排除。

許容したい応答誤差Eも含めるには、η=ηmeas+2hEを使う。誤差込み判定器はこの改善式へ更新した。不成立は判定保留であり、3状態で十分とは言えない。

C. 近似できない距離を、上下から厳密に挟む

D₃ := infF∈ℝ₊3×4 ∥FᵀF−H₀∥max
5−2√6 ≈ 0.1010205144 ≤ D₃ ≤ e < 0.196676467057347.

下界は、誤差ε<1ならm≥1−ε、z≤ε、d≤2+εを上の式へ入れ、(1−ε)²≤8εを解けば得られる。ε≥1は自明。上界は単なる局所最適化の出力から進み、明示した非負因子を有理数の区間演算で認証した。最適距離の決定や、上界の大域最適性は未達成である。

代数的な上界:明示因子と全成分の検算

eをP(s)=2−11s+3s²−2s³+42s⁴−4s⁶の根で、0.196676467057346<e<0.196676467057347にあるものとする。両端での符号は整数演算で反転を確認し、0≤s≤1/5でP′(s)≤−1057/125<0だから根は一意。p=1−e、q=1+e、L=2−e、U=2+eとする。

x=(1−e)(1−2e²)/[2(1+e+e²)], y=e(1−2e²)/(1−4e).
√(L−x)00√(L−y)
√xp/√xe/√x0
0e/√yq/√y√y

この3×4行列をFとする。x,y,L−x,L−yは厳密区間で正。恒等式ep/x+eq/y=p、p²/x+e²/y=U、および(L−x)(L−y)−q²=P(e)/[(1+e+e²)(1−4e)]=0から、

FᵀF = [[L,p,e,q], [p,U,p,e], [e,p,d₃,q], [q,e,q,L]],
d₃=e²/x+q²/y ∈ (1.812198069900,1.812198069901).

L<d₃<Uも有理区間で確認できる。従って全成分の誤差はe以下で、最初の対角などはちょうどe。距離の上界が証明できた。下のコードは標準Pythonのみで符号・多項式恒等式・全区間を検算する。

この因子から§4の星形回路を構成できる。λ=1/4、Kの境界間辺重みを1にした例では、直接辺の必要条件も満たす。ただし、この係数近似の上界をそのまま全ての入出力ノルムの上界と呼ぶことはしない。

D. 既存の半正定値計画法と、同じ行列で比較する

Fawzi–ParriloのCPランク下界τcpsos(式51)を実装し、Hρ=H₀+ρJで比較した。ソルバーの浮動小数点出力だけに依存せず、その既存制約から今回、次の下界を導出した。[41]

τcpsos(Hρ) ≥ max{3, (4+4ρ+2ρ²)/(1+2ρ+2ρ²)}.
方法3状態以下を確実に排除できるρの範囲この比較から分かること
前回の簡易式 m²>4zd0≤ρ<0.154700538…最適化不要。今回改善。
今回の簡易式 m²>Ψ(d,z)0≤ρ<3−2√2≈0.171572875誤差区間へ直接適用できる。
既存SDPからの厳密下界少なくとも0≤ρ<(√5−1)/4≈0.309016994この族では簡易式より強い。
既知のCPランク3判定定理0≤ρ<1/2この行列族の正確な境界。

例えばρ=1/4では既存SDPの下界は41/13>3であり、今回の簡易式では排除できない。従って「新しい判定式のほうが強い」という一般主張はしない。用途の候補は、少数の集約値と誤差幅から、最適化を実行せずに結果を説明できる場面である。

既存SDPからの下界の証明と厳密な双対検算

A=Hρとし、vecは列順に並べる。既存SDPは、[[t,vec(A)ᵀ],[vec(A),X]]≥0、Xij,ij≤Aij²、X≤A⊗A、Xij,kl=Xil,kj(小行列式の線形化)を課す。ここで行列間の≥は半正定値順序。これは既存式であり、以下の行列族への評価が今回の導出である。

Uの列を(1,1,1,1)/2、(1,1,−1,−1)/2、(1,−1,−1,1)/2と置く。g=4+4ρならA=U diag(g,2,2)Uᵀ。0≤X≤A⊗AからX=(U⊗U)Y(U⊗U)ᵀ、Y≥0と書ける。

3×3の座標空間でp=e₀₀、q=e₁₁+e₂₂、sab=eba−eab(ab=01,02,12)と置く。Cauchy–Binetにより、小行列式の線形化は圧縮後のYにも成立する。これらを使うと次の恒等式を得る。

S := Σdirected cycleXij,ij + 2Σdirected oppositeXij,ij
= pᵀYp + qᵀYq + ΣabsabᵀYsab.

「directed」は12と21を両方数える意味で、cycleは8項、oppositeは4項。Y≥0と対角制約からpᵀYp+qᵀYq≤S≤8[(1+ρ)²+ρ²]=C。ブロック半正定値制約からg²≤t pᵀYp、16≤t qᵀYq。従ってg²+16≤tCとなり、表示した分数を得る。さらにXをA⊗Aへ増やしたブロックのSchur補完によりt≥vec(A)ᵀ(A⊗A)†vec(A)=rank A=3。□

一般ρについて、この下界とSDP最適値との等号は未証明。数値計算したρ=0,0.10,0.16,0.20,0.25,0.30,0.31,0.49などでは一致したが、証明には数えない。ρ=1/4では双対行列を外積和で表し、全定常条件と目的値41/13をFractionで厳密に検算した。コードを下に収録する。

誤差区間に対する公平な比較と、残る課題

一点でのSDP下界は、誤差区間内の全行列の下界ではない。別途、|A−H₀|≤εの箱全体を保守的に緩和し、Xij,ij≤(H₀ij+ε)Aij、X≤H₀⊗A+A⊗H₀−H₀⊗H₀+16ε²Iへ置き換えた。後者はE=A−H₀についてE⊗E≤∥E∥op²I≤16ε²Iから従う。

この緩い拡張の数値下界はε=0.075で約3.0273、ε=0.10で約2.9269だった。改善簡易式はε<0.1010205を厳密に排除する。ただし、この一つの緩和より良いことは、既存SDPの最善の頑健化より良いことを意味しない。高次モーメント階層も既存研究があり、同じ誤差集合と計算費用で比較する余地が残る。[45]

Fawzi–Parriloの別の非負核ノルム下界は、無重みではH₀に対して(tr H₀)²/∥H₀∥F²=8/3に留まる。これはその特定の基準の限界であり、重み付き変種や他のSDP全体についての結論ではない。近似非負ランクへの拡張自体は同論文Theorem 3に既にある。[44]

E. 有限立上りを、全状態数へ拡張できる入力波形

前回は任意の共通単調波形について「3状態以下」を扱った。今回は入力波形を設計する。非負の確率測度νを[0,T]に取り、入力の微分をdg=ν∗νとする。立上りは時刻2Tまでに完了する。終了後τ>0から二窓を測ると、

Φ(Q)=∫₀Te−Q(T−v)ν(dv),
F=e−Qτ/2Φ(Q)AhB ≥0,
D=FᵀF、従って cp-rank(D)≤r は任意の内部状態数rで成立。
自己畳み込みを使う理由と、実装できる具体的波形

二窓差はBᵀe−Qτ[∫e−Q(2T−v)dg(v)]Ah²B。dg=ν∗νなら角括弧はΦ(Q)²になる。Qの関数は対称で可換なのでD=FᵀF。指数行列・Φ・Ah・Bは成分非負で、積Fも成分非負。□

νを[0,T]の一様分布とすれば、dgは三角形の密度になり、gは次の区分二次関数となる。

g(t)=t²/(2T²) (0≤t≤T),
g(t)=1−(2T−t)²/(2T²) (T≤t≤2T),
g(t)=1 (t≥2T).

gは連続微分可能で、開始時と終了時の傾きは0。Φ=AT/T。単一極の目標H=sH₀なら、

D*=s a H₀, a=e−λτ[(1−e−λT)/(λT)]²(1−e−λh)².

これは同じ非負フィルタでHankel核を両側から積分する既存構造の直接系である。この特定の温度波形・測定手順の既刊一致は未確認だが、新しい因子分解理論とは位置づけない。

合成回路の設計例(s=1 J/K、λ=0.25 s⁻¹、総立上り1秒、待機0.1秒、各窓5.025725秒)に改善定数を入れると、熱流誤差の床は線形ランプで4.437948 mW、上の区分二次ランプで4.432179 mWとなる。いずれも1 K加熱、4入力実験・4出力・観測区間のどこかで必要になる誤差である。区分二次化によるこの下界の低下は約0.13%。任意状態数の証明を維持できる点が設計上の意味を持つ。

既知のK₂,₃行列(CPランク6)にもこの入力設計を適用できるので、理想データで5状態以下を排除する議論へ進める。その6対5の雑音耐性を数値定数付きで示したわけではない。最初の実験候補は引き続き電圧指定・電流測定のRC回路。§追究2の電気的縮尺では、上の区分二次波形に対する床は約4.432 µAとなる。

熱入力→温度出力へ移すときの、状態数の数え方

Cθ̇=−Lθ+Ep、y=Eᵀθを考える。Cは正対角、Lは正定値Stieltjes、E≥0で入力と出力の重みを一致させる。Q=C−1/2LC−1/2、B=C−1/2Eなら、ステップ応答はR(t)=K−BᵀQ−1e−QtB。従って二窓を後の窓−前の窓に反転すると同じCP因子分解が成立する。

ただし、ここでのrは測定点を含む全ての動的状態数。Eが4つの異なる点を選ぶならr≥4は最初から必要で、「3状態を排除」するだけでは新しい情報にならない。また、この点入力ではBᵀBが対角であり、H₀/(s+λ)をそのまま物理的な温度応答とすることもできない。通常の半導体熱インピーダンス同定の隠れ状態数問題は、これでは解決していない。

重なりを持つ分布加熱と同じ重みの温度測定、少数ポートの時間ブロックHankel行列、ポート数を超える大きな下界が次の対象になる。Fukunaga–Funakiの実際の熱過渡同定は別の入出力・信号処理であり、今回の方法との実用性能の優劣は未評価。[50]

F. 何が、次の有意義な発見になりうるか

第一候補は「誤差を含む測定から、使える模型の最少状態数を保証する、短く説明可能な証明」である。目的は、不可能な精度・状態数の組を模型探索の前に外すこと。今の結果は、そのための小さな4境界例と検証可能な判定式まで到達している。

残る問い具体的な判定目標
簡易式は既存SDPのどこまでの系か一般の誤差箱での包含関係、保証の強さ、計算費用を比較する。単なる弱い書き換えなら、その位置づけを明記する。
3状態までの距離の正確な値0.1010205…と0.1966765…の間を詰める。支持を仮定した局所最適化を全体の証明にしない。
実測でも余裕が残るか4回の入力試験で初期化・波形一致・積分・校正の誤差を上限化し、c²−Ψが正か確認する。合成データでの成功だけでは足りない。
古典回路合成との厳密な同一性Stein 1973、Matsumoto 1982、Kandić–Reljin 2009の本文で、境界ラベル・接地容量・非最小実現・重複極・素子数の最小性を照合する。
追究3時点の予想:追究4で下界1/6を証明

CPランク≤3の4×4行列でm²≤z(2d−z)が成立するのではないか、という予想が残る。成立すればH₀との距離下界は1/6に改善する。追究3時点では一般証明がなかったが、追究4で既知幾何定理から証明した。以下は当時の部分結果を保存した記録。

z≥d/5の範囲は、∥v₁−v₂+v₃−v₄∥²≥0からm≤(d+z)/2、さらに(d−z)(d−5z)≤0により証明できる。z=0も支持の議論で成立。未解決は0<z<d/5。この範囲ではa=√(z/2)、b=√(d−z/2)、c=√(d−2z)を用いた行[0,a,b,2a]、[2a,b,a,0]、[c,0,0,c]が等号を達成する。これは達成例であって全行列の不等式の証明ではない。

この因子はH₀への距離1/6の上界も示さない。一辺の値が目標から大きく外れるためである。数値で反例が見つからなかったことも、証明には数えない。

G. 再現できる証拠と、今回の到達範囲

新しい上下界、SDP評価、全状態数の立上り設計は、導出担当とは別の担当が証明を監査した。代数的上界とρ=1/4のSDP双対は有理数演算で検算。任意状態数の波形については内部状態1〜12の48個の合成物理グラフで、直接積分とGram式を比較し、最大差2.92×10⁻¹⁶だった。これは実装確認であり、定理の証明や実機検証を置き換えるものではない。

文献台帳は53件。全件の全文を読んだわけではなく、確認範囲を各行に記録した。新しい探索では定量的な近似非負ランク、CPランクSDP・モーメント階層、有限入力での実現、熱過渡同定、1970年代以降の接地容量回路合成を重点的に追った。2026年の非負ランク下界の計算研究も確認した。[53] 新規性はこの調査範囲に対しても未確定である。

代数的上界の厳密検算 — 標準Pythonのみ
"""Exact rational certificate for a CP-rank <= 3 approximation of C4.

Python standard library only. No numerical optimizer or floating-point decision
is used. The decimal display is obtained by outward rational rounding.
"""
from dataclasses import dataclass
from fractions import Fraction as Q
import json
from pathlib import Path


@dataclass(frozen=True)
class Interval:
    lo: Q
    hi: Q

    def __init__(self, lo, hi=None):
        object.__setattr__(self, 'lo', Q(lo))
        object.__setattr__(self, 'hi', Q(lo if hi is None else hi))
        assert self.lo <= self.hi

    @staticmethod
    def cast(x):
        return x if isinstance(x, Interval) else Interval(x)

    def __add__(self, other):
        other = self.cast(other)
        return Interval(self.lo + other.lo, self.hi + other.hi)

    __radd__ = __add__

    def __neg__(self):
        return Interval(-self.hi, -self.lo)

    def __sub__(self, other):
        return self + -self.cast(other)

    def __rsub__(self, other):
        return self.cast(other) + -self

    def __mul__(self, other):
        other = self.cast(other)
        ends = [self.lo * other.lo, self.lo * other.hi,
                self.hi * other.lo, self.hi * other.hi]
        return Interval(min(ends), max(ends))

    __rmul__ = __mul__

    def reciprocal(self):
        assert self.lo > 0 or self.hi < 0, 'Division interval contains zero'
        return Interval(1 / self.hi, 1 / self.lo)

    def __truediv__(self, other):
        return self * self.cast(other).reciprocal()

    def __rtruediv__(self, other):
        return self.cast(other) / self

    def __pow__(self, n):
        assert isinstance(n, int) and n >= 0
        out = Interval(1)
        for _ in range(n):
            out = out * self
        return out

    def decimal_enclosure(self, digits=12):
        # Floor lower endpoint; ceil upper endpoint, using integer arithmetic.
        scale = 10 ** digits
        lower = (self.lo.numerator * scale) // self.lo.denominator
        upper = -((-self.hi.numerator * scale) // self.hi.denominator)
        def render(n):
            sign = '-' if n < 0 else ''
            whole, frac = divmod(abs(n), scale)
            return f'{sign}{whole}.{frac:0{digits}d}'
        return [render(lower), render(upper)]


def poly(x):
    return 2 - 11*x + 3*x*x - 2*x**3 + 42*x**4 - 4*x**6


def polynomial_product(a, b):
    out = [Q(0)] * (len(a) + len(b) - 1)
    for i, x in enumerate(a):
        for j, y in enumerate(b):
            out[i+j] += x*y
    return out


def polynomial_subtract(a, b):
    size = max(len(a), len(b))
    return [(a[i] if i < len(a) else 0) -
            (b[i] if i < len(b) else 0) for i in range(size)]


def main():
    # Root isolation: decimal endpoints have denominator 10^15.
    lo = Q(196676467057346, 10**15)
    hi = Q(196676467057347, 10**15)
    assert poly(lo) > 0 and poly(hi) < 0
    assert 0 < lo < hi < Q(1, 5)
    # P'(s) <= -11 + 6/5 + 168/125 = -1057/125 < 0
    # for 0 <= s <= 1/5, since the other derivative terms are nonpositive.
    derivative_upper = -11 + Q(6, 5) + Q(168, 125)
    assert derivative_upper == -Q(1057, 125)

    e = Interval(lo, hi)
    p, q, L, U = 1-e, 1+e, 2-e, 2+e
    x = p * (1-2*e**2) / (2*(1+e+e**2))
    y = e * (1-2*e**2) / (1-4*e)
    d = e**2/x + q**2/y
    quantities = {'e': e, 'p': p, 'q': q, 'L': L, 'U': U,
                  'x': x, 'y': y, 'L-x': L-x, 'L-y': L-y,
                  'd': d, 'd-L': d-L, 'U-d': U-d}
    for name in ['p', 'q', 'L', 'U', 'x', 'y', 'L-x', 'L-y', 'd-L', 'U-d']:
        assert quantities[name].lo > 0, name

    # Exact coefficient check of (L-x)(L-y)-q^2 = P(e)/denominator.
    # Numerator is 2P; denominator is 2(1+e+e^2)(1-4e).
    numerator = polynomial_subtract(
        polynomial_product([3, 3, 4, -4], [2, -10, 4, 2]),
        polynomial_product(polynomial_product([2, 2, 2], [1, -4]), [1, 2, 1]))
    assert numerator == [4, -22, 6, -4, 84, 0, -8]

    # Exact coefficient checks of off-diagonal and diagonal identities.
    # ep/x+eq/y = p follows after multiplying by (1-2e^2).
    # Check the simpler displayed identity:
    # 2e(1+e+e^2) + (1+e)(1-4e) = (1-e)(1-2e^2).
    assert polynomial_subtract(
        polynomial_subtract([0, 2, 2, 2],
                            [-v for v in polynomial_product([1, 1], [1, -4])]),
        polynomial_product([1, -1], [1, 0, -2])) == [0, 0, 0, 0]
    # p^2/x+e^2/y = U:
    # 2(1-e)(1+e+e^2)+e(1-4e) = (2+e)(1-2e^2).
    assert polynomial_subtract(
        polynomial_subtract(polynomial_product([2, -2], [1, 1, 1]), [0, -1, 4]),
        polynomial_product([2, 1], [1, 0, -2])) == [0, 0, 0, 0]

    result = {
        'status': 'All assertions passed using exact rational arithmetic.',
        'polynomial_ascending_coefficients': [2, -11, 3, -2, 42, 0, -4],
        'root_interval': [str(lo), str(hi)],
        'P_root_lower_sign': 1,
        'P_root_upper_sign': -1,
        'derivative_upper_on_zero_to_one_fifth': str(derivative_upper),
        'outward_decimal_enclosures': {k: v.decimal_enclosure() for k, v in quantities.items()},
    }
    output = Path(__file__).with_name('cp3-algebraic-certificate.json')
    output.write_text(json.dumps(result, indent=2) + '\n')
    print(json.dumps(result, indent=2))


if __name__ == '__main__':
    main()
既存SDPとの厳密比較 — FractionとNumPy
"""Exact rational checks for the Fawzi--Parrilo H_rho lower bound.

No SDP solver and no floating-point arithmetic in the assertions below.
The accompanying notes give the proof for all rho >= 0; this file checks
the coefficient identity, a rational dual certificate at rho=1/4, and a
separate explicit feasible CP3 upper comparator for distance to H0.
Requires only Python and numpy (arrays are dtype=object, Fraction entries).
"""
from fractions import Fraction as F
from pathlib import Path
import json
import numpy as np

HERE=Path(__file__).resolve().parent
U=np.array([[1,1,1],[1,1,-1],[1,-1,-1],[1,-1,1]],dtype=object)*F(1,2)
W=np.kron(U,U)
assert np.array_equal(U.T@U,np.eye(3,dtype=object))

def unit(i,n=9):
    e=np.zeros((n,1),dtype=object);e[i,0]=1;return e

def minor_matrix(n,i,k,j,l):
    """trace(E X) = X_(ij,kl) - X_(il,kj), column-major pairs."""
    E=np.zeros((n*n,n*n),dtype=object)
    for a,b,c in [(i+n*j,k+n*l,F(1,2)),(i+n*l,k+n*j,F(-1,2))]:
        E[a,b]+=c;E[b,a]+=c
    return E

# D0 weights directed cycle entries by 1 and directed opposite entries by 2.
D0=np.zeros((16,16),dtype=object)
for i in range(4):
    for j in range(4):
        D0[i+4*j,i+4*j]=0 if i==j else 2 if (i-j)%4==2 else 1
p=unit(0);q=unit(4)+unit(8)
skew=[unit(i)-unit(j) for i,j in [(1,3),(2,6),(5,7)]]
M0=p@p.T+q@q.T+sum((u@u.T for u in skew),np.zeros((9,9),dtype=object))
# The discrepancy consists of three compressed principal-minor equations.
identity=W.T@D0@W-M0+minor_matrix(3,0,1,0,1)+minor_matrix(3,0,2,0,2)+2*minor_matrix(3,1,2,1,2)
assert all(x==0 for x in identity.ravel())

# Explicit rational dual at rho=1/4. The upper-PSD multiplier is zero;
# that constraint is used first to justify exact facial reduction.
rho=F(1,4);g=4+4*rho;C=8*((1+rho)**2+rho**2)
v=(g*p+4*q)/C
k=(g*g+16)/(C*C)
M=k*M0
w=4*p-g*q
# Block dual [[1,-v^T],[-v,M]] is PSD from this explicit outer-product sum.
res=M-v@v.T-(w@w.T)/(C*C)-k*sum((u@u.T for u in skew),np.zeros((9,9),dtype=object))
assert all(x==0 for x in res.ravel())

# Multipliers for Eq51 minor equations, in exactly the loop order below.
mult=[3,1,-2,2,-1,1,1,2,1,1,0,-1,-2,1,3,-1,1,-2,
      2,1,-1,3,1,2,-1,0,1,1,2,1,1,-1,-2,2,1,3]
stationarity=W.T@(k*D0)@W-M
z=0
for i in range(4):
    for kk in range(i+1,4):
        for j in range(4):
            for l in range(j+1,4):
                stationarity+=(k*F(mult[z],4))*(W.T@minor_matrix(4,i,kk,j,l)@W)
                z+=1
assert all(x==0 for x in stationarity.ravel())
a=g*p+2*q
dual_value=2*(v.T@a)[0,0]-k*C
assert dual_value==F(41,13)>3

results=dict(
    coefficient_identity_exact=True,
    dual_stationarity_exact=True,
    dual_psd_by_explicit_outer_product_sum=True,
    rho=str(rho),
    proved_lower_bound=str(dual_value),
    general_proved_lower_bound='max(3,(4+4*rho+2*rho**2)/(1+2*rho+2*rho**2)) for rho>=0',
    general_equality_to_SDP_optimum_proven=False,
    original_minor_multipliers_in_units_k_over_4=mult)

# Existing local fit, rounded to an exact decimal nonnegative factor.
G=[['1.22610739','0','0','0.97599645'],
   ['0.54770813','1.46670004','0.35908992','0'],
   ['0','0.21323097','1.29740221','0.92236352']]
Gr=np.array([[F(x) for x in row] for row in G],dtype=object)
H0=np.array([[2,1,0,1],[1,2,1,0],[0,1,2,1],[1,0,1,2]],dtype=object)
error=max(abs(x) for x in (Gr.T@Gr-H0).ravel())
assert error==F(196676472519291,10**15)<F('0.19667648')
results['explicit_cp3_upper_factor_decimal']=G
results['explicit_cp3_upper_error_exact']=str(error)
results['explicit_cp3_upper_is_global_optimum']=False
(HERE/'round3_sdp_exact_certificate.json').write_text(json.dumps(results,indent=2))
print(json.dumps(results,indent=2))
全状態数の有限立上り — NumPyとSciPyによる実装確認
"""Verify self-convolution heating and the improved CP3 certificate.
No external datasets. NumPy + SciPy; fixed random seed. Numerical checks
support implementation only; exact proofs are in the accompanying HTML.
"""
from pathlib import Path
import json
import numpy as np
from numpy.polynomial.legendre import leggauss
from scipy.linalg import expm
from scipy.optimize import brentq

HERE=Path(__file__).resolve().parent
rng=np.random.default_rng(202609203)
gx,gw=leggauss(28)
def quad(a,b):return (a+b)/2+(b-a)*gx/2,(b-a)*gw/2
def mf(V,values):return (V*values)@V.T
def triangular_rate(t,T):return np.where(t<T,t,2*T-t)/T**2

err_ramp=err_power=err_gram=err_heatrows=0.; min_factor=1.
for r in range(1,13):
    for rep in range(4):
        n=5
        w=rng.uniform(0,.5,(r,r));w=(w+w.T)/2;np.fill_diagonal(w,0)
        B=rng.uniform(.05,.7,(r,n))
        Q=np.diag(w.sum(1)+B.sum(1))-w
        direct=rng.uniform(0,.5,(n,n));direct=(direct+direct.T)/2;np.fill_diagonal(direct,0)
        direct=np.diag(direct.sum(1))-direct
        Lbb=direct+np.diag(B.sum(0));K=Lbb-B.T@np.linalg.solve(Q,B)
        err_heatrows=max(err_heatrows,float(np.max(abs(K.sum(1)))))
        ev,V=np.linalg.eigh(Q)
        T=float(rng.uniform(.1,.7));h=float(rng.uniform(.1,.9));tau=float(rng.uniform(.05,.8))
        tm1,wm1=quad(0,T);tm2,wm2=quad(T,2*T)
        ts=np.r_[tm1,tm2];mu=np.r_[wm1,wm2]*triangular_rate(ts,T)
        win1,ww=quad(2*T+tau,2*T+tau+h)
        win2,_=quad(2*T+tau+h,2*T+tau+2*h)
        def residual(t):
            spectral=np.sum(mu[:,None]*np.exp(-(t-ts[:,None])*ev[None,:]),axis=0)/ev
            return B.T@mf(V,spectral)@B
        D=sum(weight*((K+residual(a))-(K+residual(b))) for weight,a,b in zip(ww,win1,win2))
        Ah=mf(V,-np.expm1(-ev*h)/ev);AT=mf(V,-np.expm1(-ev*T)/(ev*T))
        F=expm(-Q*tau/2)@AT@Ah@B
        target=B.T@mf(V,np.exp(-ev*tau)*(-np.expm1(-ev*T)/(ev*T))**2*(-np.expm1(-ev*h)/ev)**2)@B
        err_ramp=max(err_ramp,float(np.max(abs(D-target))))
        err_gram=max(err_gram,float(np.max(abs(F.T@F-target))))
        min_factor=min(min_factor,float(F.min()))
        # The same Q is a grounded conductance matrix for a power-driven system.
        # B is now an overlapping nonnegative spatial input, with matched B.T readout.
        Kp=B.T@np.linalg.solve(Q,B)
        Dp=sum(weight*((Kp-residual(b))-(Kp-residual(a))) for weight,a,b in zip(ww,win1,win2))
        err_power=max(err_power,float(np.max(abs(Dp-target))))

def bound(d,z):
    zz=min(z,d/2)
    return 4*zz*(d-zz)
violations=0;worst=-float('inf')
for _ in range(3000):
    F=rng.exponential(1,(3,4));F[rng.random((3,4))<.3]=0
    H=F.T@F;m=min(H[0,1],H[1,2],H[2,3],H[3,0]);z=max(H[0,2],H[1,3]);d=max(H.diagonal())
    margin=m*m-bound(d,z)
    worst=max(worst,float(margin))
    violations+=margin>1e-10
assert not violations
delta=5-2*np.sqrt(6)
lam=.25;total_rise=1.;T=total_rise/2;tau=.1
x=brentq(lambda x:np.exp(x)-2*x-1,.1,3);h=x/lam
linear_a=np.exp(-lam*tau)*(-np.expm1(-lam*total_rise)/(lam*total_rise))*(-np.expm1(-lam*h))**2
smooth_a=np.exp(-lam*tau)*(-np.expm1(-lam*T)/(lam*T))**2*(-np.expm1(-lam*h))**2
result=dict(seed=202609203,physical_graphs=48,hidden_counts=list(range(1,13)),
            max_triangular_ramp_window_error=err_ramp,max_gram_error=err_gram,
            min_factor_entry=min_factor,max_power_input_window_error=err_power,
            max_kron_rowsum_error=err_heatrows,cp3_factor_checks=3000,
            cp3_inequality_violations=int(violations),max_cp3_inequality_margin=worst,
            improved_delta=delta,uniform_rho_threshold=3-2*np.sqrt(2),
            design=dict(lam=lam,total_rise=total_rise,tau=tau,h=h,
                linear_ramp_coefficient=linear_a,linear_ramp_error_floor=delta*linear_a/(2*h),
                quadratic_ramp_coefficient=smooth_a,quadratic_ramp_error_floor=delta*smooth_a/(2*h)),
            scope='Synthetic numerical checks; no experimental measurement or optimality claim.')
assert max(err_ramp,err_gram,err_power,err_heatrows)<1e-10
(HERE/'round3-protocol-results.json').write_text(json.dumps(result,indent=2))
print(json.dumps(result,indent=2))
既存SDPの数値比較 — CVXPY、Clarabel、SCS
"""Numerical cp-rank lower-bound comparisons; no floating-point output is a proof.

Fawzi--Parrilo (2014), arXiv:1404.3240v1, section 4, equation (51).
Optional conservative robust entry-box relaxation is derived in accompanying notes.
Requires Python, numpy, cvxpy and Clarabel/SCS. Tested cvxpy 1.9.3.
"""
from pathlib import Path
import sys, json, math, time
HERE=Path(__file__).resolve().parent
try:
    import cvxpy as cp
except ModuleNotFoundError:
    sys.path.insert(0,str(HERE/'sdp_dependencies'))
    import cvxpy as cp
import numpy as np

F0=np.array([[1,1,0,0],[0,1,1,0],[0,0,1,1],[1,0,0,1]],float)
H0=F0.T@F0
n=4; nn=n*n

def minor_constraints(X):
    # Only i<k and j<l, exactly as in equation (51); no extra X>=0 constraint.
    return [X[i+n*j,k+n*l]==X[i+n*l,k+n*j]
            for i in range(n) for k in range(i+1,n)
            for j in range(n) for l in range(j+1,n)]

def solve_problem(problem, solver):
    started=time.time()
    if solver=='CLARABEL':
        value=problem.solve(solver=solver,tol_gap_abs=1e-9,tol_gap_rel=1e-9,
                            tol_feas=1e-9,max_iter=300)
    else:
        value=problem.solve(solver=solver,eps=2e-7,max_iters=200000)
    info=dict(value=float(value),status=problem.status,solver=solver,
              elapsed_seconds=time.time()-started,
              num_iters=problem.solver_stats.num_iters)
    extra=problem.solver_stats.extra_stats
    if isinstance(extra,dict) and 'info' in extra:
        info['solver_info']={k:float(extra['info'][k]) for k in
                             ['pobj','dobj','res_pri','res_dual','gap'] if k in extra['info']}
    return info

def tau_exact(A,solver='CLARABEL'):
    ev,U=np.linalg.eigh(A)
    assert ev.min()>-1e-9
    keep=ev>1e-9
    W=np.kron(U[:,keep],U[:,keep])
    # Facial reduction removes only the exact nullspace of A tensor A.
    Y=cp.Variable((W.shape[1],W.shape[1]),symmetric=True)
    X=W@Y@W.T
    t=cp.Variable()
    a=A.reshape(nn,1,order='F')
    ar=W.T@a
    upper=np.diag(np.kron(ev[keep],ev[keep]))
    block=cp.bmat([[cp.reshape(t,(1,1),order='F'),ar.T],[ar,Y]])
    equalities=minor_constraints(X)
    constraints=[block>>0,cp.diag(X)<=a.ravel()**2,upper-Y>>0]+equalities
    prob=cp.Problem(cp.Minimize(t),constraints)
    result=solve_problem(prob,solver)
    xv=np.asarray(X.value)
    result.update(rank=int(keep.sum()),matrix=A.tolist(),
                  primal_min_eigenvalue=float(np.linalg.eigvalsh(block.value).min()),
                  upper_slack_min_eigenvalue=float(np.linalg.eigvalsh(upper-Y.value).min()),
                  maximum_diagonal_violation=float(max(0,np.max(np.diag(xv)-a.ravel()**2))),
                  maximum_equality_residual=float(max(abs(eq.expr.value) for eq in equalities)),
                  X=xv.tolist())
    return result

def tau_robust_box(center,eps,solver='CLARABEL'):
    """Lower bound for inf{tau_sos(A): A CP, |A-center|<=eps}.

    Relaxations, all conservative for any PSD A in the box:
      diag(X)<= (center_ij+eps)*A_ij (instead of A_ij**2);
      X <= center tensor A + A tensor center - center tensor center
           + n*n*eps*eps*I (instead of A tensor A).
    The second follows since E tensor E <= ||E||op**2 I <= n*n*eps*eps I.
    Thus this is NOT an exact minimization of the pointwise Fawzi-Parrilo bound.
    """
    A=cp.Variable((n,n),symmetric=True)
    X=cp.Variable((nn,nn),symmetric=True)
    t=cp.Variable()
    a=cp.reshape(A,(nn,1),order='F')
    upper_entries=(center+eps).ravel(order='F')
    kron_upper=cp.kron(center,A)+cp.kron(A,center)-np.kron(center,center)+(n*eps)**2*np.eye(nn)
    block=cp.bmat([[cp.reshape(t,(1,1),order='F'),a.T],[a,X]])
    equalities=minor_constraints(X)
    constraints=[A>>0,A>=0,A>=center-eps,A<=center+eps,
                 block>>0,cp.diag(X)<=cp.multiply(upper_entries,cp.reshape(a,(nn,),order='F')),
                 kron_upper-X>>0]+equalities
    prob=cp.Problem(cp.Minimize(t),constraints)
    result=solve_problem(prob,solver)
    result.update(epsilon=eps,relaxation='conservative_affine_entry_box_envelope',
                  matrix_at_relaxed_optimum=A.value.tolist(),X=X.value.tolist(),
                  primal_min_eigenvalue=float(np.linalg.eigvalsh(block.value).min()),
                  upper_slack_min_eigenvalue=float(np.linalg.eigvalsh(kron_upper.value-X.value).min()),
                  maximum_equality_residual=float(max(abs(eq.expr.value) for eq in equalities)))
    return result

results=dict(source='https://arxiv.org/html/1404.3240v1#S4',equation='51',
             cvxpy_version=cp.__version__,solvers=cp.installed_solvers(),
             pointwise=[],robust_boxes=[],cross_checks=[],
             caveats=['All solver values are numerical, not certified proofs.',
                      'A pointwise bound does not certify an entire entrywise noise box.',
                      'Robust-box results use our conservative affine envelope of Eq.51, not exact FP box optimization.',
                      'For epsilon>0 the circulant epsilon family has ordinary rank four, so its cp-rank lower bound is already four.',
                      'No claim of optimality is made for saved nonconvex factor fits.'])
def save():
    (HERE/'round3_sdp_results.json').write_text(json.dumps(results,indent=2))

rho_grid=[0,.02,.05,.10,.15,.16,.20,.25,.30,.31,.35,.45,.49,.50,.75,1.]
for rho in rho_grid:
    res=tau_exact(H0+rho*np.ones((4,4)))
    res.update(family='H0+rho*J',rho=rho,
               cheap_m2_minus_4zd=(1+rho)**2-4*rho*(2+rho),
               improved_m2_minus_4z_dminusz=(1+rho)**2-8*rho)
    results['pointwise'].append(res);save()
    print(json.dumps({k:res[k] for k in ['family','rho','value','status','cheap_m2_minus_4zd']}),flush=True)

for eps in [.01,.05,.10,.19]:
    A=H0.copy()
    for i in range(4):
        for j in range(4): A[i,j]+= eps if i==j or (i-j)%4==2 else -eps
    res=tau_exact(A)
    res.update(family='circulant_epsilon',epsilon=eps,
               cheap_m2_minus_4zd=(1-eps)**2-4*eps*(2+eps),
               improved_m2_minus_4z_dminusz=(1-eps)**2-8*eps)
    results['pointwise'].append(res);save()
    print(json.dumps({k:res[k] for k in ['family','epsilon','rank','value','status']}),flush=True)

for eps in [.01,.025,.049038105676658,.075,.097167540709727,.10,.125,.15,.19]:
    res=tau_robust_box(H0,eps)
    res['cheap_m2_minus_4zd']=(1-eps)**2-4*eps*(2+eps)
    res['improved_m2_minus_4z_dminusz']=(1-eps)**2-8*eps
    results['robust_boxes'].append(res);save()
    print(json.dumps({k:res[k] for k in ['epsilon','value','status','cheap_m2_minus_4zd']}),flush=True)

# Cross solver checks resolve numerical doubts only, not strict certificates.
for rho in [0,.20,.49]:
    res=tau_exact(H0+rho*np.ones((4,4)),solver='SCS')
    res.update(family='H0+rho*J',rho=rho)
    results['cross_checks'].append(res);save()
    print(json.dumps({k:res[k] for k in ['family','rho','solver','value','status']}),flush=True)

finite_results=HERE/'finite-window-results.json'
if finite_results.exists():
    saved=json.loads(finite_results.read_text())['target']
    G=np.array(saved['local_search_best_factor'])
    # Round downward/upward neither matters: direct reconstruction gives a feasible CP3 matrix.
    # Use eight decimals and report its directly evaluated entrywise error as a numerical upper bound.
    Gr=np.round(G,8)
    results['explicit_cp3_upper_comparator']=dict(
        factor=Gr.tolist(),matrix=(Gr.T@Gr).tolist(),
        entrywise_error=float(np.max(abs(Gr.T@Gr-H0))),
        provenance='Existing 40-start local fit; no new nonconvex search.',
        is_global_optimum=False)
    # These finite decimals give an exact rational factor, hence a certified
    # feasible upper comparator independent of the nonconvex optimizer.
    from fractions import Fraction
    Gf=[[Fraction(str(round(x,8))) for x in row] for row in Gr.tolist()]
    GG=[[sum(Gf[k][i]*Gf[k][j] for k in range(3)) for j in range(4)] for i in range(4)]
    err=max(abs(GG[i][j]-int(H0[i,j])) for i in range(4) for j in range(4))
    results['explicit_cp3_upper_comparator'].update(
        entrywise_error_exact_rational=str(err),
        entrywise_error_exact_decimal=float(err),
        strict_upper_bound='0.19667648')
    assert err < Fraction('0.19667648')
results['analytic_thresholds']={
    'old_pointwise_rho':-1+2/math.sqrt(3),
    'improved_pointwise_rho':3-2*math.sqrt(2),
    'improved_uniform_box_epsilon':5-2*math.sqrt(6),
    'proved_SDP_lower_bound_crossing_rho':(math.sqrt(5)-1)/4,
    'proved_SDP_lower_bound_formula':'max(3,(4+4*rho+2*rho**2)/(1+2*rho+2*rho**2))',
    'equality_to_SDP_optimum_proven':False}
save()
実行結果:cp3-algebraic-certificate.json
{
  "status": "All assertions passed using exact rational arithmetic.",
  "polynomial_ascending_coefficients": [
    2,
    -11,
    3,
    -2,
    42,
    0,
    -4
  ],
  "root_interval": [
    "98338233528673/500000000000000",
    "196676467057347/1000000000000000"
  ],
  "P_root_lower_sign": 1,
  "P_root_upper_sign": -1,
  "derivative_upper_on_zero_to_one_fifth": "-1057/125",
  "outward_decimal_enclosures": {
    "e": [
      "0.196676467057",
      "0.196676467058"
    ],
    "p": [
      "0.803323532942",
      "0.803323532943"
    ],
    "q": [
      "1.196676467057",
      "1.196676467058"
    ],
    "L": [
      "1.803323532942",
      "1.803323532943"
    ],
    "U": [
      "2.196676467057",
      "2.196676467058"
    ],
    "x": [
      "0.299984191393",
      "0.299984191394"
    ],
    "y": [
      "0.850754457398",
      "0.850754457399"
    ],
    "L-x": [
      "1.503339341549",
      "1.503339341550"
    ],
    "L-y": [
      "0.952569075544",
      "0.952569075545"
    ],
    "d": [
      "1.812198069900",
      "1.812198069901"
    ],
    "d-L": [
      "0.008874536957",
      "0.008874536958"
    ],
    "U-d": [
      "0.384478397157",
      "0.384478397158"
    ]
  }
}
実行結果:round3_sdp_exact_certificate.json
{
  "coefficient_identity_exact": true,
  "dual_stationarity_exact": true,
  "dual_psd_by_explicit_outer_product_sum": true,
  "rho": "1/4",
  "proved_lower_bound": "41/13",
  "general_proved_lower_bound": "max(3,(4+4*rho+2*rho**2)/(1+2*rho+2*rho**2)) for rho>=0",
  "general_equality_to_SDP_optimum_proven": false,
  "original_minor_multipliers_in_units_k_over_4": [
    3,
    1,
    -2,
    2,
    -1,
    1,
    1,
    2,
    1,
    1,
    0,
    -1,
    -2,
    1,
    3,
    -1,
    1,
    -2,
    2,
    1,
    -1,
    3,
    1,
    2,
    -1,
    0,
    1,
    1,
    2,
    1,
    1,
    -1,
    -2,
    2,
    1,
    3
  ],
  "explicit_cp3_upper_factor_decimal": [
    [
      "1.22610739",
      "0",
      "0",
      "0.97599645"
    ],
    [
      "0.54770813",
      "1.46670004",
      "0.35908992",
      "0"
    ],
    [
      "0",
      "0.21323097",
      "1.29740221",
      "0.92236352"
    ]
  ],
  "explicit_cp3_upper_error_exact": "196676472519291/1000000000000000",
  "explicit_cp3_upper_is_global_optimum": false
}
実行結果:round3-protocol-results.json
{
  "seed": 202609203,
  "physical_graphs": 48,
  "hidden_counts": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12
  ],
  "max_triangular_ramp_window_error": 1.6653345369377348e-16,
  "max_gram_error": 2.914335439641036e-16,
  "min_factor_entry": 0.00964830007618927,
  "max_power_input_window_error": 1.1102230246251565e-16,
  "max_kron_rowsum_error": 2.220446049250313e-15,
  "cp3_factor_checks": 3000,
  "cp3_inequality_violations": 0,
  "max_cp3_inequality_margin": 0.0,
  "improved_delta": 0.10102051443364424,
  "uniform_rho_threshold": 0.1715728752538097,
  "design": {
    "lam": 0.25,
    "total_rise": 1.0,
    "tau": 0.1,
    "h": 5.025724834504678,
    "linear_ramp_coefficient": 0.44157182494271213,
    "linear_ramp_error_floor": 0.004437948194940551,
    "quadratic_ramp_coefficient": 0.44099775859097734,
    "quadratic_ramp_error_floor": 0.0044321786313371945
  },
  "scope": "Synthetic numerical checks; no experimental measurement or optimality claim."
}
SDP数値実行記録:残差・比較結果・ソルバー情報

浮動小数点による探索の完全な記録。厳密保証の根拠は上の証明と有理数検算。個々の実行時間はこの実行環境での参考値。

全32回の結果を収録。行列・残差・ソルバー状態を含む元のJSONは、圧縮してこのHTML内に保持しています。

記録の種類回数ソルバー等式残差の最大値
Hρの点ごとの比較20CLARABEL1.96e-12
成分誤差の区間緩和9CLARABEL2.4e-14
別ソルバーとの照合3SCS3.08e-13

残差は浮動小数点計算の診断値で、厳密な可行性や最適性の証明ではありません。元ログの optimal_inaccurate を含む状態情報も保持しています。

JSONは必要なときだけ展開します。

元JSONのSHA-256:c926e5e575dcd8a1c47dc225c99080b7677f94b597f7a6ad53147f446f05c01a

追究2 · 有限時間の測定へ独立導出・相互監査済みの証明草案

二つの時間窓から、「3状態では足りない」を証明する

この節は追究2の記録。下限0.09717と約4.27 mWは有効だが、追究3を経て追究4で1/6と約7.32 mWへ改善した。下の判定器は最新の最良集約式を使う。新規性についても追究4の判定を優先する。

前回の低周波係数の下限を、測定できる熱流の誤差下限へ進めた。温度を変えた後の熱流を、隣り合う同じ長さの区間で積分し、差を取る。この量には内部状態数の制約が残り、未知の定常応答は消える。

今回は、①定常応答を合わせなくてもよい有限時間の証明、②有限の立上り時間への拡張、③測定誤差を含めた簡単な棄却式まで到達した。誤差定数も、前回の約0.049から約0.097へ改善した。最良定数という主張ではない。

定常値が不要等長の二窓の差で定常項と一定の計測オフセットを消す。
有限立上り同じ単調な入力波形なら、3状態以下の棄却に使用できる。
誤差込み測定値の区間から c² > 4zd を調べるだけの十分条件。
新規性の見直し:Hankel行列の非負分解で正値実現の次数を下から押さえる発想、CPランクの下界、少ない因子では正の誤差が残るという存在論は既知。本ノートの候補は、二窓の実測量・明示的な量的下限・立上りと雑音の扱いを一つの判定法に結ぶ部分へ絞る。これも先取性は未確定。[35] [36] [41] [43]

A. 実験で何を測るか

4か所の境界を選び、1か所ずつ同じ温度上昇を与える。残りの境界温度は基準値へ固定する。毎回、内部を同じ初期平衡から始め、4か所の符号付き熱流を測る。温度上昇幅で割った応答を Rij(t) とする。第j回実験の第i境界熱流が行列の(i,j)成分になる。以下は温度差1単位あたりの式である。

Dh(t) = ∫tt+h R(u) du − ∫t+ht+2h R(u) du

Rの単位はW/K、Dの単位はJ/K。二窓の差なので、定常応答Kと時間に依存しないセンサーオフセットが相殺する。時間変化するドリフト、校正誤差、積分誤差は別途、後述の誤差幅へ含める。

B. 理想ステップの定理:全ての内部状態数に成立

§3の相反熱ネットワークを用いる。Q=CI−1/2LIICI−1/2、B=CI−1/2(−LIB)と置く。Qは正定値・非対角成分が非正、Bは成分ごとに非負。内部状態数をrとする。

R(t)=K+BᵀQ−1e−QtB (t>0)
Ah=∫₀he−Qvdv, F=e−Qt/2AhB
Dh(t)=FᵀF, F≥0, cp-rank(Dh(t))≤r.
二窓の因子分解の証明

−Qは非対角が非負なのでe−Qu≥0。例えば十分大きいaに対してaI−Q≥0とし、指数の冪級数で示せる。従ってAh≥0、F≥0。

二窓のKは消え、積分を実行するとD=BᵀQ−2e−Qt(I−e−Qh)²B。Qの関数同士は可換かつ対称で、Ah=Q−1(I−e−Qh)。従ってD=FᵀF。Fの行数はrなのでCPランクはr以下。□

同じ式はD=∫₀h∫₀hBᵀe−Q(t+u+v)B du dvとも書ける。対称なHankel核を両側から同じ窓で積分したGram行列であり、既存の正値実現理論との連続性は明確である。

境界容量CBはステップ瞬間のインパルスだけに寄与するため、窓はt>0に置く。候補模型のK、CB、極配置を目標と一致させる必要はない。CPランクは一般には必要状態数の下界であり、これだけで回路実現の十分条件は得られない。

C. 有限立上りでも「3状態以下」の棄却が成立

温度入力をg(t)とし、gは0から1へ単調増加して時刻Tで立上りを完了、その後は1を保つ。各境界で同じ波形を使用する。μ=dgは[0,T]上の非負測度で総量1。観測開始はt>Tとする。

Dg,h(t)=BᵀM B,
M=∫₀T e−Q(t−v)Ah² μ(dv).
r≤3 ⇒ cp-rank(Dg,h(t))≤3.
任意の共通単調ランプへの拡張の証明

線形性よりRg(t)=K+∫₀TBᵀQ−1e−Q(t−v)B μ(dv)。二窓差を取ると表示式になる。Mの各積分項は、非負行列の積なので成分非負。また同じ正定値Qの関数なので固有値は非負。従ってMは対称半正定値かつ成分非負(DNN)。

r≤3ではDNN行列はr行以下の非負因子を持つ。自足的には、3×3を対角で正規化して相関a,b,c∈[0,1]とし、残った相関cが最大になるようピボットを選べばc≥ab。Choleskyの非対角成分はa,b,(c−ab)/√(1−a²)で全て非負、最後の平方根は半正定値性が保証する。退化例は極限で処理できる。M=PᵀP、P≥0とすればD=(PB)ᵀ(PB)。□

この議論から一般rでCPランク≤rとは言わない。CP行列の平均で因子の最少本数が保たれるとは限らないためである。

この拡張により、理想的な瞬間加熱を前提とせずに3状態模型を検証できる。立上り途中の窓、境界ごとに違う波形、未知の初期状態には同じ証明を適用できない。後述の計算では前二者について実際に破綻例も確認した。

D. 改善した下限:0.049から0.097へ

§5の既知行列H₀に対し、3行以下の非負因子を持つ任意のH̃は次を満たす。

∥H̃−H₀∥max ≥ δ = (2√7−5)/3 ≈ 0.09716754
改善定数の証明と、データから直接使える形

非負因子の各行を(a,b,c,d)とする。{a,c}の大きい方と{b,d}の大きい方を一つずつ選ぶと、サイクル12・23・34・41のいずれか一辺が選ばれる。同値の場合も一つに決める。3行以下なら、少なくとも一辺は一度も選ばれない。

その辺を添字の付け替えで12とする。全ての行でa≤cまたはb≤dが成り立つ。I={a≤c}、J=その残り、と分割すると、Cauchy–Schwarzから

H̃₁₂ = Σ ab ≤ √[(ΣIac)(ΣIb²)] + √[(ΣJbd)(ΣJa²)]
≤ √(H̃₁₃H̃₂₂) + √(H̃₂₄H̃₁₁).

mを四つのサイクル成分の最小値、zを二つの反対頂点成分13・24の最大値、dを対角成分の最大値とすると、従ってm²≤4zdが必要。H₀からの成分誤差ε<1ならm≥1−ε、z≤ε、d≤2+εなので(1−ε)²≤4ε(2+ε)。3ε²+10ε−1≥0を解いてδを得る。ε≥1なら自明。□

これは因子の支持を使った初等的な下界。一般的なCPランクの計算可能な下界には既存の半正定値計画・SOS法があり、比較が必要である。[41]

E. 有限時間の熱流誤差へ変換する

目標の記憶係数をH=sH₀とする。s>0は容量の単位を持つ尺度。緩和率λの単一極応答へ、長さTの線形ランプを与える。立上り終了後τ>0だけ待ち、幅hの窓を二つ測ると、

D* = s a H₀,
a=e−λτ · (1−e−λT)/(λT) · (1−e−λh)².

同じ実験を、内部熱容量3個以下の任意の候補模型で行う。4×4応答の最大成分誤差の観測区間内上限をEとすれば、積分の三角不等式から∥D̃−D*∥max≤2hE。上のCP下界と合わせて、

E ≥ sδ e−λτ (1−e−λT)/(λT) · (1−e−λh)²/(2h).

候補の極をどこへ置いても成立する。4回の入力実験・4出力・指定時間区間のどこかで必要になる誤差の床である。全出力が常にこの誤差を持つ、温度予測に同じ下限が出る、あるいはH∞下界が得られた、という意味ではない。

別の測定方法:二時刻の差

r≤3ならRg(t)−Rg(t+h)も、内部DNN行列の合同変換なのでCPランク≤3。線形ランプ後の係数はsλe−λτ(1−e−λT)/(λT)(1−e−λh)。二時刻の最大誤差はそのδ/2倍以上となる。時間積分を使わない分、同一の誤差ノルムではより強い下界になりうるが、瞬間値の測定誤差を直接受ける。二窓法は時間積分データから証明を作る選択肢であり、あらゆる測定法の最適解とは言わない。

F. 単位を付けた設計例

これは合成した回路モデル上の設計計算であり、実測結果ではない。s=1 J/K、λ=0.25 s⁻¹、境界間の定常辺重み1 W/Kの§5回路を用いる。内部熱容量は各4 J/Kの4個。1 Kを1秒で線形に立ち上げ、0.1秒待つ。

量値意味
各窓の幅h5.025725秒この二窓下界を最大化する幅。λh≈1.256431。
観測時間約10.05145秒入力開始後1.1秒から11.15145秒まで。
二窓係数a0.441571825D*=0.441571825 H₀ J/K。
3状態とのDの距離下限0.042906448 J/K最大成分ノルム。最良距離とは限らない。
熱流誤差の床4.268683 mW温度上昇1 Kの場合。どこかの入力・出力・時刻でこの値以上。

最適な窓幅はeˣ=2x+1の正根x≈1.256431から求まる。これは今回の下界を最も大きくする選択であり、雑音分布や測定費用まで考えた実験計画の最適性ではない。

2026-09-20T07:20:03.532964 image/svg+xml Matplotlib v3.10.8, https://matplotlib.org/ 0 2 4 6 8 10 12 14 Time after ramp ends (s) 3.0 3.1 3.2 3.3 3.4 Boundary gain R11 (W/K) Two windows cancel the steady term Unknown steady term K11 First integral (+) Second integral (-) 0 2 4 6 8 10 12 14 Width of each window h (s) 0 1 2 3 4 5 Certified error floor (mW/K) h = 5.026 s 4.269 mW/K A guaranteed floor, not the optimum error
左:定常項を含む境界応答と二つの積分窓。右:幅hによる証明可能な誤差下限の変化。解析式から作成した図。

G. ノイズを含むデータの棄却式

測定した対称化済み行列D̂の成分誤差が全てη以下と保証されているとする。c=max(0, mincycleD̂ij−η)、z=max(0, D̂₁₃+η, D̂₂₄+η)、d=max(0, maxiD̂ii+η)を計算する。

c > 0 かつ c² > 4zd ⇒ 誤差区間と整合する3状態以下の熱模型は存在しない。

許容したい模型の熱流誤差をE、測定したDの誤差をηmeasとするなら、判定に使う幅をη=ηmeas+2hEへ広げればよい。それでも不等式が成立すれば、その精度Eを満たす3状態以下の模型も存在しない。

この条件に届かなければ判定保留であり、3状態で十分という結論ではない。真のモデルが想定した物理クラスに属するなら、棄却は内部状態が少なくとも4個必要だという意味になる。モデルクラス自体の不適合をこの式だけで診断するものではない。

最新の判定器は本文・第6章へ移動しました。

各窓の積分値にそれぞれ成分誤差εWがあれば、差の誤差はη≤2εW。各時刻の熱流誤差σと数値積分誤差εquadを使う保守的な換算はη≤2hσ+εquad。統計的な信頼区間を使うなら、16成分・全実験を同時に覆う保証が必要。ここでは未指定の雑音を独立・正規分布と仮定しない。

H. 現実につなぐ際の入口

最初の検証には、同じ数式を持つ抵抗・コンデンサの4端子回路が扱いやすい。電圧を指定して電流を測れるため、温度を4か所で制御する実験より本命題の入力条件を作りやすいと考える。熱モデルとRC回路の対応はメーカー資料にも明示されている。[42]

具体的な電気的縮尺の一例は、各内部容量4 µF、内部から隣接する二境界への抵抗をそれぞれ2 kΩ、境界のサイクル辺を4/3 kΩ、反対頂点間を1 kΩとする。これはs=1 µF、λ=250 s⁻¹、定常辺重み1 mSの模型。1 Vを1 msで立ち上げ、0.1 ms待ち、各5.025725 msの二窓を測る。対応する電流誤差下限は約4.269 µA。公称値の計算であり、部品誤差や測定器性能を実証したものではない。

熱の用途は、多境界の簡略化モデルの状態数選びや、これ以上減らせない精度の判定。モデルの内部状態数は、実物の材料層の数とは限らない。一般的な半導体の熱インピーダンス測定は熱流入力→温度出力であり、本ノートの温度入力→熱流出力の保証をそのまま移せない。[42]

I. 新規性の監査で撤回・限定したこと

確認した点現在の扱い
H₀はCPランク4だけでなく通常の非負ランクも4この例の次数差を相反性だけが生む独自現象とは呼ばない。
Hankelの非負因子分解と実現次数古典的な正値実現理論の系譜。2004解説と2022surveyに帰属。[35] [43]
CPランクが小さい行列集合の閉性と正の距離既知の半連続性。誤差が正という存在だけを新規主張にしない。[41]
δ≈0.09717、c²>4zd、二窓+単調立上り本調査で独立導出・監査済みの量的な候補。同一の既存命題との一致・非一致は未確定。
実用性能合成回路とランダム回路で検証。実機・実材料・製品データでの実証は未実施。
H₀の非負ランクも4であることの確認

列を二つ循環移動すると零成分が対角だけに並ぶ。非負ランク3以下なら、この非対角支持を三つの積集合で覆えて、対角を踏まない必要がある。各行の因子支持集合をSi⊆{1,2,3}とすると、全ての異なるi,jについてSi⊄Sjが必要。3要素集合の部分集合から相互非包含な集合は最大3個しか選べず、4行と矛盾する。従って非負ランクは4。今回の具体例の厳密な3状態排除には、一般正値実現の障壁も含まれる。

相反性の追加制約を分離する、次の既知例

完全二部グラフK₂,₃の符号なしラプラシアンH₂,₃=[[3I₂,J₂,₃],[J₃,₂,2I₃]]は通常ランク4、CPランク6。各辺に対応する非負因子が上界6を与え、同じ部の零成分のため各因子が高々一辺しか覆えず下界6。行列とそのCPランクは既知である。[41, §4.5]

一方、通常の非負分解は5×5行列なので5因子以下。単一極の正の緩和核は一般の正値状態空間表現なら5状態で実現できるが、§4の条件を満たす熱境界応答には6内部熱容量が必要になる。これで一般正値性と相反な熱回路の制約を区別できる。任意単調ランプのr≤3証明をr=5へそのまま拡張することはできないが、追究3の自己畳み込みの入力波形なら全rで因子分解が成立する。

J. 反例と独立数値検証

新たに内部点数1〜8の160個の物理グラフを生成し、応答の直接数値積分と因子分解を比較した。合成回路のため実測データではない。計算は証明の代わりではなく、式の実装と適用条件を確認する役割を持つ。

確認最大誤差・結果
ステップ二窓の直接積分と解析式6.67×10⁻¹⁶
非負Gram因子との一致3.89×10⁻¹⁶
共通単調ランプの二窓積分3.47×10⁻¹⁶
r≤3の内部DNN行列の非負因子1.39×10⁻¹⁷
立上り途中に窓を置く反例1状態でもD≈−0.0311234。CP性が壊れる。
境界ごとに違う立上りを使う反例保持後でもDが非対称。共通波形の仮定を外せない。

参考として、H₀に近い3行非負因子を40初期値から局所探索した最良値は約0.1966765だった。これは近似行列を構成して得た距離の数値的な上界であり、大域最小値や新たな下界ではない。これは追究2の時点の結果。追究3では下界を0.1010205へ改善し、この近似を代数化して有理演算で厳密な上界を得た。最適距離は引き続き未確定。

有限窓の再現用Pythonコード
"""Independent finite-window thermal response checks.

Numerical checks are not proofs of cp-rank lower bounds or global optimality.
Python 3 + NumPy + SciPy. Run from any working directory.
"""
from pathlib import Path
from itertools import permutations
import json
import math
import numpy as np
from scipy.special import beta as beta_function
from scipy.linalg import expm
from scipy.optimize import minimize
from numpy.polynomial.legendre import leggauss

SEED = 20260920 + 713
rng = np.random.default_rng(SEED)
gx, gw = leggauss(40)

def quad_nodes(a, b):
    return (a + b)/2 + (b-a)*gx/2, (b-a)*gw/2

def fun_matrix(evals, evecs, values):
    return (evecs * values) @ evecs.T

def step_response(time, ev, U, B, K):
    return K + B.T @ fun_matrix(ev,U,np.exp(-time*ev)/ev) @ B

def physical_graph(r, n=4):
    weights = rng.uniform(.05,1.2,(r,r))
    weights = (weights+weights.T)/2
    weights[rng.random((r,r)) < .25] = 0
    weights = np.minimum(weights,weights.T)
    np.fill_diagonal(weights,0)
    # Include positive boundary connections and grounding; this makes Q SPD.
    B = rng.uniform(0,1.2,(r,n))
    B[rng.random((r,n))<.25] = 0
    internal_ground = rng.uniform(.05,.6,r)
    Q = np.diag(weights.sum(axis=1)+B.sum(axis=1)+internal_ground)-weights
    Lbb = np.diag(B.sum(axis=0)+rng.uniform(.05,.6,n))
    K = Lbb-B.T @ np.linalg.solve(Q,B)
    full = np.block([[Lbb,-B.T],[-B,Q]])
    assert np.linalg.eigvalsh(full)[0]>0
    return Q,B,K

def cp_factor_small_dnn(M):
    """Construct a nonnegative <=3-row factor via permuted Cholesky.

    Existence for 3x3 DNN also follows from a normalized correlation argument.
    This function checks a numerical factor rather than inferring cp-rank from rank.
    """
    r=M.shape[0]
    for perm in permutations(range(r)):
        p=np.array(perm)
        L=np.linalg.cholesky(M[np.ix_(p,p)])
        if L.min()>=-2e-12:
            F=np.zeros_like(L)
            F[:,p]=L.T
            return F
    raise AssertionError('No nonnegative permuted Cholesky factor found')

step_error=gram_error=ramp_error=cp_small_error=0.
min_step_factor=1.
min_ramp_internal=1.
min_ramp_eigenvalue=1.
max_constant_cancellation=0.
cases=[]
for r in range(1,9):
    for trial in range(20):
        Q,B,K=physical_graph(r)
        ev,U=np.linalg.eigh(Q)
        t=float(rng.uniform(.2,2)); h=float(rng.uniform(.1,1.4))
        times1,ww=quad_nodes(t,t+h)
        times2,_=quad_nodes(t+h,t+2*h)
        # Independently integrate the complete response, including unknown K.
        numerical=sum(w*(step_response(x,ev,U,B,K)-step_response(y,ev,U,B,K))
                      for w,x,y in zip(ww,times1,times2))
        target=B.T@fun_matrix(ev,U,np.exp(-ev*t)*(-np.expm1(-ev*h))**2/ev**2)@B
        Ah=fun_matrix(ev,U,-np.expm1(-ev*h)/ev)
        F=expm(-Q*t/2)@Ah@B
        step_error=max(step_error,float(np.max(abs(numerical-target))))
        gram_error=max(gram_error,float(np.max(abs(F.T@F-target))))
        min_step_factor=min(min_step_factor,float(F.min()))
        altered_K=K+rng.normal(size=K.shape)
        altered=sum(w*(step_response(x,ev,U,B,altered_K)-step_response(y,ev,U,B,altered_K))
                    for w,x,y in zip(ww,times1,times2))
        max_constant_cancellation=max(max_constant_cancellation,float(np.max(abs(altered-numerical))))

        # Common monotone ramp: derivative is a positive mixture of beta densities.
        duration=float(rng.uniform(.1,1.3))
        s,ws=quad_nodes(0,duration)
        x=s/duration
        aa=rng.integers(1,6,3); bb=rng.integers(1,6,3)
        mix=rng.uniform(.1,1,3); mix/=mix.sum()
        density=sum(weight*x**(a-1)*(1-x)**(b-1)/beta_function(a,b)/duration
                    for weight,a,b in zip(mix,aa,bb))
        ws=ws*density
        assert abs(ws.sum()-1)<1e-12
        start=duration+t
        ts1,wt=quad_nodes(start,start+h)
        ts2,_=quad_nodes(start+h,start+2*h)
        # This integral is independent of the compact spectral formula below.
        ramp_numerical=np.zeros((4,4))
        for timeweight,time1,time2 in zip(wt,ts1,ts2):
            v1=sum(w*step_response(time1-shift,ev,U,B,K) for w,shift in zip(ws,s))
            v2=sum(w*step_response(time2-shift,ev,U,B,K) for w,shift in zip(ws,s))
            ramp_numerical+=timeweight*(v1-v2)
        ramp_scalar=sum(w*np.exp(-ev*(start-shift)) for w,shift in zip(ws,s))
        M=fun_matrix(ev,U,ramp_scalar*(-np.expm1(-ev*h))**2/ev**2)
        ramp_target=B.T@M@B
        ramp_error=max(ramp_error,float(np.max(abs(ramp_target-ramp_numerical))))
        min_ramp_internal=min(min_ramp_internal,float(M.min()))
        min_ramp_eigenvalue=min(min_ramp_eigenvalue,float(np.linalg.eigvalsh(M)[0]))
        if r<=3:
            R=cp_factor_small_dnn(M)
            Framp=R@B
            assert Framp.min()>=-1e-11
            cp_small_error=max(cp_small_error,float(np.max(abs(Framp.T@Framp-ramp_target))))
        cases.append(dict(r=r,trial=trial,post_hold_start=start,ramp_duration=duration,h=h))

# Four-cycle target and a local (not globally certified) three-row approximation search.
F0=np.array([[1,1,0,0],[0,1,1,0],[0,0,1,1],[1,0,0,1]],float)
H0=F0.T@F0
delta=(2*math.sqrt(7)-5)/3  # Improved four-cycle support/Cauchy certificate.
lam=.25; t=1.; h=2.
coefficient=math.exp(-lam*t)*(-math.expm1(-lam*h))**2
Dstar=coefficient*H0
assert np.linalg.matrix_rank(H0)==3
K=4*np.eye(4)-np.ones((4,4))
B=lam*F0; Q=lam*np.eye(4)
ev,U=np.linalg.eigh(Q)
tt1,ww=quad_nodes(t,t+h); tt2,_=quad_nodes(t+h,t+2*h)
window1=sum(w*step_response(time,ev,U,B,K) for time,w in zip(tt1,ww))
window2=sum(w*step_response(time,ev,U,B,K) for time,w in zip(tt2,ww))
assert np.max(abs(window1-window2-Dstar))<1e-12

def constraints(z):
    G=z[:12].reshape(3,4)
    E=(G.T@G-H0).ravel()
    return np.r_[z[12]-E,z[12]+E]

def jac(z):
    G=z[:12].reshape(3,4)
    J=np.zeros((16,12))
    for i in range(4):
        for j in range(4):
            for k in range(3):
                J[4*i+j,4*k+i]+=G[k,j]
                J[4*i+j,4*k+j]+=G[k,i]
    return np.vstack((np.column_stack((-J,np.ones(16))),np.column_stack((J,np.ones(16)))))

best=None; trials=[]
for restart in range(40):
    G=rng.uniform(.01,1.2,(3,4))
    e=float(np.max(abs(G.T@G-H0)))
    z0=np.r_[G.ravel(),e+.1]
    opt=minimize(lambda z:z[12],z0,jac=lambda z:np.r_[np.zeros(12),1.],
                 method='SLSQP',bounds=[(0,None)]*13,
                 constraints=[dict(type='ineq',fun=constraints,jac=jac)],
                 options=dict(maxiter=1500,ftol=1e-12))
    actual=float(np.max(abs(opt.x[:12].reshape(3,4).T@opt.x[:12].reshape(3,4)-H0)))
    trials.append(dict(success=bool(opt.success),objective=float(opt.fun),actual=actual))
    if best is None or actual<best[0]: best=(actual,opt.x[:12].reshape(3,4))
assert best[0]>=delta-1e-9

# Same finite linear ramp for the target. After hold, its only change is a positive scale.
ramp_duration=.8; ramp_start=1.2
ramp_gain=math.expm1(lam*ramp_duration)/(lam*ramp_duration)
ramp_coefficient=math.exp(-lam*ramp_start)*(-math.expm1(-lam*h))**2*ramp_gain

# Controls: removing the post-hold or common-waveform assumptions can break the claim.
# Scalar physical graph Q=2, B=1, K=.5; unit-duration linear ramp.
# During the ramp the output is .5*t + .25*(1-exp(-2*t)).
bad_t=.1; bad_h=.2
bt1,bw=quad_nodes(bad_t,bad_t+bad_h); bt2,_=quad_nodes(bad_t+bad_h,bad_t+2*bad_h)
pre_hold_D=sum(w*(.5*x+.25*(-math.expm1(-2*x))-.5*y-.25*(-math.expm1(-2*y)))
               for w,x,y in zip(bw,bt1,bt2))
assert pre_hold_D<0
# Two distinct positive linear ramps, both completed before measurement.
# A one-hidden-node, two-boundary-node physical graph with Q=1, B=(.3,.3).
durations=np.array([.2,1.]); different_gains=np.expm1(durations)/durations
unequal_D=np.outer(np.array([.3,.3]),np.array([.3,.3]))
unequal_D*=math.exp(-1.2)*(-math.expm1(-.5))**2*different_gains[None,:]
assert np.max(abs(unequal_D-unequal_D.T))>1e-4

results=dict(seed=SEED,random_cases=len(cases),hidden_node_counts=list(range(1,9)),
             max_step_window_integral_error=step_error,
             max_step_nonnegative_gram_error=gram_error,
             minimum_step_factor_entry=min_step_factor,
             max_unknown_constant_cancellation_error=max_constant_cancellation,
             max_common_monotone_ramp_integral_error=ramp_error,
             minimum_ramp_internal_matrix_entry=min_ramp_internal,
             minimum_ramp_internal_eigenvalue=min_ramp_eigenvalue,
             max_ramp_cp_factor_error_for_r_le_3=cp_small_error,
             target=dict(lam=lam,t=t,h=h,coefficient=coefficient,H0=H0.tolist(),
                         window1=window1.tolist(),window2=window2.tolist(),Dstar=Dstar.tolist(),
                         analytical_cp3_entrywise_lower_bound=delta,
                         finite_window_entrywise_lower_bound=coefficient*delta,
                         lower_bound_if_each_window_has_entrywise_error_eta=coefficient*delta/2,
                         local_search_restarts=len(trials),local_search_best_error=best[0],
                         local_search_best_factor=best[1].tolist(),
                         local_search_is_global_certificate=False),
             linear_ramp_target=dict(duration=ramp_duration,start=ramp_start,h=h,
                                     coefficient=ramp_coefficient,
                                     cp3_entrywise_lower_bound=ramp_coefficient*delta),
             assumption_counterexamples=dict(
                 during_linear_ramp_scalar_D=pre_hold_D,
                 unequal_port_ramps_D=unequal_D.tolist(),
                 unequal_port_ramps_asymmetry=float(np.max(abs(unequal_D-unequal_D.T)))),
             scope='Numerical identity checks and local searches only; cp-rank theorem not numerically proved.')
assert max(step_error,gram_error,ramp_error,cp_small_error)<1e-10
here=Path(__file__).resolve().parent
(here/'finite-window-results.json').write_text(json.dumps(results,indent=2))
print(json.dumps(results,indent=2))
検証結果のJSON
{
  "seed": 20261633,
  "random_cases": 160,
  "hidden_node_counts": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
  ],
  "max_step_window_integral_error": 6.661338147750939e-16,
  "max_step_nonnegative_gram_error": 3.885780586188048e-16,
  "minimum_step_factor_entry": 0.0,
  "max_unknown_constant_cancellation_error": 1.942890293094024e-16,
  "max_common_monotone_ramp_integral_error": 3.469446951953614e-16,
  "minimum_ramp_internal_matrix_entry": -6.541715128823755e-18,
  "minimum_ramp_internal_eigenvalue": 1.13009856536003e-11,
  "max_ramp_cp_factor_error_for_r_le_3": 1.3877787807814457e-17,
  "target": {
    "lam": 0.25,
    "t": 1.0,
    "h": 2.0,
    "coefficient": 0.12057247444956556,
    "H0": [
      [
        2.0,
        1.0,
        0.0,
        1.0
      ],
      [
        1.0,
        2.0,
        1.0,
        0.0
      ],
      [
        0.0,
        1.0,
        2.0,
        1.0
      ],
      [
        1.0,
        0.0,
        1.0,
        2.0
      ]
    ],
    "window1": [
      [
        6.612868460660778,
        -1.69356576966961,
        -2.0,
        -1.69356576966961
      ],
      [
        -1.69356576966961,
        6.612868460660778,
        -1.69356576966961,
        -2.0
      ],
      [
        -2.0,
        -1.69356576966961,
        6.612868460660778,
        -1.69356576966961
      ],
      [
        -1.69356576966961,
        -2.0,
        -1.69356576966961,
        6.612868460660778
      ]
    ],
    "window2": [
      [
        6.3717235117616475,
        -1.8141382441191751,
        -2.0,
        -1.8141382441191751
      ],
      [
        -1.8141382441191751,
        6.3717235117616475,
        -1.8141382441191751,
        -2.0
      ],
      [
        -2.0,
        -1.8141382441191751,
        6.3717235117616475,
        -1.8141382441191751
      ],
      [
        -1.8141382441191751,
        -2.0,
        -1.8141382441191751,
        6.3717235117616475
      ]
    ],
    "Dstar": [
      [
        0.24114494889913113,
        0.12057247444956556,
        0.0,
        0.12057247444956556
      ],
      [
        0.12057247444956556,
        0.24114494889913113,
        0.12057247444956556,
        0.0
      ],
      [
        0.0,
        0.12057247444956556,
        0.24114494889913113,
        0.12057247444956556
      ],
      [
        0.12057247444956556,
        0.0,
        0.12057247444956556,
        0.24114494889913113
      ]
    ],
    "analytical_cp3_entrywise_lower_bound": 0.09716754070972715,
    "finite_window_entrywise_lower_bound": 0.011715730819550699,
    "lower_bound_if_each_window_has_entrywise_error_eta": 0.005857865409775349,
    "local_search_restarts": 40,
    "local_search_best_error": 0.19667646705734654,
    "local_search_best_factor": [
      [
        1.2261073939704767,
        1.5461229265087625e-16,
        2.775557561607473e-16,
        0.975996452628978
      ],
      [
        0.5477081260978146,
        1.4667000445401257,
        0.35908991976909604,
        4.1633363424112096e-17
      ],
      [
        0.0,
        0.21323096961590574,
        1.297402211891335,
        0.9223635169488787
      ]
    ],
    "local_search_is_global_certificate": false
  },
  "linear_ramp_target": {
    "duration": 0.8,
    "start": 1.2,
    "h": 2.0,
    "coefficient": 0.1269657203234949,
    "cp3_entrywise_lower_bound": 0.012336946798273022
  },
  "assumption_counterexamples": {
    "during_linear_ramp_scalar_D": -0.03112336525767142,
    "unequal_port_ramps_D": [
      [
        0.004645836873957905,
        0.007211163171446843
      ],
      [
        0.004645836873957905,
        0.007211163171446843
      ]
    ],
    "unequal_port_ramps_asymmetry": 0.0025653262974889386
  },
  "scope": "Numerical identity checks and local searches only; cp-rank theorem not numerically proved."
}
設計計算・図の再現用Pythonコード
"""Deterministic illustrative design calculation; no experimental data."""
import json
from pathlib import Path
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from scipy.optimize import brentq

HERE=Path(__file__).resolve().parent
lam,T,tau=.25,1.,.1
delta=(2*np.sqrt(7)-5)/3
x=brentq(lambda x:np.exp(x)-2*x-1,.1,3)
h=x/lam
phi=-np.expm1(-lam*T)/(lam*T)
A=np.exp(-lam*tau)*phi*(-np.expm1(-lam*h))**2
numbers=dict(lam=lam,ramp_duration=T,post_hold_delay=tau,window_width=h,
             coefficient=A,delta=delta,integrated_certificate_radius=delta*A,
             uniform_gain_error_lower_bound=delta*A/(2*h),optimal_lambda_h=x,
             total_end_time=T+tau+2*h)
(HERE/'finite-window-design.json').write_text(json.dumps(numbers,indent=2))
plt.rcParams.update({'font.family':'DejaVu Sans','font.size':10,'axes.spines.top':False,
                     'axes.spines.right':False,'svg.fonttype':'none'})
fig,ax=plt.subplots(1,2,figsize=(10.8,3.8),layout='constrained')
t=np.linspace(0,14,500)
response=3+2*lam*phi*np.exp(-lam*t)
ax[0].plot(t,response,color='#087f8c',lw=2)
ax[0].axhline(3,color='#718184',ls='--',lw=1,label='Unknown steady term K11')
ax[0].axvspan(tau,tau+h,color='#148b83',alpha=.15,label='First integral (+)')
ax[0].axvspan(tau+h,tau+2*h,color='#d79542',alpha=.18,label='Second integral (-)')
ax[0].set(xlabel='Time after ramp ends (s)',ylabel='Boundary gain R11 (W/K)',
          title='Two windows cancel the steady term',xlim=(0,14),ylim=(2.98,3.47))
ax[0].legend(fontsize=8,loc='upper right',frameon=False)
hs=np.linspace(.03,14,500)
bound=1e3*delta*np.exp(-lam*tau)*phi*(-np.expm1(-lam*hs))**2/(2*hs)
ax[1].plot(hs,bound,color='#087f8c',lw=2)
ax[1].scatter([h],[numbers['uniform_gain_error_lower_bound']*1e3],color='#bd7b29',zorder=5)
ax[1].annotate(f'h = {h:.3f} s\n{numbers["uniform_gain_error_lower_bound"]*1e3:.3f} mW/K',
               (h,numbers['uniform_gain_error_lower_bound']*1e3),xytext=(7.5,3.1),
               arrowprops={'arrowstyle':'->','color':'#596c6e'},fontsize=9)
ax[1].set(xlabel='Width of each window h (s)',ylabel='Certified error floor (mW/K)',
          title='A guaranteed floor, not the optimum error',ylim=(0,5),xlim=(0,14))
for a in ax:a.grid(alpha=.15)
fig.savefig(HERE/'finite-window.svg')
fig.savefig(HERE/'finite-window.png',dpi=140)
print(json.dumps(numbers,indent=2))

Python 3、NumPy、SciPy、図にはMatplotlibを使用。コードを同じフォルダへ保存して実行すると結果ファイルを作る。HTML内の判定器は十分条件のみを計算し、非凸CPランク問題を解くものではない。

7. 近似を許しても、3個以下には係数誤差の下限がある

境界容量CBを固定する。内部熱容量が3個以下の任意の模型から得た係数をH̃とすると、

maxi,j |H̃ij−H₀ij| ≥ (3√3−5)/4 ≈ 0.0490381

を示せる。これは無次元化した低周波記憶係数の最大成分誤差であり、温度の百分率誤差ではない。定数の最適性も主張しない。

鳩の巣原理による誤差下限の証明

最大成分誤差をε<1と仮定し、H̃を3本の非負因子の外積和に書く(不足分は零因子)。4つのサイクル成分は全て1−ε以上。各辺を、少なくとも(1−ε)/3を寄与する因子へ割り当てると、ある因子は二辺を担当する。

二辺が隣接する場合、例えば12と23では、その因子内で(f₁f₂)(f₂f₃)=(f₁f₃)f₂²≤H̃₁₃H̃₂₂≤ε(2+ε)。二辺が向かい合う場合も(f₁f₂)(f₃f₄)=(f₁f₃)(f₂f₄)≤ε²≤ε(2+ε)。従って((1−ε)/3)²≤ε(2+ε)。これを解けば8ε²+20ε−1≥0となり、表示の下限を得る。ε≥1なら自明。□

上記は初回に得た下限。追究2・3を経て追究4で1/6へ改善し、指定した二窓の熱流応答へ橋渡しした。係数誤差だけから一般の温度予測誤差やH∞誤差が出るわけではない。

8. 何が既知で、どこが候補か

対象数学的状態新規性の状態
Kron式・M-matrix・CP分解既存理論を使用既知。新規部分に含めない。
H₀のrank3 / cp-rank4既存論文と一致既知例への帰属を確定。[34]
正値制約による次数増大一般理論が存在既知。[35]
単一極の熱実現条件・最少数必要性・構成・最小性の証明草案1973・1982・2009年の近い回路合成論文との本文比較が未了。新規とは認定しない。
Hρの閾値ρ=1/2独立証明と既知定理への代入Brandts–KřížekのCorollary 3.6・式(6)の直接系と確認。
最大成分誤差≥1/6追究4で強化式・集約境界の最良性を証明既知幾何定理の量的な系。明示式の先取性は未確定。全成分の最適距離は未決定。
二窓・有限立上りでの熱流誤差下限追究3で特定波形について全rへ拡張因子分解は既知Hankel構造の直接系。具体的な量的結合の新規性は未確定。
一般の温度予測・帯域誤差未到達入出力を変えた保証は別の研究問題。

本ノートはAIによる導出、別担当による独立監査、数値・有理数計算を含む。人間の専門家による査読と証明支援系による形式検証は未実施。証明の状態と学術的な新規性の状態を分ける。

重要な未読資料

Matsumoto(1982)は、最小実現からの線形変換、M-matrix、特殊な直交行列を使うtransformerless grounded RC合成を扱う。今回の制約と極めて近いので、定理5の全文比較が必要。要旨だけから同一とも非同一とも判断しない。相互容量の可否、接地、非最小実現、重複極、対角容量の制限を比較する。さらにStein(1973)は接地容量の多端子回路と容量個数の最小化を要旨に明示し、Kandić–Reljin(2009)も非最小の共通接地RC実現を扱う。これらの本文が未読である点は重要な限界。RC-in RC-out(2001)の全文も確認先である。[46] [47][33] [37]

調査の範囲と弱点

検索語はMori–Zwanzig、GLE、memory kernel、positive realization、RC synthesis、transformerless、grounded capacitors、single-pole admittance、completely positive rank、moment matching、finite-time reduction、chaotic homogenizationなどを横断した。関連論文の参照文献も追った。ただし技術語の検索に無関係な結果が多く、古い論文の索引・本文取得にも限界がある。検索件数や「見つからなかったこと」を新規性の証明として扱わない。

9. 次に突き詰める問い

優先具体的な問い意味と打ち切り条件
1測定誤差から状態数を棄却する証明を実機で検証
二窓のc²>Ξ(d,z)をRCアナログで試し、初期化・立上り・積分誤差を校正する。
有限時間への橋渡しは達成。次は実測で棄却余裕が残るか。強化式は既存SDPより強い厳密例を持つと確認。高次階層との比較、非一様な誤差区間、実測での校正が残る。
2複数の記憶時間を共有する熱容量の最少数
Y=K+sCB+Σ sλℓ/(s+λℓ) Hℓを同時に実現する際の最少数を特徴づける。
各残差を独立に分解すれば十分な場合があるが、一般内部結合は符号付き残差も生む。単純にcp-rankの和と仮定しない。
3FDT整合の近似で、動的相関を保証
摩擦核の誤差から雑音因子と相関・経路の誤差まで、モード数に依存しない定数で抑える。
平衡一時刻分布は同じでも動きは違う。一般SVEの直接系に尽きるなら新規候補から外す。
4カオス系で、何を残せばよいか
残留記憶と閾値到達誤差を、保持変数の選択に結びつける。
軌道、分布、経路量を分ける。線形の最少実現理論との差分が出る小モデルから。

第一候補は1。数学側ではH₀からCPランク3以下までの距離をさらに挟む。現状は解析下界1/6、代数的に認証した上界約0.1966765。三つの集約制約の最良境界は決定できたが、全成分の距離は未決定。実用側では、4回の電圧固定・電流測定で二窓の棄却余裕を確認する。熱流入力→温度出力の因子分解も追究3で確認したが、数えるのはポートを含む全状態数。通常の点ポート模型の隠れ状態数を非自明に認証する課題は未解決。

今回得た命題が古い回路理論の系と判明しても、この方向の価値は失われない。既知の最小性を出発点にして、測定誤差や実時間予測へ使える量的な差分を探せる。

D. 基礎計算の再現コードと検証記録

最新の鋭い境界・SDP・有限窓のコードは、それぞれAとCの該当節に収録しています。コードは各節のボタンから取り出せます。

10. 再現計算と、その役割

seed=20260920。ランダムな非負因子から120個の熱ネットワークを構成し、各42点、合計5,040点の実・虚Laplace変数で境界応答を比較した。これは構成式の実装確認であり、最小性や新規性の証拠は上の証明・文献照合が担う。

確認結果
指定したYとの相対誤差の最大6.996e-16
H=WᵀCIWの相対誤差の最大4.073e-16
基礎行列の通常ランク有理数の掃き出し法で3
3抽象状態/4熱容量の応答差周波数点で最大 8.882e-16
滑らかな温度パルスの熱流差401時刻で最大 2.254e-10
因子数閾値・最少数数値最適化の成功失敗ではなく、収録した証明による。

文書検査(再編版・追加査読反映後):61件の文献ID、内部リンク、重複ID、埋め込みコードを確認。幅320・390・768・1100 pxのブラウザ表示と主要操作を検査した。圧縮ログのJSON復元は元ファイルとバイト単位で一致し、外部通信は発生しない。これらの文書・実装検査は数学的証明の代わりではない。

再現用Python(NumPy・SciPy、コード全文)

下のボタンでこのページに埋め込まれたコードを保存できる。実行すると同じフォルダーに検証JSONと応答データを出力する。

"""Reproduce finite numerical checks in thermal-memory research note.
Python 3 + NumPy + SciPy. Numerical checks do not establish minimality.
"""
import json
import math
from pathlib import Path
from fractions import Fraction
import numpy as np
from scipy.linalg import expm

SEED = 20260920
rng = np.random.default_rng(SEED)

def laplacian(weights):
    return np.diag(weights.sum(axis=1)) - weights

def build(F, lam, K, cb):
    # F has one nonnegative row per hidden heat-capacity node.
    H = F.T @ F
    z = F.sum(axis=1)
    assert np.all(z > 0)
    caps = z*z
    W = F / z[:, None]
    links = lam * caps[:, None] * W
    direct = K - lam*(np.diag(H.sum(axis=1))-H)
    Lbb = direct + np.diag(links.sum(axis=0))
    Lbi = -links.T
    Lii = np.diag(lam*caps)
    return Lbb, Lbi, Lii, caps, direct

def response(s, parts, cb):
    Lbb,Lbi,Lii,caps,_ = parts
    return Lbb+s*np.diag(cb)-Lbi@np.linalg.solve(Lii+s*np.diag(caps),Lbi.T)

def exact_rank(mat):
    a = [[Fraction(int(v)) for v in row] for row in mat]
    row = 0
    for col in range(len(a[0])):
        pivot = next((i for i in range(row,len(a)) if a[i][col]),None)
        if pivot is None: continue
        a[row],a[pivot]=a[pivot],a[row]
        v=a[row][col]; a[row]=[x/v for x in a[row]]
        for i in range(len(a)):
            if i != row:
                v=a[i][col]; a[i]=[x-v*y for x,y in zip(a[i],a[row])]
        row+=1
    return row

worst_response=worst_moment=worst_rowsum=0.
checks=0
ss = np.r_[np.logspace(-4,3,21), 1j*np.logspace(-4,3,21)]
for case in range(120):
    n=int(rng.integers(2,9)); r=int(rng.integers(1,9))
    F=rng.uniform(.1,2,(r,n))
    F[rng.random((r,n))<.3]=0
    for row in F:
        if row.sum()==0: row[int(rng.integers(n))]=1.
    H=F.T@F; lam=float(rng.uniform(.1,2))
    a=rng.uniform(.1,1,(n,n)); a=(a+a.T)/2
    weights=lam*H+a; np.fill_diagonal(weights,0)
    K=laplacian(weights); cb=rng.uniform(.1,2,n)
    parts=build(F,lam,K,cb)
    Lbb,Lbi,Lii,caps,direct=parts
    W=-np.linalg.solve(Lii,Lbi.T)
    moment=W.T@np.diag(caps)@W
    worst_moment=max(worst_moment,np.linalg.norm(moment-H)/max(1,np.linalg.norm(H)))
    L=np.block([[Lbb,Lbi],[Lbi.T,Lii]])
    worst_rowsum=max(worst_rowsum,np.max(np.abs(L.sum(axis=1))))
    off=L.copy(); np.fill_diagonal(off,0)
    assert off.max()<1e-10
    assert np.linalg.eigvalsh(L)[0]>-1e-10
    for s in ss:
        target=K+s*np.diag(cb)+s*lam/(s+lam)*H
        error=np.linalg.norm(response(s,parts,cb)-target)/max(1,np.linalg.norm(target))
        worst_response=max(worst_response,float(error)); checks+=1

F0=np.array([[1,1,0,0],[0,1,1,0],[0,0,1,1],[1,0,0,1]],float)
H0=F0.T@F0
K=laplacian(np.ones((4,4))-np.eye(4)); cb=np.ones(4); lam=.25
parts=build(F0,lam,K,cb)
# Exact algebraic rank and positive 4-factor identity.
assert exact_rank(H0.astype(int))==3
Q=np.array([[.5,-math.sqrt(3/8),math.sqrt(3/8)],
            [math.sqrt(3/8),-.25,-.75],
            [math.sqrt(3/8),.75,.25]])
worst_factor=0.
for rho in [0,.01,.05,.25,.49,.5,.75,1,2,10]:
    H=H0+rho*np.ones((4,4))
    alpha=(math.sqrt(1+rho)-1)/2
    F4=F0+alpha*np.ones((4,4))
    worst_factor=max(worst_factor,float(np.max(np.abs(F4.T@F4-H))))
    V=np.array([[math.sqrt(1+rho)]*4,[1,0,-1,0],[0,1,0,-1]],float)
    assert np.max(np.abs(V.T@V-H))<1e-12
    if rho>=.5:
        F3=Q@V
        assert F3.min()>-1e-12
        worst_factor=max(worst_factor,float(np.max(np.abs(F3.T@F3-H))))

# A signed 3-mode realization has precisely the same full transfer.
vals,vecs=np.linalg.eigh(H0); keep=vals>1e-10
G=np.sqrt(vals[keep])[:,None]*vecs[:,keep].T
assert G.shape==(3,4)
algebraic_error=0.
for s in ss:
    reduced=K+lam*H0+s*np.diag(cb)-lam**2/(s+lam)*(G.T@G)
    algebraic_error=max(algebraic_error,float(np.max(np.abs(reduced-response(s,parts,cb)))))

# Dynamic numerical check with a smooth boundary temperature pulse.
from scipy.integrate import solve_ivp
def u(t): return np.array([t*t*np.exp(-t),0.,0.,0.])
def du(t): return np.array([(2*t-t*t)*np.exp(-t),0.,0.,0.])
Lbb,Lbi,Lii,caps,_=parts
times=np.linspace(0,20,401)
physical=solve_ivp(lambda t,z:(-Lii@z-Lbi.T@u(t))/caps,[0,20],np.zeros(4),t_eval=times,rtol=1e-10,atol=1e-12)
abstract=solve_ivp(lambda t,z:-lam*z+lam*G@u(t),[0,20],np.zeros(3),t_eval=times,rtol=1e-10,atol=1e-12)
q4=np.array([Lbb@u(t)+Lbi@z+du(t) for t,z in zip(times,physical.y.T)])
q3=np.array([(K+lam*H0)@u(t)-lam*G.T@z+du(t) for t,z in zip(times,abstract.y.T)])

results=dict(seed=SEED,random_networks=120,frequency_checks=checks,
             max_relative_transfer_error=worst_response,max_relative_moment_error=worst_moment,
             max_laplacian_rowsum_residual=worst_rowsum,
             base_eigenvalues=np.linalg.eigvalsh(H0).tolist(),base_exact_rank=3,
             factor_identity_max_absolute_error=worst_factor,
             algebraic3_physical4_max_transfer_difference=algebraic_error,
             pulse_max_absolute_difference=float(np.max(np.abs(q3-q4))),
             approximate_moment_lower_bound=(3*math.sqrt(3)-5)/4)
assert worst_response<1e-10 and worst_moment<1e-10
assert np.max(np.abs(q3-q4))<1e-8
here=Path(__file__).resolve().parent
(here/'verification-results.json').write_text(json.dumps(results,indent=2))
np.savez(here/'pulse-data.npz',times=times,q3=q3,q4=q4)
print(json.dumps(results,indent=2))
E. 文献84件:確認した範囲と未取得資料

本文を確認した資料と、要旨・書誌のみの資料を区別しています。84件全てを全文精読したという意味ではありません。BDSは公開著者稿を新たに本文照合し、追加6件は取得範囲を明記しています。

11. 主要文献84件と確認範囲

本文確認済み=関連する定理・設定・導出を点検。要旨のみ=その範囲を超えた同値性判断には使用しない。プレプリント年と刊行年が異なる場合は併記。解説論文はその旨を記載。

番号・年文献確認範囲今回への意味
[1]
1973
Zwanzig — Nonlinear generalized Langevin equations要旨非線形系からの厳密GLEという出発点は既知。
[2]
2009
Darve, Solomon & Kia — Computing generalized Langevin equations and generalized Fokker–Planck equations要旨射影と記憶項を計算する先行研究。
[3]
2018
Zhu, Dominy & Venturi — On the estimation of the Mori–Zwanzig memory integral本文・定理3.1–3.5短記憶・t-model・階層近似の誤差と収束条件。
[4]
2017
Gouasmi, Parish & Duraisamy — A priori estimation of memory effects要旨非線形系の記憶推定。近似直交力学と真の核を区別。
[5]
2017
Kelly & Melbourne — Deterministic homogenization for fast–slow systems with chaotic noise本文・定理1.1/2.3高速カオスから拡散極限。弱収束と同一軌道誤差は別。
[6]
2022
Chevyrev et al. — Deterministic homogenization under optimal moment assumptions, Part 2要旨モーメント条件と確率極限の精密化。
[7]
2021
Chandramoorthy & Wang — On the probability of finding nonphysical solutions through shadowing要旨近い真軌道の存在だけから物理統計の正しさは出ない。
[8]
2026
de Wit et al. — Data-driven Mori–Zwanzig modeling of Lagrangian particle dynamics in turbulent flows著者稿本文乱流粒子の短期精度と長期統計の実験的再現。
[9]
2026
Stauffer, Gorji & Lunati — Surrogate Trajectories Along Probability Flows本文・§5/7.2一時刻周辺分布の保存と経路統計の保存を区別。
[10]
2016/17
Ma, Li & Liu — The Derivation and Approximation of Coarse-grained Dynamics from Langevin Dynamics本文・定理1/2有理近似と補助雑音によるFDT保持。
[11]
2016
Lei, Baker & Li — Data-driven parameterization of the generalized Langevin equation本文・式3–18短時間モーメント・積分核・補助状態を合わせる方法。
[12]
2021
Bockius et al. — Model reduction techniques for extended Markov parameterizations for GLE本文・正実性と実現相関からProny/正実補題でモデル化。実現できないフィットも扱う。
[13]
2023
Koyama — Exponential sum approximations of finite completely monotonic functions本文・定理2.14等正測度の指数和近似と幾何収束。
[14]
2025
Zimmerling, Druskin & Simoncini — Monotonicity, Bounds and Acceleration of Block Gauss and Gauss–Radau Quadrature著者稿本文・定理実Laplace変数のresolvent順序。時間域の行列順序と区別。
[15]
2013
Fenu et al. — Block Gauss and anti-Gauss quadrature with application to networks本文・序論と方法条件付きの成分別行列関数評価。
[16]
2003
Hansen & Pedersen — Jensen’s Operator Inequality本文・特徴付け作用素凸性は通常の凸性より強い。
[17]
2024
Alfonsi & Kebaier — Approximation of stochastic Volterra equations with kernels of completely monotone type要旨・後続定理との照合核が異なるSVEのL2誤差。原定理全体は未精読。
[18]
2023
Bayer & Breneis — Markovian approximations of stochastic Volterra equations with the fractional kernel要旨Gaussian求積による多因子化と強収束。
[19]
2024–26
Lang & Lu — Learning Memory Kernels in Generalized Langevin Equations本文・§1–4相関推定誤差から重み付き核誤差への保証。
[20]
2025/26
Lang & Lu — Error Analysis of GLE with Approximated Memory Kernels本文・序論、比較定理、§3/6同期した加法白色雑音で核摂動を評価。FDT雑音の変更は対象外。
[21]
2026 07
Braun, Hanke & Wolf — On data-driven parameterizations of multidimensional generalized Langevin dynamics要旨のみ二次ポテンシャル・多次元のMarkov実現。本文取得未了。
[22]
2026 09
Corneille et al. — Convergence in Hölder norms for Markovian approximations of stochastic Volterra equations本文・設定、定理3.15周辺ドリフト核と雑音フィルタをともに変更する経路誤差。
[23]
2025
Giona, Procopio & Pezzotti — Dynamic fluctuation-dissipation theory for GLE著者稿本文・前半と結論安定性、Markov実現、確率実現を区別。
[24]
2013
Dörfler & Bullo — Kron Reduction of Graphs with Applications to Electrical Networks著者本文・主要定理Schur補完、符号保存、内部経路による境界辺生成。
[25]
2022/23
Singh et al. — Time-Domain Generalization of Kron Reduction本文・定理1不均一R/Lでも時間域の縮約。対象素子が熱/RCとは異なる。
[26]
2015
Oyaro & Triverio — TurboMOR本文・Appendix A多端子RCの受動性と高次モーメント保存。
[27]
2020
Cheng et al. — Reduced Order Modeling of Diffusively Coupled Network Systems本文・最適辺重みグラフ構造を保つ拡散系の縮約。
[28]
2022
Min & Mallada — Learning Coherent Clusters in Weakly-Connected Network Systems本文・集約条件クラスター化による低次元化。
[29]
2020
Redmann — An L2_T-error bound for time-limited balanced truncation本文・誤差定理有限時間のL2保証そのものは既知。
[30]
2020
Dorschky, Reis & Voigt — Balanced truncation for symmetric second order systems本文・受動性条件二階系・受動性を保つ縮約。
[31]
2026 07
Xu et al. — FlexRC要旨のみ多端子RCの多点モーメント整合。
[32]
2025
Yin et al. — SMP-RCR本文・§I–III疎RC、モーメント一致、負素子を避ける課題。
[33]
1982
Matsumoto — RC admittance matrix realization by linear transformation要旨・書誌のみ最重要未比較。transformerless grounded RC合成の定理5。
[34]
2016
Brandts & Křížek — Factorization of CP-rank-3 completely positive matrices本文・§1.2/3、Corollary 3.6・式(6)基礎例・閾値1/2は既知定理の系。追究4の鋭い集約境界も同定理から導出。刊行版pp959,965–967を追加照合。
[35]
2004
Benvenuti & Farina — A Tutorial on the Positive Realization Problem本文・錐と最少実現正値性による次数増大という一般現象は既知。解説論文。
[36]
2021/22
Grussler, Damm & Sepulchre — Balanced truncation of k-positive systems本文内部正値性・対称性と低次数化の関係。
[37]
2001
Ganesh & Chen — RC-in RC-out model order reduction accurate up to second order moments要旨・書誌のみRC素子へ戻しながら初期モーメントを合わせる方法。本文未読。
[38]
2024
Codecasa et al. — Fast Error-Bounded MOR-Based Approximation of Heat Conduction Problems in Electronics機関公開要旨熱伝導の実用的誤差保証。本文比較は未了。
[39]
2023
Liljegren-Sailer — A time domain a posteriori error bound for balancing-related model order reduction要旨有限時間・非零初期値も扱う。
[40]
2020
Schröder & Voigt — Balanced Truncation with A Priori Error Bounds for LTI Systems with Nonzero Initial Value要旨初期値を含めた先験誤差保証。
[41]
2014/16
Fawzi & Parrilo — Self-scaled bounds for atomic cone ranks: applications to nonnegative rank and cp-rankarXiv:1404.3240v1の本文・§1/4、特に§4.2の式(51)、§4.5刊行版:Math. Programming 158(1):417–465(2016)。本ノートの式(51)・節番号とコードはarXiv:1404.3240v1に対応。閉性・CPランクSDP・K₂,₃例を確認し、同版のSDPを実装して厳密比較。
[42]
2019
ROHM — What is a Thermal Model?メーカー資料本文・pp1–3熱とRC回路の対応、測定からのCauer模型、各素子と材料層は1対1とは限らない。
[43]
2022
Luca Benvenuti — Minimal positive realizations: A survey著者稿の冒頭pp1–5を分担確認。§7/9の追加取得は403、未精読。Automatica 143, 110422。非負Hankelランクによる次数下界と実験からの区画数推定。更新survey。
[44]
2012/15
Fawzi & Parrilo — Lower bounds on nonnegative rank via nonnegative nuclear norms本文・§2.1–2.3、Theorem 3Math. Programming 153(1):41–66。近似非負ランクの定量的下界。誤差に頑健な次数認証の一般論は既知。
[45]
2017/18稿
Gribling, de Laat & Laurent — Lower bounds on matrix factorization ranks via noncommutative polynomial optimization本文・§3、§3.5.1 Lemma 11既存SDPを強めるモーメント階層。収束先を整数CPランクそのものと取り違えない。
[46]
1973
Richard A. Stein — RC admittance realization by grounded-capacitor structures出版社要旨・参考文献のみIJCTA 1(2):119–126。接地容量の多端子回路と最少容量個数を明示。最小性の厳密な範囲は本文未読。
[47]
2009
D. B. Kandić & B. D. Reljin — On Synthesis of Immitance Matrices of Transformerless RLC Networks公開要旨・書誌のみECCTD:303–306、DOI 10.1109/ECCTD.2009.5274986。非最小の共通接地RC実現も扱う。本文比較未了。
[48]
2008
Kandić & Reljin — Explicit Solution of the Inverse Eigenvalue Problem of Real Symmetric Matrices and Its Application to Electrical Network Synthesis本文・主要定理と§5。追究4で出版社PDFの式(5.3)–(5.4)も確認対称行列・符号条件と回路合成。driving-pointの構成を固定多端子の最小性と同一視しない。
[49]
2008
de Callafon et al. — General Realization Algorithm for Modal Identification of Linear Dynamic Systems本文・ERA/GRA、weighted Hankelの節J. Engineering Mechanics 134(9):712–722。有限の任意入力を扱う実現は既存。通常次数と物理的次数を区別。
[50]
2020
Fukunaga & Funaki — Transient thermal network model identification for power module packages本文・§2–5NOLTA 11(2):157–169。熱入力→温度の実測、逆畳み込み、雑音処理。今回との入出力差を明示。
[51]
2007
Kaczorek — Positive partial realization problem for linear discrete-time systems本文・定理と結論有限Markov系列の正値実現と構成の十分条件。全低次数候補を排除する議論とは区別。
[52]
2010/11稿
Bocci, Carlini & Rapallo — Perturbation of matrices and non-negative rank with a view toward statistical models本文・Theorem 2非負ランクが減らない近傍の存在。定性的な距離の存在を新規性にしない。
[53]
2026
Baeckelant, Vandaele & Gillis — Computing Lower Bounds on the Nonnegative Rank via Non-Convex Optimization Solversv1本文・§2–4。v2の更新書誌も確認古典的な下界を非凸最適化で計算する比較研究。今回の式の先取性を保証する資料ではない。
[54]
1981
松本直樹 — 線形変換によるRC回路網の構成 / Synthesis of RC Networks through Use of Linear Transformation本文・式(6b)/(9)、§4–5、回路図と結語。主要頁は画像でも確認明治大学科学技術研究所紀要19、11-1–11-15。共通帰線は全容量接地を意味しない。1982の代用にはしない。
[55]
1976
Adel Ahmed Ali — Some new aspects of congruence transformation as applied to RC ladder networks大学公開博士論文・§2.2、pp6–7の式(2.1)–(2.5)を画像確認正則な平方のHowitt変換とSchur補の不変性。素子値の総和と素子個数の最小化も区別。
[56]
2001
Naomi Shaked-Monderer — Minimal CP Rank本文・序論、Theorem 1.6、Example 2.1 p143ELA8:140–157。正成分化A+ε(A1)(A1)ᵀはHρの構成と一致。正確な閾値は同例にはない。
[57]
1998
J. B. M. Melissen — How different can colours be? Maximum separation of points on a spherical octant原論文の公開全文転載・§1/5、pp1501–1504、式(5.1)を分担確認Proc. R. Soc. A454:1499–1508。4点の最適分離から既知の定量的CP3排除式。今回の三集約境界とは別の極値問題。
[58]
2017/18
I. M. Bomze — Building a completely positive factorization本文・§2、§3.1–3.2、Theorem 3.1、§6CEJOR26:287–305。正対角合同によるCPランク不変性と正規化は既知。非一様対角の利用自体は新規でない。
[59]
1968
Richard Adolph Stein — On the synthesis of two-element-kind multiport networks大学の書誌・原要旨の転載。本文は取得できずUBC学位論文の新たな取得候補。1973著者との同一性・本文定理の連続性は未確定。impedanceの要旨をadmittance定理の代用にしない。
[60]
2003
Abraham Berman & Naomi Shaked-Monderer — Completely Positive Matrices著者所属機関の書誌を確認。対象本文は未取得World Scientific、DOI 10.1142/5273。追加査読による照合候補。小サイズ行列・CPランクの関連節と、三集約境界との同値性は本文照合待ち。
[61]
2014稿/2015刊行
Bomze, Dickinson & Still — The structure of completely positive matrices according to their CP-rank and CP-plus-rank(公開著者稿)2014 11 04の15頁稿を本文・文献表まで照合。Definition1.1、Theorems2.4/4.8/5.1、Lemma5.2、§6を重点確認。刊行版との番号は未照合LAA482:191–206、DOI10.1016/j.laa.2015.05.021。下半連続性・正距離の存在・正因子化は既知。三集約式・今回の個別成分定数・二窓手順の同じ記載はこの稿では確認できず。
[62]
1965
Basson & Halkias — The Realization of RC N-PortsIEEE登録書誌・DOIを確認。本文未取得IEEE Trans Circuit Theory12(2):247–256。共通帰線RC実現の古典候補。固定アドミタンス・対角内部容量・全次数最小性との同値性は未照合。
[63]
1971
Stein & Moore — On the synthesis of RC multiport networks by linear transformationsIEEE登録書誌・DOIを確認。本文未取得IEEE Trans Circuit Theory18(2):294–297。変換と最小性の正確な範囲は未照合。
[64]
1971
Stein — Synthesis of grounded-capacitor multiport RC networksリンク先1973論文の参考文献で書誌確認。会議稿本文未取得London、IEEE Int Symp Electrical Network Theory、49–50。会議録71 C 53-CT。1973論文とは区別して扱う。
[65]
2026公開/2027巻号
Mathew & Chandrashekaran — Sufficient conditions for a doubly non-negative matrix to be completely positive出版社要旨・書誌・参考文献。購読限定、公開著者稿未取得Comp. Appl. Math.46:51。公開2026 09 19。錐の最大角に基づく十分条件・CP因子・cp-rank=rankを要旨が述べる。具体的閾値との比較は未実施。
[66]
2014
De Tommasi, Magnani, d’Alessandro & de Magistris — Time domain identification of passive multiport RC networks with convex optimization: An application to thermal impedance macromodeling著者ページの要旨・Crossref書誌を確認。本文未取得IEEE SPI2014:1–4。時間定数推定と受動制約下の留数同定。二窓による全低状態数候補の排除との本文比較は残る。
[67]
2021
Shaked-Monderer & Berman — Copositive and Completely Positive Matrices機関書誌・試し読み入口まで。関連章本文未取得World Scientific、DOI10.1142/11386。2003年書の更新・増補版。小サイズ・CPランク・rank-revealing因子化の章を今後照合。
[68]
2008/09稿
Batson, Spielman & Srivastava — Twice-Ramanujan Sparsifiers公開本文 Theorem 1.1・3.1既知の重み付き疎化。CP近似と、定常応答を近似変更できる熱回路の構成上界へ使用。
[69]
2011稿/2013刊
Dörfler & Bullo — Kron Reduction of Graphs with Applications to Electrical NetworksarXiv v1 §3.2 Theorem 6内部経路と縮約後の辺・クリークの対応。静的構造の基礎は既知。
[70]
2023公開/2024巻
Korda, Laurent, Magron & Steenkamp — Exploiting ideal-sparsity in the generalized moment problem with application to matrix factorization ranks公開本文 §4.2 Lemma 13、式(51)、Example 14CP支持の被覆下界と完全二部グラフのn²。今回の一般化の強い近接文献。
[71]
2011
Ionuțiu, Rommes & Schilders — SparseRC: Sparsity Preserving Model Reduction for RC Circuits With Many Terminals
DOI
公開本文・§II-B、§III、§III-C1/C2DCの二モーメント・受動性を保存。合成後の負容量を許す点を確認。正の対角容量だけの今回の模型とは区別。
[72]
1987
Aldous & Shepp — The least variable phase type distribution is Erlang
DOI
公開スキャンの原著p.467を画像で確認。主張と§1冒頭。証明全体は未精読相数を固定した吸収時間の最小変動性。今回の非単調な二窓測定の最大化とは異なる。
[73]
2005 online/2006刊行
Osogami & Harchol-Balter — Closed form solutions for mapping general distributions to quasi-minimal PH distributions
DOI
著者公開本文・§§1–3、Definitions 4/6、Theorems 1–2三モーメント一致と相数の関係。固定多端子Kと有限窓の信号を同時に扱う今回の最少数との違いを確認。
[74]
2010
Laurent Miclo — On absorption times and Dirichlet eigenvalues公開本文・仮定B1/B2、Theorem 1.2、関連する閉包の議論ESAIM: Probability and Statistics 14:117–150。可逆な吸収過程の分解は既知。本稿の一般化で使う非初等的入力。
[75]
1997
Sheldon M. Ross — Introduction to Probability Models, 6th edition公開されている本文p.615、Chapter 11 Exercise 8の式を照合Academic Press。指数分布を提案分布とするGammaの棄却法に同一のCₖ。定数の既出確認に使い、独自の新定数とは扱わない。教科書であり原著の先取性までは確定しない。
[76]
2009稿
Yaming Yu — Stochastic Ordering of Exponential Family Distributions and Their Mixtures公開本文・§3 Theorem 3の証明指数変数の和のGamma尺度混合を確認。今回のErlangへの縮約を構成する既知部分。
[77]
2022稿/v7 2024
Xiaojun Chen, Yifan He & Zaikun Zhang — Tight Error Bounds for the Sign-Constrained Stiefel Manifoldv7(2024 05 19)本文・§3.2 Lemma 7、Remark 2各行の最大座標だけを残す丸めと、非負直交制約への因子距離評価。今回の多群・釣り合い・Gram成分和・最良係数との比較対象。
[78]
2019
Qi-Ming He, András Horváth, Illés Horváth & Miklós Telek — Moment bounds of PH distributions with infinite or finite support based on the steepest increase property
DOI
公開著者稿を取得、Lemma 1・2、Corollary 1と導出を確認Advances in Applied Probability 51(1):168–183。密度の増加率、確率順序、モーメント境界。前段階の「本文未取得」から更新。任意の非単調測定核の最適化とは同一視しない。
[79]
2018
Timothy H. Hughes — On the internal signature and minimal electric network realizations of reciprocal behaviors
DOI
公開本文の定理8・9、Remark 10、行列・多ポートの設定を確認。RLCTクラスの素子数最小化。今回との差は許す部品・非負性の制約。スカラー限定の研究ではない。
[80]
2009
Metzner, Schütte & Vanden-Eijnden — Transition Path Theory for Markov Jump Processes
DOI
定理2.9、式(2.21)、反応率と§2.6の電気回路対応を本文確認。容量×p(1−p)の占有量と流束の関係。容量・平均遅延恒等式の既知理論上の根拠。
[81]
2022
Benoît Roux — Transition rate theory, spectral analysis, and reactive paths
DOI
公開本文p.134111-5、式(24)の後の平均反応経路時間を確認。平均時間=占有量/流束を明示。平均時間の恒等式を新規と扱わない独立の裏付け。
[82]
1998
Vandenberghe, Boyd & El Gamal — Optimizing Dominant Time Constant in RC Circuits著者公開本文、モデル・目的・RCメッシュの大きさと時定数の関係を確認。実設計における容量・応答速度の制約。今回の観測値・全配線共通の下界とは異なる最適化。
[83]
1970
Hagopian & Frisch — Capacitance and resistance minimization in one-port RC networks
IEEE Trans. Circuit Theory CT-17, 386–392.
書誌と検索情報のみ。中心本文を取得できていない。容量最小化の古典的先行研究候補。同値性・包含関係は未判定。
[84]
1971
Boesch & Hagopian — Minimum total capacitance RC realizations
IEEE Trans. Circuit Theory CT-18(2), 286–288.
書誌確認元:Rathoreらの参考文献42
後続論文の参考文献で書誌確認。原論文の中心本文は未取得。総容量最小化の直接的な比較候補。今回の残差下界・二指数構成の先取性を主張する前に本文照合が必要。