Найти - Пользователи
Полная версия: Энтропия, не вычисляется помогите подскажите пожалуйста
Начало » Python для экспертов » Энтропия, не вычисляется помогите подскажите пожалуйста
1
Wolf2019.01@gmail.com
from tkinter import *
from tkinter import messagebox
import tkinter as tk
from sympy import symbols, lambdify, parse_expr
from scipy.integrate import quad
import numpy as np

def calculate_entropy():
function = probability_entry.get()
a = float(min_entry.get())
b = float(max_entry.get())

x = symbols('x')

try:
expr = parse_expr(function.replace(“^”, “**”))
f = lambdify(x, expr, ‘numpy’)
except (SyntaxError, ValueError):
messagebox.showerror(“Ошибка”, “Некорректная функция”)
return

if a >= b:
messagebox.showerror(“Ошибка”, “Минимальное значение должно быть меньше максимального”)
return

entropy, _ = quad(lambda x: -f(x) * np.log(f(x)) if f(x) > 0 else 0, a, b)

result_label.config(text=f“'Энтропия:' = {entropy}”)
# Функция для отображения справки
def info():
help_text = ‘'’
Для ввода функции, используйте целые числа и следующий синтаксис:
- используйте Х в качестве переменной, например x * 2, x * sin(x)
- используйте для возведения в степень, например x ** 2
- используйте стандартные математические функции sin(x), cos(x), log(x)
- используйте скобки для определения порядка операций

Примеры функций:
- x ** 2 - x + sin(x) - ((log(x) / 4)) * sin(x)

Минимальное значение предела должно быть меньше максимального
‘'’

messagebox.showinfo('Справка', help_text)

# Функция для отображения информации об авторе
def avtor():
avtor_text = ‘'’
Разработал
‘'’

messagebox.showinfo('Автор', avtor_text)

# Функции для очистки текстовых полей
def button_clear_text():
min_entry.delete(“0”, END)
max_entry.delete(“0”, END)
probability_entry.delete(“0”, END)

def button_clear_min():
min_entry.delete(“0”, END)

def button_clear_max():
max_entry.delete(“0”, END)

def button_clear_func():
probability_entry.delete(“0”, END)

# Создаем основное окно
root = Tk()
root.title(“Расчет энтропии непрерывных сообщений”)
root.geometry('410x300')
root.configure(bg='purple')

# Создаем и размещаем элементы управления на окне
min_label = tk.Label(text='Минимальное значение')
min_label.pack()
min_label.configure(bg='purple', fg='pink')
min_entry = tk.Entry()
min_entry.pack()
min_entry.configure(bg='purple', fg='pink')
min_button = tk.Button(root, text=“Очистить”, command=button_clear_min, bg='pink', fg='purple')
min_button.pack()
max_label = tk.Label(text='Максимальное значение')
max_label.pack()
max_label.configure(bg='purple', fg='pink')
max_entry = tk.Entry()
max_entry.pack()
max_entry.configure(bg='purple', fg='pink')
max_button = tk.Button(root, text=“Очистить”, command=button_clear_max, bg='pink', fg='purple')
max_button.pack()

probability_label = tk.Label(text='Функция (используйте x в качестве переменной)')
probability_label.pack()
probability_label.configure(bg='purple', fg='pink')
probability_entry = tk.Entry()
probability_entry.pack()
probability_entry.configure(bg='purple', fg='pink')
probability_button = tk.Button(root, text=“Очистить”, command=button_clear_func, bg='pink', fg='purple')
probability_button.pack()

calculate_button_scipy = Button(text='Рассчитать энтропию ‘, command=calculate_entropy, bg=’pink', fg='purple')
calculate_button_scipy.pack()
result_label = Label(text=“”)
result_label.pack()
result_label.configure(bg='purple', fg='pink')
button = tk.Button(root, text=“Очистить всё”, command=button_clear_text, bg='pink', fg='purple')
button.pack()

# Создаем меню
menu = Menu()
new_item = Menu(menu, tearoff=0)
new_item.add_command(label='Справка', command=info)
new_item.add_command(label='Автор', command=avtor)
menu.add_cascade(label='Меню', menu=new_item)
root.config(menu=menu)

# Запускаем цикл обработки событий
root.mainloop()
ZerG
оберните текс тегом код - нечитабельно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB