# Univerzitet u Novom Sadu, Fakultet tehničkih nauka, Novi Sad, Srbija
# Studijski program OAS Informacioni inženjering
# Predmet Metode i tehnike nauke o podacima

# Pomoćni sadržaj


# %% Biblioteke

import math
import numpy as np
import matplotlib.pyplot as plt


# %% Implementacija funkcije pripadnosti

class PripadnostGausova:
    def __init__(self, mi, sigma):
        self.mi = mi
        self.sigma = sigma
        self.očitavanje_pripadnosti_vektorski = np.vectorize(
            self.očitavanje_pripadnosti)

    def očitavanje_pripadnosti(self, x):
        return math.exp(-(x - self.mi) * (x - self.mi) /
                        (2 * self.sigma * self.sigma))


# %% Upotreba funkcije pripadnosti

print("Primer Gausove funkcije pripadnosti A")
print("")

funkcija_a = PripadnostGausova(0, 1)
x_a = np.arange(-3, 3, 0.1)
y_a = funkcija_a.očitavanje_pripadnosti_vektorski(x_a)
plt.figure()
plt.plot(x_a, y_a)
plt.ylim(0, 1.1)
plt.title("Gausova funkcija pripadnosti A ({mi}, {sigma})".
          format(mi=funkcija_a.mi, sigma=funkcija_a.sigma))

print("Primer Gausove funkcije pripadnosti B")
print("")

funkcija_b = PripadnostGausova(1, 0.5)
x_b = np.arange(-3, 3, 0.1)
y_b = funkcija_b.očitavanje_pripadnosti_vektorski(x_b)
plt.figure()
plt.plot(x_b, y_b)
plt.ylim(0, 1.1)
plt.title("Gausova funkcija pripadnosti B ({mi}, {sigma})".
          format(mi=funkcija_b.mi, sigma=funkcija_b.sigma))

