ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
( Н И У
« Б е л Г У » )
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ИНФОРМАЦИОННЫХ СИСТЕМ
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ РЕШЕНИЯ
КРАЕВЫХ ЗАДАЧ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ
УРАВНЕНИЙ
Выпускная квалификационная работа
обучающегося по направлению подготовки 02.03.03 Математическое
обеспечение и администрирование информационных систем, группы 07001302
Хо Нгок Иен
Научный руководитель
к.т.н., доцент
Бурданова Е.В.
БЕЛГОРОД 2017
2
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ ..................................................................................................................... 3
1 ТЕОРЕТИЧЕСКИЙ ОБЗОР ПО ПРОБЛЕМЕ ИССЛЕДОВАНИЯ
КРАЕВЫХ ЗАДАЧ ОДУ ........................................................................................... 7
1.1
Понятие дифференциального уравнения ................................................. 7
1.2
Виды дифференциальных уравнений, методы решения ...................... 9
1.3 Подстановка краевых задач для обыкновенных дифференциальных
уравнений ............................................................................................................... 20
1.4 Краевые задачи для обыкновенных дифференциальных уравнений
вторых порядков ................................................................................................... 22
2
ПРАКТИЧЕСКАЯ ЧАСТЬ .............................................................................. 28
2.1
Проектирование и программная реализация поставленной задачи 28
2.2
Выбор среды разработки ПО. ................................................................... 37
2.3
Создание ПО ................................................................................................. 42
2.4
Тестирование созданного П.О. .................................................................. 46
ЗАКЛЮЧЕНИЕ ........................................................................................................... 58
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ............................................... 59
ПРИЛОЖЕНИЕ ........................................................................................................... 62
3
ВВЕДЕНИЕ
Математическая
физика
изучает
математические
модели
физических
явлений. Она и её методы начали формироваться в XVIII веке при изучении
колебаний струны и стержней, задач акустики, гидродинамики, аналитической
механики. Идеи математической физики получили новое развитие в XIX веке в
связи
с
задачами
теплопроводности,
диффузии,
упругости,
оптики,
электродинамики, нелинейными волновыми процессами, теорией устойчивости
движения [4].
Изучая какие-либо физические явления, исследователь прежде всего создает
его математическую идеализацию или, другими словами, математическую
модель, то есть, пренебрегая второстепенными характеристиками явления, он
записывает основные законы, управляющие этим явлением, в математической
форме. Очень часто эти законы можно выразить в виде дифференциальных
уравнений. Такими оказываются модели различных явлений механики сплошной
среды, химических реакций, электрических и магнитных явлений и др.
Многие задачи классической математической физики сводятся к краевым
задачам для дифференциальных уравнений - уравнений математической физики,
которые совместно с соответствующими граничными (или начальными и
граничными) условиями образуют математические модели рассматриваемых
физических процессов.
Исследование
уравнений
краевых
является
одним
задач
из
для
обыкновенных
основных
разделов
дифференциальных
современной
теории
дифференциальных уравнений с частными производными. Краевые задачи,
задачи, в которых из некоторого класса функций, определённых в данной
4
области, требуется найти ту, которая удовлетворяет на границе (крае) этой
области заданным условиям. Функции, описывающие конкретные явления
природы (физические, химические и др.), как правило, представляют собой
решения уравнений математической физики, выведенных из общих законов,
которым подчиняются эти явления. Когда рассматриваемые уравнения допускают
целые семейства решений, дополнительно задают так называемые краевые или
начальные условия, позволяющие однозначно выделить интересующее нас
решение. В то время, как краевые условия задаются исключительно на граничных
точках области, где ищется решение, начальные условия могут оказаться
заданными на определённом множестве точек внутри области [9].
Таким образом, разработка решений краевых задачи обыкновенных
дифференциальных уравнений является актуальной задачей. Они играют важную
роль в возможности формирования и изучения математической моделей
современного мира в целом, и, в частности в математической физике.
В данной работе, цель состоит в изучении и развитии методов решений
краевых задачи для обыкновенных дифференциальных уравнений (вторых
порядков), так и разработка программ, иллюстрирующих этих задач с помощью
обеспечением программы GUI MATLAB (Graphical User Interface – Matrix
Laboratory).
Для достижения поставленной цели ставится ряд более мелких задач, каждая
из которых решается в процессе написания одной из глав.
В первой главе работы рассматривается теоретический обзор по проблеме
исследования краевых задач ОДУ, включаются в следующие:
•
Понятие дифференциального уравнения.
•
Виды дифференциальных уравнений, методы решения.
5
•
Подстановка краевых задач для обыкновенных дифференциальных
уравнений.
•
Краевые задачи для обыкновенных дифференциальных уравнений
вторых порядков.
Вторая глава представляет собой практическая часть, которая содержит:
•
Проектирование и программная реализация поставленной задачи.
Программно-алгоритмическая поддержка решений краевых
задач для ОДУ.
Подробное описание алгоритма.
•
Выбор среды разработки ПО.
•
Создание ПО.
•
Тестирование созданного ПО.
В этой работе рассматриваются наиболее часто встречающиеся краевые
задачи ОДУ второго порядка. Имеющиеся исследования можно разделить на две
группы. К первой группе относятся исследования, где применяется ЛОДУ второго
порядка с постоянными коэффициентами. в этом случае, сначала необходимо
искать частные решения уравнения в виде 𝑦 = 𝑒 𝑘𝑥 , где k–некоторое число
(предложено Л. Эйлером), так как оно сводится к нахождению корня
характеристического уравнения и использованию формул общего решения
уравнения, на конец нахождения решение уравнения с помощью краевых
условий. Ко второй группе относятся остальные виды ЛДУ второго порядка и их
решения методом конечных разностей - изучение свойств и применение
разностей между соседними членами какой-нибудь последовательности или
между значениями функции в точках, расположенных с постоянным интервалом в
некотором пространстве. Исчисления конечных разностей используются при
интерполяции в математических таблицах, при суммировании числовых рядов,
6
при
вычислении
интегралов
и
дифференцировании
функций.
Разности
встречаются также в любой ситуации, когда надо описать поведение объекта,
который испытывает воздействие меняющихся условий на определенном
расстоянии (во времени и в пространстве). Под влиянием этих работ (Л. Эйлер
(1707–1783), Ж. Лагранжем (1736–1813), П. Лапласом (1749–1827) - в своих
работах по дифференциальному исчислению использовали предельные переходы
в конечных разностях) математики 19 в. принялись интенсивно разрабатывать
предмет, и в 1860 Дж. Буль выпустил свой классический Трактат об исчислении
конечных разностей. С тех пор это исчисление и круг его приложений
существенно расширились.
Разработанные алгоритмы могут быть использованы при решении широкого
класса линейных многоточечных краевых задач для систем обыкновенных
дифференциальных
уравнений.
Полученные
с
помощью
созданного
программного комплекса результаты исследования работы могут служить
основой как при выработке конкретных технологических решений, так и при
формулировке общих рекомендаций по использованию полученных результатов в
научных,
учебно-методических
работах
и
в научной
и
педагогической
деятельности.
Работа состоит из введения, 2 главы, заключения, библиографического
списка,
приложений.
Содержание
работы
изложено
на
67
страницах
компьютерного текста, в том числе 0 карт, 2 таблицы и 19 рисунка.
Библиографический список включает 20 наименования.
7
1 ТЕОРЕТИЧЕСКИЙ ОБЗОР ПО ПРОБЛЕМЕ ИССЛЕДОВАНИЯ
КРАЕВЫХ ЗАДАЧ ОДУ
1.1 Понятие дифференциального уравнения
Дифференциальным уравнением называется соотношение между функциями
и их производными. Если функция зависит от одной переменной, то получаем
обыкновенное
дифференциальное
уравнение.
Если
функция
зависит
от
нескольких переменных, то получи дифференциальное уравнение в частных
производных. ВКР посвящена исследованию обыкновенных дифференциальных
уравнений. Обыкновенные дифференциальные уравнения являются основой
математического моделирования процессов, зависящих от одной переменной.
Обыкновенными дифференциальными уравнениями называются уравнения,
содержащие одну независимую переменную, искомую функцию 𝑢 = 𝑢(𝑥) и одну
или несколько ее производных. Например,
𝐹(𝑥, 𝑢, 𝑢′ , … 𝑢𝑛 ) = 0
Здесь
функции
(1.1)
х - независимая переменная; 𝑢(𝑖) — i-я производная неизвестной
𝑢(𝑥)𝑑 𝑖 𝑢/𝑑𝑥 𝑖 , 𝑖 = 1,2,3..n,
F
некоторая
функция
от
переменных𝑥, 𝑢, 𝑢′ , 𝑢′′ …. Порядок дифференциального уравнения определяется
наивысшим порядком n, входящей в уравнение производной. Например,
уравнения первого и третьего порядка можно представить как
𝐹(𝑥, 𝑢, 𝑢′ ) = 0; 𝐹(𝑥, 𝑢, 𝑢′ , 𝑢′′ , 𝑢′′′ ) = 0
(1.2)
8
Если в уравнениях (1.1) и (1.2) старшую производную явно выразить через
производные более низкого порядка и независимую переменную, то получаются
уравнения, разрешенные относительно старшей производной.
Например:
𝑢′ = 𝑓(𝑥, 𝑢).
𝑢′′′ = 𝑓(𝑥, 𝑢, 𝑢′ , 𝑢′′ ).
(1.3)
Решением дифференциального уравнения называется произвольная функция
φ(x), которая удовлетворяет этому уравнению, то есть после подстановки в
уравнение превращает его в тождество. Например, при подстановкеu=φ(x) в
уравнения (1.3) получаем:
𝜑 ′ (𝑥) = 𝑓(𝑥, 𝜑(𝑥)).
∅′′′ (𝑥) = 𝑓(𝑥, 𝜑(𝑥), 𝜑 ′ (𝑥), 𝜑 ′′ (𝑥)).
Общее решение обыкновенного дифференциального уравнения п-ого
порядка, как известно, содержит п произвольных постоянных𝑐1 , 𝑐2 , … 𝑐𝑛 имеет
вид:
𝑢 = 𝜑(𝑥, 𝑐1 , 𝑐2 , … 𝑐𝑛 ).
(1.4)
Частное решение получается из общего (1.4) путем задания определенных
значений произвольным постоянным. Например, для уравнения первого порядка
𝑢′ = 𝑓(𝑥, 𝑢) из общего решения 𝑢 = 𝜑(𝑥, 𝑐1 )частное получается в результате
задания произвольной константе 𝐶1 некоторого значения𝐶1 = 𝐶0 :
𝑢 = 𝜑(𝑥, 𝑐0 ).
(1.5)
9
Для выделения частного решения из общего для уравнений высшего порядка
нужно
задать
столько
дополнительных
условий,
сколько
произвольных
постоянных содержится в общем решении, то есть каков порядок уравнения [5].
1.2 Виды дифференциальных уравнений, методы решения
Каждому виду дифференциальных уравнений поставлен в соответствие
метод решения с подробными пояснениями и решениями характерных примеров
и задач.
Сначала рассмотрим виды обыкновенных дифференциальных уравнений
первого порядка, которые могут быть разрешены относительно производной,
далее перейдем к ОДУ второго порядка, следом остановимся на уравнениях
высших порядков и закончим системами дифференциальных уравнений.
Далее рассмотрим несколько видов дифференциальных уравнений первого
порядка.
•
Простейшие дифференциальные уравнения первого порядка вида
имеет вид:
𝑦 ′ = 𝑓(𝑥).
Такие дифференциальные уравнения либо уже разрешены относительно
производной 𝑦 ′ = 𝑓(𝑥) либо их можно разрешить относительно производной
𝑓(𝑥). 𝑦 ′ = 𝑔(𝑥) произведя деление обеих частей равенства на 𝑓(𝑥). В этом случае
приходим к уравнениюy ′ =
g(x)
f(x)
,которое будет эквивалентно исходному при
𝑓(𝑥) ≠ 0.
Общее решение дифференциальных уравнений вида y’ = f(x) на заданном
интервале X можно отыскать, проинтегрировав обе части этого равенства.
10
Получим ∫ 𝑦 ′ 𝑑𝑥 = ∫ 𝑓(𝑥)𝑑𝑥. Если обратиться к свойствам неопределенного
интеграла, то придем к искомому общему решению𝑦 = 𝐹(𝑥) + 𝐶y, где 𝐹(𝑥)- одна
из первообразных функции 𝑓(𝑥) на промежутке X, а С – произвольная
постоянная.
Заметим, что во многих задачах интервал X не указывается. В этом случае
подразумевается, что решение следует искать для всех x, при которых и искомая
функция y, и исходное уравнение имеют смысл.
Если требуется найти частное решение дифференциального уравнения
формула,
удовлетворяющее
начальному
условию
𝑦(𝑥0 ) = 𝑦0 ,
то
после
нахождения общего интеграла 𝑦 = 𝐹(𝑥) + 𝐶, еще нужно вычислить значение
постоянной 𝐶 = 𝐶0 , используя начальное условие. То есть, константа 𝐶 = 𝐶0
определяется
из
уравнения𝐹(𝑥0 ) + 𝐶 = 𝑦0 ,
и
искомое
частное
решение
дифференциального уравнения будет иметь вид 𝑦 = 𝐹(𝑥) + 𝐶0 [10].
•
Дифференциальные уравнения с разделяющимися переменными вида
𝑓1 (𝑦). 𝑔1 (𝑥)𝑑𝑦 = 𝑓2 (𝑦). 𝑔2 (𝑥)𝑑𝑥или𝑓1 (𝑦). 𝑔1 (𝑥)𝑦 ′ = 𝑓2 (𝑦). 𝑔2 (𝑥).
Дифференциальные уравнения𝑓(𝑦)𝑑𝑦 = 𝑔(𝑥)𝑑𝑥называют уравнениями с
разделенными переменными.
Название
этого
вида
дифференциальных
уравнений
достаточно
показательно: выражения, содержащие переменные x и y, разделены знаком
равенства, то есть, находятся по разные стороны от него.
Общее
переменными
решение
можно
дифференциальных
найти,
уравнений
проинтегрировав
обе
с
разделенными
части
равенства:
∫ 𝑓(𝑦)𝑑𝑦 = ∫ 𝑓(𝑥)𝑑𝑥.
Дифференциальные уравнения с разделяющимися переменными приводятся
к ОДУ с разделенными переменными делением обеих частей уравнения на
11
произведение 𝑓2 (𝑦). 𝑔1 (𝑥). То есть, получим
𝑓1(𝑦)
𝑓2(𝑦)
𝑑𝑦 =
𝑔2(𝑥)
𝑔1(𝑥)
𝑑𝑥 . Такое
преобразование будет эквивалентным, если одновременно𝑓2 (𝑦) ≠ 0 и𝑔1 (𝑥) ≠ 0.
Дифференциальные уравнения𝑦 ′ = 𝑓(𝑎𝑥 + 𝑏𝑦),a,b𝜖R приводятся к ОДУ с
разделяющимися переменными подстановкой 𝑧 = 𝑎𝑥 + 𝑏𝑦 [10].
Линейные неоднородные дифференциальные уравнения первого порядка:
𝑦 ′ + 𝑃(𝑥). 𝑦 = 𝑄(𝑥)
Сначала разобран метод вариации произвольной постоянной для решения
ЛНДУ первого порядка.
Линейному неоднородному дифференциальному уравнению (ЛНДУ)
𝑦 ′ + 𝑃(𝑥). 𝑦 = 𝑄(𝑥)соответствует линейное однородное дифференциальное
(ЛОДУ)𝑦 ′ + 𝑃(𝑥). 𝑦 = 0, (𝑄(𝑥) = 0).
уравнение
Дифференциальное
уравнение𝑦 ′ + 𝑃(𝑥). 𝑦 = 0является уравнением с разделяющимися переменными.
𝑦 ′ + 𝑃(𝑥). 𝑦 = 0 ⇔
∫
𝑑𝑦
= −𝑃(𝑥)𝑑𝑥,
𝑦
𝑦≠0
𝑑𝑦
= − ∫ 𝑃(𝑥)𝑑𝑥 ⇔ ln|𝑦| + 𝐶1 = − ∫ 𝑃(𝑥)𝑑𝑥 ⇔
𝑦
ln|𝑦| = ln|𝐶| − ∫ 𝑃(𝑥)𝑑𝑥,
ln|𝐶| = −𝐶1, 𝐶 ≠ 0 ⇔
𝑒 ln|𝑦| = 𝑒 ln|𝐶|− ∫ 𝑃(𝑥)𝑑𝑥 ⇔ 𝑦 = 𝐶. 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥
При y=0 дифференциальное уравнение y’ + P(x).y = 0 обращается в
тождество, поэтому y=0 также является решением (этому случаю соответствует
12
решение 𝑦 = 𝐶. 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 при C=0). Таким образом, можно утверждать, что 𝑦 =
𝐶. 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 - общее решение ЛОДУ, где С – произвольная постоянная.
Для
нахождения
общего
решения
соответствующего
неоднородного
уравнения 𝑦 ′ + 𝑃(𝑥). 𝑦 = 𝑄(𝑥) варьируем постоянную С, то есть, считаем С
функцией аргумента x, а не константой. Другими словами, принимаем 𝑦 =
𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 общим решением ЛНДУ.
Тогда, если подставить 𝑦 = 𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 в дифференциальное
уравнение 𝑦 ′ = 𝑃(𝑥). 𝑦 = 𝑄(𝑥), то получим:
′
(С(𝑥 ). 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 ) + 𝑃(𝑥 ). 𝐶 (𝑥 ). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 = 𝑄(𝑥)
′
⇔ 𝐶 ′ (𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 + 𝐶(𝑥). (𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 ) + 𝑃(𝑥). 𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 = 𝑄(𝑥)
⇔ 𝐶 ′ (𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 − 𝑃(𝑥). 𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 + 𝑃(𝑥). 𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 = 𝑄(𝑥)
⇔ 𝐶 ′ (𝑥). 𝑒 − ∫ 𝑃(𝑥).𝑑𝑥 = 𝑄(𝑥)
Полученное уравнение есть простейшее дифференциальное уравнение
первого порядка. Решив его, мы определим функцию 𝐶(𝑥), что позволит записать
решение исходного линейного неоднородного дифференциального уравнения
первого порядка в виде 𝑦 = 𝐶(𝑥). 𝑒 − ∫ 𝑃(𝑥)𝑑𝑥 [12].
Дифференциальное уравнение Бернулли
𝑦 ′ = 𝑃(𝑥). 𝑦 = 𝑄(𝑥). 𝑦 𝑛 .
При n = 1 это дифференциальное уравнение становится уравнением с
разделяющимися переменными 𝑦 ′ = 𝑃(𝑥). 𝑦 = 𝑄(𝑥). 𝑦
⇔ 𝑦 ′ = (𝑄(𝑥) − 𝑃(𝑥)). 𝑦
13
Одним из методов решения дифференциального уравнения Бернулли
является сведение его к линейному неоднородному дифференциальному
уравнению
первого
порядка
введением
новой
Действительно, при такой замене имеем 𝑦 = 𝑧
𝑧 = 𝑦1−𝑛 .
переменной
1
1−𝑛
′
⇒𝑦 =
1
1−𝑛
.𝑧
𝑛
1−𝑛
. 𝑧′ и
дифференциальное уравнение Бернулли примет вид
′
𝑦 = 𝑃(𝑥 ). 𝑦 = 𝑄 (𝑥 ). 𝑦
𝑛
⇔
1
𝑛
1−𝑛
.𝑧
1−𝑛
′
. 𝑧 + 𝑃(𝑥). 𝑧
1
1−𝑛
= 𝑄(𝑥)𝑧
𝑛
1−𝑛
𝑧 ′ + (1 − 𝑛). 𝑃(𝑥). 𝑧 = (1 − 𝑛). 𝑄(𝑥)
Так дифференциальное уравнение Бернулли приводится к линейному
неоднородному дифференциальному уравнению первого порядка. После решения
этого уравнения и проведения обратной замены получаем искомое решение [16].
•
Уравнения в полных дифференциалах
𝑃(𝑥, 𝑦)𝑑𝑥 + 𝑄(𝑥, 𝑦)𝑑𝑦 = 0
Если восстановить функцию по ее полному дифференциалу, то будет найден
общий интеграл дифференциального уравнения.
Левая часть дифференциального уравнения 𝑃(𝑥, 𝑦)𝑑𝑥 + 𝑄(𝑥, 𝑦)𝑑𝑦 = 0
является полным дифференциалом некоторой функции 𝑈(𝑥, 𝑦) = 0, если
выполняется условие
𝜕𝑃
𝜕𝑦
≡
𝜕𝑄
𝜕𝑥
Так как полный дифференциал функции 𝑈(𝑥, 𝑦) = 0есть 𝑑𝑈 =
𝜕𝑈
𝜕𝑦
𝑑𝑦, то при выполнении условия
𝜕𝑃
𝜕𝑦
≡
𝜕𝑄
𝜕𝑥
можно утверждать, что
𝜕𝑈
𝜕𝑥
𝑑𝑥 +
14
𝜕𝑈
𝑃(𝑥, 𝑦)𝑑𝑥 + 𝑄(𝑥, 𝑦)𝑑𝑦 =
𝜕𝑈
𝜕𝑥
𝑑𝑥 +
𝜕𝑥
𝑑𝑦. Следовательно{𝜕𝑈
𝜕𝑦
𝜕𝑈
𝜕𝑦
= 𝑃(𝑥, 𝑦)
= 𝑄(𝑥, 𝑦)
Из первого уравнения системы имеем 𝑈(𝑥, 𝑦) = ∫ 𝑃(𝑥, 𝑦)𝑑𝑥 + 𝜑(𝑦).
Функцию 𝜑(𝑦)можно найти, используя второе уравнение системы:
𝜕𝑈(𝑥, 𝑦) 𝜕(∫ 𝑃(𝑥, 𝑦)𝑑𝑥)
=
+ 𝜑 ′ 𝑦 (𝑦) = 𝑄(𝑥, 𝑦) ⇒
𝜕𝑦
𝜕𝑦
𝜑(𝑦) = ∫(𝑄(𝑥, 𝑦) −
𝜕(∫ 𝑃(𝑥, 𝑦)𝑑𝑥)
)𝑑𝑦
𝜕𝑦
Так будет найдена искомая функция 𝑈(𝑥, 𝑦) = 0.
Далее рассмотрим следующие виды дифференциальных уравнений второго
порядка [6].
•
Линейные
однородные
дифференциальные
уравнения
второго
порядка с постоянными коэффициентами.
𝑦 ′′ + 𝑝𝑦 ′ + 𝑞𝑦 = 0, 𝑝, 𝑞 𝜖 𝑅
ЛОДУ с постоянными коэффициентами является очень распространенным
видом дифференциальных уравнений. Их решение не представляет особой
сложности.
Если принять 𝑦 = 𝑒 𝑘𝑥 частным решением ЛОДУ второго порядка с
постоянными коэффициентами 𝑦 ′′ + 𝑝𝑦 ′ + 𝑞𝑦 = 0, то при подстановке этого
решения в уравнение:
(𝑒 𝑘𝑥 )′′ + 𝑝. (𝑒 𝑘𝑥 )′ + 𝑞. 𝑒 𝑘𝑥 = 0 ⇔ 𝑘 2 . 𝑒 𝑘𝑥 + 𝑝. 𝑘. 𝑒 𝑘𝑥 + 𝑞. 𝑒 𝑘𝑥 = 0
⇔ 𝑒 𝑘𝑥 . (𝑘 2 + 𝑝. 𝑘 + 𝑞) = 0 ⇔ 𝑘 2 + 𝑝. 𝑘 + 𝑞 = 0
15
Так мы получили так называемое характеристическое уравнение линейного
однородного дифференциального уравнения второго порядка с постоянными
коэффициентами. Решения k1 и k2 этого характеристического уравнения
определяют частные решения 𝑦1 = 𝑒 𝑘1𝑥 и 𝑦2 = 𝑒 𝑘2𝑥 нашего ЛОДУ второго порядка
с постоянными коэффициентами.
Алгоритм
нахождения
дифференциального
общего
уравнения
решения
второго
линейного
порядка
с
однородного
постоянными
коэффициентами𝑦 ′′ + 𝑝𝑦 ′ + 𝑞𝑦 = 0.
Записываем характеристическое уравнение 𝑘 2 + 𝑝. 𝑘 + 𝑞 = 0.
Находим корни характеристического уравнения k1 и k2.
В
зависимости
от
значений
корней
характеристического
уравнения
записываем общее решение ЛОДУ с постоянными коэффициентами в виде[6]:
𝑦0 = 𝐶1 . 𝑒 𝑘1𝑥 + 𝐶2 . 𝑒 𝑘2𝑥 , если 𝑘1 ≠ 𝑘2 ,
𝑘1 , 𝑘2 ∈ 𝑅;
(1.6)
𝑦0 = 𝐶1 . 𝑒 𝑘0𝑥 + 𝑥 ∗ 𝐶2 . 𝑒 𝑘0𝑥 , если 𝑘1 = 𝑘2 = 𝑘0 , 𝑘0 ∈ 𝑅;
(1.7)
𝑦0 = 𝑒 𝛼𝑥 .(𝐶1 . cos 𝛽𝑥 + 𝐶2 . sin 𝛽𝑥), 𝑘1 = 𝛼 + 𝑖𝛽, 𝑘2 = 𝛼 − 𝑖𝛽.
(1.8)
•
Линейные неоднородные дифференциальные уравнения второго
порядка с постоянными коэффициентами
𝑦 ′′ + 𝑝𝑦 ′ + 𝑞𝑦 = 𝑓(𝑥), 𝑝, 𝑞 𝜖 𝑅
Общим решением линейного неоднородного дифференциального уравнения
второго порядка с постоянными коэффициентами является сумма общего
решения
соответствующего
ЛОДУ
второго
порядка
с
коэффициентами и частного решения исходного ЛНДУ:𝑦 = 𝑦0 + 𝑦1
постоянными
16
Нахождение 𝑦0 описано в разделе линейных однородных дифференциальных
уравнений второго порядка с постоянными коэффициентами и осталось научиться
определять 𝑦1 .
Существует несколько методов нахождения частного решения ЛНДУ
второго порядка с постоянными коэффициентами. Методы выбираются в
зависимости от вида функции f(x), стоящей в правой части уравнения.
Перечислим их и разберем решения соответствующих линейных неоднородных
дифференциальных уравнений второго порядка с постоянными коэффициентами.
Если 𝑓(𝑥) является многочленом n-ой степени 𝑓(𝑥) = 𝑃𝑛 (𝑥), то частное
решение ЛНДУ ищется в виде 𝑦1 = 𝑄𝑛 (𝑥). 𝑥 𝑟 , где 𝑄𝑛 (𝑥)- многочлен степени n, а r
– количество корней характеристического уравнения, равных нулю.
Коэффициенты, определяющие многочлен 𝑄𝑛 (𝑥), находятся методом
неопределенных коэффициентов из равенства𝑦1′′ + 𝑝. 𝑦1′ + 𝑞. 𝑦1 = 𝑓(𝑥).
Если 𝑓(𝑥) представлена произведением многочлена степени n и экспоненты
𝑓(𝑥) = 𝑃𝑛 (𝑥). 𝑒 𝛼𝑥 , то частное решение ЛНДУ второго порядка ищется в виде 𝑦1 =
𝑒 𝛼𝑥 . 𝑄𝑛 (𝑥). 𝑥 𝑟 , где
𝑄𝑛 (𝑥)- многочлен степени n, а r – количество корней
характеристического уравнения, равных 𝛼. Коэффициенты многочлена 𝑄𝑛 (𝑥)
определяются из равенства𝑦1′′ + 𝑝. 𝑦1′ + 𝑞. 𝑦1 = 𝑓(𝑥).
Если 𝑓(𝑥) имеет вид 𝑓(𝑥) = 𝐴1 cos(𝛽𝑥) + 𝐵1 sin(𝛽𝑥), где 𝐴1 и 𝐵1 – числа, то
частное решение ЛНДУ представляется как𝑦1 = (𝐴𝑐𝑜𝑠(𝛽𝑥) + 𝐵𝑠𝑖𝑛(𝛽𝑥)). 𝑥 𝑟 , где А
и В – неопределенные коэффициенты, r – число комплексно сопряженных пар
корней характеристического уравнения равных ±𝑖𝛽. Коэффициенты многочлена
А и В находятся из равенства
𝑦1′′ + 𝑝. 𝑦1′ + 𝑞. 𝑦1 = 𝑓(𝑥)
17
Если
𝑓(𝑥) = 𝑒 𝛼𝑥 . (𝑃𝑛 (𝑥) sin(𝛽𝑥) + 𝑄𝑘 (𝑥) cos(𝛽𝑥)),
то
𝑦1 =
𝑒 𝛼𝑥 . (𝐿𝑚 (𝑥) sin(𝛽𝑥) + 𝑁𝑚 (𝑥) cos(𝛽𝑥)). 𝑥 𝑟 , где r – число комплексно сопряженных
пар корней характеристического уравнения, равных𝛼 ± 𝑖𝛽,
𝑃𝑛 (𝑥), 𝑄𝑘 (𝑥), 𝐿𝑚 (𝑥), 𝑁𝑚 (𝑥) - многочлены степени n, k, m и m соответственно,
𝑚 = max(𝑛, 𝑘). Коэффициенты многочленов 𝐿𝑚 (𝑥), 𝑁𝑚 (𝑥) находятся из равенства
𝑦1′′ + 𝑝. 𝑦1′ + 𝑞. 𝑦1 = 𝑓(𝑥) [10].
•
Линейные однородные дифференциальные уравнения (ЛОДУ) и
линейные неоднородные дифференциальные уравнения (ЛНДУ) второго порядка.
Линейное однородное дифференциальное уравнение второго порядка имеет
вид 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 0, а неоднородное 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 𝑓(𝑥), где
функции 𝑓(𝑥), 𝑝(𝑥), 𝑞(𝑥) - непрерывны на интервале интегрирования X.
Общее решение ЛОДУ второго порядка 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 0 ищется в
виде 𝑦0 = 𝐶1 . 𝑦1 + 𝐶2 . 𝑦2 , где 𝑦1 и 𝑦2 – его линейно независимые частные решения.
Частные решения 𝑦1 и 𝑦2 подбираются (обычно из известных систем линейно
независимых функций). 𝑦1 и 𝑦2 подобрать далеко не всегда удается, поэтому,
найти общее решение дифференциального уравнения 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 0 не
всегда возможно. Если одно частное решение 𝑦1 найдено, то порядок уравнения
может быть снижен до первого с помощью замены 𝑦 = 𝑦1 . ∫ 𝑢(𝑥). 𝑑𝑥.
Решив полученное уравнение, находится общее решение исходного ЛОДУ
второго порядка.
Общее решение ЛНДУ второго порядка 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 𝑓(𝑥) ищется
в виде 𝑦 = 𝑦0 + 𝑦̃ , где 𝑦̃ - любое из его частных решений
а 𝑦0 - общее решение соответствующего ЛОДУ. Таким образом, сначала
находится y0 - общее решение дифференциального уравнения 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ +
𝑞(𝑥)𝑦 = 0. (если это возможно), далее подбирается 𝑦̃ (если получится). Или
18
сначала подбираются 𝑦1 и 𝑦2 (как угодно), а общее решение ЛНДУ определяется
методом вариации произвольных постоянных.
В этом случае общее решение ЛНДУ принимаем 𝑦0 = 𝐶1 (𝑥). 𝑦1 + 𝐶2 (𝑥). 𝑦2 .
Производные неизвестных функции 𝐶1 (𝑥), 𝐶2 (𝑥) определяются из системы
𝐶 ′ (𝑥). 𝑦1 + 𝐶2′ (𝑥). 𝑦2 = 0
уравнений { ′ 1
, а сами функции 𝐶1 (𝑥) и 𝐶2 (𝑥)
𝐶1 (𝑥). 𝑦1′ + 𝐶2′ (𝑥). 𝑦2′ = 𝑓(𝑥)
получаются при последующем интегрировании [6].
Далее рассмотрим виды дифференциальных уравнений высших порядков.
•
Дифференциальные уравнения, допускающие понижение порядка.
Понижение порядка дифференциальных уравнений, которые не содержат
искомой функции и производных до k–1 порядка вида 𝐹(𝑥, 𝑦 (𝑘) , 𝑦 (𝑘−1) , . . . 𝑦 𝑛 ) = 0.
Порядок дифференциального уравнения 𝐹(𝑥, 𝑦 (𝑘) , 𝑦 (𝑘−1) , . . . 𝑦 𝑛 ) = 0 может
быть снижен до n–k заменой переменных 𝑦 (𝑘) = 𝑃(𝑥). При такой замене получим
𝑦 (𝑘+1) = 𝑃′(𝑥),𝑦 (𝑘+2) = 𝑃′′(𝑥),
𝑦 (𝑛) = 𝑃 (𝑛−𝑘) (𝑥).
После
подстановки
этих
результатов в исходное уравнение получим дифференциальное уравнение
порядка n–k с неизвестной функцией p(x). После нахождения p(x), функция y(x)
может быть найдена из равенства 𝑦 (𝑘) = 𝑃(𝑥) интегрированием k раз подряд.
Если дифференциальное уравнение не содержит аргумента x, то есть, имеет
вид 𝐹(𝑦, 𝑦 ′ , 𝑦 ′′ , … 𝑦 (𝑛) = 0, то его порядок может быть снижен на единицу заменой
𝑑𝑦
𝑑𝑥
= 𝑝(𝑦),
где
p(y(x))
будет
сложной
функцией.
Тогда
по
правилу
дифференцирования сложной функции получим
𝑑 2 𝑦 𝑑𝑝 𝑑𝑦 𝑑𝑝
=
=
𝑝(𝑦)
𝑑𝑥 2 𝑑𝑦 𝑑𝑥 𝑑𝑦
𝑑𝑝
𝑑 3 𝑦 𝑑(𝑑𝑦 𝑝(𝑦)) 𝑑 2 𝑝 𝑑𝑦
𝑑𝑝 𝑑𝑝 𝑑𝑦 𝑑 2 𝑦 2
𝑑𝑝 2
=
=
𝑝(𝑦)
+
=
𝑝
(𝑦)
+
(
) 𝑝(𝑦)
𝑑𝑥 3
𝑑𝑥
𝑑𝑦 2 𝑑𝑥
𝑑𝑦 𝑑𝑦 𝑑𝑥 𝑑𝑦 2
𝑑𝑦
19
и так далее.
Подставив
эти
результаты
в
исходное
уравнение,
получаем
дифференциальное уравнение не единицу меньшего порядка.
•
Линейные
однородные
и
неоднородные
дифференциальные
уравнения высших порядков с постоянными коэффициентами
𝑦 (𝑛) + 𝑓𝑛−1 . 𝑦 (𝑛−1) + ⋯ + 𝑓1 . 𝑦 ′ + 𝑓0 . 𝑦 = 0 и
𝑦 (𝑛) + 𝑓𝑛−1 . 𝑦 (𝑛−1) + ⋯ + 𝑓1 . 𝑦 ′ + 𝑓0 . 𝑦 = 𝑓(𝑥).
Чтобы
определить
общее
решение
таких
видов
дифференциальных
уравнений, во-первых, требуется найти корни характеристического уравнения
𝑘 𝑛 + 𝑓𝑛−1 . 𝑘 𝑛−1 + ⋯ + 𝑓1 . 𝑘 + 𝑓0 = 0. Далее, отталкиваясь от значений корней
характеристического уравнения, общее решение ЛОДУ 𝑦0 записывается в
стандартной форме, а общее решение неоднородного уравнения представляется
суммой𝑦 = 𝑦0 + 𝑦̃, где 𝑦̃ - частное решение неоднородного дифференциального
уравнения.𝑦̃можно определить методом вариации произвольных постоянных [13].
•
Линейные
однородные
и
неоднородные
дифференциальные
уравнения высших порядков
𝑦 (𝑛) + 𝑓𝑛−1 (𝑥). 𝑦 (𝑛−1) + ⋯ + 𝑓1 (𝑥). 𝑦 ′ + 𝑓0 (𝑥). 𝑦 = 0и
𝑦 (𝑛) + 𝑓𝑛−1 (𝑥). 𝑦 (𝑛−1) + ⋯ + 𝑓1 (𝑥). 𝑦 ′ + 𝑓0 (𝑥). 𝑦 = 𝑓(𝑥)
Общее решение ЛНДУ высших порядков ищется в виде 𝑦 = 𝑦0 + 𝑦̃, где 𝑦0 общее решение соответствующего ЛОДУ, а 𝑦̃ - частное решение неоднородного
дифференциального уравнения.𝑦0 представляет собой линейную комбинацию
линейно независимых функций 𝑦1 , 𝑦2 , … , 𝑦𝑛 , каждая из которых является частным
решением ЛОДУ, то есть, обращает равенство𝑦 (𝑛) + 𝑓𝑛−1 (𝑥). 𝑦 (𝑛−1) + ⋯ +
𝑓1 (𝑥). 𝑦 ′ + 𝑓0 (𝑥). 𝑦 = 0 в тождество. Частные решения 𝑦1 , 𝑦2 , … , 𝑦𝑛 обычно
20
подбираются из известных систем линейно независимых функций. Подобрать их
далеко не всегда просто и возможно, в этом и заключается основная проблема.
Когда
уравнения
общее
найдено,
решение
частное
линейного
решение
однородного
дифференциального
соответствующего
неоднородного
уравнения можно определить методом вариации произвольных постоянных.[13]
Итак, 𝑦 = 𝑦0 + 𝑦̃ = ∑𝑛𝑗=1 𝐶𝑗 . 𝑦𝑗 + 𝑦̃.
1.3 Подстановка краевых задач для обыкновенных дифференциальных
уравнений
В отличие от задачи Коши, в которой все необходимые условия задаются в
начальной точке, в краевых задачах часть условий задается в начальной точке, а
другая часть условий – в конечной точке отрезка, на котором определено
дифференциальное уравнение. Поэтому краевые задачи часто называют задачами
с нелокальными условиями.
Найти решение уравнения n-го порядка 𝑢(𝑛) = 𝑓(𝑥, 𝑢, 𝑢′ , 𝑢′′ , … , 𝑢(𝑛−1) ) на
отрезке 𝑎 ≤ 𝑥 ≤ 𝑏 при краевых условиях:
𝑢(𝑎) = 𝐴0 ,
𝑢(𝑏) = 𝐵0 ;
𝑢′(𝑎) = 𝐴1 ,
𝑢′(𝑏) = 𝐵1 ;
… … … … … … … … … … ….
𝑢𝑘 (𝑎) = 𝐴𝑘 ,
𝑢𝑚 (𝑏) = 𝐵𝑚 ;
… … … … … … … … … … … … ….
𝑢(𝑖) (𝑎) = 𝐴𝑖 ,
𝑢(𝑗) (𝑏) = 𝐵𝑗 .
21
Здесь 𝐴𝑘 , 𝐵𝑚 - некоторые константы, 𝑘 = 0, 1, 2, … . , 𝑖; 𝑚 = 0, 1, 2, … . , 𝑗.Общее
количество дополнительных условий на концах отрезка [a, b] должно быть равно
порядку дифференциального уравнения 𝑖 + 𝑗 + 2 = 𝑛.
В случае системы уравнений должно выполняться то же правило. Причем
дополнительные условия не должны быть сосредоточены на одном каком - либо
конце отрезка. Например, для уравнений второго и третьего порядков задача
формулируется так. Решить краевую задачу для уравнения
𝑢′′ = 𝑓(𝑥, 𝑢, 𝑢′ ) на отрезке 𝑎 ≤ 𝑥 ≤ 𝑏 при краевых условиях 𝑢(𝑎) =
𝐴; 𝑢(𝑏) = 𝐵;
для уравнения третьего порядка решить задачу
𝑢′′′ = 𝑓(𝑥, 𝑢, 𝑢′ , 𝑢′′), 𝑎 ≤ 𝑥 ≤ 𝑏 при краевых условиях𝑢(𝑎) = 𝐴; 𝑢′ ( 𝑎) = 𝐶,
𝑢(𝑏) = 𝐵; или при краевых условиях 𝑢(𝑎) = 𝐴; 𝑢(𝑏) = 𝐵, 𝑢′ (𝑏) = 𝐷.
Здесь A,B,C,D - некоторые константы, соответствующие значениям
указанных функций в точках a, b.
Конкретные краевые условия выбираются из физической постановки задачи.
Для одного уравнения первого порядка краевую задачу поставить нельзя, так
как в этом случае для выделения частного решения требуется только одно
дополнительное условие, а в краевой задаче два конца, и, следовательно,
минимальное количество дополнительных условий равно двум.
В случае системы двух уравнений первого порядка краевую задачу поставить
уже можно, задав одно дополнительное условие для одного уравнения на одном
конце отрезка, а для другого уравнения на другом, Например [5]:
𝑢′ = 𝑓(𝑥, 𝑢, 𝑧);
𝑎 ≤ 𝑥 ≤ 𝑏,
𝑧 ′ = 𝜑(𝑥, 𝑢, 𝑧);
𝑢(𝑎) = 𝑢𝑎 ;
𝑧(𝑏) = 𝑧𝑏 ;
22
На самом деле, для нахождения решений обыкновенных дифференциальных
уравнений высших порядков с краевыми условиями не просто. Поэтому в этой
работе, рассматриваются только уравнениях вторых порядков, которые часто
встречаются в математике и в математической физики, и имеющие широкое
практическое применения.
1.4 Краевые задачи для обыкновенных дифференциальных уравнений
вторых порядков
На основе знаний, представленных в разделе (1.2) выше, краевые задачи для
обыкновенных дифференциальных уравнений второго порядка делятся на два
случая:
1.
Краевые задачи для ЛОДУ с постоянными коэффициентами.
𝐿[𝑦] ≡ 𝑦 ′′ + 𝑝𝑦 ′ + 𝑞𝑦 ′ = 0,
(1.9)
𝑅 [𝑦] ≡ 𝑦(𝑎) = 𝐴
,на отрезке [a, b]
{ 𝑎
𝑅𝑎 [𝑦] ≡ 𝑦(𝑏) = 𝐵
(1.10)
Где 𝑝, 𝑞, 𝐴, 𝐵 - заданные постоянные.
в этом случае, нахождение общего решения ЛОДУ с постоянными
коэффициентами очень видно по формулам (1.6), (1.7), (1.8), затем дополнительно
с краевыми условиями то конкретное решение уравнения определяется простой.
Подставим краевые условии (1.10) в каждой формуле (1.6), (1.7), (1.8) для
каждого случая соответственно:
𝑦𝑎 = 𝐶1 . 𝑒 𝑘1𝑎 + 𝐶2 . 𝑒 𝑘2𝑎 = 𝐴
{
, если 𝑘1 ≠ 𝑘2 ,
𝑦𝑏 = 𝐶1 . 𝑒 𝑘1𝑏 + 𝐶2 . 𝑒 𝑘2𝑏 = 𝐵
𝑘1 , 𝑘2 ∈ 𝑅;
𝑦𝑎 = 𝐶1 . 𝑒 𝑘0𝑎 + 𝑎 ∗ 𝐶2 . 𝑒 𝑘0𝑎 = 𝐴
{
, если 𝑘1 = 𝑘2 = 𝑘0 ,
𝑦𝑏 = 𝐶1 . 𝑒 𝑘0𝑏 + 𝑏 ∗ 𝐶2 . 𝑒 𝑘0𝑏 = 𝐵
𝑘0 ∈ 𝑅;
(1.11)
(1.12)
23
𝑦𝑎 = 𝑒 𝛼𝑎 . (𝐶1 . cos 𝛽𝑎 + 𝐶2 . sin 𝛽𝑎) = 𝐴
, 𝑘 = 𝛼 + 𝑖𝛽, 𝑘2 = 𝛼 − 𝑖𝛽; (1.13)
{
𝑦𝑏 = 𝑒 𝛼𝑏 . (𝐶1 . cos 𝛽𝑏 + 𝐶2 . sin 𝛽𝑏) = 𝐵 1
В зависимости от полученных результатов 𝑘1 , 𝑘2 , решим одну из систем
(1.11), (1.12), (1.13) чтобы нахождения𝐶1 , 𝐶2 . На конец, получим конкретное
решение уравнения (1.9), удовлетворяющее краевым условиям (1.10). Так как
краевые задачи для ЛОДУ с постоянными коэффициентами решено.
2.
краевые задачи остальных видов ДУ вторых порядков (ЛНДУ с
постоянными коэффициентами, ЛОДУ, ЛНДУ).
В этом случае, краевые задачи этих уравнений сложнее, чем ЛОДУ с
постоянными коэффициентами. Из раздела (1.2) заметим что, определение их
общего решения не имеет общей конкретной формулы, так как необходимо
нахождение
общего
решения
через
различные
методы.
Следовательно,
нахождение решения краевых задач этих уравнений (ЛНДУ с постоянными
коэффициентами, ЛОДУ, ЛНДН) не так легко, как ЛОДУ с постоянными
коэффициентами.
Поэтому,
проблема
заключается
в том,
чтобы
найти
эффективный метод, применяющий для краевых задач всех таких уравнений.
Для решения обыкновенных дифференциальных уравнений применяются
аналитические, приближенные и численные методы.
Аналитические методы позволяют получать решения дифференциальных
уравнений через элементарные или специальные функции в конечном виде и
являются эффективным средством исследования уравнений, однако применимы
лишь для ограниченного класса дифференциальных уравнений — линейных, с
постоянными коэффициентами и др. Эти методы в основном реализованы
в
универсальных математических пакетах MathCad, Maple и других. Однако в
практических задачах они оказываются часто неприменимыми [5].
24
Приближенные
методы
используют
различные
упрощения
исходных
уравнений: линеаризацию, разложения в ряд по некоторому малому параметру,
асимптотические методы и др. Однако они также имеют ограниченную область
применения, хотя и являются эффективным средством исследования решения [5].
Наиболее мощными и универсальными методами решения обыкновенных
дифференциальных уравнений являются численные методы, позволяющие
получать решения тогда, когда традиционные, классические, методы не
помогают. Среди численных методов решения обыкновенных дифференциальных
уравнений одним из важнейших является метод конечных разностей.
Рассмотрим решение линейных краевых задач методом конечных разностей:
𝐿[𝑦] ≡ 𝑦 ′′ + 𝑝(𝑥)𝑦 ′ + 𝑞(𝑥)𝑦 = 𝑓(𝑥),
(1.14)
𝑅 [𝑦] ≡ 𝛼0 𝑦(𝛼) + 𝛼1 𝑦′(𝛼) = 𝐴
{ 𝑎
𝑅𝑏 [𝑦] ≡ 𝛽0 𝑦(𝛼) + 𝛽1 𝑦′(𝛼) = 𝐵
(1.15)
Где 𝑝(𝑥), 𝑞(𝑥), 𝑓(𝑥) - известные
функции,𝛼0 , 𝛼1 , 𝛽0 , 𝛽1 , 𝐴, 𝐵 − заданные
непрерывные
постоянные,
на
отрезке [a, b]
причем|𝛼0 | + |𝛼1 | ≠ 0и
|𝛽0 | + |𝛽1 | ≠ 0.[15]
Если уравнение (1.14) является ЛНДУ с постоянными коэффициентами то
𝑝(𝑥), 𝑞(𝑥) – постоянные числа. А если (1.14) – ЛОДУ то 𝑓(𝑥) = 0.
Разобьем отрезок [a, b] на n равных частей длины, или шаг:
ℎ=
(𝑏 − 𝑎)
𝑛
25
Рис. 1.1. Отображение системы конечно-разностных уравнений.
Точки
разбиения𝑥𝑖 = 𝑥0 + 𝑖. ℎ, 𝑖 = 0,1, … , 𝑛𝑥0 = 𝑎, 𝑥𝑛 = 𝑏
называются
узлами, а их совокупность – сеткой на отрезке [a, b]. Значения в узлах искомой
функции𝑦 = 𝑦(𝑥)и
ее
производных
𝑦 ′ = 𝑦 ′ (𝑥), 𝑦 ′′ = 𝑦′′(𝑥)
обозначим
соответственно через
𝑦𝑖 = 𝑦𝑖 (𝑥𝑖 ), 𝑦′𝑖 = 𝑦′𝑖 (𝑥𝑖 ), 𝑦′′𝑖 = 𝑦′′𝑖 (𝑥𝑖 )
Введем обозначения
𝑝𝑖 = 𝑝𝑖 (𝑥𝑖 ), 𝑞𝑖 = 𝑞𝑖 (𝑥𝑖 ), 𝑓𝑖 = 𝑓𝑖 (𝑥𝑖 )
Заменим
производные
так
называемыми
односторонними
конечно-
𝑦𝑖+2 −𝑦𝑖+1 𝑦𝑖+1 −𝑦𝑖
{
− ℎ
𝑦 ′ 𝑖+1 −𝑦 ′ 𝑖
𝑦 −2.𝑦 +𝑦
ℎ
𝑦′′𝑖 ≈
≈
= 𝑖+2 2𝑖+1 𝑖
(1.16)
разностными отношениями:
𝑦′𝑖 ≈
ℎ
Формулы
(1.16)
приближенно
внутренних точках интервала [a, b].
Для граничных точек положим:
𝑦𝑖+1 −𝑦𝑖
ℎ
,
ℎ
выражают
ℎ
значения
производных
во
26
𝑦′0 ≈
𝑦1 −𝑦0
ℎ
, 𝑦′𝑛 =
𝑦𝑛 −𝑦𝑛−1
(1.17)
ℎ
Используя формулы (1.16), дифференциальное уравнение (1.14) при 𝑥 =
𝑥𝑖 , (𝑖 = 1,2, … . , 𝑛 − 1)
приближенно
можно
заменить
линейной
системой
уравнений
𝑦𝑖+2 −2.𝑦𝑖+1 +𝑦𝑖
ℎ2
+ 𝑝𝑖
𝑦𝑖+1 −𝑦𝑖
ℎ
+ 𝑞𝑖 . 𝑦𝑖 = 𝑓𝑖 , 𝑖 = 0,1, … . , 𝑛 − 2.
(1.18)
Преобразуем уравнения (1.18):
𝑦𝑖+2 − 2. 𝑦𝑖+1 + 𝑦𝑖 + 𝑝𝑖 . ℎ(𝑦𝑖+1 − 𝑦𝑖 ) + ℎ2 . 𝑞𝑖 . 𝑦𝑖 = ℎ2 . 𝑓𝑖
⇔ 𝑦𝑖+2 + (−2 + ℎ. 𝑝𝑖 )𝑦𝑖+1 + (1 − ℎ. 𝑝𝑖 + ℎ2 . 𝑞𝑖 )𝑦𝑖 = ℎ2 . 𝑓𝑖 , 𝑖 = 0,1, … . , 𝑛 − 2.
(1.19)
Кроме того, в силу формул(1.17)краевые условия(1.15) дополнительно дают
еще два уравнения:
𝛼0 𝑦0 + 𝛼1
𝑦1 −𝑦0
ℎ
= 𝐴, 𝛽0 𝑦𝑛 + 𝛽1
𝑦𝑛 −𝑦𝑛−1
ℎ
=𝐵
(1.20).
Таким образом, получена линейная система n+1 уравнений с n+1
неизвестными𝑦0 , 𝑦1 , … . 𝑦𝑛 , представляющими собой значения искомой функции
𝑦(𝑥) в узлах сетки. Система уравнений (1.19), (1.20), заменяющая приближенно
дифференциальную краевую задачу (1.14), (1.15) обычно называется разностной
схемой.
𝑦𝑖+2 + (−2 + ℎ. 𝑝𝑖 )𝑦𝑖+1 + (1 − ℎ. 𝑝𝑖 + ℎ2 . 𝑞𝑖 )𝑦𝑖 = ℎ2 . 𝑓𝑖 , 𝑖 = 0,1, . . , 𝑛 − 2.
𝑦 −𝑦
𝛼0 𝑦0 + 𝛼1 1 0 = 𝐴
{
𝛽0 𝑦𝑛 + 𝛽1
ℎ
𝑦𝑛 −𝑦𝑛−1
ℎ
=𝐵
(1.21)
27
Решить систему (1.21) можно каким-либо общим численным методом,
получим таблицу приближенных значений искомой функции [14.]
28
2
ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Проектирование и программная реализация поставленной задачи
•
Программно-алгоритмическая поддержка решений краевых задач для
ОДУ
Рис. 2.1. Блок - схема алгоритма решения краевых задач для ОДУ второго
порядка.
29
Рис. 2.2. Блок - схема подпрограммы решения краевых задач для ЛОДУ с
постоянными коэффициентами
30
Рис. 2.3. Блок - схема подпрограммы решения краевых задач остальных
видов ДУ вторых порядков (ЛНДУ с постоянными коэффициентами, ЛОДУ,
ЛНДУ).
31
Рис. 2.4. Блок - схема функция решения систему уравнений методом Гаусса
32
Для решения краевых задач для обыкновенных дифференциальных
уравнений второго порядка был разработан выше алгоритм, (см. на рис. 2.1, 2.2,
2.3, 2.4).
•
Подробное описание алгоритма
Рассмотрим назначение каждого элемента, представленного на выше
алгоритме.
Value1: Это значение применяет 0 или 1 соответственно режим работа
программы: краевые задачи для ЛОДУ с постоянными коэффициентами или
остальные
виды
ДУ
вторых
порядков
(ЛНДУ
с
постоянными
коэффициентами, ЛОДУ, ЛНДУ).
В подпрограмме решения краевых задач для ЛОДУ с постоянными
коэффициентами:
a1: Целое число – это начальная граничная точка отрезка.
b1: Целое число – это конечная граничная точка отрезка.
P: целое число – коэффициент дифференциального первого порядка
переменных уравнения.
Q: целое число – коэффициент переменных уравнения.
A: Вещественные постоянные числа – значение уравнения в
начальной граничной точке.
B: Вещественные постоянные числа – значение уравнения в конечной
граничной точке.
U[]: Матрица коэффициентов систем уравнения (1.11), (1.12), (1.13) с
переменными С1 и С2 ( коэффициенты частного решения ДУ).
R[]: Вектор свободных членов систем (1.11), (1.12), (1.13).
L[]: Вектор решений (1.11), (1.12), (1.13).
delta: Дискриминант характеристического уравнения.
33
k1, k2: Кратные корни характеристического уравнения.
alpha, beta: Вещественные числа сопряженных комплексных корней.
В подпрограмме решения краевых задач остальных видов ДУ вторых
порядков (ЛНДУ с постоянными коэффициентами, ЛОДУ, ЛНДУ).
U1, U2, V1, V2: Постоянные числа – коэффициенты членов дифференциальных
уравнений граничных условий.
h: Шаг в системе конечно-разностных уравнений.
n: Количество равноотстоящих узлов.
X1[] (или X[]):Вектор содержит значения в каждом узле.
a2: Целое число – это начальная граничная точка отрезка.
b2: Целое число – это конечная граничная точка отрезка.
A[][]: Матрица коэффициентов системы уравнений (1.21) порядка
(n x n).
C[]: Вектор свободных членов системы (1.21) размерностью n.
Y[]: Вектор, элементы которого являются значениями решения ЛДУ,
соответственно значениям в каждом узле.
AA (или A): Вещественные постоянные числа – значение уравнения в
начальной граничной точке.
BB( или B): Вещественные постоянные числа – значение уравнения в
конечной граничной точке.
f(x): Свободный член ЛДУ в качестве функции от переменных х.
p(x), q(x): Коэффициенты членов ЛДУ в качестве функции от
переменных х, кроме случая для ЛНДУ с постоянными коэффициентами –
постоянные числа.
34
Далее рассмотрим следующие таблицы описания действий алгоритма,
нумерующих на рисунках (2.1), (2.2), (2.3).
Таблица 2.1.
Описание действий Блок-схемы программы, представлены на рис. 2.1
№
1
2
3
4
5
6
7
Назначение
Начало алгоритма
Ввод данных
Если условие (value1=1) выполняется, исполнитель переходит по
стрелке с пометкой (+), если не выполняется – по стрелке (-)
Подпрограмма решения краевых задач для ЛОДУ с постоянными
коэффициентами
Подпрограмма решения краевых задач остальных видов ДУ вторых
порядков (ЛНДУ с постоянными коэффициентами, ЛОДУ, ЛНДУ).
Вывод результатов
Конец алгоритма
35
Таблица 2.2.
Описание действий блок-схемы подпрограммы решения краевых задач для ЛОДУ
с постоянными коэффициентами, представлены на рис. 2.2.
№
1
2
3
Назначение действий
Вход данных подпрограммы.
Объявление и ввода данных подпрограммы.
Выполнение операций присваиваний для: delta и элементы вектора
R[].
4
5
6
7
8
9
10
11
12
13
14
15
16
Если условие (delta>0) выполняется, исполнитель переходит по
стрелке с пометкой (+), если не выполняется – по стрелке (-)
Выполнение операций присваиваний для: k1,k2, и элементы матрицы
U, если delta>0.
Нахождение решений системы с использованием функции метода
Гаусса с полученными результатами U[], R[] соответственно.
Выполнение операции присваивания решения Y ЛОДУ с
постоянными коэффициентами по формуле(1.6) в зависимости полученных
значений k1,k2.
Если условие (delta==0) выполняется, исполнитель переходит по
стрелке с пометкой (+), если не выполняется – по стрелке (-).
Выполнение операций присваиваний для: k1,k2, и элементы матрицы
U, если delta==0.
Нахождение решений системы с использованием функции метода
Гаусса с полученными результатами U[], R[] соответственно.
Выполнение операции присваивания решения Y ЛОДУ с
постоянными коэффициентами по формуле(1.7) в зависимости полученных
значений k1,k2.
Выполнение операций присваиваний для: alpha, beta и элементы
матрицы U, если delta< 0.
Нахождение решений системы с использованием функции метода
Гаусса с полученными результатами U[], R[] соответственно.
Выполнение операции присваивания решения Y ЛОДУ с
постоянными коэффициентами по формуле(1.8) в зависимости полученных
значений alpha, beta.
Вывод и печать полученное решение Y.
выход подпрограммы
36
Таблица 2.3.
Описание действий блок-схемы подпрограммы решения краевых задач остальных
видов ДУ вторых порядков (ЛНДУ с постоянными коэффициентами, ЛОДУ,
ЛНДУ), представлены на рис. 2.1
№
1
2
3
Назначение действий
Вход подпрограммы
Объявление и ввода данных
Когда (value1!=0), то дальше проверить условия (abs(U1)+abs(U2) == 0
or abs(V1)+abs(V2)==0), если одно из них выполняется, исполнитель
переходит по стрелке с пометкой (-), если не выполняется – по стрелке (+).
4
Выполнение операции присваивании для n по формулеn=(b-a)/h
5
Повторение ряда операций присваиваний элементов вектораx[]
значением 1, количество повторений n-1.
6
7,8,9,10,11,12
Повторение ряда n+1 операций присваиваний элементов вектора x[] в
зависимости значения i, если (i=1) то x1[i]=a2, если (i=n+1) то x1[i]=b2, а
остальные случая x1[i]=a2+(i-1)*h.
13,14, 15
Повторение ряда операций присваиваний элементов матрицыA[][]
значением 0, количество повторений n+1.
16
Выполнение операции присваивании для нескольких конкретных
элементов матрицы A, показыванных на алгоритме.
17, 18
Повторение ряда операций присваиваний остальных элементов
матрицыA, количество повторений n-1.
19, 20
Повторение ряда операций присваиваний элементов вектораC[]
значением 0, количество повторений n+1.
21
Выполнение операции присваивании для элементов C[1], C[2] вектора
C.
22, 23
Повторение ряда операций присваиваний остальных элементов
матрицыC, количество повторений n-1.
24
Нахождение решений системы (1.21)с использованием функции метода
Гаусса с полученными результатами A[][], C[] соответственно.
25, 26
Повторение ряда выводов и печать значение каждого узла и
соответственного решения ДУ в каждом узле.
27
условия (abs(U1)+abs(U2) == 0 or abs(V1)+abs(V2)==0), если одно из
них выполняется то выводит сообщение ошибки.
28
Конец Подпрограммы решения краевых задач остальных видов ДУ
вторых порядков (ЛНДУ с постоянными коэффициентами, ЛОДУ, ЛНДУ).
37
2.2 Выбор среды разработки ПО.
На сегодняшний момент язык программирования C# один из самых мощных,
быстро развивающихся и востребованных языков в ИТ-отрасли. В настоящий
момент на нем пишутся самые различные приложения: от небольших десктопных
программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно
миллионы пользователей [19].
C# является языком с Си-подобным синтаксисом и близок в этом отношении
к C++ и Java. Поэтому, если вы знакомы с одним из этих языков, то овладеть C#
будет легче [19].
C# является объектно-ориентированным и в этом плане много перенял у Java
и С++.Например, C# поддерживает полиморфизм, наследование, перегрузку
операторов,
статическую
типизацию.
Объектно-ориентированный
подход
позволяет решить задачи по построению крупных, но в тоже время гибких,
масштабируемых и расширяемых приложений. И C# продолжает активно
развиваться, и с каждой новой версией появляется все больше интересных
функциональностей
как,
например,
лямбды,
динамическое
связывание,
асинхронные методы и т.д. [19].
Язык С# имеет массу преимуществ: простота, объектная ориентированность,
типовая защищенность, «сборка мусора», поддержка совместимости версий и
многое другое. Данные возможности позволяют быстро и легко разрабатывать
приложения. При создании С# его авторы учитывали достижения многих других
языков программирования: C++, С, Java, Visual Basic и.т.д. В результате
получился действительно простой, удобный и современный язык, который
помощности не уступает C++, но существенно повышает продуктивность
разработок.
38
Программа на С# состоит из одного или нескольких файлов. Каждый файл
может содержать одно или несколько пространств имен. Каждое пространство
имен может содержать вложенные пространства имени типы, такие как классы,
структуры, интерфейсы, перечисления и делегаты - функциональные типы.
На языке С# мы можем создать приложений для Windows Forms. Windows
Forms предоставляют очень простые и в тоже время мощные механизмы для
управления графическим Форма представляет собой экранный объект, обычно
прямоугольной
формы,
который
можно
применять
для
предоставления
информации пользователю и для обработки ввода информации от пользователя.
Формы могут иметь вид стандартного диалогового окна, много документного
интерфейса (MDI) или поверхности для отображения графической информации.
Самый простой способ задать интерфейс пользователя для формы — разместить
элементы управления на ее поверхности [18].
Форма — это объект, который задается свойствами, определяющими их
внешний
вид,
методами,
определяющими
их
поведение,
и
событиями,
определяющими их взаимодействие с пользователем. она имеет 2 окна программы
в процессе создания приложения: окно дизайнера форм отображается только
графическое представление визуальных компонент формы и все данные вашей
программы хранятся в окне кода программы.[18]
Далее рассмотрим еще хорошее программное обеспечение, используемое по
мире.
Matlab – это система инженерных и научных вычислений. Она обеспечивает
математические вычисления, визуализацию научной графики программирование
и моделирование процессов с использованием интуитивно понятной среды
окружения, когда задачи и их решения могут быть представлены в нотации,
близкой к математической. Наиболее известные области применения системы
Matlab:
39
математика и вычисления;
Разработка алгоритмов;
Вычислительный эксперимент, имитационное моделирование,
макетирование;
Анализ данных, исследование и визуализация результатов;
научная и инженерная графика;
Разработка
приложений,
включая
графический
интерфейс
пользователя.
Основным объектом при программировании в среде Matlab является массив,
для которого не требуется указывать размерность явно. Это позволяет решать
многие
вычислительные
задачи,
связанные
с
векторно-матричными
формулировками [8].
Среда системы Matlab это совокупность интерфейсов, через которые
пользователь поддерживают связь этой системой. Это: диалог посредством
командной строки или графического интерфейса, просмотр рабочей области,
редактор и отладчик М-файлов, работа с файлами и оболочкой DOS, экспорт и
импорт данных, интерактивный доступ к справочной информации, динамическое
взаимодействие с внешними системами Microsoft Word, Microsoft Excel и др.
Реализуются эти интерфейсы через командное окно, инструментальную панель,
системы просмотра рабочей области и путей доступа, редактор / отладчик Мфайлов, специальные меню [8].
В системе Matlab существует два вида м-файлов:
Скрипты – представляют последовательности команд (представляют
собой процедуры);
40
Function– представляют собой функции с входными аргументами и
выходными параметрами (значениями функции).
Но далее возникает необходимость многократного запуска файла программы
при других, изменённых параметрах решаемой задачи. Возникает неудобство: в
постоянном редактировании исходного текста программы и повторном или
очередном её запуске. При этом важен механизм управления переменными,
который бы обеспечивал удобный интерфейс между программой и пользователем.
При решении других задач могут возникнуть трудности с визуализацией какоголибо процесса, то есть некоторая переменная изменяться динамически в процессе
решения поставленной задачи.
Все эти и другие трудности, возможно, решить при использовании
графического интерфейса пользователя. (GUI– Graphical User Interface)
Использование графического интерфейса позволяет пользователю сделать
программу более универсальной.
В результате создания интерфейса получим два файла: fig-файл с «фигурой»
самого интерфейса и m-файл, который создается самим Matlab и содержит
программный код всех элементов интерфейса.
В состав MatLab входит среда GUIDE для создания приложений с
графическим интерфейсом пользователя. Работа в этой среде достаточно проста элементы управления (кнопки, раскрывающиеся списки и т.д.) размещаются при
помощи мыши, а затем программируются события, которые возникают при
обращении пользователя к данным элементам управления.
Главное преимущество guide - легко сделать простой GUI, т.к. весь код для
интерфейса генерируется самим Matlab. Для работы программной частью GUI
достаточно изучить принцип обмена данными с помощью команд setappdata и
getappdata (что является стандартным приемом для обмена данными между
различными элементами GUI) [17].
41
Приложение может состоять как из одного основного окна, так и нескольких
окон и осуществлять вывод графической и текстовой информации, в основное
окно приложения и в отдельные окна. Ряд функций MatLab предназначен для
создания стандартных диалоговых окон открытия и сохранения файла, печати,
выбора шрифта, окна для ввода данных и др., которыми можно пользоваться в
собственных приложениях.
Что
необходимо
знать
для
создания
приложений
с
графическим
интерфейсом? Во-первых, как программируются файл-функции с подфункциями,
файл-функции с переменным числом входных и выходных аргументов. Вовторых, требуется иметь представление об иерархической структуре и свойствах
графических объектов, уметь обращаться с указателями на них. Разумеется, не
должна вызывать затруднение работа с числовыми массивами, строками,
структурами, ячейками и массивами строк, структур и ячеек, а также
использование конструкций встроенного языка программирования.
Как и любой процесс проектирования, процесс построения графического
интерфейса пользователя можно разбить на следующие этапы:
Постановка задачи,
Создание формы интерфейса и создание на неё элементов управления.
Написание кода программы и кода обработки событий.
Этапы построения графического интерфейса пользователя
На первом этапе проводиться анализ поставленной задачи и
определяется количество и состав элементов управления необходимых для
решения задачи.
На втором этапе создаётся форма графического интерфейса и на ней
создаются и размещаются элементы управления. Здесь же описываются их
свойства.
42
На третьем этапе создания графического интерфейса пользователя
(GUI) пишется код основной программы вычисления и код для обработки
событий.
Таким образом, чтобы проектирования программы пользовательского
интерфейса, с которой поставленные задачи в этой работе решены, то обе
программы, описанные выше подходят.
Но если дальнейшее рассмотрение с точки зрения эффективности и удобства,
то GUI Matlab есть более преобладания чем Windows Form C#, потому что
MATLAB является очень мощным инструментом для поддержки вычисления
векторов, матриц, а также предоставление функций графика чрезвычайно
идеальными. Поэтому с требованиями, установленными проблемой задач MatLab
является достойным выбором, сэкономить много времени программирования,
удобный интерфейс и красивый внешний вид.
2.3 Создание ПО
Далее по приведенным выше алгоритмам было создано ПО с графическим
пользовательским интерфейсом GUI MATLAB (см. на рис. 2.5).
43
Рис. 2.5. Окно редактирования формы
Теперь рассмотрим такие главные компоненты, отображающие на выше
интерфейсе формы (см. на рис. 2.5).
1.
Три кнопки, созданные в программе.
Рис. 2.6 созданные кнопки в программе.
- Кнопка «СБРОС» выполняет вычисление и возвращает нахожденные
результаты поставленной задачи.
- Кнопка «УДАЛИТЬ» для удаления и редактирования исходных данных.
- Кнопка «ЗАКРЫТЬ» для завершения выполнения программы.
44
Режим работы: ЛИНЕЙННОЕ ОДНОРОДННОЕ ОДУ 2-ОГО
2.
ПОРЯДКА С ПОСТОЯННЫМИ КОЭФФИЦИЕНТАМИ - включена, если
радиокнопку выбирали (см. на рис.2.7).
Рис.2.7. отображение редактирования области ЛОДУ 2-ого порядка с
постоянными коэффициентами.
В этой области, левая часть является областью, отображающей полученные
результаты после нажатия на кнопку выполнения «СБРОС», такие: конкретный
вид общего решения и его значения коэффициентов – k1, k2, n, m, c1, с2 А правая
часть предназначена областью для ввода исходных данных: a, b, P, Q, A, B,
(назначения таких коэффициентов показаны выше в разделе подробного
описания).
3.
Режим работы: ЛНДУ С ПОСТОЯННЫМИ КОЭФФИЦИЕНТАМИ,
ЛОДУ, ЛНДУ 2-ОГО ПОРЯДКА – включена, если радиокнопку выбрали (см. на
рис. 2.8).
Аналогично, эта область имеет: левая часть для вывода полученных
результатов –X[]={x1,x2,x3,x4…}, Y[]={y1,y2,y3,y4…} и правая часть для ввода
исходных данных – a, b, A, B, U1, U2, V1, V2, P(x), Q(x), F(x), (можно смотреть
значения векторов X[], Y[] коэффициентыa, b, A, B, U1, U2, V1, V2, P(x), Q(x),
F(x), в разделе подробного описания).
45
Рис. 2.8. отображение редактирования области программы лнду с
постоянными коэффициентами, лоду, лнду 2-ого порядка.
4.
область графика
Рис. 2.9. область для отображения графика.
46
После нажатия на кнопку «СБРОС» сразу график решения ЛДУ нарисован на
этой области, также сетка, ось Х, и ось У показаны с их назначениями.
Далее смотрим интерфейс программы в процессе выполнения (см. на рис.
2.10)
Рис. 2.10. Окно программы, запущенной на выполнение
2.4 Тестирование созданного П.О.
Протестируем решение краевой задачи линейного вида однородного ОДУ 2ого порядка с постоянными коэффициентами. Полученные результаты имеют
погрешность до 0.001.
47
Задачи – А, Б, В: найти частное решение следующих дифференциальных
уравнений, удовлетворяющее заданным граничным условиям.
А. 𝑦 ′′ − 6𝑦 ′ + 9𝑦 = 0, 𝑦(1) = 2,
𝑦(2) = −1
Составим и решим характеристическое уравнение:
𝑘 2 − 6𝑘 + 9 = 0
𝐷 = 62 − 4.1.9 = 0
Получены два кратных действительных корня: 𝑘1,2 =3.
Согласно формуле (1.7) получим общее решение: 𝑦 = 𝐶1 𝑒 3𝑥 + 𝐶2 𝑥𝑒 3𝑥 ,
где 𝐶1, 𝐶2 − 𝑐𝑜𝑛𝑠𝑡
Теперь нужно найти частное решение, соответствующее заданным
граничными условиям. Наша задача состоит в том, чтобы найти такие
значения констант, чтобы выполнялись ОБА условия.
𝑦(1) = 2
𝐶 𝑒 3.1 + 𝐶2 . 1. 𝑒 3.1 = 2
⇔ { 1 3.2
{
𝑦(2) = −1
𝐶1 𝑒 + 𝐶2 . 2. 𝑒 3.2 = −1
𝐶1 𝑒 3 + 𝐶2 . 𝑒 3 = 2
𝐶1 = 0.2016
⇔{
⇔
{
𝐶2 = −0.1021
𝐶1 𝑒 6 + 2. 𝐶2 . 𝑒 6 = −1
Подставить найденные значения констант 𝐶1 = 0.2016, 𝐶2 = −0.1021 в
общее решение, получим: 𝑦 = 0.2016𝑒 3𝑥 − 0.1021𝑥𝑒 3𝑥 .
Теперь проверим полученные результаты с созданной программой.
На основе заданных условий задач, определим соответственно
коэффициенты, такие: 𝑃 = −6, 𝑄 = 9, 𝑎 = 1, 𝑏 = 2, 𝐴 = 2, 𝐵 = −1.
Вводим такие коэффициенты в области ввода запущенной программы, как
показано на рис. 2.11.
48
Рис. 2.11. ввода данных в области ввода запущенной программы примера А
Далее нажимаем на кнопку «СБРОС», после этого полученные результаты
отображают в области вывода: 𝑘1 = 3, 𝑘2 = 3, 𝑐1 = 0.20163, 𝑐2 = −0,10205 и
график нарисован, как показано на рис. 2.12.
Как мы видим в результате работы созданного ПО мы получили ответ 𝑘1 =
3, 𝑘2 = 3, 𝑐1 = 0.20163, 𝑐2 = −0,10205, который соответствует теоретическому
решению
с
учетом
0.2016, 𝑐2 = −0,1021
погрешности
вычислений,
где
𝑘1 = 3, 𝑘2 = 3, 𝑐1 =
49
Рис. 2.12. Окно программы с полученными результатами, запущенной на
выполнение примера А
Аналогично для следующих задач (Б, В):
Б. 𝑦 ′′ + 𝑦 ′ − 2𝑦 = 0,
𝑘 2 + 𝑘 − 2 = 0,
𝑦(1) = 4,
𝑦(2) = 1
𝐷 = 1 + 8 = 9, √𝐷= 3
𝑘1 =
−1 − 3
= −2,
2
𝑘2 =
−1 − 3
=1
2
Согласно формуле (1.6) получим общее решение: 𝑦 = 𝐶1 𝑒 −2𝑥 + 𝐶2 𝑒 𝑥 ,
где 𝐶1, 𝐶2 − 𝑐𝑜𝑛𝑠𝑡.
𝑦(1) = 4
𝐶1 𝑒 −2.1 + 𝐶2 . 𝑒 1 = 4
⇔{
{
𝑦(2) = 1
𝐶1 𝑒 −2.2 + 𝐶2 . 𝑒 2 = 1
50
𝐶 𝑒 −2 + 𝐶2 . 𝑒 = 4
𝐶 = 28.2450
⇔ { 1 −4
⇔{ 1
2
𝐶2 = 0.0654
𝐶1 𝑒 + 𝐶2 . 𝑒 = 1
Подставить найденные значения констант 𝐶1 = 28.2450, 𝐶2 = 0.0654 в
общее решение, получим: 𝑦 = 28.2450𝑒 −2𝑥 + 0.0654𝑒 𝑥 .
Проводим проверить результаты, вводим соответственно коэффициенты в
области ввода: 𝑃 = 1, 𝑄 = −2, 𝑎 = 1, 𝑏 = 2, 𝐴 = 4, 𝐵 = 1, как показан рис. 2.13
Рис. 2.13. ввода данных в области ввода запущенной программы примера Б
После этого, полученные результаты отображаются в области вывода: 𝑘1 =
−2, 𝑘2 = 1, 𝑐1 = 20.2441, 𝑐2 = 0.065325, и график нарисован (см. рис. 2.14)
51
Рис. 2.14. Окно программы с полученными результатами, запущенной на
выполнение примера Б
Как мы видим в результате работы созданного ПО мы получили ответ 𝑘1 =
−2, 𝑘2 = 1, 𝑐1 = 20.2441, 𝑐2 = 0.065325, который соответствует теоретическому
решению
с
учетом
погрешности
вычислений,
где
𝑘1 = −2, 𝑘2 = 1, 𝑐1 =
20.24450, 𝑐2 = 0.0654.
В. 𝑦 ′′ − 2𝑦 ′ + 10𝑦 = 0,
𝑦(1) = 1.21,
𝑘 2 − 2𝑘 + 10 = 0
𝑘1 =
2 − 6𝑖
= 1 − 3𝑖,
2
𝑦(2) = 2.74
𝐷 = 4 − 40 = −36,
𝑘2 =
2 − 6𝑖
= 1 + 3𝑖
2
(Вещественные числа сопряженных комплексных корней: 𝑛 = 1, 𝑚 = 3)
52
Согласно формуле (1.8) получим общее решение: 𝑦 = 𝐶1 𝑒 𝑥 𝑐𝑜𝑠3𝑥 +
𝐶2 𝑒 𝑥 𝑠𝑖𝑛3𝑥, где 𝐶1, 𝐶2 − 𝑐𝑜𝑛𝑠𝑡
𝑦(1) = 1.21
𝐶 𝑒 1 𝑐𝑜𝑠3.1 + 𝐶2 . 𝑒 1 𝑠𝑖𝑛3.1 = 1.21
⇔{ 1 2
{
𝑦(2) = 2.74
𝐶1 𝑒 𝑐𝑜𝑠3.2 + 𝐶2 . 𝑒 2 𝑠𝑖𝑛3.2 = 2.74
𝐶1 . 𝑒. 𝑐𝑜𝑠3 + 𝐶2 . 𝑒. 𝑠𝑖𝑛3 = 1.21
𝐶 = −1.2529
⇔{
⇔{ 1
2
2
𝐶2 = −5.632
𝐶1 . 𝑒 . 𝑐𝑜𝑠6 + 𝐶2 . 𝑒 . 𝑠𝑖𝑛6 = 2.74
Подставить найденные значения констант 𝐶1 = −1.2529, 𝐶2 = −5.632 в
общее решение, получим: 𝑦 = −1.2529𝑒 𝑥 𝑠𝑖𝑛3𝑥 − 5.632𝑒 𝑥 𝑐𝑜𝑠3𝑥.
Рис . 2.15. ввода данных в области ввода запущенной программы примера В
53
Для этой задачи, коэффициенты определяются следующие: 𝑃 = −2, 𝑄 =
10, 𝑎 = 1, 𝑏 = 2, 𝐴 = 1.21, 𝐵 = 2.74. Вводим их в области ввода, как показан рис.
2.15.
Получим результаты, отображающие в области вывода (см. на рис. 2.16)
Как мы видим в результате работы созданного ПО мы получили ответ 𝑛 =
1, 𝑚 = 3, 𝑐1 = −1.2522, 𝑐2 = −5.63,
решению
с
учетом
который
погрешности
соответствует
вычислений,
где
теоретическому
𝑛 = 1, 𝑚 = 3, 𝑐1 =
−1.2529, 𝑐2 = −5.632.
Рис. 2.16. Окно программы с полученными результатами, запущенной на
выполнение примера В.
54
Протестируем решение краевых задач линейного неоднородного ОДУ 2-ого
порядка. Полученные результаты имеют погрешность до 0.001.
Задача: методом конечных разностей найти приближенное решение
уравнения:
1
𝑦 ′′ + 𝑦 ′ + 0.5𝑦 = 0.5𝑥 2 − 𝑙𝑛𝑥 + 4
𝑥
(2.1)
удовлетворяющее краевым условиям
𝑦(1) + 𝑦 ′ (1) = 1,
{
𝑦(2) − 0.5𝑦 ′ (2) = 1.1137
(2.2)
используя конечно-разностные отношения.
Выберем шаг ℎ = 0.2, получим шесть узлов сетки с помощью формулы 𝑥𝑖 =
𝑥0 + 𝑖. ℎ: 𝑥0 = 1, 𝑥1 = 1.2, 𝑥2 = 1.4, 𝑥3 = 1.6, 𝑥4 = 1.8, 𝑥5 = 2. Используя формулы
(1.18), заменяем уравнение (2.1) системой конечно-разностных уравнений:
𝑦𝑖+2 − 2𝑦𝑖+1 + 𝑦𝑖 1 𝑦𝑖+1 − 𝑦𝑖
+
+ 0.5𝑦𝑖 = 0.5𝑥𝑖 2 − 𝑙𝑛𝑥𝑖 + 4, 𝑖 = 0,1,2,3.
2
ℎ
𝑥𝑖
ℎ
⟺ 𝑦𝑖+2 − 2𝑦𝑖+1 + 𝑦𝑖 +
ℎ
(𝑦𝑖+1 − 𝑦𝑖 ) + 0.5ℎ2 𝑦𝑖 = ℎ2 (0.5𝑥𝑖 2 − 𝑙𝑛𝑥𝑖 + 4)
𝑥𝑖
В результате приведения подобных членов получаем
𝑦𝑖 (1 −
ℎ
𝑥𝑖
ℎ
+ 0.5ℎ2 ) + 𝑦𝑖+1 (−2 + ) + 𝑦𝑖+2 = ℎ2 (0.5𝑥𝑖 2 − 𝑙𝑛𝑥𝑖 + 4)
𝑥
𝑖
(2.3)
В граничных узлах краевые условия (2.2)согласно принимают вид
𝑦0 +
𝑦1 −𝑦0
ℎ
= 1, 𝑦5 − 0.5
𝑦5 −𝑦4
ℎ
= 1.1137.
Записав предпоследнее уравнение для каждого узла 𝑖 = 0,1,2,3 и добавив
последние уравнения (2.3), получим следующую систему:
55
0.82𝑦0 − 1.8𝑦1 + 𝑦2 = 0.18,
0.853𝑦1 − 1.833𝑦2 + 𝑦3 = 0.182,
0.877𝑦2 − 1.857𝑦3 + 𝑦4 = 0.186,
0.895𝑦3 − 1.875𝑦4 + 𝑦5 = 0.192,
−0.8𝑦0 + 𝑦1 = 0.2,
−0.3𝑦5 + 0.5𝑦4 = 0.223
{
Решим эту задачу методом Гаусса.
Из системы, составим следующую расширенную матрицу, слева от черты
расположена матрица системы:
0
.82
-
1
0
0
0
1.8
0
.18
0
.853 1.833
0
0
0
.877
0
0
0
-
0
1
0
1
0
0
0
.182
1
1.857
0
.895
1.875
0
0
0
0
.186
1
0
.192
0
0.8
0
.2
0
0
0
0
0
.5
0.3
0
.223
Прямой ход метода Гаусса приведет матрицу системы к верхнему
треугольному:
0
.82
-
1
0
0
0
1.8
0
0
.18
0
.853 1.833
0
0
0
.877
0
0
0
1
0
0
0
.182
1
1.857
0
.895
1.875
0
0
.186
1
0
.192
56
0
0
0
0
0
0
0
0.282
0
0
0
.545
0
.779
0
.666
1
.605
После обратного хода метода Гаусса, получим следующую матрицу:
1
0
0
0
0
0
1
.066
0
1
0
0
0
0
1
.053
0
0
1
0
0
0
1
.201
0
0
0
1
0
0
1
.485
0
0
0
0
1
0
1
.891
0
0
0
0
0
1
2
.408
Наконец получим решение уравнения (2.1) с приближенными значениями в
каждом узле соответственно, такие:
𝑦0 = 1.066, 𝑦1 = 1.053, 𝑦2 = 1.201,
𝑦3 = 1.485, 𝑦4 = 1.891, 𝑦5 = 2.408.
Теперь проверим полученные результаты с созданной программой.
На
основе
заданного
уравнения
(2.1)
и
граничных
условий
(2.2)
определяются следующие постоянные коэффициенты: a=1, b=2, A=1, B=1.1137,
U1=1,U2=1,V1=1,V2=-0.5, и коэффициенты в качестве функции: P(x)=1/x,
Q(x)=0.5, F(x)=0.5*x*x-log(x)+4.
Вводим такие данные в области ввода как показан рис. 2.17
57
Рис. 2.17. Окно ввода данных программы, запущенной на выполнение
После нажатия на кнопку «СБРОС» полученные отображаются на области
вывода и график нарисован (см. на рис. 2.18)
Как мы видим в результате работы созданного ПО мы получили ответ 𝑥0 =
1, 𝑥1 = 1.2, 𝑥2 = 1.4, 𝑥3 = 1.6…
и
𝑦0 = 1.0651, 𝑦1 = 1.0521, 𝑦2 = 1.2004,
𝑦3 = 1.4844… который соответствует теоретическому решению с учетом
погрешности вычислений, где 𝑥0 = 1, 𝑥1 = 1.2, 𝑥2 = 1.4, 𝑥3 = 1.6 … и 𝑦0 =
1.066, 𝑦1 = 1.053, 𝑦2 = 1.201, 𝑦3 = 1.485 ….
58
Рис. 2.18. Окно программы с полученными результатами, запущенной на
выполнение
ЗАКЛЮЧЕНИЕ
59
В выпускной квалификационной работе была достигнута поставленная цель:
изучение и развитие методов решений краевых задачи для обыкновенных
дифференциальных уравнений (вторых порядков), и была разработана программа,
иллюстрирующая решение этих задач.
При прохождении выпускной квалификационной работы решены следующие
задачи:
•
Изучение теоретического обзора по проблеме исследования краевых
задач ОДУ, включаются в следующие:
Понятие дифференциального уравнения.
Виды дифференциальных уравнений, методы решения.
Подстановка краевых задач для обыкновенных дифференциальных
уравнений
Краевые задачи для обыкновенных дифференциальных уравнений
вторых порядков.
•
Разработка программы решений краевых задачи для обыкновенных
дифференциальных уравнений (вторых порядков) с помощью обеспечением
программы GUI MATLAB (Graphical User Interface - MatrixLaboratory).
Созданное ПО было протестировано на контрольных примерах, и может
быть использовано для решения краевых задач.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
60
1.
Вержбицкий, В. М. Численные методы (математический анализ и
обыкновенные дифференциальные уравнения): учеб н. пос. для вузов. –М.: Высш.
шк., 2001. – 382 с.
2.
Дьяконов В. MATLAB 7.*/R2006/R2007: Самоучитель. – М.: ДМК
Пресс, 2008. – 768 с.
3.
Ермачкова
Ю.А.
Проектирование
интерфейса
в
среде
GUIDEMATLAB / Ю.А. Ермачкова // Современные информационные технологии
в экономике, управлении и образовании. Сборник материалов межвузовской
научно-практической конференции, посвященной 175 – летию потребительской
кооперации России и 5 – летию филиала. – М.: Информационно-внедренческий
центр «Маркетинг», 2006. – С. 35–37.
4.
Куликов К.Г., Фирсов А.Н. Уравнения и методы математической
физики. 2011.pdf.
5.
Мышенков В.И., Мышенков Е.В. Численные методы. Ч. 2. Численное
решение обыкновенных дифференциальных уравнений: Учебное пособие для
студентов специальности073000. – М.:МГУЛ, 2005. – 109 с.: ил.
6.
Петровский
И.
Г.,
Лекции
по
теории
обыкновенных
дифференциальных уравнений, изд, 5-е, "наука", 1964.
7.
Сегерлинд, Л. Применение метода конечных элементов. – М.: Мир,
1979. – 392 с.
8.
пособие
Терёхин В.В. Т/Кемеровский
Моделирование в системе MATLAB:Учебное
государственный
университет.
–
Новокузнецк:
Кузбассвузиздат, 2004. -376с.
9.
Тихонов, А. Н. Уравнения математической физики [Текст]: учебное
пособие для университетов/ А.Н. Тихонов, А.А. Самарский. - М.: Наука, 1977.-735
с.
61
10.
Эльсгольц Л.Э. Дифференциальные уравнения и вариационное
исчисление. М.: Наука, 1969
11.
Дифференциальные уравнения : метод.указания / Сиб. гос. индустр.
ун-т ; сост. В.В. Варламов. – Новокузнецк : Изд. центр. Сиб-ГИУ, 2005. – 31с.
12.
Дифференциальные уравнения. Основы теории, методы решения
задач:Учебное пособие / С.Н. Киясов, В.В. Шурыгин. – Казань: Казанский
федеральный университет, 2011. – 112 с.
13.
Дифференциальные
уравнения
высшего
порядка.
Конев
В.В.
Наброски лекций.
14.
Рейзлин,
Математические методы проектирования: учебное пособие / В.И.
С.Ф.
политехнический
Быков;
Национальный
университет.
–
исследовательский
Томск:
Изд-во
Томский
Национального
исследователького Томского политехнического университета, 2010-144 с.
15.
Приближенные методы решения краевых задач для обыкновенных
дифференциальных
интегральных
уравнений,
уравнений:
уравнений
учеб.-метод.
с
частными
пособие
/
А.А.
производными
Буханько,
и
О.П.
Чостковская. – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. - 68 с.: ил.
16.
Уравнение Бернулли : метод.указ. / Сиб. гос. индустр. ун-т ;сост.В. А.
Рыбянец. – Новокузнецк : Изд. центр СибГИУ, 2014. – 12 с.
17.
ЧМВ. Программирование в системе MATLAB- Автор - д.т.н.,
профессор Акчурин Э.А. Конспект лекций
18.
Си Шарп: Создание приложений для Windows.Мн.: Харвест, 2003. -
384 с.
19.
METANIT.COM сайт о программировании
(https://metanit.com/sharp/tutorial/1.1.php)
20.
Hunt. MATLAB R2007 с нуля! - М.: Лучшие книги, 2008, 352 с.
62
ПРИЛОЖЕНИЕ
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
63
% handles structure with handles and user data (see GUIDATA)
value1 = get(handles.radiobutton1, 'value');
value2 = get(handles.radiobutton2, 'value');
if value1 == 1
a1 = get(handles.edita1, 'string');
a1 = str2num(a1);
b1 = get(handles.editb1, 'string');
b1 = str2num(b1);
P = get(handles.editP, 'string');
P = str2num(P);
Q = get(handles.editQ, 'string');
Q = str2num(Q);
A = get(handles.editA, 'string');
A = str2num(A);
B = get(handles.editB, 'string');
B = str2num(B);
U = ones(2,2);
R = ones(2,1);
R(1) = A;
R(2) = B;
delta = P*P - 4*Q;
if delta > 0
k1 = (-P-sqrt(delta))/2;
k2 = (-P+sqrt(delta))/2;
U(1,1) = exp(k1*a1);
U(1,2) = exp(k2*a1);
U(2,1) = exp(k1*b1);
U(2,2) = exp(k2*b1);
ng1 = 'Y=C1*exp(k1*x)+C2*exp(k2*x)';
ng1 = num2str(ng1);
set(handles.editng1,'string',ng1);
k11 = num2str(k1);
set(handles.editk1,'string',k11);
k22 = num2str(k2);
set(handles.editk2,'string',k22);
L=U\R;
L1 = num2str(L(1));
L2 = num2str(L(2));
set(handles.editc1,'string',L1);
set(handles.editc2,'string',L2);
z=a1:b1;
y=L(1)*exp(k1*z)+L(2)*exp(k2*z);
plot(z,y);
gridon;
Xlabel ('значения переменных Х');
Ylabel ('значения решения уравнения У');
64
elseif delta == 0
k1 = -P/2;
k2 = -P/2;
U(1,1) = exp(k1*a1);
U(1,2) = exp(k2*a1)*a1;
U(2,1) = exp(k1*b1);
U(2,2) = exp(k2*b1)*b1;
ng1 = 'Y=C1*exp(k1*x)+C2*exp(k2*x)*x';
ng1 = num2str(ng1);
set(handles.editng1,'string',ng1);
k11 = num2str(k1);
set(handles.editk1,'string',k11);
k22 = num2str(k2);
set(handles.editk2,'string',k22);
L=U\R;
L1 = num2str(L(1));
L2 = num2str(L(2));
set(handles.editc1,'string',L1);
set(handles.editc2,'string',L2);
z=a1:b1;
y=L(1)*exp(k1*z)+L(2)*exp(k2*z).*z;
plot(z,y);
gridon;
Xlabel ('значения переменных Х');
Ylabel ('значения решения уравнения У');
else
alpha = -P/2;
beta = (sqrt(abs(delta)))/2;
U(1,1) =( exp(alpha*a1))*cos(beta*a1);
U(1,2) = (exp(alpha*a1))*sin(beta*a1);
U(2,1) = (exp(alpha*b1))*cos(beta*b1);
U(2,2) = (exp(alpha*b1))*sin(beta*b1);
ng1 = 'Y=C1*exp(n*x)*cosmx+C2*exp(n*x)*sinmx';
ng1 = num2str(ng1);
set(handles.editng1,'string',ng1);
n = num2str(alpha);
set(handles.editn,'string',n);
m = num2str(beta);
set(handles.editm,'string',m);
L=U\R;
L1 = num2str(L(1));
L2 = num2str(L(2));
set(handles.editc1,'string',L1);
set(handles.editc2,'string',L2);
z=a1:b1;
y=L(1)*exp(alpha*z).*cos(beta*z)+L(2)*exp(alpha*z).*sin(beta*z);
65
plot(z,y);
gridon;
Xlabel ('значения переменных Х');
Ylabel ('значения решения уравнения У');
end
end
if value2 == 1
a2 = get(handles.edita2, 'string');
a2 = str2num(a2);
b2 = get(handles.editb2, 'string');
b2 = str2num(b2);
U1 = get(handles.editU1, 'string');
U1 = str2num(U1);
U2 = get(handles.editU2, 'string');
U2 = str2num(U2);
V1 = get(handles.editV1, 'string');
V1 = str2num(V1);
V2 = get(handles.editV2, 'string');
V2 = str2num(V2);
AA = get(handles.editAA, 'string');
AA = str2num(AA);
BB = get(handles.editBB, 'string');
BB = str2num(BB);
if((abs(U1) + abs(U2)) ==0 | (abs(V1) + abs(V2)) == 0)
msgbox('Внимание: |U1|+|U2|!=0,|V1|+|V2|!=0','Ошибка');
else
h = get(handles.edith, 'string');
h = str2num(h);
n = (b2-a2)/h;
x1 = ones(1,n+1);
fori=1:n+1
ifi==1
x1(i) = a2;
elseifi==(n+1)
x1(i) = b2;
else
x1(i) = a2 + ((i-1)*h);
end
end
A = zeros(n+1,n+1);
A(1,1) = (h*U1)-U2;
A(1,2) = U2;
A(2,n+1) = (h*V1)+V2;
A(2,n) = -V2;
fori=1:(n-1)
x = x1(i);
66
p1 = get(handles.editPx, 'string');
p = eval(p1);
q1 = get(handles.editQx, 'string');
q = eval(q1);
A(i+2,i+2) = 1;
A(i+2,i+1) = (h*p)-2;
A(i+2,i) = 1 - (h*p) + (h*h*q);
end
C = ones(n+1,1);
C(1) = h*AA;
C(2) = h*BB;
fori=1:n-1
x = x1(i);
f1 = get(handles.editFx, 'string');
f = eval(f1);
C(i+2) = h*h*f;
end
Y = A\C;
fori=1:n
switch(i)
case 1
xx1 = num2str(x1(i));
set(handles.editx1, 'string', xx1);
y1 = num2str(Y(i));
set(handles.edity1, 'string', y1);
case 2
xx2 = num2str(x1(i));
set(handles.editx2, 'string', xx2);
y2 = num2str(Y(i));
set(handles.edity2, 'string', y2);
case 3
xx3 = num2str(x1(i));
set(handles.editx3, 'string', xx3);
y3 = num2str(Y(i));
set(handles.edity3, 'string', y3);
case 4
xx4 = num2str(x1(i));
set(handles.editx4, 'string', xx4);
y4 = num2str(Y(i));
set(handles.edity4, 'string', y4);
end
end
plot(x1,Y);
gridon;
Xlabel ('значения переменных Х');
Ylabel ('значения решения уравнения У');
Отзывы:
Авторизуйтесь, чтобы оставить отзыв