Files
FESADev/docs/hht-implicit-dynamics/formulation-fixed-null-basis.md
T

517 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 고정 초기 null 기저의 sparse reduced HHT 정식화
읽기 구분: 현재 고정 null 기저·sparse lift·augmented scaling의 수식 원본이다. [축소 좌표](formulation-reduced-coordinate.md)를 전제로 읽는다. 아래 인계 당시의 대기·미구현 표현은 그 시점의 기록이며 현재 구현·검증은 [기능 요약](README.md)을 따른다.
본문의 검토·ADR·N1–N7 등 과거 기록명은 당시 근거의 식별명이며, 이 문서의 현재 요약 링크가 원자료 전문을 제공한다는 뜻은 아니다.
작성 당시 상태: `implementation-ready; independent-review-and-runtime-pending`, 2026-10-13.
승인 범위는 `고정 null 기저 제안`과
`HHT-ADR-018`([현재 요약](README.md))의 사용자 결정이다. 본 문서는 수식·연산 계약이며
자기 수치 승인이나 현재 production PASS 기록이 아니다.
[기존 축소 정식화](formulation-reduced-coordinate.md)의 fully-free rotation
component selector를 아래 고정 ON 기저로 대체한다. 기존
`N1–N7`, `제한 Newton`,
`독립 검토`와 허용값은 유지한다.
## 1. 적용 가정과 물리 계약
Total Lagrangian MITC4, 큰 변위·유한회전·작은 탄성 변형률, 등방 선형 탄성,
선택한 drilling potential, `nodal-lumped-kinetic`, 기존 공간 적분·두께 적분과
fixed-initial total rotation vector를 유지한다. 재료 history update는 없다.
관성·내력·공간 각속도·단면력은 [기존 물리 정식화](formulation.md)와
[관성 상세](formulation-inertia.md)가 소유한다. 좌표 변경은 constitutive law,
mass measure, drilling stiffness 또는 recovery formula를 바꾸지 않는다.
2026-10-20 기본 직접 스프링은 별도로 승인한 numerical potential 변경이다.
고정 기저·partial-BC 교집합·graph/rate 복원·regularity 계약은 유지하며, hidden primitive만
직접 힘과 실제 cubic 관성 null에서 일관되게 계산한다. 기존 objective twist를 선택하면
그 현행 계산과 판정을 보존한다. 현재 null을 초기 director로 고정하거나 partial BC를
full clamp로 바꾸어 새 스프링의 rank/regularity 실패를 피하지 않는다.
Full node-major ordering은 `q_i=(u_x,u_y,u_z,phi_X,phi_Y,phi_Z)`다.
`u`: length, `phi`: rad, `v=dot q`, `a=ddot q`이며 `v_phi`와 `a_phi`는
공간 각속도·각가속도가 아니다. Zero fixed BC를 제거한 공간에서
\[
E=I(q,v,a)+g(q,t),\quad I=M(q)a+c(q,v),\quad
g=f_{int}(q)-F(t),\quad \delta q^T E=0. \tag{FB-01}
\]
Residual 부호는 internal+inertia−external이고 Newton RHS는 −residual이다.
공개 CLOAD는 constant global force이고 damping/follower load/nonzero BC/initial
condition 입력을 확대하지 않는다. `Fdot,Fddot`는 C08a private oracle에만
사용하며 원 analytic 시간미분을 보존한다. 이 변경은 continuous equation의
roots를 유지하는 **승인된 private 좌표 시간 이산화 변경**이다.
## 2. 고정 기저와 혼합 chart
Frame0의 actual rotation kinematics에서
\[
n_{raw}=J_l(\phi_0)^{-1}d(\phi_0),\quad
n_0=n_{raw}/\|n_{raw}\|_2,\quad
k=\arg\min_{X,Y,Z}|n_0[k]|,
\]
\[
b=e_k-(e_k^Tn_0)n_0,\quad t_1=b/\|b\|_2,\quad
t_2=n_0\times t_1,\quad B_p=[t_1,t_2],\quad B_z=n_0. \tag{FB-02}
\]
Exact tie는 X,Y,Z 순서다. Norm은 finite positive이며 scaled sum-of-squares를
사용한다. `||b||>=sqrt(2/3)`이므로 tiny-vector fallback/floor는 필요 없다.
기존 `1e-12` ON/Gram 검사를 적용한다. Model director/phi를 정규화하지 않고
reference geometric director를 actual analytic null 대신 사용하지 않는다.
기저는 run 내 불변이며 current null에 맞추어 회전·pivot 변경·rechart하지 않는다.
| 절점의 실제 free rotation/null | 고정 분해 |
| --- | --- |
| 세 회전 모두 free, admissible analytic null 1개 | `phi=Bp p_rot+Bz z`, 두 angular p와 한 z |
| 부분 회전 BC, admissible null 1개 | 기존 maximum-null-component pivot 및 component selector 유지 |
| 부분 회전 BC가 null을 절단하여 admissible null 0개 | 모든 free component를 p에 유지 |
| 세 회전 fixed | rotation private unknown 없음; exact prescribed0 유지 |
Null 교집합은 기존 exact component 계약이다. Tiny constrained null 성분을
0으로 자르지 않는다. Initial admissible-node inventory와 각 trial inventory가
달라지면 fixed-rank branch 실패다. Partial global BC를 `p_rot`의 같은 번호에
복사하면 다른 BC가 되므로 금지한다. 일반 partial-BC frame covariance는 주장하지 않는다.
Full에 대한 constant sparse injection을 `Lp,Lz`로 표기한다. 병진과 기존
component-chart 열은 identity support, 고정 plane 열은 세 global rotation
성분 support다. Constrained rows는 exact0이고 free 공간에서
\[
q= L_p p+L_z z,\quad L_p^TL_p=I,\quad L_z^TL_z=I,\quad
L_p^TL_z=0,\quad L_pL_p^T+L_zL_z^T=I_f. \tag{FB-03}
\]
이는 exact-arithmetic identity이며 stored binary64 Gram은 기존 gate로 검산한다.
Production full dense basis matrix는 요구하지 않는다. Projection `Lp^T y`,
lift `Lp x+Lz w` 및 `Lp^T K Lz` 등은 동일 sparse support의 source-ordered
product/sum이다. 한 full DOF가 두 p 및 한 z에 기여할 수 있으므로 direct index
scatter나 one-index reverse map으로 대체하지 않는다.
Private column metadata에는 immutable canonical node/source identity,
`U`/`angular` channel, full support와 coefficient, fixed-plane/component-chart
구분을 둔다. z/constraint rows는 initial null-node canonical order다.
정확 저장 타입은 구현 owner가 결정한다. Plane column 번호를 full DOF 번호로
간주하거나 `%6`로 channel을 판정하지 않는다. Public equation/source identity는
기존 DofManager 계약이며 private ordering을 영속 결과에 노출하지 않는다.
Proper `Q`에서 `n0'=s Q n0` (`s=±1`)이면 retained planes 사이
`T2=Bp'^T Q Bp∈O(2)`, `p_rot'=T2 p_rot`, `z'=s z`다.
`Bp'=Q Bp` 자체는 필수 조건이 아니다. Axis/tie 선택이 달라도 이 전환은
상수 선형이며 HHT recurrence와 exact arithmetic에서 commute한다. Floating
rounding·infinity norm·mode branching의 실제 `1e-10` 통과는 별도 검증이다.
## 3. Graph, hidden rates와 서로 다른 regularity
Current normalized analytic null의 lift를 `N(q)`로 둔다. 물리 inertia의 null
identity `N^T I=0`와 기존 direct scalar primitive
\[
\psi=N^Tg=N^TE,\quad C=\psi_q,\quad G=C L_z,
\]
\[
G z_v=-C L_p v_p-\psi_t,\quad v=L_pv_p+L_z z_v,
\]
\[
G z_a=-C L_p a_p-\psi_{qq}[v,v]-2\psi_{qt}v-\psi_{tt},
\quad a=L_pa_p+L_z z_a \tag{FB-04}
\]
를 사용한다. Position graph `psi(Lp p+Lz z,t)=0`은 coupled global solve다.
Gradient/Hessian/third·external time-mixed terms는 기존 RC-02, RC-13–15의
analytic primitive를 그대로 사용하고 모든 injection을 FB-03으로 일반화한다.
Shared node external term은 한 번만 추가한다. Numerical FD는 production tangent가 아니다.
검사는 다음처럼 분리한다.
| Operator / 조건 | 의미 |
| --- | --- |
| `G=psi_q Lz` 및 기존 `W^-1 G W^-1` conditioning | 선택된 graph의 implicit derivative/rate solve 가능성 |
| `N(q)^T Lz`와 아래 normalized spanning matrix S | selector residual의 full-root equivalence와 정량적 횡단성 |
| `psi_q N(q)`의 N4 null-coordinate conditioning | 실제 moving null 방향의 물리 대수 regularity |
| `J=Lp+Lz z_p` rank, `J^T M J` positivity 및 기존 mass/N4 검사 | 축소 물리 range의 비퇴화 |
여기서 `W_i=sqrt(k_i)`, `k_i=N_i^T Kdrill_metric N_i>0`는 원 N4 scale다.
G 검사와 moving-null 검사는 기존 `2^-32` 정책·finite-first·실제 operator로
수행하며 하나의 PASS를 다른 operator의 PASS로 승계하지 않는다.
Node-local `N^T Lz`는 fixed-plane node의 `n(q)^T n0`, component node의 원
nonzero pivot component다. Exact0/nonfinite는 실패다. 작은 비영 내적의 정량적
검사는 `D_f`를 N1의 free-row scale로 둔 다음 무차원 square matrix에서 수행한다.
\[
S=[D_f^{-1}L_{p,f}D_p,\ D_f^{-1}N_f(q)],\qquad
rcond_\infty(S)=1/(\|S\|_\infty\|S^{-1}\|_\infty)\ge2^{-32}. \tag{FB-04a}
\]
S의 all-free angular block은 `[t1,t2,n(q)]`이고 부분 null block은
`[retained component axes,n_free(q)]`, null이 없는 block은 identity다.
병진 열은 ell로 정규화되어 identity다. Canonical node/block 순서의 inverse-action
solves로 S와 inverse의 최대 row-sum을 계산하고 global dense inverse는 만들지 않는다.
1×1 `N^T Lz`의 rcond는 비영일 때1이므로 작은 횡단각을 검출하지 못한다.
S 대신 `S^TS`에 동일 threshold를 대입하면 conditioning 의미가 바뀌므로 하지 않는다.
이 검사는 기존 `2^-32` 기준을 새 fixed-plane complement의 실제 normalized operator에
적용한다. 임의 cosine cutoff를 추가하지 않는다. G/moving-null/range 검사는 별도다.
Principal `||phi||<pi`는 횡단성을 보장하지 않는다.
Full-root 동등성: `Ep=Lp^T E=0`이면 FB-03으로 `E=Lz e_z`이고
`psi=N^T E=(N^T Lz)e_z=0`이다. `N^T Lz`가 가역이면 `E_f=0`이다.
`G`가 가역이라는 사실만으로 이 논증을 대체할 수 없다. 이 selector Newton은
`J^TE`의 exact Newton RC-11과 root가 같지만 off-root correction은 다르다.
Hidden residual은 `psi0=psi`, `psi1=Cv+psi_t`,
`psi2=Ca+psiqq[v,v]+2psiqt v+psitt`다. Raw defect와 원 uncancelled scale
`S0=sum |N| s_full`,
`S1=sum |C_i v_i|+|psi_t|`,
`S2=sum |C_i a_i|+sum |H_ij v_i v_j|+2sum |psiqt_i v_i|+|psitt|`
를 같은 units로 기록한다. S0의 `s_full`은 N2의 원 element/load 상쇄 전 scale다.
Basis로 축소한 force나 취소된 graph RHS를 scale로 대신하지 않는다. 초기 gate,
endpoint hidden0 gate 및 C08a hidden1/2 판정은 원 N3/ADR-015 그대로이며
새 무조건 hidden1/2 Newton 종료 gate를 추가하지 않는다.
## 4. Augmented exact tangent와 스케일
`cv=gamma/(beta h)`, `ca=1/[(1+alpha)beta h²]`, `Kq=Iq+Kint`, `Kv=Iv`다.
현 승인 load의 q derivative는0이며 새로운 follower-load 항은 없다.
같은 trial에서 `Wext=(v,1)`이고
\[
V=\psi_{qq}v+\psi_{qt},\qquad
H=\psi_{qq}a+D^3\Psi[\,\cdot,W_{ext},W_{ext}].
\]
Unknown `d=(delta p,delta z,delta vz,delta az)`의 **물리 단위** block은
\[
K_{aug}=\begin{bmatrix}
L_p^T(K_q+c_vK_v+c_aM)L_p&L_p^TK_qL_z&L_p^TK_vL_z&L_p^TML_z\\
CL_p&CL_z&0&0\\
(V+c_vC)L_p&VL_z&CL_z&0\\
(H+2c_vV+c_aC)L_p&HL_z&2VL_z&CL_z
\end{bmatrix}. \tag{FB-05}
\]
Actual Newton trial은 graph/rate를 먼저 복구하므로 production solve RHS는
`baug=(-Ep,0,0,0)`인 기존 tangent-on-graph 정책이다. 측정된 hidden roundoff를
production auxiliary RHS에 넣어 endpoint를 polishing하지 않는다. N7 fresh full
defect RHS는 별도로 `(-Ep,-psi0,-psi1,-psi2)`를 모두 포함한다.
N1의 `D=diag(ell I3,I3)`와 channel metadata에서
`Dp=diag(ell for U,1 for angular)`를 정의한다. z는 rotational rad이고
\[
S_x=\operatorname{diag}(D_p,I,h^{-1}I,h^{-2}I),\quad
S_r=\operatorname{diag}(D_p,I,hI,h^2I),
\]
\[
\widehat K=S_rK_{aug}S_x,\quad \widehat b=S_rb_{aug},\quad
\widehat d=S_x^{-1}d,\quad \widehat K\widehat d=\widehat b. \tag{FB-06}
\]
Scaled row units는 모두 energy다. First physical row는 N1의 virtual-work
scale이고 hidden1/2 행은 각각 h/h²를 곱한다. Scaled auxiliary unknowns는
`delta z,h delta vz,h² delta az`다. h/ell은 finite positive여야 하며 nonzero
scale underflow/overflow는 실패다. 역변환 `d=Sx dhat` 후 다음 map을 적용한다.
별도 adaptive equilibration/floor를 도입하지 않는다.
\[
\delta q=L_p\delta p+L_z\delta z,\quad
\delta v=L_pc_v\delta p+L_z\delta v_z,\quad
\delta a=L_pc_a\delta p+L_z\delta a_z,
\]
\[
\delta Ar=\delta p/(\beta h^2),\quad
\delta A_{full}=(1+\alpha)\delta a. \tag{FB-07}
\]
N2-L의 분자/분모는 **실제로 factor/solve한 operator**에서
`||Khat dhat-bhat||inf / || |Khat||dhat|+|bhat| ||inf`, 원 `1e-12`다.
정식화 작성 당시 read-only source는 raw `Kaug,baug`를 전달했다. 현재
`AssembleAugmentedReducedSystem`은 FB-06의 row/unknown scaling을 구성하고
`MapAugmentedCorrection`이 물리 보정을 복원한다. 구현의 존재와 해당 revision의
focused/full runtime 검증은 구분하며 현재 범위는 [기능 요약](README.md)을 따른다. Full physical N2 residual/correction은 기존 global
free channels에서 FB-07로 평가하며 selector `Ep`만으로 endpoint를 통과시키지 않는다.
ADR-017 restricted operator는 **actual scaled** `Khat[J,J]`이며 J에는 angular p와
모든 z/vz/az 및 hidden rows를 보존한다. Omitted U unknown은 exact0으로 embed하고
scale undo한다. Metadata를 trigger/copy/thaw/CA/N7가 공통으로 사용한다.
Trigger의 initial explicit correction0, U 네 mapped metric/private-Ar gate,
phi residual 실패, U thaw, combined100과 failure rollback은 원 계약 그대로다.
## 5. 초기화·시간 update·표현 evidence
Frame0의 independently initialized full `q0/v0/a0/A0`, force와 accepted frame는
원본 그대로 보존한다. Private initialization은
`p0=Lp^T q0`, `z0=Lz^T q0`, `vp0=Lp^T v0`, `ap0=Lp^T a0`, `Ar0=ap0`이며
`Lz^T v0/Lz^T a0`는 rate roundtrip evidence에도 사용한다. 이 projection은 private
좌표 표현 변환이다. Lift/reconstructed state를 original frame0에 덮어쓰거나
초기 acceleration/force를 보정하는 projection은 금지한다.
공개 `q0=v0=0`에서는 원 exact q/v 초기 검사·constrained0이 그대로 성립하며
이 exact gate를 유지한다.
비영 q0/v0의 private fixture는 basis product/sum과 roundtrip defect/radius를
별도로 기록하며 새 공개 initial-condition 지원이나 arbitrary roundtrip tolerance를
추론하지 않는다. Original 및 reconstructed a0의 full N2, hidden0/1/2, G와
moving-null/range evidence를 각각 검사한다. Independent solves가 bitwise 같은
a0를 반환한다고 가정하지 않는다. 기존 gate 실패는 fail-closed다.
이력은 private `(p,vp,ap,Ar,z_seed)`이고 `s=beta h²`, `r=gamma h`, `k=1+alpha`로
\[
p_{pred}=p_n+h v_{p,n}+h^2(1/2-\beta)Ar_n,\quad
v_{pred}=v_{p,n}+h(1-\gamma)Ar_n,
\]
\[
Ar_{n+1}=k a_{p,n+1}-\alpha a_{p,n},\quad
v_p=v_{pred}+rAr,\quad a_p=(Ar+\alpha a_{p,n})/k. \tag{FB-08}
\]
Production carried-Ar update는 `delta Ar=delta p/s`를 실제 가산한다.
Graph/rates는 갱신된 p와 같은 endpoint 시간에서 매 trial 재평가하고 FB-04로 full
q/v/a를 복구한다. z/vz/az corrections는 same-trial 보조변수이며 독립 history가 아니다.
Public `Afull=k a-alpha a_old` (`Afull0=a0`)는 full-chart diagnostic filter이며
private Ar나 `Lp Ar`를 대입하지 않는다. State/history/recovery는 검증 후 함께 commit한다.
첫 predictor/old-p 시작 비교와 genuine geometry failure 제한 fallback도 유지한다.
Accepted private p/vp/ap/Ar를 매 increment full q/v/a에 재투영하여 생성하지 않는다.
Initial 한 번의 projection과 이후 private history recurrence는 다른 연산이다.
N3 private p pair는 actual `(p_high+p_low)-old_accepted_high`의 whole/requested
increment를 EFT로 검사한다. Old accepted low를 암묵적으로 history에 더하지 않는다.
Absolute private 검사는 `p_high≈p_pred+s Ar`, `vp≈v_pred+r Ar`,
`k ap≈Ar+alpha ap_old`다. Pair의 whole 우변은
`h vp_old+h²(.5-beta)Ar_old+s Ar`이며 scale는 이 세 항의 절댓값 합이다.
Requested 우변은 actual start-offset/각 correction의 independent trace sum과
compensation이며 scale는 trace 원 항의 상쇄 전 절댓값 합이다.
Global lift 검사는 `q≈Lp p_high+Lz z`, `v≈Lp vp+Lz zv`,
`a≈Lp ap+Lz za`의 actual product/sum이다. 모든 global phi에
`q=q_pred+s Afull`을 강제하지 않는다. Dependent z에는 그 Newmark 식이 적용되지 않는다.
Private high는 pair의 RN-even인지 별도로 검사한다. Global q는 sparse lift의
product/sum 결과이며 plane coordinate high를 public global component와 동일시하지
않는다. Global reconstruction absolute defect, actual full A filter identity,
constrained exact0, 원 uncancelled scale/`1e-12`/scale0 exact-zero를 각각 보존한다.
Pair low를 global state에 새로 주입하는 운용은 추가하지 않는다.
보정의 기존 private-Ar consistency는 `k delta ap`와 `delta Ar`를 원
`1e-12`/`|delta Ar|` 및 scale0 exact-zero로 검사한다. Component chart의 기존
mapped full-A consistency도 보존한다. 추가 basis-lift consistency는
`Lp^T delta Afull`과 `delta Ar`를 비교한다.
각 p열 i에서 분자는 `|sum_j Lp[j,i]*delta Afull[j]-delta Ar[i]|`이고 분모는
`sum_j |Lp[j,i]*delta Afull[j]|+|delta Ar[i]|`다. 원 `1e-12`, finite-first,
scale0 exact-zero를 적용한다. 먼저 상쇄한 projection을 분모로 사용하지 않는다.
이 추가 검사는 rounded Gram leakage를 포함하며 identity column에서도 분모가
기존 private gate와 다르므로 기존 gate의 동일 표현이나 대체로 해석하지 않는다. 별도로 실제
`delta Ar=delta p/(beta h²)` recurrence, FB-07의 global mapped delta A 및
`delta ap=ca delta p`, `k delta ap=delta Ar`, FB-08/full-A absolute update 검사를
유지한다. Private recurrence에 `Lp^T full delta a`를 새 exact-zero 요구값으로
사용하지 않는다. Algebraic leakage가 섞이는 projection과 private rate는 다르다.
하나의 검사로 다른 검사를 대신하지 않는다.
CA는 [기존 primitive radius](formulation-carried-a-noise.md)를 따라 actual initial
projection, basis 구성계수의 측정오차, 각 sparse product/sum, predictor/seed,
모든 correction 가산, graph/rate/full-A 재구성과 history 상속을 추적한다.
Bound 자체의 rounding도 보수적으로 포함한다. Stored basis를 exact input으로
고정한 CA와 ideal analytic basis의 차이는 별도 증거이며 전자만으로 후자를
인증하지 않는다. Basis coefficient uncertainty를 매 step0으로 reset하지 않는다.
Graph/primitive assembly 산술 INDICATOR와 fixed-operation-path history bound도
구분한다. Restricted U는 high/low/Ar/vp/ap·trace·radius를 bitwise copy하고
zero 보정 EFT/Neumaier를 호출하지 않는다. Inherited U radius는 downstream
graph/rates에 남는다. Index-only radius의 과거 증명이나 frozen-step bound를
새 whole-history 증명으로 승계하지 않는다.
### 5.1 고정 basis coefficient radius의 실행 계약
실용적인 certificate의 입력은 frame0에서 이미 계산된 actual analytic
`drill_null`의 세 binary64 값이다. 이 입력은 exact로 고정하여 `Braw=0`으로
시작한다. 비교 대상은 **그 저장된 입력에 FB-02를 exact arithmetic으로 적용한
기저**다. 전체 FE/AD/kinematics가 이상적인 real-input null을 얼마나 정확하게
계산했는지의 rigorous bound를 주장하지 않는다. 그런 입력 radius가 별도 근거로
주어지면 아래 `Bx`에 상속할 수 있지만 새 public API나 필수 지원범위를 만들지 않는다.
Normalize에 필요한 norm은 production/controller가 동일한 명시적 연산으로
계산한다. `hat`은 actual rounded value, `B`는 같은 fixed-path exact target의
component radius다. 세 성분에서
\[
m=\max_c|\hat x_c|>0,\quad
\hat y_c=fl(\hat x_c/m),\quad
\hat s=fl(fl(fl(\hat y_0^2)+fl(\hat y_1^2))+fl(\hat y_2^2)),
\]
\[
\hat r=fl(\sqrt{\hat s}),\qquad \widehat{norm}=fl(m\hat r). \tag{FB-CA-01}
\]
m은 이 replay에서 선택한 exact binary64 scale로 고정하여 `Bm=0`으로 둔다.
변동된 ideal x에도 같은 positive m을 사용하는 scaled norm의 수학적 값은
`||x||2`이므로 max branch의 perturbation 미분은 필요 없다. 각 division/product/sum의
radius는 CA-03으로 순서대로 전파한다. Finite positive m·norm, `hat s-Bs>0`을
요구하며 floor나 fallback norm을 넣지 않는다. Absolute value/max는 유한한 stored
입력의 exact branch operation이다. Product 자체는 `pow` 대신 실제 multiply다.
Sqrt는 확인된 실행환경의 correctly-rounded IEEE operation으로 취급한다.
`epsilon_r=rho(hat r)`는 CA-02의 실제 sqrt rounding bound다. 보수적인 간단한 식은
\[
d_{sqrt}=\hat r-\epsilon_r>0,\qquad
B_r\le B_s/d_{sqrt}+\epsilon_r,\qquad
B_{norm}\le |m|B_r+\rho(\widehat{norm}). \tag{FB-CA-02}
\]
이는 `|sqrt(s*)-sqrt(hat s)|=|s*-hat s|/(sqrt(s*)+sqrt(hat s))` 및
`sqrt(hat s)>=hat r-epsilon_r`의 보수적 bound다. Denominator는 lower enclosure,
분자와 최종 radius는 upper enclosure로 계산하여 radius 산술 자체의 rounding을
포함한다. 더 날카로운 denominator를 쓰려면 두 sqrt의 검증된 lower enclosure가
필요하다. FTZ/DAZ 또는 subnormal sqrt/product를 지원할 때는 원 CA-02의 eta와
실제 실행 의미를 확인한다. 확인되지 않은 연산의 `1u` 오차를 가정하지 않는다.
기존 opaque `std::hypot`를 유지한다면 그 실제 norm의 독립 enclosure가 필요하며,
FB-CA-01의 radius를 다른 hypot 연산 경로의 증거로 승계하지 않는다.
계수 생성은 actual FB-02의 순서를 그대로 replay한다: `n=raw/norm(raw)`,
선택된 k에서 `b_c=e_k[c]-n_k*n_c`, `t1=b/norm(b)`,
`t2_c=n_i*t1_j-n_j*t1_i` (cyclic c,i,j)다. `e_k`의0/1은 exact 입력이고,
division은 `|hat denominator|-Bdenominator>0`을 요구한다. 각 operation의
CA-03과 FB-CA-01/02로 얻는 radius를 `BLp[c,i]`, `BLz[c]`로 보존한다.
FMA를 실제 사용하면 multiply/add 둘의 임의 replay 대신 그 actual fused operation의
rounding contract를 사용한다. 선택된 k와 tie/source order는 고정 path metadata다.
Exact target도 같은 k를 사용하며 다른 ideal min-axis branch의 민감도는 이
certificate 범위 밖이다. 전체 initial Gram/finite gate는 별도로 유지한다.
각 sparse basis action의 product `hat w=fl(hat L*hat p)`에서
\[
B_w\le |\hat L|B_p+|\hat p|B_L+B_LB_p+\rho(\hat w) \tag{FB-CA-03}
\]
를 적용하고 actual canonical sum 또는 compensated sum의 모든 연산 radius를
누적한다. Initial projection `Lp^T q0/Lz^T q0/Lp^T v0/Lp^T a0`, global lift,
mapped correction 및 rate reconstruction에서 같은 coefficient와 BL을 사용한다.
`BL`은 불변 basis와 함께 history 전체에 보존하며 step 시작에0으로 재설정하지 않는다.
`hat L=0`이어도 `BL>0`이면 `|hat p|BL` 항이 남으므로 해당 coefficient의 radius
support를 버리지 않는다. 기존 identity component 열의 exact0/1 coefficient는 `BL=0`이다.
Constrained rows는 실제 basis support 밖의 exact0이며 불필요한 rounding radius를
만들지 않는다. Basis construction certificate, graph arithmetic INDICATOR,
solve noise 및 whole-history recurrence certificate는 서로 다른 증거다.
구현 검산은 stored binary64 raw input과 actual selected branch/operation 순서에 대한
독립 고정밀 또는 interval replay로 coefficient마다 `|hat L-L*|<=BL`을 확인한다.
Nonzero phi null, min-axis tie, 작은/큰 norm scale, coefficient0의 nonzero BL,
projection/lift 및 inherited radius omission을 포함한다. 이 검산은 생산 state나
원 reference를 수정하는 polishing이 아니다.
고정 basis radius는 graph contraction과 solve에도 전달한다. 이 경로의 정확한
scope는 endpoint에서 저장된 `C=psi_q`, Hessian/time/third 계수를 exact input으로
고정한 **fixed-operator arithmetic indicator**다. C/AD 자체의 ideal input 오차나
nonlinear graph/root의 전체 forward error를 엄밀히 포함한다고 주장하지 않는다.
그 scope 안에서는 다음 linear solve radius를 검증된 bound로 구성할 수 있다.
각 entry의 `G=C Lz`, `P=C Lp` product/sum은 FB-CA-03으로 계산한다.
Stored C 계수에는 `BC=0`을 적용하지만 `BL`과 actual contraction rounding은
유지하여 `|G*-hat G|<=BG`, `|P*-hat P|<=BP`를 entrywise로 얻는다.
`*`는 같은 stored operator를 ideal fixed basis와 fixed inputs에 적용한 값이다.
Initial rate partition, `P vp/P ap`, first/second/third implicit derivative,
rate reconstruction의 반복 contraction마다 같은 inherited BL/BG/BP를 사용한다.
RHS의 `P vp`에는 `|hat P|Bvp+|hat vp|BP+BP Bvp`와 actual product/sum rounding을
포함한다. Hessian/time contraction도 저장된 계수는 고정하되 이미 얻은 v/a 등의
input radius와 실제 product/sum을 전파한다. C를 고정한다는 scope가 basis product
radius나 input history radius를0으로 놓는 근거는 아니다.
실제로 푼 matrix와 RHS를 `hat G,hat b`, computed solution을 `hat x`로 둔다.
Small private verification chart에서는 다음 inverse-action certificate를 구성한다.
각 canonical unit RHS의 actual solve로 얻은 approximate inverse columns를 R에
보존하며 기존 finite/N2-L 검사를 유지한다. **R은 exact inverse가 아니다.**
R의 stored entries를 exact inputs로 보아 `I-hat G R`의 각 product/sum을 replay하고,
반올림을 포함하는 nonnegative enclosure와 norm을 계산한다.
\[
\overline H\ge|I-\hat G R|,\quad
\theta_H=\|\overline H\|_\infty<1,\quad
c=|R|\overline H\mathbf1,
\]
\[
Q_{ij}=|R_{ij}|+c_i/(1-\theta_H)
\quad\Longrightarrow\quad Q\ge|\hat G^{-1}|. \tag{FB-CA-04}
\]
이는 `H=I-hat G R`, `hat G^-1=R(I-H)^-1=R sum_(k>=0) H^k`의 Neumann
bound다. `thetaH<1`은 center G의 invertibility도 인증한다. 각 inverse entry의
tail은 `( |R| Hbar 1 )_i/(1-thetaH)` 이하이므로 computed R의 forward accuracy를
별도로 가정하지 않는다. Q 산술은 upper enclosure, `1-thetaH`는 positive lower
enclosure로 계산한다. 보통 N2-L을 통과한 small inverse-action이면 tail이 작지만
N2-L PASS 자체를 이 certificate의 대체로 사용하지 않는다.
RHS에 `|b*-hat b|<=Bb`가 있고 matrix uncertainty가 BG일 때 actual stored x에
대한 residual도 actual product/sum rounding을 포함해 검산한다.
Bb는 실제 RHS의 P/input/time/Hessian contraction replay에서 얻으며 이미
상쇄된 최종 RHS의 크기만으로 추정하지 않는다. Center residual은 stored G/b/x를
exact inputs로 둔 `rhat=fl(bhat-Ghat xhat)`의 실제 연산 replay에서 Br를 얻어
`rbar_i=|rhat_i|+Br_i`로 계산한다. Product·각 sum/compensation의 상쇄 전 rounding
항을 유지하며 N2-L의 작은 normalized residual을 raw absolute radius로 대신하지 않는다.
\[
\overline r\ge|\hat b-\hat G\hat x|,\quad
y=Q(\overline r+B_b+B_G|\hat x|),\quad
A=Q B_G,\quad\theta_G=\|A\|_\infty<1,
\]
\[
B_{x,i}=y_i+(A\mathbf1)_i\,\|y\|_\infty/(1-\theta_G)
\quad\Longrightarrow\quad |x_i^*-\hat x_i|\le B_{x,i}. \tag{FB-CA-05}
\]
실제로 `G* x*=b*`에서 `|x*-hat x|<=y+A|x*-hat x|`가 성립하고,
그 infinity norm은 `||y||inf/(1-thetaG)` 이하이므로 위 component bound가 따른다.
모든 component에 이 uniform norm을 적용해도 유효하지만 FB-CA-05는 row별
`y_i`와 `A` row sum을 보존한다. Actual linear residual, uncertain basis matrix와
RHS radius를 모두 포함하고, `BG|hat x|`나 perturbation feedback A를 누락하지 않는다.
이 계산도 finite-first·upper radius·positive lower denominator 규칙을 적용한다.
Matrix/unknown scaling을 사용하는 경우 G/R/BG/b/x는 **같은 actual solve 표현**에서
계산한 뒤 physical rate radius로 scale undo한다.
두 `theta<1`은 bound의 수학적 성립조건이며 새 acceptance tolerance가 아니다.
Norm의 upper enclosure가1 이상이거나 positive denominator를 증명할 수 없으면
indicator certificate는 incomplete/INCONCLUSIVE다. 임의 floor, pseudoinverse,
radius0, tolerance 완화로 통과시키지 않는다. 원 G/N4 regularity 및 N2-L gate는
그대로이며 일반 production에 새 inverse/R 저장/public API를 요구하지 않는다.
C08의 null1/null4 같은 작은 private chart에서 finite dense R/Q를 사용하는 것은 검증 실행의 책임이다.
Empty G는 원 empty-null exact branch로 처리한다. 이 frozen-operator bound를
전체 nonlinear/AD/branch-sensitive trajectory의 rigorous error bound로 승계하지 않는다.
## 6. N7과 독립 검증의 함의
Last full K/RHS와 actual selected K/RHS, actual correction은 같은 trial을 authority로
보존한다. Fresh accepted full operator는 별도 authority다. Restricted-last는
`eL=KJ dhatJ-bJ`, `KJ zL=-eL`을 zero-U embed하고,
`eM=Kfull dhatfull-bfull`, `Kfull zM=-eM`을 omitted-U/hidden 전체 행에서 푼다.
Fresh endpoint는 FB-05/06과 `(-Ep,-psi0,-psi1,-psi2)`에서 zN을 푼다.
Full-last는 actual correction/zL/zN 세 항, restricted-last는
actual correction/zL/zM/zN 네 항이다.
각 vector는 actual scaling을 undo한 뒤 FB-07로 q/v/a/Ar/A에 sparse map하고,
원 length/time/case amplitude와 global channel/node에서 각 norm을 **먼저** 구한
뒤 합한다. 다른 vector를 상쇄한 뒤 norm을 구하지 않는다. Full-last에서 zM=zL을
이중 계산하지 않는다. 모든 defect solve에 각 actual domain의 finite/N2-L을 요구하며
full defect solve 실패를 restricted 성공으로 대신하지 않는다. Read-only 해를 state에
적용하지 않는다. Factor100·FAIL/INCONCLUSIVE와 grid간 radius 합산을 유지하고,
보수성 때문에 factor100을 만족하지 못해도 항을 삭제하거나 clamp하지 않는다.
독립 검증에 필요한 새 경계는 다음과 같다.
- Nonzero initial analytic null, minimum-axis tie, ON Gram, constant O(2)
frame transition, sparse projection/lift/transpose action과 exact constrained0.
- 독립 소형 dense 계산과 FB-05/06/07 전체 block 비교, actual scale undo,
mixed-time third 항, G와 `N^T Lz`/S를 각각 퇴화시키는 사례, partial-BC rank-change 거부.
- Frame0 원본 보전, private pair/RN-even와 global reconstruction의 구분,
basis product/sum omission mutation, CA 초기 projection/history/rate-copy 대응.
- Actual N7 aggregator의 전체 auxiliary/omitted-U defect omission mutation,
full-last 세 항/restricted-last 네 항, trigger/thaw/combined100/rollback.
- Genuine nonzero-C1/warped/shared-node N5, 자연 C09 전체 trajectory/proper-Q/결정론,
2/4/8-step 진단, C08a7/C08b8 원 grid/hidden/physical q-v-a/P-E-L/N7,
configured full Debug/CTest와 원101-frame reference. 실행은 fresh source identity에 연결한다.
정식화 인계 당시 남긴 확인 항목: actual diagonal scaling, 비영 private 초기상태 roundtrip 운용,
새 basis coefficient CA, condition/transversality 실측 및 전체 runtime 항목은
implementation owner와 독립 review의 확인 대상이었다. 현재 구현 존재와 최신 검증의
구분은 [기능 요약](README.md)을 따른다. 새 tolerance/physics/schema/reference
변경은 정하지 않았다. Empty null은 원 full-coordinate HHT로, all-fixed는 empty
free solve와 원 full reaction으로 환원한다. 문서 정적 대조만 수행했으며
build/test·외부 solver는 실행하지 않았다.