Международный
педагогический портал
Международный педагогический портал (лицензия на осуществление образовательной деятельности №9757-л, свидетельство о регистрации СМИ №ЭЛ ФС 77-65391)
8 (800) 350-54-64
звонок бесплатный
org.komitet@solncesvet.ru
Скидка 42% действует до 22.12
8 (800) 350-54-64
звонок бесплатный
org.komitet@solncesvet.ru
Vk Whatsapp Youtube
Лицензированный образовательный портал (лицензия №9757-л, СМИ №ЭЛ ФС 77-65391)
8 (800) 350-54-64
Название работы:

Создание приложения "Построение графиков" . Автор: Третьяков Максим Яковлевич. Работа №411100

Дата публикации:
Автор:
Номинация:
Компьютерная графика
Описание:
Проект демонстрирует навыки программирования учащегося. Приложение "Создание графиков" поможет учащимся освоить темы по алгебре, связанные с построением графиков функций.
Работа:

Муниципальное автономное общеобразовательное учреждение

«Средняя общеобразовательная школа № 2 с углублённым изучением

физики, математики, русского языка и литературы»

 

 

 

 

 

 

 

Проект

 

Создание приложения

"Построение графиков"

средствами языка программирования Python

 

 

 

 

 

 

 

Автор: Третьяков Максим Яковлевич,

ученик 11 класса

Руководитель: Бородина Марина Валентиновна,

учитель информатики

 

 

 

 

 

 

 

г. Верхняя Салда

2023

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

В 10 классе на уроках математики я начал изучать новые функции, такие как показательные и логарифмические. В процессе их изучения я решил вспомнить функции, которые известны мне с 7 класса. Я представил, что было бы хорошо иметь такую среду, где всегда можно посмотреть, как выглядят графики различных функций. Свою идею мне захотелось реализовать, и я решил разработать приложение, в котором всегда можно посмотреть графики функций, изучающиеся в школьной программе, а также пронаблюдать закономерности изменения графика функции в зависимости от коэффициентов.

Цель моей работы: создание приложения для демонстрации графиков функций средствами языка программирования Python

Для достижения цели поставил задачи:

и

зучить вспомогательный модуль

Tkinter

для создания приложения

;

и

зучить библиотеки

MatPlotLib

и

Numpy

для визуализации графических данных;

р

азработать

отдельные

программы для построения графиков

каждого вида;

создать

приложение с возможностью построения графиков

.

Я считаю эту тему актуальной потому, что приложение поможет изучить графики различных функций, выполнять самопроверку правильности построения графика той или иной функции. Так же, во время работы над проектом, я улучшу свои навыки программирования в Python.

 

1.Модули и библиотеки Python

1.1 Matplotlib

Для построения графических изображений в Python возможно подключение модуля graph с набором функций. Но преимущество Python в том, что дается возможность использования разнообразных библиотек для визуализации данных в более презентабельном виде.

Matplotlib — это библиотека языка программирования Python для визуализации данных с помощью двумерной (2D) графики (также поддерживается 3D-графика). Полученные изображения можно использовать в качестве иллюстраций в публикациях.

Matplotlib написан и поддерживается в основном Джоном Хантером и распространяется под лицензией, подобной BSD. Изображения, сгенерированные в различных форматах, можно использовать в интерактивной графике, научных публикациях, графических пользовательских интерфейсах, веб-приложениях, где требуется построение графиков.

1.2 Numpy

NumPy — это библиотекa с открытым исходным кодом для языкa прогрaммирования Python. Ее функция: поддержка многомерных массивов, а также поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами. Так же Numpy мне понадобился для построения графиков Логарифмической функции, тригонометрических функций синусоиды, косинусоиды, тангенсоиды и обратных им, при помощи команд np.sin(x) np.arcsin(x) np.cos(x) np.arccos(x) np.tg(x) np.arctg(x),np.log(x).

1.3 Decimal

