Разработка математического комплекса для численного решения дифференциальных уравнений |
Автор: Ахкямов А.Р., Тазетдинов Б.И. |
15.04.2015 00:29 |
Ахкямов А.Р. Тазетдинов Б.И., к.ф.-м.н. г.Бирск, Бирский филиал ФГБОУ ВПО БашГУ nack2012@gmail.com
Разработка математического комплекса для численного решения дифференциальных уравнений
Решение дифференциальных уравнений в общем случае сводится к поиску функций, подстановка которых и их производных разного порядка превращает исходное уравнение или систему уравнений в тождества. В частном случае такое решение сводится к нахождению не самих функций, а их значений в определенной точке, либо таблицы значений искомой функции. Можно отметить некую тенденцию — отход от аналитических методов решения задач с разбиением их на особые классы и повсеместный переход к численным методам с реализацией на компьютере. В качестве среды разработки используется Microsoft Visual C# 2008 Express – бесплатный и многофункциональный продукт компании Microsoft. Программа включает в себя 1 форму, в которую вводятся начальные данные и уравнение, выводятся результаты вычисления. Для ввода данных и уравнения был использован объект TextBox - представляющий элемент управления, который может использоваться для отображения или изменения неформатированного текста. Использовалось 6 текстовых полей: для ввода x0, y0, интервала [a;b], количества шагов и самого уравнения, и элемент управления кнопка (Button). В поле f(x,y) вводится дифференциальное уравнение, в x0 и y0 - начальные значения x и y, в a и b – интервал, в поле n вводится количество шагов.
Поскольку в программе необходимо решать дифференциальные уравнения разными методами, необходимо реализовать возможность выбора метода. Для реализации этой возможности используется элемент ComboBox, который предназначен для выбора значения, с раскрывающимся списком, который можно отображать и скрывать нажатием принадлежащей этому элементу управления кнопкой со стрелкой. Т.к. метод может иметь разные вариации, необходимо добавить на форму 2 ComboBox’а: в ComboBox1 выбирается метод, а в ComboBox2 – разновидность метода, если имеется.
Результат представляется в табличном виде. Для этого необходимо использовать удобный способ вывода. Используется элемент ListView - предоставляет элемент управления списка Windows, отображающий коллекцию элементов, которые могут быть выведены на экран при использовании одного из четырех различных представлений. При нажатии на кнопку «Начать» программа должна протабулировать заданную функцию. Необходимо создать процедуры, в которых будут реализованы численные методы Эйлера и Рунге-Кутты. Для вычисления понадобиться подынтегральная функция, которая хранится в строковом формате.
Так как уравнение вводится в виде строки, его необходимо преобразовать в понятный для среды разработки формат: преобразовать переменную строкового типа в математическую формулу. Встроенными средствами Microsoft Visual C# 2008 это сделать невозможно, но возможности среды расширяются дополнительными библиотеками. Так была использована бесплатная библиотека MathParser, в которой реализованы регулярные выражения для решения математических выражений. Этот компонент разбирает математические выражения в строке и решает их. Математическое выражение может состоять из чисел целых и действительных, действий арифметики (+,-,*,^,!,/), функций и скобок для задания приоритетов. Программа позволяет решать систему обыкновенных дифференциальных уравнений различными численными методами.
Литература 1. Антомони В.И., Архипов В.Н., Любин А.Н., Тихомиров В.Н. Основы программирования на C#. М.: МАМИ, 2011.
2. Срочко В.А. Численные методы: Курс лекций – Иркутск: Иркут. ун-т., 2003. |