Учебно-исследовательская работа "Компьютерная программа «Решение треугольников»"

1
Учебно-исследовательская работа
«Компьютерная программа
«Решение треугольников»
Версия 1.0
Автор: ученик 9-го класса МКОУ
Плесская СШ
Рева Леонид
Научный руководитель: учитель
математики и информатики МКОУ
Плесская СШ
Юдин Андрей Борисович
Плес. 2017 год
2
СОДЕРЖАНИЕ:
1. Цели и задачи проекта…………………………………………………. стр. 2
2. Тригонометрия в нашей жизни………………………………………… стр. 3
3. Описание программы …………………………………………………... стр. 5
4. Математическая модель………………………………………………….стр. 7
5. Исходный текст программы …………………………………………….стр. 9
6. Список используемой литературы……………………………………... стр.14
Цель работы: создание компьютерной программы автоматизирующей решение
треугольников при различных исходных данных.
Задачи проекта:
1. Изучение теоретического материала по теме «Решение треугольников»
2. Составление математической модели
3. Разработка интерфейса
4. Написание программы
5. Испытание и тестирование программы
6. Написание документации
3
ТРИГОНОМЕТРИЯ В НАШЕЙ ЖИЗНИ
Многие задаются вопросами: зачем нужна тригонометрия? Как она используется в
нашем мире? С чем может быть связана тригонометрия? Попробуем ответить на эти
вопросы. Тригонометрия или тригонометрические функции используются в астрономии
(особенно для расчётов положения небесных объектов), когда требуется сферическая
тригонометрия, в морской и воздушной навигации, в теории музыки, в акустике, в
оптике, в анализе финансовых рынков, в электронике, в теории вероятности, в статистике,
в биологии, в медицинской визуализации ,например, компьютерной томографии и
ультразвук, в аптеках, в химии, в теории чисел, в сейсмологии, в метеорологии, в
океанографии, во многих физических науках, в межевании и геодезии, в архитектуре, в
фонетике, в экономике, в электротехнике, в машиностроении, в гражданском
строительстве, в компьютерной графике, в картографии, в кристаллографии, в разработке
игр и многих других областях.
Геодезия
Часто с синусами и косинусами приходится сталкиваться геодезистам. Они имеют
специальные инструменты для точного измерения углов. При помощи синусов и
косинусов углы можно превратить в длины или координаты точек на земной поверхности.
Астрономия
Зачатки тригонометрии можно найти в математических рукописях Древнего Египта,
Вавилона и Древнего Китая. 56-я задача из папируса Ринда (II тысячелетие до н. э.)
предлагает найти наклон пирамиды, высота которой равна 250 локтей, а длина стороны
основания 360 локтей.
Дальнейшее развитие тригонометрии связано с именем астронома Аристарха Самосского
(III век до н. э.). В его трактате «О величинах и расстояниях Солнца и Луны» ставилась
задача об определении расстояний до небесных тел; эта задача требовала вычисления
отношения сторон прямоугольного треугольника при известном значении одного из углов.
Аристарх рассматривал прямоугольный треугольник, образованный Солнцем, Луной и
Землёй во время квадратуры. Ему требовалось вычислить величину гипотенузы
(расстояние от Земли до Солнца) через катет (расстояние от Земли до Луны) при
известном значении прилежащего угла (87°), что эквивалентно вычислению значения sin
угла 3. По оценке Аристарха, эта величина лежит в промежутке от 1/20 до 1/18, то есть
расстояние до Солнца в 20 раз больше, чем до Луны; на самом деле Солнце почти в 400
раз дальше, чем Луна, ошибка возникла из-за неточности в измерении угла.
Несколько десятилетий спустя Клавдий Птоломей в своих трудах «География»,
«Аналемма» и «Планисферий» даёт подробное изложение тригонометрических
приложений к картографии, астрономии и механике. Среди прочего,
описанастереографическая проекция, исследованы несколько практических задач,
например: определить высоту и азимутнебесного светила по его склонению и часовому
углу. С точки зрения тригонометрии, это значит, что надо найти сторону сферического
треугольника по другим двум сторонам и противолежащему углу.
В общем, можно сказать, что тригонометрия использовалась для:
· точного определения времени суток;
· вычисления будущего расположения небесных светил, моментов их восхода и
заката, затмений Солнца и Луны;
· нахождения географических координат текущего места;
4
· вычисления расстояния между городами с известными географическими
координатами.
Гномон— древнейший астрономический инструмент, вертикальный предмет (стела,
колонна, шест), позволяющий по наименьшей длине его тени (в полдень) определить
угловую высоту солнца.
Так, под котангенсом понималась длина тени от вертикального гномонавысотой 12
(иногда 7) единиц; первоначально эти понятия использовались для расчёта солнечных
часов. Тангенсом называлась тень от горизонтального гномона. Косекансом и секансом
назывались гипотенузы соответствующих прямоугольных треугольников.
Архитектура
Широко используется тригонометрия в строительстве, а особенно в архитектуре.
Большинство композиционных решений и построений рисунков проходило именно с
помощью геометрии. Но теоретические данные мало что значат. Хочу привести пример на
построение одной скульптуры французского мастера Золотого века искусства.
Пропорциональное соотношение в построении статуи было идеально. Однако при
поднятии статуи на высокий пьедестал, она смотрелась уродливой. Скульптором не было
учтено, что в перспективе к горизонту уменьшаются многие детали и при взгляде снизу
вверх уже не создается впечатления ее идеальности. Велось множество расчетов, чтобы
фигура с большой высоты смотрелась пропорционально. В основном они были основаны
на методе визирования, то есть приблизительного измерения, на глаз. Однако
коэффициент разности тех или иных пропорций позволили сделать фигуру более
приближенной к идеалу. Таким образом, зная примерное расстояние от статуи до точки
зрения, а именно от верха статуи до глаз человека и высоту статуи, можно рассчитать
синус угла падения взгляда с помощью таблицы (тоже самое мы можем сделать и с
нижней точкой зрения), тем самым найдем точку зрения. Ситуация меняется , так как
статую поднимают на высоту, поэтому расстояние от верхушки статуи до глаз человека
увеличивается, следовательно и синус угла падения увеличивается. Сравнив изменения
расстояния от верхушки статуи до земли в первом и во втором случаи, можно найти
коэффициент пропорциональности. Впоследствии мы получим чертеж, а потом
скульптуру, при поднятии которой зрительно фигура будет приближена к идеалу
Медицина и биология.
Модель боритмов можно построить с помощью тригонометрических функций. Для
построения модели биоритмов необходимо ввести дату рождения человека, дату отсчета
(день, месяц, год) и длительность прогноза (кол-во дней).
Формула сердца. В результате исследования, проведенного студентом иранского
университета Шираз Вахидом-Резой Аббаси, медики впервые получили возможность
упорядочить информацию, относящуюся к электрической активности сердца или, другими
словами, электрокардиографии. Формула представляет собой комплексное алгебраически-
тригонометрическое равенство, состоящее из 8 выражений, 32 коэффициентов и 33
основных параметров, включая несколько дополнительных для расчетов в случаях
аритмии. Как утверждают медики, эта формула в значительной степени облегчает процесс
описания основных параметров деятельности сердца, ускоряя, тем самым, постановку
диагноза и начало собственно лечения.
Также тригонометрия помогает нашему мозгу определять расстояния до объектов.
Американские ученые утверждают, что мозг оценивает расстояние до объектов, измеряя
угол между плоскостью земли и плоскостью зрения. Строго говоря, идея "измерения
углов" не является новой. Еще художники Древнего Китая рисовали удаленные объекты
выше в поле зрения, несколько пренебрегая законами перспективы. Сформулировал
5
теорию определения расстояния по оценке углов арабский ученый XI века Альхазен.
После долгого забвения в середине прошлого столетия идею реанимировал психолог
Джеймс Гибсон (James Gibson), строивший свои выводы на основе опыта работы с
пилотами военной авиации. Однако после того о теории вновь позабыли.
Движение рыб в воде происходит по закону синуса или косинуса, если зафиксировать
точку на хвосте, а потом рассмотреть траекторию движения. При плавании тело рыбы
принимает форму кривой, которая напоминает график функции y=tgx.
ОПИСАНИЕ ПРОГРАММЫ
Программа «Решение треугольников» служит для расчетов сторон и углов
треугольников по различным исходным данным. (Четыре способа) Для этого
используются по теорема синусов и косинусов. Также содержит справку по
вышеописанным теоремам.
Данная программа состоит из 5-х частей. В 4-х из них осуществляется вычисления
по различным входным данным, а 4-я вкладка содержит справочную информацию.
Основной окно программы
6
Первая вкладка разделена на 3 сегмента. На первом показано, какие стороны и углы даны,
а какие не даны. Синим цветом отмечены исходные данные. необходимые для расчетов.
Переменные, выделенные красным цветом, будут вычисляться в результате выполнения
программы.
Такая база будет основной для всех представленных случаев. Будут меняться лишь цвета
данных.
Во втором сегменте вводятся различные данные для расчета. Они вводятся в поля. Для
выполнения расчетов следует нажать кнопку «Выполнить».
В третьем сегменте выводятся результаты вычисления
(для удобства программа вычисляет площадь и периметр треугольника из уже найденных
сторон). Также присутствует кнопка «Сбросить», чтобы при случае, когда нужно
7
высчитать другой треугольник с другими данными, но по этому принципу не
перезапускать программу, а сразу это сделать.
Такой принцип универсален для каждого случая, поэтому нам не придется их
рассматривать.
Справочная вкладка
Если мы войдем в эту вкладку, то увидим следующее:
Тут представлен образец треугольника и 2 типа формул: теорема синусов и косинусов,
они представлены тремя различными вариациями.
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ
РЕШЕНИЕ ТРЕУГОЛЬНИКА нахождение всех его шести элементов (трех сторон и
трех углов) по каким-нибудь трем данным элементам, определяющим треугольник.
Решение треугольника по двум сторонам и углу между ними:
1. Найдем противолежащую сторону по теореме косинусов
2. Найдем угол используя теорему косинусов и таблицы
Брадиса
3. Найдем угол, зная что сумма внутренних углов треугольника равна 180 градусам
Cabbac cos2
22
bc
acb
A
2
cos
222
8
Решение треугольника по стороне и двум прилежащим к ней углам
1. Найдем угол, зная что сумма внутренних углов
треугольника равна 180 градусам
2. По теореме синусов найдем оставшиеся стороны
Решение треугольника по трем сторонам
1. По теореме косинусов и таблице Брадиса найдем два угла
2. Найдем третий угол, зная, что сумма внутренних углов
треугольника равна 180 градусам
Решение треугольника по двум сторонам и углу НЕ между ними
1. По теореме синусов и таблице Брадиса найдем угол В
2. Найдем третий угол, зная, что сумма внутренних углов
треугольника равна 180 градусам
3. По теореме синусов найдем сторону С
CAB 180
CBA 180
A
B
ab
sin
sin
A
C
ac
sin
sin
bc
acb
A
2
cos
222
ac
bca
B
2
cos
222
BAC 180
a
Ab
B
sin
sin
BAC 180
A
C
ac
sin
sin
9
ИСХОДНЫЙ КОД ПРОГРАММЫ
Для создания программы использовался язык программирования С# и платформа
.NET Framework. Из которой мы будем использовать библиотеку Windows Forms. Которая
представляет простейшую технологию для создания графических настольных программ
на платформе .NET.
Работа выполнена в программе Visual Studio 2008 Express. Visual Studio 2008
Express Edition - это бесплатный набор сред для программирования для ОС MS Windows.
Включает в себя:
1. Visual Basic 2008 Express Edition - среда разработки Visual Basic
2. Visual C# 2008 Express Edition - среда разработки на языке C#
3. Visual C++ 2008 Express Edition - среда разработки на языке C++
4. Visual Web Developer 2008 Express Edition - среда разработки Web приложений.
5. MSDN library на русском языке
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double c,aa,b,b3;
double a = Convert.ToSingle(textBox1.Text);
double bb = Convert.ToSingle(textBox2.Text);
double cc = Convert.ToSingle(textBox3.Text);
// Найдем альфа
aa = 180 - (cc + bb);
textBox6.Text = Convert.ToString(aa);
// Найдем b
b = (a * Math.Sin((bb*Math.PI)/180)) /
Math.Sin((cc*Math.PI)/180);
textBox4.Text = Convert.ToString(b);
// Найдем с
c = (a * Math.Sin((cc*Math.PI)/180)) /
Math.Sin((aa*Math.PI)/180);
textBox5.Text = Convert.ToString(c);
// Найти периметр и площадь
10
double p = a + b + c;
textBox7.Text = Convert.ToString(p);
double p1 = p / 2;
double s = Math.Sqrt(p1 * (p1 - a)*(p1 - b)*(p1 -
c));
textBox8.Text = Convert.ToString(s);
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox5.Text = "";
textBox6.Text = "";
textBox7.Text = "";
textBox8.Text = "";
}
private void button3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show(
"Вы действительно хотите выйти из
программы?",
"Сообщение",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly);
// Проверяем какая кнопка нажата ...
if (result == DialogResult.Yes)
this.Close();
// Ставим нашу форму по верх всех окон
this.TopMost = true;
}
private void button6_Click(object sender, EventArgs e)
{
double bb,aa,c,a3;
double a = Convert.ToSingle(textBox19.Text);
double cc = Convert.ToSingle(textBox17.Text);
double b = Convert.ToSingle(textBox18.Text);
// Найдем 3-ю сторону
c = Math.Sqrt(a * a + b * b - 2 * a * b *
Math.Cos((cc * Math.PI) / 180));
// Найдем 2 угол
a3 = (a * Math.Sin((cc*Math.PI)/180) / c);
aa = Math.Asin(a3) * 180 / Math.PI;
// Найдем 2-ю сторону
bb = 180 - (aa + cc);
11
textBox24.Text = Convert.ToString(aa);
textBox23.Text = Convert.ToString(bb);
textBox22.Text = Convert.ToString(c);
// Найдем площадь и периметр
double p = a + b + c;
textBox21.Text = Convert.ToString(p);
double p1 = p / 2;
double s = Math.Sqrt(p1 * (p1 - a) * (p1 - b) * (p1
- c));
textBox20.Text = Convert.ToString(s);
}
private void button7_Click(object sender, EventArgs e)
{
textBox24.Text = "";
textBox23.Text = "";
textBox22.Text = "";
textBox21.Text = "";
textBox20.Text = "";
textBox19.Text = "";
textBox17.Text = "";
textBox18.Text = "";
}
private void button8_Click(object sender, EventArgs e)
{
double bb, cc, c,b3,с3;
double a = Convert.ToSingle(textBox27.Text);
double b = Convert.ToSingle(textBox26.Text);
double aa = Convert.ToSingle(textBox25.Text);
// Найдем 2 угол
b3 = (b * Math.Sin((aa*Math.PI)/180)) / a;
bb = Math.Asin(b3) * 180 / Math.PI;
// Найдем 3 угол
cc = 180 - (bb + aa);
// Найдем 3-ю сторону
c = (a * Math.Sin((cc*Math.PI)/180)) /
Math.Sin((aa*Math.PI)/180);
textBox32.Text = Convert.ToString(bb);
textBox31.Text = Convert.ToString(cc);
textBox30.Text = Convert.ToString(c);
// Найдем площадь и периметр
double p = a + b + c;
textBox29.Text = Convert.ToString(p);
double p1 = p / 2;
double s = Math.Sqrt(p1 * (p1 - a) * (p1 - b) * (p1
- c));
textBox28.Text = Convert.ToString(s);
}
private void button9_Click(object sender, EventArgs e)
12
{
textBox27.Text = "";
textBox26.Text = "";
textBox25.Text = "";
textBox32.Text = "";
textBox31.Text = "";
textBox30.Text = "";
textBox29.Text = "";
textBox28.Text = "";
}
private void button10_Click(object sender, EventArgs e)
{
double aa, cc, bb,c3,b3;
double a = Convert.ToSingle(textBox35.Text);
double b = Convert.ToSingle(textBox34.Text);
double c = Convert.ToSingle(textBox33.Text);
// Найдем 1-й угол
c3 = (a * a + b * b - c * c)/(2*a*b);
cc = Math.Acos(c3)*180/Math.PI;
// Найдем 2-й угол
// b3 = (b * Math.Sin((cc*Math.PI)/180)) / c;
b3 = (c * c + a * a - b * b) / (2 * c * a);
bb = Math.Acos(b3) * 180 / Math.PI;
// Найдем 3-й угол
aa = 180 - (cc + bb);
textBox40.Text = Convert.ToString(aa);
textBox39.Text = Convert.ToString(bb);
textBox38.Text = Convert.ToString(cc);
// Найдем площадь и периметр
double p = a + b + c;
textBox37.Text = Convert.ToString(p);
double p1 = p / 2;
double s = Math.Sqrt(p1 * (p1 - a) * (p1 - b) * (p1
- c));
textBox36.Text = Convert.ToString(s);
}
private void button11_Click(object sender, EventArgs e)
{
textBox35.Text = "";
textBox34.Text = "";
textBox33.Text = "";
textBox40.Text = "";
textBox39.Text = "";
textBox38.Text = "";
textBox37.Text = "";
textBox36.Text = "";
}
13
private void button12_Click(object sender, EventArgs e)
{
pictureBox12.Visible = false;
button12.Visible = false;
}
}
}
14
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Дрейер М. - C# для школьников Год издания: 2010 Издательство: Бином
2. Тригонометрия в нашей жизни
https://sites.google.com/site/trigonometry121/trigonometria-v-zizni
3. А.В. Погорелов. Учебник Геометрия 9 класс. Год издания: 2014
4. Справочник по языку С#. https://metanit.com/sharp/