Мне также понадобился десятичный тип данных переменной. Тип данных Decimal обеспечивает максимальное количество значащих цифр в числе. Он поддерживает до 29 знaчaщих цифр и может представлять значения, превышающие 7,9228 x 1028 . Это особенно подходит для расчетов, например, финансовых, которые требуют большого количества цифр, но не допускают ошибок округления. Decimal не является типом данных с плавающей запятой. Decimalструктура, содержащая двоичное целочисленное значение, а также бит знака и целочисленный коэффициент масштабирования, укaзывающий, кaкaя часть значения является десятичной дробью. Decimal, тип данных, является самым медленным из всех числовых типов.

1.4 Tkinter

Tkinter — графическая библиотека Python, которая предназначена для создания программ с оконным интерфейсом. Она кроссплатформенная, то есть с ее помощью можно писать приложения для Windows, Linux, macOS.

Tkinter — это свободное программное обеспечение, распространяемое под Python-лицензией.

Основные команды Tkinter:

Toplevel

/

Tk

— Окно верхнего уровня (

корневой

виджет

).

Frame

— Рамка. Содержит в себе другие визуальные компоненты, используется для группировки

виджетов

.

Label

— Этикетка. Показывает некоторый текст или графическое изображение.

Entry

— Однострочное поле ввода текста.

Text

— Форматируемое поле ввода текста. Позволяет показывать, редактировать и форматировать текст с использованием различных стилей, а также внедрять в текст рисунки и окна.

Canvas

— Холст. Может использоваться для вывода графических примитивов, таких как прямоугольники, эллипсы, линии, а также текст, изображения и окна.

Button

— Кнопка. Простая кнопка для выполнения команды и других действий.

Radiobutton

— Переключатель. Представляет одно из альтернативных значений некоторой переменной. Обычно действует в группе. Когда пользователь выбирает какую-либо опцию, с ранее выбранного в этой же группе элемента выбор снимается.

Checkbutton

— Флажок. Похож на

Radiobutton

, но имеет возможность множественного выбора, предоставляя отдельную переменную на каждый экземпляр

виджета

.

Scale

— Шкала с ползунком. Позволяет задать числовое значение путём перемещения движка.

Listbox

— Список. Показывает список, из которого пользователь может выделить один или несколько элементов.

Scrollbar

— Полоса прокрутки. Может использоваться вместе с некоторыми другими компонентами для их прокрутки.

Menu

— Меню. Служит для организации всплывающих (

popup

) и ниспадающих (

pulldown

) меню.

Menubutton

— Кнопка-меню. Используется для организации pulldown-меню.

Message

— Сообщение. Аналогично

Label

, но позволяет заворачивать длинные строки и легко меняет свой размер.

OptionMenu

Spinbox

LabelFrame

PanedWindow

2.Создание приложения

 

В самом начале для работы модулей их необходимо было установить, прописав в командную строку такую команду pip install matplotlib, автоматически с этим модулем скачается и библиотека Numpy. Аналогично при помощи команды pip install tk скачаем Tkinter.

Графики школьной программы я решил объединить в приложение «Построение графиков». Для создания приложения остановил свой выбор на библиотеке Tkinter, которая тоже находится в Python. Сначала я изучил команды, имеющиеся в этой библиотеке, а потом приступил к написанию приложения. Приложение имеет простую структуру: состоит из кнопок, каждая из которых строит график.

В начале программы я должен получить все возможности библиотеки Tkinter при помощи команды from tkinter import *. Дальше я создаю окно приложения при помощи команды root = Tk() и называю его root.title(), также надо указать размеры окна (root.geometry('800x400')) и возможность менять их (root.resizable(width=True, height=True)). На данном этапе у меня получается пустое окно с названием, размером 800x400.

Затем я создал фрейм (область для размещения объектов ), команда его создания выглядит так (frame_top = Frame(root, bg='#008000', bd=5)). На фрейме я разместил кнопки для запуска программ построения графика.

Кнопка создается командой:

btn=Button(frame_top,width=25,height=1,text=,command=).place(),

где frame_top - это фрейм, к которому будет принадлежать кнопка, width и height - это ширина и высота кнопки, text - создает на кнопке надпись, а command= функцию.

Дальше я создаю функцию, которая строит график. У нас получается вот такой код программы для построения функции (Линейная):

def lineynaya():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b(y=kx+b):"

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод отрезка для построения графика

function_entry =Entry(new_window)#ввод коэффициентов

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))

#линейная функция

y =float(s1[0])*x+float(s1[1])

# Построение графика

plt.title('y =kx+b') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

 

Данный фрагмент кода создает окно для ввода необходимых значений для построения графика.

После ввода числовых значений и нажатии на кнопку «Построить» можно получить вот такой график

 

 

Аналогично написал код для других категорий функций.

Главное окно приложения выглядит так:

 

В ходе работы над проектом мне пришла идея решать системы уравнений при помощи данного приложения, и я задумал это реализовать. Сначала я подумал, как было бы удобно сделать это, и решил остановиться на том, чтобы строить два и более графиков в одной системе координат. На графике при наведении на точку пересечения, можно увидеть приближенное значение решения системы.

Для компиляции файла приложения в exe-файл, мне понадобился pyinstaller. Это утилита для запуска кода программы без скачивания среды разработки python, модулей и библиотек для python. Для ее установки я в командную строку Windows вписал команду pip installer pyinstaller. Когда эта утилита скачалась, при помощи команды pyinstaller –F –wi<Путь к папке с иконкой> «Название приложения» конвертировал его в exe файл. Подкоманда –F объединяет все в один файл, -w заглушает консоль, чтобы она не открывалась при запуске exe файла и i добавляет иконку приложению.


Заключение

 

В ходе работы над проектом я изучил модуль Tkinter для создания приложения, возможности библиотек Matplotlib и Numpy, разработал программы для построения графиков и объединил их в одно приложение. Также теперь у меня есть приложение, в котором я всегда могу посмотреть функции, которые я проходил в школе, их закономерности и свойства.

 


Список источников

https://ru.wikipedia.org/wiki/Tkinter

https://ru.wikipedia.org/wiki/Matplotlib

https://ru.wikipedia.org/wiki/NumPy


Приложение 1

Код приложения

from tkinter import * # Импорт библиотек и модулей

from tkinter import messagebox

import matplotlib.pyplot as plt

import numpy as np

import webbrowser

import decimal

from math import *

root = Tk() # Создаем окно приложения

root['bg'] = '#30d5c8'# Указываем цвет

root.title('Построение графиков')# Указываем название приложения

root.geometry('800x400')# Указываем размеры окна

root.resizable(width=True, height=True)# Делаем возможным менять размеры окна

frame_top = Frame(root, bg='#30d5c8')# Создаем фрейм (область для размещения других объектов)

frame_top.place (relx=0.05, rely=0.1, relwidth=0.80, relheight=0.8)# Указываем к какому окну он принадлежит, какой у него фон и какая обводка

def lineynaya():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b(y=kx+b):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))

#линейная функция

y =float(s1[0])*x+float(s1[1])

# Построение графика

plt.title('y =kx+b') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

 

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

def kvadratnaya():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты a,b,c(y=ax^2+bx+c):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))

#линейная функция

y =float(s1[0])*x**2+float(s1[1])*x+float(s1[2])

# Построение графика

plt.title('y =ax^2+bx+c') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

 

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

#############################

def koren():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

 

x_label.grid(row=0, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))

#линейная функция

y=np.sqrt(x)

# Построение графика

plt.title('y =ax^2+bx+c') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

 

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

############################

def giperbola():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k a(y= k/ax):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.around(np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2])),decimals=4)

#линейная функция

y = (float(s1[0]))/((float(s1[1]))*x)

# Построение графика

plt.title('y =ax^2+bx+c') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

 

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

################################

def pokazatel():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=(kx+b)^c):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))

#линейная функция

y =(float(s1[0])*x+float(s1[1]))**float(s1[2])

# Построение графика

plt.title('y =(kx+b)^c') # заголовок

plt.grid() # включение отображение сетки

plt.plot(x, y) # построение графика

ax = plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

#######################

def logarifm():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c,d(y=k*log(bx+c) по основанию d):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

d=float(s1[3])

y=k*np.log2(b*x+c)

