0
0 комментариев

Доброго времени суток!

Имеется функция двух переменных (решающая функция):

def dec_func(self, x, y):
    res = 0
    for i, w in enumerate(self.W):
        res += w * self.F[i](Point(x, y))
    return res

Нужно построить график этой функции, когда res = 0. Т.е. нужно из списка X для каждого x получить такие y, чтобы при выполнении функции, результат был равен 0.

UPD:

Есть реализованная функция, которая по заданным X может получить примерно верные Y (с определенной точностью):

def plot_data(self, start=-15, end=15, step=1):
    X = [i for i in range(start, end, step)]
    Y = []
    x_to_remove = []
    for x in X:
        k = 0
        y_old = 0
        step = 0.05
        old_res = self.dec_func(x, y_old)
        while abs(old_res) > 0.01:
            if k > 3000:
                break
            k += 1
            y = y_old + step
            res = self.dec_func(x, y)
            if abs(old_res) > abs(res):
                y_old = y
                step *= 1.2
            else:
                y_old = y
                step = -step / 2
            old_res = res
        if k > 3000:
            print(y_old, x, old_res)
            x_to_remove.append(x)
        else:
            Y.append(y_old)
    for x in x_to_remove:
        X.remove(x)
    return X, Y

Но проблема в том, что данная реализация не позволяет получить несколько значений y для одного x.


Добавить комментарий