Координатный метод решения задач на треугольниках при помощи языка программирования Python

XVII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Координатный метод решения задач на треугольниках при помощи языка программирования Python

Плясунов А.Н. 1
1МАОУ СОШ № 15 г. Челябинска
Васильева И.В. 1
1МАОУ СОШ № 15 г. Челябинска
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Данная тема заинтересовала меня возможностью создать удобный инструмент для решения математических задач координатным методом. Как можно быстро себя проверить, если поменять местами значения букв и координат точек. Кроме того, данное приложение является прекрасным помощником для учителя математики, который хочет дать ученикам задания с множеством вариантов. Она полезна тем, что помогает сэкономить время за решением задач по математике. Также при помощи этой программы можно проверить правильность решения.

Актуальность решения геометрических задач при помощи языка программирования Pythonна основе координатного метода заключается в оптимизации времени и усилий, потраченных на работу с большим объёмом данных. Данная программа вычисляет вектора сторон медиан.

Решение математических задач при помощи языка программирования Python на основе координатного метода на данный момент не имеет аналогов, то есть является новым удобным инструментом для широкого спектра применения в области математических расчётов. В дальнейшем планируется разработать программу для решения стереометрических задач координатным методом.

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

Для решения поставленной цели необходимо выполнить следующие задачи:

Изучить координатный метод решения геометрических задач.

Получить базовые знания в области языка программирования Python

Научиться пользоваться основными методами библиотеки tkinter

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

Глава 1. Теоретическая часть

Метод координат на плоскости

Введем прямоугольную систему для треугольника АВС обозначит точку А (0; 0) за начало координат, тогда координаты точки В (х1; у1), С (х2; у2) (рис. 1). Затем находим координаты векторов: , те , ,

Рис. 1. Треугольник в системе координат

Длина вектора вычисляется по формуле:

||=, ||=, ||=

1.2. Решение основных задач координатным методом

1.2.1 Нахождение середины отрезков

Для данного треугольника АВС найдем координаты середин сторон по следующим формулам:

; , М1 – середина AB

; – середина AC

; , – середина BC

Рис. 2. Треугольник с медианами

1.2.2. Нахождение длин медиан треугольника

Найдем координаты векторов медиан треугольника АВС:

Найдем длину медиан треугольника АВС:

1.2.3 Нахождение периметра и площади треугольника

P=||+ +

Р-полупериметр

S=

1.2.4 Нахождение углов треугольника

sinA=

sinB=

sinC=

Библиотеки, использованные в программе Python

При написании приложения часто используют библиотеки, а именно, набор готовых функций, классов и объектов для решения каких-то задач. Они значительно упрощают процесс написания кода. В своем приложении тоже использовал библиотеки (Таблица 1).

Таблица 1. Библиотеки Python

Название библиотеки

tkinter

math

random

Возможности библиотеки

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

Модуль math значительно упрощает работу с числами

Модуль random генерирует случайные числа, буквы и элементы последовательности

Недостатки библиотеки

Невозможно совмещение метода Tk с методом canvas. Из-за этого в программе отсутствуют функциональные кнопки

-

-

Глава 2. Практическая часть

2.1. Описание программы функционального интерфейса

Для упрощения вычислений координатным методом решения задач я написал программу на языке Python. В ней используются несколько библиотек, описанных выше. При помощи функции input() пользователь вводит координаты точки B и C(приложение 1). Далее программа производит вычисления для получения модулей векторов, медиан и площади (приложение 2). После этого создается класс Example, в котором при помощи метода __init__ и функции initUI создается координатная плоскость и треугольник (приложение 3). В конце располагается функция main, которая отвечает за все важные процессы и зацикливается оператором if(приложение 4).

2.2. Описание программы графического интерфейса

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

Рис.3. Интерфейс программы

Заключение

В ходе работы я изучил координатный метод решения геометрических задач. Получил базовые знания в области языка программирования Python. Научился пользоваться основными методами библиотеки tkinter. Создал программу, которая вычисляет вектора сторон треугольника, его площадь, периметр и медианы. В 10-11 классе я планирую написать программу для решения стереометрических задач координатным методом, которые включаются во вторую часть профильной математики.

Список литературы

1. Бэрри Пол. Изучаем программирование на Python. – М., «Эксмо», 2017 г., 624 с.

2. Бейдер Дэн. Чистый Python. Тонкости программирования для профи. – СПб., «Питер», 2022 г., 288 с.

3. Вандер Плас Дж.. Python для сложных задач. Наука о данных и машинное обучение. – СПб., «Питер», 2018 г., 576 с.

Приложение 1. Импорт библиотек и внесение координат точек С и В

#ИМПОРТ БИБЛИОТЕК
from tkinter import *
import math
import random
#ВНЕСЕНИЕ КООРДИНАТ
ax = input('задайте координату x точки B ')
ay = input('задайте координату y точки B ')
bx = input('задайте координату x точки C ')
by = input('задайте координату y точки C ')

Приложение 2. Вычисление площади, векторов сторон и координат медиан

#СОЗДАНИЕ ОКНА И ВЫЧИСЛЕНИЕ КООРДИНАТ СТОРОН
root = Tk()
root.geometry('800x800')
i = abs(int(ax))
j = abs(int(ay))
k = [i, j]
k = int(ax) ** 2 + int(ay) ** 2
d = abs(int(bx))
o = abs(int(by))
l = [d, o]
l = int(bx) ** 2 + int(by) ** 2
q = abs(int(ax) - int(bx))
e = abs(int(by) - int(ay))
h = [q, e]
f = ((int(ax) - int(bx)) ** 2 + (int(ay) - int(by)) ** 2)
k = math.sqrt(k)
l = math.sqrt(l)
f = math.sqrt(f)
p = (k + l + f) / 2
#ВЫЧИСЛЕНИЕ ПЛОЩАДИ
qwerty = int(p) * (int(p) - int(k)) * (int(p) - int(l)) * (int(p) - int(f))
qwerty=math.sqrt(qwerty)
qwerty=qwerty**2
#КООРДИНАТЫ МЕДИАН
x4x = int(ax)/2
y4y = int(ay)/2
x5x = int(bx)/2
y5y = int(by)/2
x6x = (int(ax)+int(bx))/2
y6y = (int(ay)+int(by))/2
med1 = (x4x-int(bx))**2+(y4y-int(by))**2
med2 = (x5x-int(ax))**2+(y5y-int(ay))**2
med3 = x6x**2+y6y**2
k = k**2
l = l**2
f = f**2
k = k//1
l = l//1
f = f//1

Приложение 3. Отрисовка всех вычислений и треугольника с медианами