plt.title('y=k*log(bx+c) по основанию d') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def sin():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*sin(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.sin(b*x+c)

plt.title('y=k*sin(bx+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def arcsin():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*arcsin(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.around(np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2])),decimals=4)

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.arcsin(b*x+c)

plt.title('y=k*arcsin(b*x+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def cos():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*cos(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.cos(b*x+c)

plt.title('y=k*cos(b*x+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def arccos():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*arccos(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.arccos(b*x+c)

plt.title('y=k*arccos(b*x+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def tg():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*tg(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.sin(b*x+c)

plt.title('y=k*tg(b*x+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

def arctg():

new_window = Toplevel()

new_window.title("Ввод данных")

x_label = Label(new_window,text="Введите отрезок и шаг через пробел:")

function_label = Label(new_window,text="Введите коэффициенты k,b,c(y=k*arctg(bx+c) ):")

x_label.grid(row=0, column=0, sticky="w")

function_label.grid(row=1, column=0, sticky="w")

x_entry = Entry(new_window)#ввод

function_entry =Entry(new_window)#ввод

x_entry.grid(row=0,column=1, padx=5, pady=5)

function_entry.grid(row=1,column=1, padx=5, pady=5)

def function_build():

s=x_entry.get().split()

s1=function_entry.get().split()

x = np.arange(float(s[0]),float(s[1])+float(s[2]),float(s[2]))#линейная функция

k=float(s1[0])

b=float(s1[1])

c=float(s1[2])

y=k*np.arctg(b*x+c)

plt.title('y=k*arctg(b*x+c)') # заголовок

plt.grid()# включение отображение сетки

plt.plot(x, y) # построение графика

ax =plt.gca()

ax.spines['right'].set_color('none')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')

ax.spines['left'].set_position(('data',0))

plt.show()

display_button = Button(new_window,text="Построить", command=function_build) #кнопка запуска

display_button.grid(row=2,column=1, padx=5, pady=5, sticky="e")

####################

btn = Button(frame_top,width=25,height=1,text='Линейная функция', command=lineynaya).place(x=0,y=0)#создание кнопки

btn = Button(frame_top,width=25,height=1,text='Квадратичная функция', command=kvadratnaya).place(x=0,y=75)

btn = Button(frame_top,width=25,height=1,text='Функция квадратного корня', command=koren).place(x=0,y=150)

btn = Button(frame_top,width=25,height=1,text='Дробно-линейная функция', command=giperbola).place(x=200,y=0)

btn = Button(frame_top,width=25,height=1,text='Показательная функция', command=pokazatel).place(x=200,y=150)

btn = Button(frame_top,width=25,height=1,text='Логарифмическая функция', command=logarifm).place(x=200,y=75)

btn = Button(frame_top,width=25,height=1,text='Синусоида', command=sin).place(x=400,y=0)

btn = Button(frame_top,width=25,height=1,text='График арксинуса', command=arcsin).place(x=600,y=0)

btn = Button(frame_top,width=25,height=1,text='Косинусоида', command=cos).place(x=400,y=75)

btn = Button(frame_top,width=25,height=1,text='График арккосинуса', command=arccos).place(x=600,y=75)

btn = Button(frame_top,width=25,height=1,text='Тангенсоида', command=tg).place(x=400,y=150)

btn = Button(frame_top,width=25,height=1,text='График арктангенса', command=arctg).place(x=600,y=150)

root.mainloop()

Скачать работу
На портале “Солнечный свет”
Более 100 номинаций
Cвыше 2 000 тестов олимпиад и викторин на профессиональном портале.
97% клиентов
Довольны порталом и становятся постоянными клиентами.
Свыше 1 000 000 участий
Более 1 000 педагогов и учащихся ежедневно участвует в наших конкурсах.
Вам доступны для участия более 100 конкурсов. Участвуйте в наших конкурсах и получите свой диплом победителя.
Этапы участия
1 шаг: Участие
Отправьте заявку с помощью специальной формы
2 шаг: Результат
Довольны результатом? Перейдите в свой личный кабинет
3 шаг: Диплом
Введите свои основные данные (ФИО, место работы) для оформления диплома победителя
Более 20 шаблонов и образцов для ваших дипломов и свидетельств
Солнечный свет Создать дипломы
Пожалуйста, подождите.
x
×
УЗНАТЬ ПОДРОБНЕЕ
X