Подскажите пожалуйста с графиком функции, иcпользую matplotlib & python

Проблема в функции, из-за вычисления логарифма она выдает ошибку, если строить по точкам выходит несуразное нечто, вместо гладкой линии.

введите сюда описание изображения

А так должно выглядеть: введите сюда описание изображения

Задание: Событие А в каждом из n повторных независимых испытаний происходит с вероятностью p. Найти энтропию числа появлений события А. Составить соответствующую вероятностную схему. Выяснить характер изменения энтропии в зависимости от изменения р на промежутке [0;1] при фиксированном значении n, построив график соответствующей функции Н(р). Определить ее наименьшее и наибольшее значение. n=1, p=0.5, функция H(p) = -p * log p – (1 – p) * log(1 – p)

import matplotlib.pyplot as plt
import numpy as np
 
 
# x = np.linspace(0, 1.0)
# y = -x * np.log2(x) - (1.0 - x) * np.log2(1.0 - x)
 
 
fig, ax = plt.subplots()
 
x = [0.0, 0.25, 0.5, 0.75, 1.0]
y = []
for i in x:
    if i == 0 or i == 1:
        y.append(0)
    else:
        y.append(-i * np.log2(i) - (1.0 - i) * np.log2(1.0 - i))
print(y)
# y = np.array([0, 0.81, 1, 0.81, 0])
 
ax = ax.plot(x,y)
plt.grid()
plt.show()

Ответы (1 шт):

Автор решения: S. Nick

Попробуйте так:

import matplotlib.pyplot as plt
import numpy as np


x = np.arange(0.0, 1.0, 0.001)
y = -x * np.log2(x) - (1 - x) * np.log2(1 - x)
#print(y)

plt.scatter(x, y)
plt.grid()
plt.show()

введите сюда описание изображения

→ Ссылка