#Infourok-a9u-s024-r014-03.py
'''
Python 3. Алгебра 9 класс. Углубленный курс.
713_1-algebra_-9kl_-uglubl_-ur__makarychev-i-dr_2018-4-ilovepdf-compressed.pdf
(стр.24, рис.14). Программа a9u-s024-r014.py.
Построение графика функции: k1_1*x**3 - k1_2*x.
В отличие аналогичных программ на языке pascalABC.NET в программах на
языке python 3 проще реализовать интерактивность.
В представленной программе a9u-s024-r014.py коэффициенты вводятся
(или перемещением ползунков на шкалах или вводом в текстовые окна)
не выходя из программы. Такой интерфейс обеспечивает более интуитивно
понятную интерактивность.
Использование программы позволяет рассмотреть больше вариантов при изложении
материала и подготовить разные задания для проверки усвоения при контроле.
Разрешение экрана 1024*768
Санкт-Петербург, Лицей №554, июль 2020.
При работе в папке с программой должен находиться файл L554.py.
Это внешняя подпрограмма, которая берет на себя рутинную работу
(построение координатной сетки, пересчет масштабов и т.п.).
Модуль L554.py можно получить на сайте turtk.viptop.ru или на сайте
infourok в работе "Использование языка программирования python 3
и модуля L554 на уроках дополнительного образования (или в базовом
курсе) школьной информатики в условиях реализации ФГОС".
'''
# a9u-s024-r014-03.py
# Программа неограниченной функции
from L554 import *
import turtle as t
import turtle
from turtle import *
from math import *
t.hideturtle()
t1=Turtle()
t1.hideturtle()
t5=Turtle()
t5.hideturtle()
t6=Turtle()
t6.hideturtle()
t7=Turtle()
t7.hideturtle()
global x, y,mset,k1_1,k1_2,k1_3,k2_1
x=t1.xcor()
y=t1.ycor()
mset =50 # Сколько точек на 1 деление сетки координат
setka(mset) # Построение сетки в заданном масштабе
msetout(mset)
t.onscreenclick(coor) # Вычисление координат
# Выводит в форму значения координат щелчка мыши
# Выводит в shell значения угла в градусах и значения sin и cos
# Линии вверху слева
line(t1,-ws/2+10,hs/2-30,-ws/2+50,hs/2-30,50,'yellow')
line(t1,-ws/2+10,hs/2-20,-ws/2+50,hs/2-20,10,'white')
line(t1,-ws/2+10,hs/2-30,-ws/2+50,hs/2-30,10,'blue')
line(t1,-ws/2+10,hs/2-40,-ws/2+50,hs/2-40,10,'red')
# Вот отсюда начинаем редактировать, дополнять и тд.
# Вместо "Наша школа" пишем свои реквизиты
wt.title ('Наша школа и СПБ Лицей 554')
'''
Параметры оператора линии:
m_line(mset,t7,x1,y1,x2,y2,5,'green')
mset,t7, - оставляем как есть.
Далее по порядку: координаты начала и конца линии "х1","у1", "х2","у2"
( все размеры в координатах сетки экрана - т.е. идентично клеткам тетради).
толщина линии в пикселях(не масштабируется), цвет.
Параметры оператора точки.
m_pset(mset,t7,xc,yc,5,'blue')
mset,t7, - оставляем как есть (для параболы t6 для окружности t7).
Далее координаты точки, диаметр (5 пикселей) и цвет.
Построение окружностей и графиков функций производим точками или отрезками
линий.
Модуль L554.py должен находиться в папке с программой.
Напоминаем: модуль L554 можно получить на сайте turtk.viptop.ru или на сайте
infourok.
На работу стандартных операторов языка python 3 импорт модуля L554.py
не влияет. Но много рутинных операций (построение координатной сетки и др.)
не придется выполнять в основной программе, которая становится короче
и понятнее.
'''
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# Подпрограмма построения графика
def plot_p():
print('PLOT_P')
t5.clear()
x5_1=-7
k1_1 = float(e_k1_1.get())
k1_2 = float(e_k1_2.get())
k1_3 = float(e_k1_3.get())
#k2_1 = float(e_k2_1.get())
y5_1= k1_1 * x5_1 + k1_2
x5_2= 7
y5_2= k1_1 * x5_2 + k1_2
scale_k1_1.set(k1_1) # сдвигаем ползунок по значению из окна
scale_k1_2.set(k1_2) # сдвигаем ползунок по значению из окна
scale_k1_3.set(k1_3) # сдвигаем ползунок по значению из окна
'''
# Метка k1_1/ (x -
m_xp = Label(text= str(k1_1)+ " / (x - " + str(k1_2) +" ) ",
bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=232,y=628)
'''
draw_p(k1_1,k1_2,k1_3) # При нажатии кнопки
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def plot_scale(ev=None):
t5.clear()
x5_1=-7
k1_1 = float(scale_k1_1.get())
k1_2 = float(scale_k1_2.get()) # значения ползунков
k1_3 = float(scale_k1_3.get()) # значения ползунков
e_k1_1.delete(0, END) # очищаем окно к1_1
e_k1_1.insert(0, str(k1_1)) # вставляем в окно значение ползунка
e_k1_2.delete(0, END) # очищаем окно к1_2
e_k1_2.insert(0, str(k1_2)) # вставляем в окно значение ползунка
e_k1_3.delete(0, END) # очищаем окно к1_3
e_k1_3.insert(0, str(k1_3)) # вставляем в окно значение ползунка
#------------------------------------------------------------------------
# вертикальная шкала k1_1
scale_k1_1 = Scale(from_=8, to=-8,orient=VERTICAL,relief=GROOVE,
label="a",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_1.set(1.0)# начальное значение
#fg="black" - цвет цифр шкалы
#activebackground= 'red' - цвет ползунка при перемещении
scale_k1_1.place(x=10,y=60)
#-------------------------------------------------------------------------
# вертикальная шкала k1_2
scale_k1_2 = Scale(from_=10, to=-10,orient=VERTICAL,relief=GROOVE,
label="b",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_2.set(3.0)# начальное значение
scale_k1_2.place(x=10,y=200)
#-------------------------------------------------------------------------
# вертикальная шкала k1_3
scale_k1_3 = Scale(from_=10, to=-10,orient=VERTICAL,relief=GROOVE,
label="c",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_3.set(0.0)# начальное значение
#------------------------------------------------------------------------
#wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
# Метка y =
m_yr = Label(text=" y = ", bg="yellow", fg="black",font='Helvetica 12 bold')
m_yr.place(x=10,y=630)
# Метка 1 k1_1
label_k1_1 = Label(text=' a',
font='Helvetica 12 bold')
label_k1_1.place(x=45,y=605)
# Окно ввода коэффициента k1_1
e_k1_1 = Entry( width=4,background = '#ffeeff',font='Helvetica 12 bold')
# 1 символ = 10 пикселей
e_k1_1.delete(0, END)
e_k1_1.insert(0, "1.0")
e_k1_1.place(x=45,y=630)
k1_1 = float(e_k1_1.get())
print('k1_1= ',k1_1)
# Метка / (x +
m_xp = Label(text=" * x**3 - ", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=85,y=628)
# Метка 2 k1_2
label_k1_2 = Label(text=' b',font='Helvetica 12 bold')
label_k1_2.place(x=157,y=605)
# Окно ввода коэффициента k_1_2
e_k1_2 = Entry( width=4,background = '#ffeeff',font='Helvetica 12 bold') #
e_k1_2.delete(0, END)
e_k1_2.insert(0, "3.0")
e_k1_2.place(x=157,y=630)
k1_2 = float(e_k1_2.get())
print('k1_2= ',k1_2)
# Метка *x
m_xp = Label(text=" * x ", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=190,y=628)
'''
# Метка 3 k1_3
label_k1_3 = Label(text=' a',font='Helvetica 12 bold')
label_k1_3.place(x=332,y=605)
# Метка b
label_k1_2 = Label(text=' b',font='Helvetica 12 bold')
label_k1_2.place(x=400,y=605)
# Метка k1_1/ (x +
m_xp = Label(text= str(k1_1)+ " / (x - " + str(k1_2) +" )", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=332,y=628)
'''
# Окно ввода коэффициента k_1_3 для смены знака
e_k1_3 = Entry( width=6,background = '#ffeeff',font='Helvetica 12 bold') #
e_k1_3.delete(0, END)
e_k1_3.insert(0, "0.0")
#e_k1_3.place(x=472,y=630)
k1_3 = float(e_k1_3.get())
#print('k1_3= ',k1_3)
def draw_p(k1_1,k1_2,k1_3):
# Рисуем график ППППППППППППППППППППППППППППППППППППППППППППППППППППП
print ('Неограниченная функция')
t7.clear()
for xp in range(-100,100):
xp = xp/10
xp2= xp + 0.099
znam1 = xp + k1_2
znam2 = xp - k1_2
znam3 = xp2 + k1_2
znam4 = xp2 - k1_2
#if znam > - 0.1 and znam <0 : znam = -0.1
#if znam < 0.1 and znam >0 : znam = 0.1
if abs(znam1)> 0.03 and abs(znam2)> 0.03:
yp=k1_1 / (znam1) + k1_1/(znam2)
yp1=k1_1 *xp*xp*xp - k1_2*xp
yp2=k1_1 *xp2*xp2*xp2 - k1_2*xp2
#m_pset(mset,t7,xp,yp,5,'red') # Строим точками.
m_line(mset,t7,xp,yp1,xp2,yp2,5,'red')
# Кнопка PLOT_P
but_plot=Button(text=' PLOT_P ',bg='green', command= plot_p)
but_plot.place(x=10,y=660,width=223)
draw_p(k1_1,k1_2,k1_3) # Рисуем график при старте.
#eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
mainloop()
'''
Python 3. Алгебра 9 класс. Углубленный курс.
713_1-algebra_-9kl_-uglubl_-ur__makarychev-i-dr_2018-4-ilovepdf-compressed.pdf
(стр.24, рис.14). Программа a9u-s024-r014-obr.py.
Построение графика функции: x=k1_1 *y*y*y - k1_2*y.
В отличие аналогичных программ на языке pascalABC.NET в программах на
языке python 3 проще реализовать интерактивность.
В представленной программе a9u-s024-r014-obr.py коэффициенты вводятся
(или перемещением ползунков на шкалах или вводом в текстовые окна)
не выходя из программы. Такой интерфейс обеспечивает более интуитивно
понятную интерактивность.
Использование программы позволяет рассмотреть больше вариантов при изложении
материала и подготовить разные задания для проверки усвоения при контроле.
Разрешение экрана 1024*768
Санкт-Петербург, Лицей №554, июль 2020.
При работе в папке с программой должен находиться файл L554.py.
Это внешняя подпрограмма, которая берет на себя рутинную работу
(построение координатной сетки, пересчет масштабов и т.п.).
Модуль L554.py можно получить на сайте turtk.viptop.ru или на сайте
infourok в работе "Использование языка программирования python 3
и модуля L554 на уроках дополнительного образования (или в базовом
курсе) школьной информатики в условиях реализации ФГОС".
'''
# a9u-s024-r014-obr.py
# Программа неограниченной обратной функции
from L554 import *
import turtle as t
import turtle
from turtle import *
from math import *
t.hideturtle()
t1=Turtle()
t1.hideturtle()
t5=Turtle()
t5.hideturtle()
t6=Turtle()
t6.hideturtle()
t7=Turtle()
t7.hideturtle()
global x, y,mset,k1_1,k1_2,k1_3,k2_1
x=t1.xcor()
y=t1.ycor()
mset =100 # Сколько точек на 1 деление сетки координат
setka(mset) # Построение сетки в заданном масштабе
msetout(mset)
t.onscreenclick(coor) # Вычисление координат
# Выводит в форму значения координат щелчка мыши
# Выводит в shell значения угла в градусах и значения sin и cos
# Линии вверху слева
line(t1,-ws/2+10,hs/2-30,-ws/2+50,hs/2-30,50,'yellow')
line(t1,-ws/2+10,hs/2-20,-ws/2+50,hs/2-20,10,'white')
line(t1,-ws/2+10,hs/2-30,-ws/2+50,hs/2-30,10,'blue')
line(t1,-ws/2+10,hs/2-40,-ws/2+50,hs/2-40,10,'red')
# Вот отсюда начинаем редактировать, дополнять и тд.
# Вместо "Наша школа" пишем свои реквизиты
wt.title ('Наша школа и СПБ Лицей 554')
'''
Параметры оператора линии:
m_line(mset,t7,x1,y1,x2,y2,5,'green')
mset,t7, - оставляем как есть.
Далее по порядку: координаты начала и конца линии "х1","у1", "х2","у2"
( все размеры в координатах сетки экрана - т.е. идентично клеткам тетради).
толщина линии в пикселях(не масштабируется), цвет.
Параметры оператора точки.
m_pset(mset,t7,xc,yc,5,'blue')
mset,t7, - оставляем как есть (для параболы t6 для окружности t7).
Далее координаты точки, диаметр (5 пикселей) и цвет.
Построение окружностей и графиков функций производим точками или отрезками
линий.
Модуль L554.py должен находиться в папке с программой.
Напоминаем: модуль L554 можно получить на сайте turtk.viptop.ru или на сайте
infourok.
На работу стандартных операторов языка python 3 импорт модуля L554.py
не влияет. Но много рутинных операций (построение координатной сетки и др.)
не придется выполнять в основной программе, которая становится короче
и понятнее.
'''
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# Подпрограмма построения графика
def plot_p():
print('PLOT_P')
t5.clear()
x5_1=-7
k1_1 = float(e_k1_1.get())
k1_2 = float(e_k1_2.get())
k1_3 = float(e_k1_3.get())
#k2_1 = float(e_k2_1.get())
y5_1= k1_1 * x5_1 + k1_2
x5_2= 7
y5_2= k1_1 * x5_2 + k1_2
scale_k1_1.set(k1_1) # сдвигаем ползунок по значению из окна
scale_k1_2.set(k1_2) # сдвигаем ползунок по значению из окна
scale_k1_3.set(k1_3) # сдвигаем ползунок по значению из окна
'''
# Метка k1_1/ (x -
m_xp = Label(text= str(k1_1)+ " / (x - " + str(k1_2) +" ) ",
bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=232,y=628)
'''
draw_p(k1_1,k1_2,k1_3) # При нажатии кнопки
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def plot_scale(ev=None):
t5.clear()
x5_1=-7
k1_1 = float(scale_k1_1.get())
k1_2 = float(scale_k1_2.get()) # значения ползунков
k1_3 = float(scale_k1_3.get()) # значения ползунков
e_k1_1.delete(0, END) # очищаем окно к1_1
e_k1_1.insert(0, str(k1_1)) # вставляем в окно значение ползунка
e_k1_2.delete(0, END) # очищаем окно к1_2
e_k1_2.insert(0, str(k1_2)) # вставляем в окно значение ползунка
e_k1_3.delete(0, END) # очищаем окно к1_3
e_k1_3.insert(0, str(k1_3)) # вставляем в окно значение ползунка
#------------------------------------------------------------------------
# вертикальная шкала k1_1
scale_k1_1 = Scale(from_=8, to=-8,orient=VERTICAL,relief=GROOVE,
label="a",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_1.set(1.0)# начальное значение
#fg="black" - цвет цифр шкалы
#activebackground= 'red' - цвет ползунка при перемещении
scale_k1_1.place(x=10,y=60)
#-------------------------------------------------------------------------
# вертикальная шкала k1_2
scale_k1_2 = Scale(from_=10, to=-10,orient=VERTICAL,relief=GROOVE,
label="b",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_2.set(3.0)# начальное значение
scale_k1_2.place(x=10,y=200)
#-------------------------------------------------------------------------
# вертикальная шкала k1_3
scale_k1_3 = Scale(from_=10, to=-10,orient=VERTICAL,relief=GROOVE,
label="c",troughcolor='green',background='yellow',
resolution=0.01,fg="black",activebackground='red',
length=100,command= plot_scale)
scale_k1_3.set(0.0)# начальное значение
#------------------------------------------------------------------------
#wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
'''
# Метка y =
m_yr = Label(text=" y = ", bg="yellow", fg="black",font='Helvetica 12 bold')
m_yr.place(x=10,y=630)
'''
# Метка x =
m_yr = Label(text=" x = ", bg="yellow", fg="black",font='Helvetica 12 bold')
m_yr.place(x=10,y=630)
# Метка 1 k1_1
label_k1_1 = Label(text=' a',
font='Helvetica 12 bold')
label_k1_1.place(x=45,y=605)
# Окно ввода коэффициента k1_1
e_k1_1 = Entry( width=4,background = '#ffeeff',font='Helvetica 12 bold')
# 1 символ = 10 пикселей
e_k1_1.delete(0, END)
e_k1_1.insert(0, "1.0")
e_k1_1.place(x=45,y=630)
k1_1 = float(e_k1_1.get())
print('k1_1= ',k1_1)
# Метка * y**3 -
m_xp = Label(text=" * y**3 - ", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=85,y=628)
# Метка 2 k1_2
label_k1_2 = Label(text=' b',font='Helvetica 12 bold')
label_k1_2.place(x=157,y=605)
# Окно ввода коэффициента k_1_2
e_k1_2 = Entry( width=4,background = '#ffeeff',font='Helvetica 12 bold') #
e_k1_2.delete(0, END)
e_k1_2.insert(0, "3.0")
e_k1_2.place(x=157,y=630)
k1_2 = float(e_k1_2.get())
print('k1_2= ',k1_2)
# Метка *y
m_xp = Label(text=" * y ", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=190,y=628)
'''
# Метка 3 k1_3
label_k1_3 = Label(text=' a',font='Helvetica 12 bold')
label_k1_3.place(x=332,y=605)
# Метка b
label_k1_2 = Label(text=' b',font='Helvetica 12 bold')
label_k1_2.place(x=400,y=605)
# Метка k1_1/ (x +
m_xp = Label(text= str(k1_1)+ " / (x - " + str(k1_2) +" )", bg="yellow", fg="black",font='Helvetica 13 bold')
m_xp.place(x=332,y=628)
'''
# Окно ввода коэффициента k_1_3 для смены знака
e_k1_3 = Entry( width=6,background = '#ffeeff',font='Helvetica 12 bold') #
e_k1_3.delete(0, END)
e_k1_3.insert(0, "0.0")
#e_k1_3.place(x=472,y=630)
k1_3 = float(e_k1_3.get())
#print('k1_3= ',k1_3)
def draw_p(k1_1,k1_2,k1_3):
# Рисуем график ППППППППППППППППППППППППППППППППППППППППППППППППППППП
print ('Неограниченная обратная функция')
t7.clear()
'''
for xp in range(-100,100):
xp = xp/10
xp2= xp + 0.099
znam1 = xp + k1_2
znam2 = xp - k1_2
znam3 = xp2 + k1_2
znam4 = xp2 - k1_2
'''
for yp in range(-100,100):
yp = yp/10
yp2= yp + 0.2
znam1 = yp + k1_2
znam2 = yp - k1_2
znam3 = yp2 + k1_2
znam4 = yp2 - k1_2
#if znam > - 0.1 and znam <0 : znam = -0.1
#if znam < 0.1 and znam >0 : znam = 0.1
'''
if abs(znam1)> 0.03 and abs(znam2)> 0.03:
yp=k1_1 / (znam1) + k1_1/(znam2)
yp1=k1_1 *xp*xp*xp - k1_2*xp
yp2=k1_1 *xp2*xp2*xp2 - k1_2*xp2
#m_pset(mset,t7,xp,yp,5,'red') # Строим точками.
m_line(mset,t7,xp,yp1,xp2,yp2,5,'red')
'''
if abs(znam1)> 0.0001 and abs(znam2)> 0.0001:
#xp=k1_1 / (znam1) + k1_1/(znam2)
xp1=k1_1 *yp*yp*yp - k1_2*yp
xp2=k1_1 *yp2*yp2*yp2 - k1_2*yp2
#m_pset(mset,t7,xp,yp,5,'red') # Строим точками.
#m_line(mset,t7,xp,yp1,xp2,yp2,5,'red')
m_line(mset,t7,xp1,yp,xp2,yp2,5,'red')
# Кнопка PLOT_P
but_plot=Button(text=' PLOT_P ',bg='green', command= plot_p)
but_plot.place(x=10,y=660,width=223)
draw_p(k1_1,k1_2,k1_3) # Рисуем график при старте.
#========================================================
mainloop()
Последовательное изучение графиков обычной и обратной функций с применением программ на языке python 3 позволяет легко усвоить этот нетривиальный материал.
© ООО «Знанио»
С вами с 2009 года.