- •6.2. Тема 2. Наилучшее среднеквадратическое приближение. Тригонометрическая интерполяция. Наилучшее равномерное приближение Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •6.4. Тема 4. Численное интегрирование Задание 1
- •Задание 2
- •6.5. Тема 5. Численные методы решения обыкновенных
- •Задание 1
- •2.2. Практическая работа № 2. Наилучшее среднеквадратическое приближение. Тригонометрическая интерполяция. Наилучшее равномерное приближение
- •2.3. Практическая работа № 3. Численное дифференцирование. Метод Рунге-Ромберга
- •3. Контрольная работа № 1
- •4. Практические работы (4-5)
- •4.1. Практическая работа № 4. Численное интегрирование
- •4.2. Практическая работа № 5. Численные методы решения обыкновенных дифференциальных уравнений
4.2. Практическая работа № 5. Численные методы решения обыкновенных дифференциальных уравнений
и систем
Для студентов специальности «Математическое обеспечение и администрирование информационных систем» отведено 4 часа практических занятий, а для студентов специальности «Программное обеспечение вычислительной техники и автоматизированных систем» 2 часа.
План занятий:
Актуализация понятий обыкновенного диф-ференциального уравнения, порядка дифференциального уравнения, частного и общего решения дифференциального уравнения, решения задачи Коши и краевой задачи, метода разделения переменных, методов решения однородных и линейных дифференциальных уравнений 1-го порядка.
Повторение понятия точного и приближенного сеточного решения задачи Коши, схем Эйлера и Рунге-Кутта 4-го порядка как для одного уравнения, так и для системы уравнений.
Повторение многошаговых методов Адамса.
Повторение метода пристрелки и разностного метода решения краевых задач.
Решение примеров.
Консультирование студентов по выполнению домашней работы.
Рассматриваемые примеры:
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
|
кц
кон