Python invalid value encountered in log
Доброго времени суток.
Сегодня пришла идея навесить ограничения на свою формулу отрисовки графика, но столкнулся с проблемой:
RuntimeWarning: invalid value encountered in log y = numpy.log(numpy.log(c*x+d)/numpy.log(b))/numpy.log(a)
Хотя график отрисовывается, как на мой взгляд правильно.

Мой код на Python
import matplotlib.pyplot
import numpy
import math
import csv
with open("test.tsv") as tsvfile: # безопасное открытие файла (выполнится в любом случае и закроется файл)
tsvreader = csv.reader(tsvfile, delimiter="\t")
data =[list(map(int, row)) for row in tsvreader]
x = numpy.arange(-10.0, 10.1, 0.01) # задаются параметры интервала с шагом
for a, b, c, d in data:
y = numpy.log(numpy.log(c*x+d)/numpy.log(b))/numpy.log(a)
matplotlib.pyplot.plot(x, y, label = f'a = {a}, b = {b}, c = {c}, d = {d}') # функция создания графика
matplotlib.pyplot.xlabel(r'Ось OX',fontsize = '14' ,color = 'r') # устанавливает подпись оси х
matplotlib.pyplot.ylabel(r'Ось OY',fontsize = '14' , color = 'b') # устанавливает подпись оси у
matplotlib.pyplot.title(r'$y = log_alog_b(cx+d)$' ,fontsize = '14' , color = 'g')
matplotlib.pyplot.legend() # добавление легенды
matplotlib.pyplot.show() # отображение окна с графиком
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Эта ошибка возникает если передать np.log(arg) отрицательное значение в качестве аргумента.
И действительно, трудно придумать такое число x при возведении np.e (2.71828) в которое (2.71828x) мы бы получили отрицательное число!
Воспроизведение ошибки:
In [48]: np.log(-1)
/opt/anaconda3/envs/ml/bin/ipython:1: RuntimeWarning: invalid value encountered in log
Out[48]: nan

