ball opsignal × points × table → tableimport fullseye as fs; fs.ledger.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict' (実装を直接呼ぶなら import ballistics; ballistics.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict'、台帳から引くなら opsdrive.get("ballistic_vs_thrust"))同じ軌跡に「重力 + 抗力」(:func:drag_fit)と「重力 + 抗力 + 一定の比推力」(:func:thrust_fit)を当て、
AIC(:func:aic_from_rss)の差 ΔAIC = AIC_弾道 − AIC_推力 を返す。
返り値 {"ballistic", "thrust"}(2 つの当てはめ)に "aic_ballistic", "aic_thrust", "delta_aic", "thrust_norm" を添える。
判定は返さない(:mod:imgforensics と同じ流儀): 読み方は 節約則で、推力の模型はパラメータが 3 つ多いので雑音だけでも
RSS を僅かに下げる —— 罰則 2Δk を超えて勝たない限り、単純な方(弾道)を採る。雑音だけの ΔAIC は −2Δk を下限に χ²(Δk) 近似の
幅で散り(中央値は −2Δk + 1 ほど。C_d = 0 の壁に当たる当てはめが混じるので正確には混合分布)、推力側は弾道側の解から出発するので
ΔAIC ≥ −2Δk が保たれる。「決定的」の慣用は 10(偽陽性 1 % を大きく下回る)だが、閾値は同梱せず呼び手が決める。
推力側の RSS が離散化の床 rss_floor の 10 倍を下回る(雑音の無い、または格子より細かく解けた軌跡)ときは ValueError ——
AIC が比べるのは雑音で、丸め屑ではない(雑音ゼロの真値に既定の dt で ΔAIC = +144 が出た、2026-10-23)。
空の入力(t が 0 要素)は ValueError。
py -3.11 examples/poc_video_physics_consistency.pytable を入力に取れる)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
ball)ball_params · impact_params · flight_vacuum · flight_ode · flight_simulate · flight_state_at · magnus_lift_coefficient · drag_coefficient_sphere
Provenance: ballistics.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.