Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет для Буйного(пример).doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
388 Кб
Скачать
☆

Лабораторная работа №3 «Построение графиков функции, производной и первообразной»

# -*- coding: utf-8 -*- # кодировка

from Tkinter import * #подключение модулей

from bsc_grafik import * #импорт в папку bsc_grafik

from math import* #импорт математических функций

##====================================================== Function

def f(x): return x**2*sin(x) #вызов функции и возврат её

def df(x,f,dx): return (f(x+dx)-f(x-dx))/2/dx значения

def sf(x,f,dx): return (f(x-dx)+f(x))/2*dx

##====================================================== Calculating

bl=Bl('x','y','ys','Y') # создаем объект базы данных

x =2.0 ##2.288930 ##0.0 создаем диапазон изменения переменных

xk=6.0 ##5.086985 ##2.0*pi

dx,s,y=0.01,0.0,f(x) # задаем шаг функции

ys=df(x,f,dx)

bl.add(x=x,y=y,ys=ys,Y=0.0)

while x<=xk: #до тех пор пока истинно условие выполняется оператор

x+=dx # увеличиваем шаг на dx

y,ys=f(x),df(x,f,dx)

s+=sf(x,f,dx)

bl.add(x=x,y=y,ys=ys,Y=s) # добавляем в список значений

##====================================================== Labels

clr,bg=["blue","black","red","green","#0DF","#C06","#A64","#684","#AC3",'red','blue','green'],"White" # список содержащий цвета

bg='Grey' # задаем цвет фона серый

Lbd =[Bd(150,55,'desine_l: наложение графиков',clr[5],bg)]

Lbd+=[Bd(450,55,'desine_l: список списков',clr[5],bg)]

Lbd+=[Bd(800,55,'desine_d: список кортежей',clr[5],bg)] # названия графиков с указанием цветов фона, размеров в пикселях

Lbd+=[Bd(165, 580,"y = [%6.3f %6.3f]" % (min(bl.L['y']),

max(bl.L['y'])),clr[0],bg)]

Lbd+=[Bd(165, 600,"ys= [%6.3f %6.3f]" % (min(bl.L['ys']),

max(bl.L['ys'])),clr[1],bg)]

Lbd+=[Bd(165, 620,"Y = [%6.3f %6.3f]" % (min(bl.L['Y']),

max(bl.L['Y'])),clr[2],bg)]

Lbd+=[Bd(165, 640,"x = [%6.3f %6.3f]" % (min(bl.L['x']),

max(bl.L['x'])),clr[1],bg)]

##====================================================== Tkinter

A,B=1000,700 #Параметры

tk=Tk() #основное окно приложения

tk.title('График функции, производной и первообразной') #заголовок окна

fr=Frame(tk) # рамка

fr.pack() #менеджер геометрии

c=Canvas(fr,bg=bg,width=A,height=B) #рисунок с рамкой размером

А×В с белым фоном

c.pack(expand=1,fill=BOTH) #разместить на свободном

пространстве в обоих

направлениях

##======================================================= Output

mg,xg,yg=0.004,400,200

w=[5,3,2,2,1,1,1,1,1,1,1,1]

clrd=zip(clr,w)

##--------------------------------------------------------------------------------

desine_l(15,130,300,400,(225,225,225),clrd[0:],bl.L['x'],[bl.L['y']],0,50,50,c,1,1)

# положение верхнего левого угла по отношению к канве

# 300, 400 – размеры графика в пикселях

#(225,225,225) – способ описания цвета

# clrd – список цветов, которые необходимы для вывода графиков

# bl.L['x'] – вывод графика по оси x

# 0 – все графики в одном масштабе

# 50,50 – график разлинован горизонтальными и вертикальными линиями с шагом 50

desine_l(15,130,300,400,(255,255,255),clrd[2:],bl.L['x'],[bl.L['Y']],0,50,50,c,1,1)

desine_l(15,130,300,400,(255,255,255),clrd[1:],bl.L['x'],[bl.L['ys']],1,50,50,c,1,1)

##--------------------------------------------------------------------------------

ll=[bl.L['y'],bl.L['ys'],bl.L['Y']]

desine_l(350,130,300,400,(255,255,255),clrd,bl.L['x'],ll,0,50,50,c,1,1)

##--------------------------------------------------------------------------------

ll=[[bl.L['x'],bl.L['y']],[bl.L['x'],bl.L['ys']],[bl.L['x'],bl.L['Y']]]

desine_d(685,130,300,400,(255,255,255),clrd,ll,50,50,c,1,1)

for ibd in Lbd: ibd.show(c) # вывод меток (на канву)

tk.mainloop() # сканирование канвы