← Wróć do kalkulatora

Walidacja — optymalizacja nastawy scyntylatora

FOM = S²/(S+B): optymum przy HV=700V, nie HV=800V (max sygnał, ale wyższe tło).

10/10 asercji zdanych
Walidacja: ✓ ZALICZONA
Obliczono: 2026-07-08 02:29:02 UTC · PHP 8.1.2-1ubuntu2.24
Niezmienniki fizyczne
StanAsercjaWynikOczekiwane
Wynik zawiera 'best' i 'points'
Wynik musi zawierać 'best' (optymalna nastawa) i 'points' (tabela z FOM dla wszystkich HV).
best+points OK array{best, points}
len(rows) = 5 (tyle samo co wejść)
Każda trójka [HV, sample, bg] daje jeden wiersz w tabeli wynikowej.
5 wierszy 5
Optymalna nastawa: HV=700V (maksimum FOM)
FOM(700V)=833,3 > FOM(650V)=810 > ... → optymum przy HV=700V.
best HV = 700 V 700 V
FOM ≥ 0 we wszystkich wierszach
FOM = S²/(S+B): licznik jest kwadratem, a mianownik dodatni dla poprawnego pomiaru.
wszystkie FOM ≥ 0 FOM ≥ 0
signal = sample − background ≥ 0 dla wszystkich wierszy
Przy sample > background: signal = sample − background > 0.
wszystkie signal ≥ 0 signal ≥ 0
FOM(HV=650) = net²/sample = 900²/1000 = 810
FOM = (S−B)²/S = net²/(net+B): wskaźnik jakości nastawy licznika scyntylacyjnego.
810 810
Pusta lista → InvalidArgumentException
Pusta lista wejść nie ma sensu fizycznego — model musi rzucić wyjątek.
wyjątek OK InvalidArgumentException
Nastawa z max. sygnałem (800V) NIE jest optymalna (FOM < FOM(650V))
Optymalna nastawa to max FOM, nie max sygnału — wysoki sygnał z wysokim tłem jest gorszy.
FOM(800V)=450 < FOM(650V)=810 FOM(800V) < FOM(650V)
Każdy wiersz ma klucz 'hv'
Każdy wiersz wyniku musi zawierać 'hv' dla renderowania tabeli.
5 wierszy z HV 5/5
best.fom = maksimum FOM ze wszystkich wierszy
best['fom'] musi być równe globalnemu maksimum FOM.
833,3333 833,3333
Porównanie z benchmarkami

Benchmarki pokazują ręczny rachunek FOM dla kilku nastaw i potwierdzają, że optymalna nastawa nie jest największym sygnałem brutto.

BenchmarkWynik modeluPunkt odniesieniaOcena
Ręczny rachunek FOM dla 650 V
To najprostszy punkt kontrolny wzoru: licznik jest kwadratem sygnału netto, a mianownik obejmuje sygnał brutto.
signal 900; FOM 810.0 (1000-100)^2 / 1000 = 810 ✓ doskonały (≤5%)
Optimum FOM przy 700 V
Ten benchmark pokazuje właściwy cel optymalizacji: maksymalizujemy FOM, a nie samą liczbę zliczeń.
best HV 700 V; FOM 833.3 700 V i FOM około 833,3 ✓ doskonały (≤5%)
Wysokie napięcie z wysokim tłem nie jest najlepsze
To praktyczny punkt walidacyjny: rosnące tło może pogorszyć nastawę mimo dużego sygnału brutto.
HV 800 V: signal 900; FOM 450.0 FOM 800 V = 450, mniej niż 650 V i 700 V ✓ doskonały (≤5%)
Pełna krzywa FOM ma jeden lokalny szczyt w danych testowych
Benchmark sprawdza kształt krzywej, nie tylko pojedynczy zwycięski wiersz.
600V 200; 650V 810; 700V 833; 750V 667; 800V 450 200, 810, 833, 667, 450 ✓ doskonały (≤5%)
Weryfikacja wyboru best.fom
Ten wiersz chroni przed błędem renderowania: najlepsza nastawa musi pochodzić z tej samej tabeli, którą widzi użytkownik.
best.fom 833.333; max(rows) 833.333 best.fom musi równać się maksimum z tabeli ✓ doskonały (≤5%)
Kontekst metodologiczny: W praktycznej spektrometrii sama liczba zliczeń nie wystarcza, bo tło rośnie razem ze wzmocnieniem. Walidacja pokazuje więc tabelę FOM, aby użytkownik mógł sprawdzić, że kalkulator wybiera kompromis między sygnałem netto i tłem.
Zakres walidacji

Sprawdzone: FOM=S²/(S+B), optimum=700V (nie 800V), FOM≥0, signal≥0, pusta lista→wyjątek, best.fom=max(FOM).