Hi-Tech  ->  Программы  | Автор: | Добавлено: 2015-05-28

Визуализация и численное моделирование решения уравнения с заданной точностью

Цель статьи:

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

2. Разработать графический интерфейс программы.

3. Построить графики функций нескольких уравнений и решить эти уравнения с заданной точностью.

Учебные задачи:

1. Разработать:

▪ способы ввода различных типов уравнений;

▪ алгоритмы построения графиков различных функций;

2. Изучить:

▪ графический метод определения корней;

▪ изучить метод дихотомии;

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

4. Внедрить в программу алгоритмы реализации известных формул и методов для вычисления корней многочленов.

5. Провести компьютерный эксперимент.

6. Проанализировать полученные результаты.

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

Созданная мною программа «Grafostr v3. 2. Pro» позволяет сначала построить график заданного уравнения, а потом найти его корни с заданной точностью с помощью метода дихотомии.

Программа «Grafostr v3. 2. Pro» (которая будет в дальнейшем усовершенствоваться) – это попытка создать универсальную программу, решающую любые (применительные в практике) уравнения.

Найти графическим способом корни нескольких алгебраических и тригонометрических уравнений. Установить погрешность при вычислениях. Определить роль графиков при решении различных математических заданий с параметрами.

Итак, объектом моего исследования являются корни различных уравнений.

Цель статьи: поиск приближенных решений уравнений; доказательство возможности создания универсального алгоритма решения уравнений.

Учебные задачи:

1) Изучить графический метод определения корней;

2) Изучить метод дихотомии;

3) Создать компьютерную модель, позволяющую находить приближенные решения уравнения графическим и численным способами;

4) Провести компьютерный эксперимент;

5) Проанализировать полученные результаты.

Инструмент моделирования:

Среда объектно-ориентированного программирования Delphi.

Схема проведения компьютерного эксперимента:

1. Ввод различных уравнений

2. Построение графиков соответствующих уравнений

3. Определение числа корней

4. Анализ полученных результатов.

Информационная модель

Задано несколько уравнений:

Задана точность (количество знаков после запятой):

Математическая модель

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

Пусть задано уравнение вида:

где - некоторая непрерывная функция.

Графический способ поиска корней уравнения используется, когда отсутствует информация о расположении корней. В интересующей нас области изменения неизвестного вычисляется ряд значений и строится график. С точностью до выбранного шага (шаг – расстояние между и ) из графика определяют приближенные значения корней уравнения (корни уравнения являются точками пересечения графика функции с осью Х). Дальнейшее уточнение корней проводится с помощью числовых методов.

Один из них – метод дихотомии. Пусть известно, что на отрезке расположен корень уравнения, который необходимо уточнить с точностью. Метод дихотомии, или половинного деления, заключается в следующем. Определяем длину отрезка :

и вычисляем функцию. Далее делаем выбор, какую из двух частей отрезка взять для дальнейшего уточнения корня. Если левая часть уравнения есть непрерывная функция аргумента х, то корень будет находиться в той половине отрезка, на концах которого имеет разные знаки*. Тогда для очередного уточнения точку b перемещаем в середину отрезка и продолжаем процесс деления как с первоначальным отрезком. Этот процесс будем продолжать до тех пор, пока интервал не станет меньше заданной точности.

Метод дихотомии можно представить в виде блок-схемы.

* Примечание: на некотором шаге возможно найти корень до того как его интервал станет меньше. Возьмем, к примеру, корень, равный 1,5 , который лежит между границами 1 и 2. На первом шаге получаем. При подстановке х в исходное уравнение получаем 0. При умножении х = 0 на значение получим 0 (иначе говоря, функция может не иметь разные знаки не на каком промежутке). То есть вычисление х может быть прервано до того, как длина промежутка станет меньше.

Компьютерная модель

I. Дизайн

Созданная мною программа называется «Grafostr v3. 2. Pro».

II. Общий алгоритм решения уравнения.

1 Приведение подобных дробных коэффициентов (с неизвестными х) из-за высокой сложности алгоритма «считывания» параметров уравнения не производится.

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

3 Параметр цикла – i. Это координата по оси Х.

4 Уравнение «разбивается» на отдельные коэффициенты. Происходит постепенное подстановка Х в каждый коэффициент. Границы цикла: от первого коэффициента до последнего.

5 Дополнительные условия:

1) если Х в знаменателе, то знаменатель не должен равняться нулю;

2) если Х под корнем четной степени – значение под корнем должно быть больше нуля;

3) если в уравнении есть tg x – cos x не должен равняться нулю (если ctg x – sin x);

Компьютерный эксперимент

Запустим программу (исполняемый файл Grafostr. exe) и проведем ряд компьютерных экспериментов:

1. Построим график уравнения. Для этого введите соответствующие коэффициенты в соответствующие графы трафаретного уравнения. Нажмите кнопку «График».

График функции четыре раза пересекает ось Х, следовательно, уравнение имеет четыре корня. По графику видно, что корни уравнения принадлежат следующим интервалам:

1) от –3 до –2

2) от –2 до –1

3) от 1 до 2

4) от 2 до 3

Вычислим корни данного уравнения с разной точностью (в данном случае - это количество знаков после запятой):

Корень На каком отрезке Значение по графику Значение с точностью Значение с точностью Значение с точностью находится?

Х1 (-3; -2) -2,3 -2,24 -2,2412 -2,241242

Х2 (-2; -1) -1,4 -1,47 -1,4688 -1,468753

Х3 (1; 2) 1,4 1,47 1,4688 1,468753

Х4 (2; 3) 2,3 2,24 2,2412 2,241242

2. Построим график этого уравнения. График пересекает ось Х три раза, значит, данное уравнение имеет три корня.