#СОЗДАНИЕКЛАССА
class Example(Frame):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
global ax
global ay
global bx
global by
global k, l, f, qwerty, med1, x4x, y4y, x5x, y5y, x6x, y6y, qwerty, sinA, sinB, sinC
self.master.title("Счетчиквекторовиплощадитреугольника")
self.pack(fill=BOTH, expand=1)
#ТРЕУГОЛЬНИК
canvas = Canvas(self)
canvas.create_line(
400, 400, int(ax)*18+400, 400 - int(ay)*18)
canvas.create_line(
400, 400, int(bx)*18+400, 400 - int(by)*18)
canvas.create_line(
int(ax)*18+400, 400 - int(ay)*18, int(bx)*18+400, 400 - int(by)*18)
#ПЛОСКОСТЬ
canvas.create_line(400, 0, 400, 800)
canvas.create_line(
0, 400, 800, 400)
canvas.create_line(
400, 0, 410, 10)
canvas.create_line(
400, 0, 390, 10)
canvas.create_line(
800, 400, 790, 390)
canvas.create_line(
800, 400, 790, 410)
cl =
1
cly1 = 420
while cl <= 21:
canvas.create_line(
390, cly1, 410, cly1)
canvas.create_text(
380, cly1, text=cl)
cly1 +=
18
cl += 1
cl1 = 1
cly2 = 380
while cl1 <= 21:
canvas.create_line(
390, cly2, 410, cly2)
canvas.create_text(
420, cly2, text=cl1)
cly2 -=
18
cl1 += 1
cl2 = 1
clx1 = 380
while cl2 <= 21:
canvas.create_line(clx1
, 410, clx1, 390)
canvas.create_text(clx1
, 380, text=cl2)
clx1 -=
18
cl2 += 1
cl3 = 1
clx2 = 420
while cl3 <= 21:
canvas.create_line(clx2
, 410, clx2, 390)
canvas.create_text(clx2
, 420, text=cl3)
clx2 +=
18
cl3 += 1
#МЕДИАНЫ
canvas.create_line(400, 400, x6x*18+400, y6y*(-18)+400, fill="#DD2849")
canvas.create_line(
int(ax)*18+400, int(ay)*(-18)+400, x5x*18+400, y5y*(-18)+400, fill="#5828E9")
canvas.create_line(
int(bx) * 18 + 400, int(by) * (-18) + 400, x4x * 18 + 400, y4y * (-18) + 400, fill="#12BF5A")
canvas.create_text(x4x *
18 + 407, y4y * (-18) + 412, fill="#12BF5A", text="M1")
canvas.create_text(x5x*
18+407, y5y*(-18)+412, fill="#5828E9", text="M2")
canvas.create_text(x6x*
18+407, y6y*(-18)+390, fill="#DD2849", text="M3")
canvas.create_text(
407, 412, text="А")
canvas.create_text(
int(ax)*18+400, 400 - int(ay)*18 + 6, text="B")
canvas.create_text(
int(bx)*18+400, 400 - int(by)*18 + 3, text="C")
#ОТВЕТЫ
canvas.create_text(630, 600, text='Ответы: ')
canvas.create_text(
630, 750, text='|AB| = v' + str(k))
canvas.create_text(
630, 735, text='|AC| = v' + str(l))
canvas.create_text(
630, 720, text='|BC| = v' + str(f))
canvas.create_text(
630, 705, text="S(ABC)= v" + str(qwerty))
canvas.create_text(
630, 690, text="|CM1|= v" + str(med1))
canvas.create_text(
630, 675, text="|BM2|= v" + str(med2))
canvas.create_text(
630, 660, text="|AM3|= v" + str(med3))
#ДАНО
canvas.create_text(630, 15, text="Дано: ")
canvas.create_text(
630, 30, text="?ABC")
canvas.create_text(
630, 45, text="A{0;0}")
canvas.create_text(
630, 60, text="B{" + str(ax) + ";" + str(ay) + "}")
canvas.create_text(
630, 75, text="C{" + str(bx) + ";" + str(by) + "}")
canvas.create_text(
130, 15, text='Решение: ')
canvas.create_text(
130, 30, text='|(AB) |=√(x_1^2+y_1^2 ) ')
canvas.create_text(
130, 45, text='|(AB) |=√('+str(ax)+'^2+'+str(ay)+'^2 ) ')
canvas.create_text(
130, 60, text='|(BC) |=√(x_2^2+y_2^2 ) ')
canvas.create_text(
130, 75, text='|(BC) |=√(' + str(ax) + '^2+' + str(ay) + '^2 ) ')
canvas.create_text(
130, 90, text='| (AC) |=√((x_2 ^ 2 - x_1 ^ 2) + (y_2 ^ 2 - y_1 ^ 2)) ')
canvas.create_text(
130, 105, text='| (AC) |=√(('+str(bx)+' ^ 2 - '+str(ax)+' ^ 2) + ('+str(ay)+' ^ 2 - '+str(by)+' ^ 2)) ')
canvas.pack(
fill=BOTH, expand=1)

Приложение 4. Отображениеокна

#ОТОБРАЖЕНИЕОКНА
def main():
root = Tk()

ex = Example()
root.geometry(
"400x250+300+300")
root.mainloop()

if __name__ == '__main__':
main()
root.mainloop()

Просмотров работы: 104