Zadanie: Analiza fragmentu widma w Octave
Dane
Masz do dyspozycji dane pomiarowe pewnego widma (np. widma energii). Widmo składa się z dwóch pików typu gaussowskiego, nałożonych na stałe tło. Dane zapisane są w pliku tekstowym i zawierają:
- kolumnę \( x \) – energia w [keV],
- kolumnę \( y \) – natężenie sygnału (liczba zliczeń) [counts].
Kolumny są oddzielone tabulatorem. Plik z danymi jest tu: spectrum.dat.
Model fizyczny
Model, który powinien opisywać te dane, ma postać funkcji:
\[ y(x) = B + A_1 \exp\!\left( -\frac{(x-\mu_1)^2}{2\sigma_1^2} \right) + A_2 \exp\!\left( -\frac{(x-\mu_2)^2}{2\sigma_2^2} \right). \]
Parametry:
- B – stałe tło,
- A1, A2 – amplitudy obu pików,
- \(\mu_1, \mu_2\) – położenia maksimów,
- \(\sigma_1, \sigma_2\) – szerokości pików.
Łącznie 7 parametrów dopasowania.
Zakres zadania (zalecane etapy)
1. Wczytanie danych (funkcja uigetfile)
Skrypt w Octave powinien:
- otworzyć okno wyboru pliku za pomocą funkcji
uigetfile, - wczytać dane z wybranego pliku tekstowego,
- sprawdzić, czy dane mają dwie kolumny liczb o tym samym rozmiarze,
- rozdzielić dane na dwa wektory (np. \(x\) i \(y\)).
W przypadku błędnego formatu skrypt powinien wypisać czytelny komunikat w Command Window i zakończyć działanie.
2. Dopasowanie modelu do danych (dowolną metodą)
Należy dopasować parametry modelu \[ (B, A_1, \mu_1, \sigma_1, A_2, \mu_2, \sigma_2) \] tak, aby jak najlepiej opisywał on dane eksperymentalne.
Dopasowanie należy wykonać dowolną metodą z wykorzystaniem własnych bądź wbudowanych funkcji Octave.
Nie narzuca się konkretnej funkcji ani algorytmu. Student ma swobodę wyboru podejścia, ale musi rozumieć matematyczne zasady stosowanej metody.
Można pisać własne funkcje w oddzielnych skryptach, ale należy dołączyć je do projektu, jeżeli są używane w głównym skrypcie.
3. Statystyka Poissona i zredukowane \(\chi^2\)
Kolumna \( y \) zawiera liczbę zliczeń, więc zgodnie ze statystyką Poissona niepewność pojedynczego punktu wynosi:
\[ \sigma_i = \sqrt{y_i}. \]
W punktach, gdzie \( y_i = 0 \), należy przyjąć minimalną niezerową niepewność, np. \(\sigma_i = 1\).
Parametrem jakości dopasowania będzie zredukowane chi-kwadrat obliczane jako:
\[ \chi^2_{\text{red}} = \frac{1}{N - p} \sum_{i=1}^{N} \left( \frac{y_i - y_{\text{model}}(x_i)}{\sigma_i} \right)^2. \]
gdzie:
- \(N\) – liczba punktów danych,
- \(p = 7\) – liczba dopasowywanych parametrów,
- \(N - p\) – liczba stopni swobody.
4. Wykres wyniku dopasowania
Skrypt ma wygenerować wykres zawierający:
- punkty eksperymentalne (dane) – wykres punktowy,
- krzywą dopasowanego modelu – linia ciągła,
- legendę opisującą obie serie,
- opisy osi (np.
xlabel,ylabel) oraz tytuł, - siatkę pomocniczą (
grid on).
Wymagane jest, aby wykres był czytelny i estetyczny, z jasno zaznaczonym rozróżnieniem między danymi pomiarowymi a modelem.
5. Prezentacja wyników w Command Window
Skrypt powinien wyraźnie wypisać w Command Window:
- wartości wszystkich dopasowanych parametrów: \(B, A_1, \mu_1, \sigma_1, A_2, \mu_2, \sigma_2\),
- wartość zredukowanego \(\chi^2_{\text{red}}\).
Przykładowy styl prezentacji (tylko jako wzór formatowania):
========== WYNIKI DOPASOWANIA MODELU ==========
Tło (B) = ...
Pik 1: amplituda A1 = ...
położenie μ1 = ...
szerokość σ1 = ...
Pik 2: amplituda A2 = ...
położenie μ2 = ...
szerokość σ2 = ...
Zredukowane chi^2 = ...
===============================================
Uwaga o korzystaniu z narzędzi AI
Podczas wykonywania zadania student może korzystać z narzędzi AI, pod warunkiem, że rozumie działanie stosowanych procedur, algorytmów oraz kodu. Korzystanie z AI ma mieć charakter pomocniczy – nie zastępować własnego rozumowania, a jedynie je wspierać.
- Nie wolno bezrefleksyjnie kopiować kodu lub rozwiązań.
- Student musi być w stanie wyjaśnić prowadzącemu:
- na czym polega użyta metoda dopasowania,
- jak dokładnie obliczane są wszelkie parametry,
- jaka jest interpretacja uzyskanych parametrów modelu i wartości \(\chi^2_{\text{red}}\).
Termin wykonania zadania
12.01.2026