Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

6.2. Метод Эйлера

Систему ОДУ (6.2) часто удается представить в каноническом виде, в так называемой форме Коши

где

При формулировке задачи Коши система (6.4) дополняется начальными условиями (6.3). Для простоты рассмотрим задачу Коши для одного уравнения типа (6.4), а затем полученные алгоритмы обобщим на систему уравнений

В окрестности точки функцию разложим в ряд Тейлора

который можно применить для приближенного определения искомой функции В точке при малых значениях можно ограничиться двумя членами ряда (6.6), тогда

где бесконечно малая величина порядка Заменим производную входящую в формулу (6.7), на правую часть уравнения (6.5)

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

Рис. 6.1. Метод Эйлера

Формула (6.8) может быть получена из других соображений. Заменим производную в левой части уравнения (6.5) приближенным конечно-разностным отношением

Нетрудно видеть эквивалентность последнего выражения с алгоритмом Эйлера (6.8).

На каждом шаге метода Эйлера решение определяется с погрешностью за счет отбрасывания членов ряда Тбйлора, пропорциональных в степени выше первой. Это означает, что метод Эйлера имеет второй порядок локальной погрешности. Глобальная погрешность, как показано в [10], имеет первый порядок; и при постоянном шаге для оценки погрешности применима первая формула Рунге (5.15)

где приближенное решение дифференциального уравнения в точке х, полученное с шагом приближенное решение того же уравнения с шагом порядок метода

Формула (6.9) позволяет опытным путем определить шаг обеспечивающий требуемую точность решения Так же, как и при вычислении определенных интегралов, можно осуществлять автоматическое изменение шага в процессе интегрирования дифференциального уравнения.

Для уточнения решения применима вторая формула Рунге (5.16)

Формула Эйлера (6.8) обобщается для систем ОДУ, записанных в форме Коши (6.4) с начальными условиями (6.3)

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

Рис. 6.2. Блок-схема программы решения задачи Коши

В основном блоке программы описываются массивы для размещения значений искомых функций и правых частей системы (строка 10). Размерность массивов выбирается равной наибольшему порядку систем ОДУ из класса задач, которые предполагается решать. В строке 20 расположены операторы для диалогового ввода с клавиатуры ПЭВМ следующих величин: параметр, входящий в правые части системы интервал и шаг изменения аргумента

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

В цикле по переменной X (строки 40-50) осуществляется обращение к подпрограмме одношагового интегратора, реализующего метод Эйлера, и на дисплей выводится строка таблицы результатов.

В подпрограмме метода Эйлера (строки 100-190) после обращения к вычислению правых частей системы ОДУ в цикле вычисляются значения искомых функций в точке по формуле (6.11)

В качестве примера для решения выбрано уравнение Бесселя [36]

где величина есть параметр уравнения и определяет порядок цилиндрических функций, являющихся решением этого уравнения. Для того чтобы применить подпрограмму метода Эйлера, перейдем от дифференциального уравнения второго порядка (6.12) к системе двух уравнений первого порядка в форме Коши. Обозначим неизвестную функцию через а ее первую производную - тогда получим систему ОДУ, эквивалентную ура в нению (6.12),

В подпрограмме в строках 200-290 вычисляются правые части уравнений (6.13) и заносятся в массив

В программе одношаговый интегратор системы ОДУ оформлен в виде подпрограммы с именем со следующими параметрами: число уравнений в системе; X - начальная точка; шаг интегрирования; массив размерности для начальных условий и результатов; имя подпрограммы для вычисления правых частей решаемой системы ОДУ. Последний формальный параметр позволяет из одной программы обращаться к решению разных систем ОДУ. Параметры системы ОДУ передаются в подпрограмму вычисления правых частей через COMMON-блок, чтобы не нарушать общности подпрограммы интегратора. В уравнении Бесселя имеется только один такой параметр

В программе метод Эйлера реализован в виде процедуры имеющей такие же параметры, как и в программе за исключением параметра К сожалению, стандарт языка Паскаль не позволяет ввести параметром подпрограммы процедуру или функцию, имеющую формальные параметры-переменные [55]. Поэтому процедура для вычисления правых частей решаемой системы ОДУ здесь является глобальной, что, конечно, снижает общность подпрограммы Для массивов, используемых в качестве формальных и фактических параметров подпрограмм, в программе введен тип

Метод Эйлера дает сравнительно низкую точность, так как имеет первый порядок. Так, программы 6.1 на интервале [0.5, 1.0] при начальных условиях соответствующих табличным значениям функции Бесселя и ее производной, шаге дают на правой границе интервала результаты Для сравнения приводим табличные значения функции Бесселя и ее производной в точке

Уменьшение шага вдвое и уточнение по второй формуле Рунге (6.10) улучшает результаты .

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление