Разработка web-приложения. ЛР по ВТП для ВТ (Питон). Методические указания к лабораторным работам для студентов, обучающихся в бакалавриате по направлениям
Скачать 2.07 Mb.
|
Построение графиков Цель работы: приобретение практического опыта по построению графиков математических функций средствами канвы модуля tkinter с разным уровнем точности. Методические указания Канва формы является эффективным средством создания графиков, иллюстрирующих математические зависимости. Исходным для построения является массив значений, преобразуемый в график с помощью метода канвы PolyLine(<массив точек>), который подробно рассмотрен в лабораторных работах. Поскольку график всегда строится на пространстве определенного размера, то обязательным является его масштабирование на основе определенных заранее коэффициентов масштабирования как по оси Х- mx, так и по Y - my. Предполагая, что размер пространства графика по вертикали равен Ну пикселей, коэффициент my определяется как my = Ну/Rу, где Rу - размах значений исходной функции, определяемый как Rу = Ymax - Ymin, Ymax - максимальное значение функции; Ymin - минимальное значение функции. При этом возможны три варианта расположения графика относительно оси Х (рис. 6.1). В первом случае (а) Rу = Ymax, т.е. принимается, что Ymin = 0. Соответственно, ось Х отображается в самом низу графика. Во втором случае (б) R = |Ymin|, т.е. принимается, что Ymax = 0. Соответственно, ось X отображается на самом верху графика. Для третьего случая основная проблема - правильное расположение оси Х, для чего требуется знание my. Соответственно, mх определяется как mх = Нx/Rx, где Нx - размер пространства графика по горизонтали в пикселях; Rx - размах значений аргумента, определяемый как Rx = Xк - Хн. Xк - конечное значение аргумента; Хн - начальное значение аргумента. Обычно ось Y совпадает с Хн. В дальнейшем, при создании графика, предполагается, что координаты его точек хт относительно начала координат всей формы (0Г) определяются как (рис. 2). хт = mх* (х - Хн) + х где х - очередное значение аргумента, а х - смещение начала локальной системы координат (координат графика с началом 0Л) относительно правой стороны формы в пикселях. Координаты yт находятся по более сложному алгоритмы, поскольку, как отмечалось ранее, положительным для оси Y является направление вниз. Поэтому (рис. 6.2) координата конкретной точки находится как ут = у - mу* у, где у - очередное значение функции, а у - смещение начала локальной системы координат относительно верхней границы формы в пикселях Значение у зависит от варианта графика (см. рис. 1): - в первом случае должно обеспечиваться условие у Ну; - во втором у 0; - для третьего случая у mу * Ymax. Разметка координатных осей надписями и числовыми значениями может быть выполнена методом <имя канвы>.create_text(<координаты опорной точки>, text="<отображаемый текст>", [<параметры шрифта>]) Рисование графика методом LineTo(x, y) с достаточно большим шагом аргумента приводит к созданию ломаной кривой, не отражающей истинного вида требуемой функции. Для повышения качества графика надо уменьшать шаг аргумента, сведя его в пределе к расчету координат каждого отдельного пикселя кривой, т.е. к ∆x = (Xк - Хн) / Нx. Данный подход может привести к большому объему вычислений. Если не требуется абсолютная точность в отображении функции, то можно уменьшить объем таких вычислений путем сглаживания графика на основе использования параметра smooth=1 у пол илинии, т.е. в первом варианте графика этот параметр находится в нулевом значении (значение по умолчанию). В данной работе требуется построить три варианта одного и того же графика. Для этого предлагается использовать виджет Notebook (многостраничный блокнот, рис. 6.3). Что требует предварительной загрузки расширения ttk, в котором находится этот виджет. Ниже приведен листинг для создания блокнота из двух страниц и размещения на одной из страниц канвы, как базы для формирования графика: from tkinter import * from tkinter import ttk root = Tk() root.title("Графики") root.geometry('600x450') tab_control = ttk.Notebook(root) #создается элемент управления вкладкой tab1 = Frame(tab_control) # создается вкладка1 tab2 = Frame(tab_control) #создается вкладка2 tab_control.add(tab1, text='Первая') #текст ярлыка вкладки1 tab_control.add(tab2, text='Вторая') #текст ярлыка вкладки2 tab_control.pack(expand=1, fill='both') c = Canvas(tab1, width=400, height=200, bg="white") c.place(x = 20, y = 20) root.mainloop() Листание страниц блокнота осуществляется щелчками мыши по их ярлыкам. Порядок выполнения лабораторной работы На основе графических примитивов создать масштабированный график с прорисовкой осей координат и их разметкой (на каждой оси должно быть не менее пяти числовых отсечек). При этом сам график должен максимально полно располагаться на заданном пространстве (т.е. длина осей Х и Y должна точно соответствовать заданным диапазонам: Xк - Хн, Ymax - Ymin). В программе явно определяются: размах функции Ну; вариант расположения графика (см. рис.1); коэффициенты масштабирования mх и mу. График строится в трех вариантах на разных вкладках компонента Notebook: с заданным шагом по оси Х; с расчетом координат каждого пикселя графика; с использованием сглаживания полилинии. Индивидуальные задания для построения представлены ниже. В(1)-1. На координатном пространстве размером 300х300 пикселей отобразить график заданной функции: ; 0 <= x <= 10; ∆x = 0.5; В(1)-2. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; 0.1 <= x <= 1.8; ∆x = 0.2. В(1-3. На координатном пространстве размером 500х300 пикселей отобразить график заданной функции: ; 5 <= x <= 10; ∆x = 0.4. В(1)-4. На координатном пространстве размером 600х300 пикселей отобразить график заданной функции: ; -5 <= x <= -2; ∆x = 0.3. В(1)-5. На координатном пространстве размером 400х200 пикселей отобразить график заданной функции: ; 2 <= x <= 9; ∆x = 0.5. В(1)-6. На координатном пространстве размером 500х400 пикселей отобразить график заданной функции: ; 0.1 <= x <= 2.9; ∆x = 0.2. В(1)-7. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 1 <= x <= 15; ∆x = 1. В(1)-8. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; 0.5 <= x <= 5; ∆x = 0.3. В(1)-9. На координатном пространстве размером 400х400 пикселей отобразить график заданной функции: ; -1 <= x <= 1.8; ∆x = 0.2. В(1)-10. На координатном пространстве размером 600х600 пикселей отобразить график заданной функции: ; -5 <= x <= 5; ∆x = 0.5. В(1)-11. На координатном пространстве размером 300х400 пикселей отобразить график заданной функции: ; -15 <= x <= 36; ∆x = 3. В(1)-12. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; 0 <= x <= 1.8; ∆x = 0.1. В(1)-13. На координатном пространстве размером 500х300 пикселей отобразить график заданной функции: ; -5 <= x <= 5; ∆x = 0.5. В(1)-14. На координатном пространстве размером 300х600 пикселей отобразить график заданной функции: ; -3 <= x <= 3,5; ∆x = 0,5. В(1)-15. На координатном пространстве размером 400х500 пикселей отобразить график заданной функции: ; -4 <= x <= 3; ∆x = 0,4. В(1)-16. На координатном пространстве размером 400х600 пикселей отобразить график заданной функции: ; 0.9 <= x <= 2.7; ∆x = 0.2. В(1)-17. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; 0.8 <= x <= 4.4; ∆x = 0.2. В(1)-18. На координатном пространстве размером 300х300 пикселей отобразить график заданной функции: ; 0.9 <= x <= 4.1; ∆x = 0.2. В(1)-19. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; -5 <= x <= 5; ∆x = 0.5. В(1)-20. На координатном пространстве размером 500х300 пикселей отобразить график заданной функции: ; -3 <= x <= 6.5; ∆x = 0.5. В(1)-21. На координатном пространстве размером 400х200 пикселей отобразить график заданной функции: ; -15 <= x <= 17; ∆x = 2. В(1-22. На координатном пространстве размером 500х400 пикселей отобразить график заданной функции: ; -4<= x <= 5; ∆x = 0.5. В(1)-23. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; -5 <= x <= 8.5; ∆x = 0.6. В(1)-24. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; -4 <= x <= 7; ∆x = 0.4. В(1)-25. На координатном пространстве размером 400х400 пикселей отобразить график заданной функции: ; -3 <= x <= 4.6; ∆x = 0.4. В(1)-26. На координатном пространстве размером 600х600 пикселей отобразить график заданной функции: ; -13 <= x <= -1; ∆x = 1. В(1)-27. На координатном пространстве размером 700х700 пикселей отобразить график заданной функции: ; 0 <= x <= 12; ∆x = 1. В(1)-28. На координатном пространстве размером 800х800 пикселей отобразить график заданной функции: ; 5 <= x <= 15; ∆x = 0.4. В(1)-29. На координатном пространстве размером 600х600 пикселей отобразить график заданной функции: ; -5 <= x <= -2; ∆x = 0.3 B(1)-30. На координатном пространстве размером 600х500 пикселей отобразить график заданной функции: ; -5 <= x <= 6.5; ∆x = 0.5. B(1)-31. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 0.1 <= x <= 3.5; ∆x = 0.4. B(1)-32. На координатном пространстве размером 600х500 пикселей отобразить график заданной функции: ; 0.5 <= x <= 6; ∆x = 0.4. B(1)-33. На координатном пространстве размером 800х800 пикселей отобразить график заданной функции: ; 5 <= x <= 15; ∆x = 0.4. B(1)-34. На координатном пространстве размером 600х600 пикселей отобразить график заданной функции: ; -5 <= x <= -2; ∆x = 0.3 B(1)-35. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; -5 <= x <= -0.2; ∆x = 0.3. B(1)-36. На координатном пространстве размером 600х500 пикселей отобразить график заданной функции: ; -5 <= x <= 11; ∆x = 1. B(1)-37. На координатном пространстве размером 600х600 пикселей отобразить график заданной функции: ; -9 <= x <= -1; ∆x = 0.5. B(1)-38. На координатном пространстве размером 600х500 пикселей отобразить график заданной функции: ; -9 <= x <= 1; ∆x = 0.5. B(1)-39. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; 0.1 <= x <= 1.8; ∆x = 0.2. B(1)-40. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 1 <= x <= 15; ∆x = 1. B(1)-41. На координатном пространстве размером 400х400 пикселей отобразить график заданной функции: ; -1 <= x <= 1.8; ∆x = 0.2. B(1)-42. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; 0 <= x <= 1.8; ∆x = 0.1. B(1)-43. На координатном пространстве размером 500х300 пикселей отобразить график заданной функции: ; -5 <= x <= 5; ∆x = 0.5. B(1)-44. На координатном пространстве размером 400х500 пикселей отобразить график заданной функции: ; -4 <= x <= 3; ∆x = 0,4. B(1)-45. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; 0.8 <= x <= 4.4; ∆x = 0.2. B(1)-46. На координатном пространстве размером 300х300 пикселей отобразить график заданной функции: ; 0.9 <= x <= 4.1; ∆x = 0.2. В(1)-47. На координатном пространстве размером 500х600 пикселей отобразить график заданной функции: ; 1.1 <= x <= 3.8; ∆x = 0.2. В(1)-48. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 3 <= x <= 25; ∆x = 2. В(1)-49. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; -1 <= x <= 2.8; ∆x = 0.3. В(1)-50. На координатном пространстве размером 700х500 пикселей отобразить график заданной функции: ; 0.8 <= x <= 5.4; ∆x = 0.3. В(1)-51. На координатном пространстве размером 500х300 пикселей отобразить график заданной функции: ; -3 <= x <= 6.5; ∆x = 0.6. В(1)-52. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; -3 <= x <= 4.6; ∆x = 0.5. В(1)-53. На координатном пространстве размером 500х700 пикселей отобразить график заданной функции: ; 0 <= x <= 12; ∆x = 0.8. В(1)-54. На координатном пространстве размером 800х600 пикселей отобразить график заданной функции: ; 5 <= x <= 15; ∆x = 0.7. B(1)-55. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 0.5 <= x <= 6; ∆x = 0.3. B(1)-56. На координатном пространстве размером 500х400 пикселей отобразить график заданной функции: ; 0.1 <= x <= 2.8; ∆x = 0.3. B(1)-57. На координатном пространстве размером 400х300 пикселей отобразить график заданной функции: ; -5 <= x <= 6.5; ∆x = 0.4. B(1)-58. На координатном пространстве размером 500х500 пикселей отобразить график заданной функции: ; -2 <= x <= 1.8; ∆x = 0.3. B(1)-59. На координатном пространстве размером 600х500 пикселей отобразить график заданной функции: ; -4 <= x <= 2; ∆x = 0,4. В(1)-60. На координатном пространстве размером 700х400 пикселей отобразить график заданной функции: ; 2.1 <= x <= 3.8; ∆x = 0,1. В(1)-61. На координатном пространстве размером 600х400 пикселей отобразить график заданной функции: ; 1 <= x <= 4.8; ∆x = 0.3. Проверить корректность построения графика программой Microsoft Excel. Содержание отчета: Титульный лист установленной формы; Задание на выполнение лабораторной работы; Структура проекта; Блок-схема начальной установки, блок-схемы процедур; Листинг программы. График, построенный средствами MS Excel. Контрольные вопросы 1) Как определяется размах функции? 2) Почему требуется использовать коэффициенты масштабирования при создании графиков? 3) Почему координаты хт и ут точки определяются по разным алгоритмам? 4) Какие методы канвы можно использовать для прорисовки графика? Можно ли график сделать разноцветным (точки одного графика разного цвета)? Лабораторная работа № 7 |