test(536-3): 측점 꼴 네일 길이 대 안전율 단조 · 보강 없음 이상 시험

- 네일 3행 L 3~25 m 임계 F 줄지 않음 · 탐색 한계 그대로 (요구 351 · sub4 0ef659b0d 뒤)
- 0+720 우 깎기 우기: 보강 없음 1.027 → L 3 1.049 · 7.5 1.219 · 25 1.487 · 최소 길이 7.5 m

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 04:56:42 +09:00
co-authored by Claude Sonnet 5.5
parent 0372f32946
commit d9357a5f58
@@ -316,3 +316,19 @@ def test_station_side_and_result_slot():
if __name__ == "__main__":
sys.exit(pytest.main([__file__, "-q"]))
def test_station_nail_length_vs_fs_monotonic():
"""측점 꼴 — 네일 3행 길이 3~25 m: 임계 F 가 길이에 따라 줄지 않음(포화 뒤 평평 허용) · 항상 보강 없음 이상 · 탐색 한계 그대로(요구 351)."""
base = {c["side"]: c for c in _station(None)["cases"]}["right"]
f0 = base["min_F"]["bishop"]
heads = [(-4.0, 11.48), (-4.6, 12.98), (-5.2, 14.48)]
prev = f0
for L in (3.0, 6.0, 7.5, 9.0, 12.0, 25.0):
sups = [nail(x, z, 15, L, 1.5, 121.6, 40 * math.pi * 0.1) for x, z in heads]
right = {c["side"]: c for c in _station(sups)["cases"]}["right"]
assert right["result"]["limits"] == base["result"]["limits"]
f = right["min_F"]["bishop"]
assert f >= f0 - 1e-9 and f >= prev - 0.005, (L, f0, prev, f)
prev = f
assert prev > f0