Данные о корнях этого уравнения занесем в таблицу, представленную на рис. 10.

Корень На каком отрезке Значение по графику Значение с точностью Значение с точностью Значение с точностью находится?

Х1 (-2; -1) -1,7 -1,75 -1,75 -1,75

Х2 (-1; 0) -0,5 -0,5 -0,5038 -0,503845

Х3 (1; 2) 1,7 1,75 1,75 1,750008

Исследуем, сколько корней может иметь уравнение

Построим график функции. Чтобы занести выражение под знак модуля зажмите клавишу Alt и нажмите на это выражение левой кнопкой мыши. Зеленая палочка над выражением обозначает модуль. Нажмите левой кнопкой мыши на нее. Появится графа. Но заносить туда ничего не надо, так как это графа определяет знак, стоящий перед модулем (чтобы ввести минус, нажмите клавишу «-», а плюс можно не вводить). Остальную информацию о формате ввода уравнений (в том числе о модуле) можно получить в справке, прилагающейся к программе

Это уравнение тригонометрическое, а, значит, если у него есть корни, то их бесконечно много, так как тригонометрические функции периодичны. Уточним имеющиеся на чертеже корни. Перечислим только некоторые числа или углы (с точностью 2 знака после запятой):

Если количество корней бесконечно, значит, корни уравнения имеют период(ы).

Графическим способом программно определить период сложно, так как у разных корней могут быть разные периоды. Поэтому в программе «Grafostr v3. 2. Pro» предлагается найти период «полуавтоматически». Это позволит сделать специальная функция «Найти период». Чтобы вызвать эту функцию нажмите Ctrl + Левая кнопка мыши при наведенном на чертеж указателе мыши. Для того чтобы узнать расстояние между какими-либо двумя корнями достаточно указать их номера (отсчет ведется слева, то есть от начала отрицательной полуоси Х) в соответствующих графах и нажать «ОК». Программа выдаст запрашиваемое Вами расстояние в градусах и радианах. Но не всегда расстояние между соседними корнями есть период. Далеко не всегда. Для начала требуется посмотреть, возможно ли определить по чертежу, какие корни связаны периодом, НО если таковое действие осуществить нельзя, нужно просто установить это экспериментальным путем. Попробуйте определить между какими корнями расстояние не изменяется. Если на чертеже находится недостаточно корней, нужно просто увеличить масштаб, ведь период в любом случае сохраняется. Может показаться, что это несколько сложно, но иного пути нет. Найти программно период можно только у простейших тригонометрических уравнений, алгебраически это можно сделать, конечно, и у более сложных, но для этого нужно делать преобразования по специальным формулам, программно это осуществить невероятно сложно, тем более, что данная программа задумывалась как универсальная, подходящая для всех типов уравнений, и в основном для тех, которые невозможно решить алгебраически.

Из чертежа видно, что у данного уравнения есть корни с тремя различными периодами. Найдем их:

1) период между корнями номер 1, 5, 9, 13 равен 360 градусам или радиан;

2) между корнями с номерами 2, 3, 6, 7, 10, 11, 14, 15 равен 180 градусам или радиан;

3) 4, 8, 12, 16 – период 360 градусов или радиан.

В программе есть функция определения расстояния (для графиков тригонометрических функций) в градусах и радианах между произвольными точками на оси Х. Для того чтобы узнать расстояние нужно сначала указать начальную точку на оси Х (вовсе не обязательно «щелкать» мышкой прямо на оси Х, можно это делать вне ее, а программа просто «опустит» перпендикуляр на ось Х и определит координату Х) нажатием Shift + Левая кнопка мыши и конечную точку нажатием такой же комбинации.

Анализ полученных данных

Проведенные компьютерные эксперименты показывают, что с помощью программы «Grafostr v3. 2. Pro» графики функций строятся верно, решение уравнений (в том числе тригонометрических) производится очень точно.

Итак, полученные результаты соответствуют теоретическим выкладкам и результатам компьютерных экспериментов, на основании этого делаем вывод: разработанная нами модель адекватна математическим законам.

Цели данного проекта достигнуты.

Задачи проекта решены.

При выполнении проекта в среде объектно-ориентированного программирования Delphi была разработана модель приближенного решения уравнений с заданной точностью. Были выполнены следующие задачи проекта:

1. Изучен графический метод определения корней;

2. Изучен метод дихотомии;

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

4. Проведен компьютерный эксперимент;

5. Проанализированы полученные результаты.

Программа «Grafostr v3. 2. Pro» позволяет решать не только уравнения, но и неравенства, так как самое главное в них определить нули-функции, то есть корни соответствующих уравнений. Тем более, что не нужно самим определять знаки функции на различных промежутках (это видно по графику).

Но данная программа оказывает неоценимую помощь и при решении уравнений и неравенств с параметрами, так как при их решении важную роль играет график.

С точки зрения алгоритмов, заложенных в ней, программа «Grafostr v3. 2. Pro» очень сложна. Еще более она сложна с точки зрения реализации алгоритма на языке программирования, то есть под «программистским углом зрения». Объемы проделанной работы, как и с качественной, так и с количественной стороны, огромны. Я считаю, что она является доказательством того, что все-таки универсальную программу создать можно. При ее написании сложность будет продолжать возрастать в геометрической прогрессии, но все-таки это сделать можно. Половина пути уже пройдена, так как в этой программе реализованы основные алгоритмы (их запись на языке программирования), которые и вызывают наибольшие трудности, из которых, как из кирпичиков, будет строиться, точнее продолжать строиться, универсальная программа.

Комментарии


Войти или Зарегистрироваться (чтобы оставлять отзывы)