# 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 random as rand
import matplotlib.pyplot as plt


# %% Klasa

class NeuronJU:
    def __init__(self, težina, prag, fakt):
        self.težina = težina
        self.prag = prag
        self.fakt = fakt
    
    def računanje_izlaza(self, ulaz):
        return self.fakt(self.težina * ulaz + self.prag)


# %% Upotreba

rand.seed(78)

def stepenasta_binarna(ulaz):
    return 1 if ulaz >= 0 else 0

neuron = NeuronJU(0.01, 1, stepenasta_binarna)

ulaz = [rand.uniform(-1000, 1000) for i in range(50)]
izlaz = [neuron.računanje_izlaza(i) for i in ulaz]

for ul, iz in zip(ulaz, izlaz):
    print("ulaz = {:10.2f}; izlaz = {}".format(ul, iz))

plt.figure(figsize=(8, 6))
plt.scatter(ulaz, izlaz)
plt.title("Ponašanje veštačkog neurona s jednim ulazom")
plt.xlabel("Ulaz")
plt.ylabel("Izlaz")

