Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ.doc
Скачиваний:
2
Добавлен:
01.09.2019
Размер:
2 Mб
Скачать

4.2. Практическая работа № 5. Численные методы решения обыкновенных дифференциальных уравнений

и систем

Для студентов специальности «Математическое обеспечение и администрирование информационных систем» отведено 4 часа практических занятий, а для студентов специальности «Программное обеспечение вычислительной техники и автоматизированных систем»  2 часа.

План занятий:

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

  2. Повторение понятия точного и приближенного сеточного решения задачи Коши, схем Эйлера и Рунге-Кутта 4-го порядка как для одного уравнения, так и для системы уравнений.

  3. Повторение многошаговых методов Адамса.

  4. Повторение метода пристрелки и разностного метода решения краевых задач.

  5. Решение примеров.

  6. Консультирование студентов по выполнению домашней работы.

Рассматриваемые примеры:

1. Составить алгоритм для вычисления приближённого решения задачи Коши

методом Рунге-Кутта четвертого порядка точности (число отрезков разбиения N считается заданным). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: N, a, b, , а также функция . Результаты: - приближенные значения . Здесь , , .

Вычислительная схема метода Рунге-Кутта 4-го порядка точности записывается в виде

,

Поскольку значение N может быть достаточно велико и заранее не известно, в алгоритме мы не будем использовать табличные переменные , . Для текущих расчетов мы введем простые переменные x и u, а результаты будем записывать в файл вывода в следующей последовательности:

………

Кроме того, мы используем в качестве результата в заголовке алгоритма величину . Нам это понадобится в дальнейшем при записи алгоритма повторного счета в примере 3. Для записи в файл значения любой величины p мы введем команду запись (p), а для перевода строки – команду перевод.

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для 1 уравнения и с заданным шагом (арг вещ a, b, , цел N, рез вещ z)

нач вещ x, u, h, ; цел n

x:=a; u:= ; ;

запись(x); запись(u); перевод | Запись в файл вывода ,

нц для n от 0 до N-1 | Начало цикла метода Рунге-Кутта.

|

|

|

|

|

|

запись(x); запись(u) | Запись в файл вывода ,

перевод | Переменные x и u здесь уже приняли значения,

| необходимые для выполнения следующего

| шага цикла.

кц | Конец цикла метода Рунге-Кутта.

кон

2. Составить алгоритм для вычисления приближённого решения задачи Коши

методом Рунге-Кутта четвертого порядка точности с погрешностью, не превышающей заданного положительного числа (число отрезков разбиения N вычисляется методом повторного счета). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: , a, b, , а также функция . Результаты:  приближенные значения . Здесь , , . Значение N вычисляется методом повторного счета.

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

При реализации метода повторного счета мы будем использовать алгоритм из примера 1.

Введем в алгоритмический язык цикл с постусловием, аналогичный циклу repeat в языке Паскаль:

нц повторять

Команды, повторяемые в цикле

кц пока не Условие окончания цикла

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для 1 уравнения с автоматическим выбором шага (арг вещ a, b, , )

нач вещ , ; цел n, N

| Задание начального значения параметра N

Метод Рунге-Кутта для 1 уравнения и с заданным шагом (a, b, , N, )

нц повторять | Начало цикла метода повторного счета

; | Передача значения с предыдущего шага

| цикла или начального значения.

; | Удвоение значения параметра N.

Метод Рунге-Кутта для 1 уравнения и с заданным шагом (a, b, , N, )

кц пока не | Конец цикла метода

| повторного счета

кон

3. Составить алгоритм для вычисления приближённого решения задачи Коши для системы дифференциальных уравнений:

;

методом Рунге-Кутта четвертого порядка точности (число отрезков разбиения N считается заданным). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: N, m, a, b, , , … , , а также функции , , … , . Результаты: - приближенные значения . Здесь , , , .

Вычислительная схема метода Рунге-Кутта 4 порядка точности в координатах записывается в виде:

,

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

………

Кроме того, в качестве дополнительного результата в заголовке алгоритма используем массив z [1:m], такой, что . Это может понадобиться в дальнейшем при записи алгоритма повторного счета.

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

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

.

Для чтения очередного значения из файла ввода и присвоения его переменной p мы введем команду чтение (p).

Чтобы описать множество функций c аргументом, мы введем функцию трех аргументов: , где  массив с m компонентами.

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для m уравнений и с заданным шагом (арг вещ a, b, цел m, цел N, рез вещ таб )

нач вещ x, h, вещ таб , , ,

, ; цел n, p

x:=a; ;

нц для p от 1 до m

чтение ; | Чтение из файла ввода начальных

| данных:

кц

запись(x); перевод | Запись в файл вывода

нц для p от 1 до m

запись( ) | Запись в файл вывода

кц

перевод

нц для n от 0 до N-1 | Начало цикла метода Рунге-Кутта

нц для p от 1 до m

|

кц

|

нц для p от 1 до m

|

кц

нц для p от 1 до m

|

кц

нц для p от 1 до m

|

кц

нц для p от 1 до m

|

кц

|

нц для p от 1 до m

|

кц

нц для p от 1 до m

|

кц

запись(x); перевод | Запись в файл вывода

нц для p от 1 до m

|

запись( ) | Запись в файл вывода

|

кц

перевод | Переменная x и массив u здесь уже

| приняли значения, необходимые для

| выполнения следующего шага цикла

кц | Конец цикла метода Рунге-Кутта.

нц для p от 1 до m

|

кц

кон