# Główna pętla algorytmu Metropolisa-Hastingsa for _ in range(n): # Generowanie x_proponowany z rozkładu normalnego x_proponowany = x_aktualny + np.random.normal(0, 0.02) wspolczynnik_akceptacji = rozkład(x_proponowany) / rozkład(x_aktualny)

# Losowa decyzja o akceptacji lub odrzuceniu propozycji if np.random.uniform(0, 1) <= wspolczynnik_akceptacji: x_aktualny = x_proponowany zakceptowane_probki += 1 probki.append(x_aktualny)

# Obliczenie przybliżone całki: Calka = zakceptowane_probki / n print("Przybliżona wartość całki:", Calka)

# --------------- DODATEK: WYKRESY --------------- # Dzielenie listy próbek przez Całka, w celu unormowania: # a) tworzę pustą listę na próbki unormowane przez całkę b) dzielę każdy element # listy 'probki' przez 'Calka' c) dodaję do listy 'probki_unormowane' probki_normowane = [] for element in probki: probki_normowane.append(element / Calka)