Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций для студентов специальности 140104...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
2.25 Mб
Скачать

9.10. Решение дифференциальных уравнений m-го порядка методом Рунге-Кутта (4-го порядка)

Как уже было сказано, любое дифференциальное уравнение m-го порядка

(9.15)

сводится к системе, состоящей из m дифференциальных уравнений 1-го порядка

(9.6)

Численным решением системы (9.9), а значит и дифференциального уравнения m-го порядка (9.8) является m табличных функций

т.е. функция y(x) и все ее производные, включая производную (m-1)-го порядка.

При этом каждая из табличных функций определяется на промежутке [a, b] с шагом h и включает n узловых точек. Таким образом, численным решением уравнения (9.8) или системы (9.9) является матрица порядка , (табл. 9.8)

i

x

y

y1=y',

y1=y''1,

:

y_m-1=y^(m-1)

0

x0

y0

(y1)0

(y2)0

:

(ym-1)0

1

x1

y1

(y1)1

(y2)1

:

(ym-1)1

2

x2

y2

(y1)2

(y2)2

:

(ym-1)2

3

x3

y3

(y1)3

(y2)3

:

(ym-1)3

:

:

:

:

:

:

:

n

xn

yn

(y1)n

(y2)n

:

(ym-1)n

где

m - порядок дифференциального уравнения, равен количеству столбцов матрицы,

n = (b-a)/h - количество шагов интегрирования, равно количеству строк матрицы.

Каждый j-й столбец матрицы - это массив решений одной j-й табличной функции по всем n шагам интегрирования.

Каждая i-ая строка матрицы - это массив решений m табличных функций на одном i-ом шаге интегрирования.

На графике решением дифференциального уравнения m-го порядка (9.8) является совокупность узловых точек. При этом каждому шагу интегрирования, т.е. каждому значению xi, , соответствуют m узловых точек скоординатами

При построении алгоритма задачи будем как и ранее расчет вести по шагам интегрирования, т.е. в цикле по . При этом, как и ранее, на каждом i-ом шаге цикла будем рассчитывать решение дифференциального уравнения и тут же его печатать. Тогда нет необходимости формировать матрицу решений, а можно ограничиться формированием массива решений (9.15), который соответствует одной i-й строке матрицы:

(9.17)

где

(9.18)

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

Рассмотрим пример (9.19).

Дано дифференциальное уравнение второго порядка

(9.19)

С учетом обозначений (9.18) имеем:

Тогда дифференциальное уравнение (9.19) сводится к системе:

(9.20)

Вычисление правых частей уравнений системы (9.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)] - результат, массив значений правых частей уравнений системы (9.10) длиной m.

Программу решения системы дифференциальных уравнений реализуем в виде 3-х программных модулей:

- основной программы, в которой организуем циклический процесс по всем шагам интегрирования, ;

- подпрограммы RGK, в которой на каждом i-м шаге реализуется метод Рунге Кутта (4-го порядка) для системы дифференциальных уравнений m-го порядка. Здесь на каждом шаге интегрирования вычисляется массив решений Y длиной m. Для этого внутри подпрограммы RGK организуем циклы по j, где ;

- подпрограммы PRAV, обращение к которой осуществляется из подпрограммы RGK для вычисления массива F длиной m - значений правых частей уравнений системы.

Схема алгоритма основной программы представлена на рис.9.17.

Рис. 9.17.  Схема алгоритма основной программы

Здесь

m-порядок системы,

h-шаг интегрирования,

n-количество шагов интегрирования,

x-начальное и далее - текущее значение x,

Y-массив длинной m, куда заносим начальные и далее - текущие значения решений системы на одном шаге интегрирования.

В подпрограмме RGK для вычисления элементов массива Y, используем те же формулы, что и для решения одного дифференциального уравнения 1-го порядка методом Рунге-Кутта (4-го порядка), но с учетом поправки на массивы.

Тогда

Здесь

Y- массив решений длиной m,

Y1 - рабочий массив длиной m,

T - рабочая матрица порядка ( ).

Для вычисления значений fj правых частей дифференциальных уравнений системы перед вычислением каждого элемента матрицы Т на каждом j-ом шаге необходимо выполнить обращение к подпрограмме PRAV.

Схема алгоритма подпрограммы RGK представлена на рис.9.18

Рис. 9.18.  Схема алгоритма подпрограммы RGK