Странное поведение функции (проблема с плавающей точкой) - PullRequest
0 голосов
/ 23 мая 2019

Почему г (х)

from matplotlib import pyplot


if __name__ == '__main__':
    f = lambda n, d: sum([int(x) for x in str(d)*n])
    g = lambda k: sum([int(f(a,a)/a -1) for a in range(1,k)])/k

    a = [g(x) for x in range(1,100)]
    pyplot.plot(a)
    pyplot.show()

Сюжет это?enter image description here

И это становится страннее, и если вы делаете

    a = [g(i)/float(i) for i in range(1,100)]

enter image description here

1 Ответ

4 голосов
/ 23 мая 2019

Очевидно, вы используете Python 2.7, где оператор деления делит целые числа с остатком. Изменить определение g:

def g(k):
    return sum([int(f(a, a) / float(a) - 1) 
                for a in range(1, k)]) / float(k)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...