Решение дифференциальных уравнений высоких порядков
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Методы
Рунге-Кутта можно использовать не только для решения
дифференциальных уравнений первого порядка но и для решения дифференциальных уравнений
более высоких порядков Любое дифференциальное уравнение m-го порядка
можно свести к системе, состоящей из m уравнений
первого порядка при помощи замен. Заменим: В результате дифференциальное уравнение m -го
порядка (12.8) сводится к системе, состоящей из m дифференциальных уравнений
первого порядка:
Решением системы (12.2), а значит и дифференциального
уравнения m -го порядка (12.1) является m табличных функций Решение дифференциальных уравнений
второго порядка
В задачах моделирования динамических
систем наиболее часто приходится решать дифференциальные уравнения второго
порядка. Общий вид дифференциальных уравнений второго
порядка:
Нормальная форма дифференциальных уравнений второго
порядка:
Пример Уравнение в общем виде Его нормальная форма
Дифференциальное уравнение второго порядка (12.11)
можно свести к системе, состоящей из двух дифференциальных уравнений первого
порядка при помощи замен. Заменим y1=y', Тогда y'1=y". В результате уравнение (12.11) сводится к системе,
состоящей из двух дифференциальных уравнений первого порядка: Для примера (12.12) эта система имеет вид:
Решением этой системы являются две функции y(x) и y1(x), где Сформулируем задачу Коши для
системы, состоящей из двух дифференциальных уравнений второго порядка. Дана система
Даны два начальных условия: Необходимо проинтегрировать систему на участке [a,
b] с шагом h. В численных методах задача
Коши для системы (12.14) ставится следующим образом: Найти табличные функции и , т.е. найти таблицу
Здесь h - шаг интегрирования дифференциального уравнения, a=x0 - начало участка интегрирования уравнения, b=xn - конец участка, n=(b-a)/h - число шагов интегрирования уравнения. На графике решением задачи
Коши для системы, состоящей из двух дифференциальных уравнений первого порядка,
является совокупность узловых точек
(рис. 12.15). При этом на каждом шаге, т.е. для каждого значения xi решением являются две узловые точки с координатами (xi, yi), (xi,
(y1)i).
Для решения системы дифференциальных уравнений
используем те же методы, что и для решения одного дифференциального уравнения
первого порядка. При этом необходимо соблюдать условие: на каждом шаге
интегрирования, т. е. в точках с координатами х1 , х2 , х3 ,
: , хn все уравнения системы надо решать
параллельно. Для вычисления правых частей
уравнений системы (12.14) необходимо сформировать подпрограмму PRAV. Вернемся к примеру (12.13). Здесь на каждом шаге в подпрограмме PRAV будем
вычислять правые части каждого уравнения системы: Схема алгоритма решения
системы (12.13) представлена на рис 12.16.
Здесь h - шаг интегрирования
дифференциального уравнения, b - конец участка, n - число шагов
интегрирования уравнения, x, y, y1 - при вводе
начальные значения, далее - текущие значения табличной функции. Как уже было сказано, любое дифференциальное
уравнение m-го порядка
сводится к системе, состоящей из m дифференциальных
уравнений 1-го порядка
Численным решением системы (12.9), а значит и
дифференциального уравнения m-го порядка (12.8)
является m табличных функций т.е. функция y(x) и все ее производные, включая
производную (m-1)-го порядка. При этом каждая из табличных функций определяется
на промежутке [a, b] с шагом h и включает n узловых точек.
Таким образом, численным решением уравнения (12.8) или
системы (12.9) является матрица порядка ,
(табл. 12.8)
где m - порядок
дифференциального уравнения, равен количеству столбцов матрицы, n = (b-a)/h - количество шагов интегрирования,
равно количеству строк матрицы. Каждый j -й столбец матрицы - это массив решений
одной j -й табличной функции по всем n шагам интегрирования. Каждая i -ая строка
матрицы - это массив решений m табличных функций на одном i -ом шаге
интегрирования. На графике решением
дифференциального уравнения m -го порядка (12.8) является совокупность узловых точек. При этом каждому шагу интегрирования, т.е. каждому
значению xi, ,
соответствуют m узловых точек скоординатами При построении алгоритма задачи будем как и ранее
расчет вести по шагам интегрирования, т.е. в цикле по При этом, как и ранее, на каждом i -ом шаге цикла будем рассчитывать
решение дифференциального уравнения и тут же его печатать. Тогда нет необходимости
формировать матрицу решений, а можно ограничиться формированием массива решений
(12.15), который соответствует одной i-й строке матрицы:
где
Тогда при построении системы дифференциальных
уравнений изменится индексация. Рассмотрим пример (12.19). Дано дифференциальное уравнение второго порядка
С учетом обозначений (12.18) имеем: Тогда дифференциальное уравнение (12.19) сводится к
системе:
Вычисление правых частей уравнений системы (12.20)
будем выполнять в подпрограмме PRAV. При этом подпрограмма PRAV будет иметь вид Обращение к подпрограмме PRAV(m, x, Y, F), где m -порядок системы, x - значение x на i -м шаге интегрирования, Y=[y(1), y(2), y(3), : ,
y(m)] - входной массив длиной m, F=[f(1), f(2),:, f(m)] - результат, массив значений
правых частей уравнений системы (12.10) длиной m. Программу решения системы дифференциальных
уравнений реализуем в виде 3-х программных модулей:
Схема алгоритма основной программы представлена на
рис.12.17.
Здесь m -порядок системы, h -шаг интегрирования, n -количество шагов интегрирования, x -начальное и далее - текущее значение x, Y -массив длиной m, куда заносим начальные и далее
- текущие значения решений системы на одном шаге интегрирования. В подпрограмме RGK для вычисления элементов массива
Y, используем те же формулы, что и для решения одного дифференциального уравнения
1-го порядка методом Рунге-Кутта (4-го порядка), но с
учетом поправки на массивы. Тогда Здесь Y - массив решений длиной m, Y1 - рабочий массив длиной m, T - рабочая матрица порядка ( ). Для вычисления значений fj
правых частей дифференциальных уравнений системы перед вычислением каждого
элемента матрицы Т на каждом j -ом шаге необходимо
выполнить обращение к подпрограмме PRAV. Схема алгоритма подпрограммы RGK представлена на
рис.12.18
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||