Пусть
- интерполяционный полином порядка k, построенный по k+1 значению б одно из которых, именно , мы будем считать неизвестным. Модифицируем (2.4.3), заменив в нём на полином более высокой степени , интеграл от которого выражается в виде линейной комбинации значений с некоторыми новыми коэффициентами : (2.4.4)Формула (2.4.4) представляет собой неявную схему Адамса и является уравнением на
, которое можно решать методом последовательных приближений. Естественно, что начальное приближение , должно быть разумно выбрано. Для этого удобно объединить явную и неявную схемы Адамса в одну, называемую «методом коррекции». Именно с помощью явной схемы определяется начальное приближение (прогноз), а затем по неявной схеме оно необходимое число раз (обычно один или два) корректируется методом последовательных приближений до достижения заданной точности (коррекция).2.5.Метод Эйлера.
Решить дифференциальное уравнение у/=f(x,y) численным методом - это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi)(i=1,2,…, n) и F(x0)=y0. (2.5.1)
Таким образом, численные методы позволяют вместо нахождения функции
У=F(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина h=xk-xk-1 называется шагом интегрирования.
Метод Эйлера относиться к численным методам, дающим решение в виде таблицы приближенных значений искомой функции у(х). Он является сравнительно грубым и применяется в основном для ориентировочных расчетов. Однако идеи, положенные в основу метода Эйлера, являются исходными для ряда других методов.
Рассмотрим дифференциальное уравнение первого порядка (2.5.1)
с начальным условием
x=x0, y(x0)=y0 (2.5.2)
Требуется найти решение уравнения (2.5.1) на отрезке [а,b].
Разобьем отрезок [a, b] на n равных частей и получим последовательность х0, х1, х2,…, хn, где xi=x0+ih (i=0,1,…, n), а h=(b-a)/n-шаг интегрирования.
В методе Эйлера приближенные значения у(хi)»yi вычисляются последовательно по формулам уi+hf(xi, yi) (i=0,1,2…).
При этом искомая интегральная кривая у=у(х), проходящая через точку М0(х0, у0), заменяется ломаной М0М1М2… с вершинами Мi(xi, yi) (i=0,1,2,…); каждое звено МiMi+1 этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения (2.5.1), которая проходит через точку Мi. Если правая часть уравнения (2.5.1) в некотором прямоугольнике R{|x-x0|£a, |y-y0|£b}удовлетворяет условиям:
|f(x, y1)- f(x, y2)| £N|y1-y2| (N=const), (2.5.3)
|df/dx|=|df/dx+f(df/dy)| £ M (M=const),
то имеет место следующая оценка погрешности:
|y(xn)-yn| £hM/2N[(1+hN)n-1], (2.5.4)
где у(хn)-значение точного решения уравнения (2.5.1) при х=хn, а уn- приближенное значение, полученное на n-ом шаге.
Формула (13) имеет в основном теоретическое применение. На практике иногда оказывается более удобным двойной просчет: сначала расчет ведется с шагом h, затем шаг дробят и повторный расчет ведется с шагомh/2. Погрешность более точного значения уn* оценивается формулой
|yn-y(xn)|»|yn*-yn|.(2.5.5)
Метод Эйлера легко распространяется на системы дифференциальных уравнений и на дифференциальные уравнения высших порядков. Последние должны быть предварительно приведены к системе дифференциальных уравнений первого порядка.
Модифицированный метод Эйлера
Рассмотрим дифференциальное уравнение (2.5.1) y/=f(x,y) с начальным условием y(x0)=y0. Разобьем наш участок интегрирования на n равных частей. На малом участинтегральную кривую заменим прямой линией.
Рис.1 Метод Эйлера в графическом видa
Получаем точку Мк(хк,ук). Через Мк проводим касательную: у=ук=f(xk,yk)(x-xk). Делим отрезок (хк,хк1) пополам:
xNk/=xk+h/2=xk+1/2 (2.5.6)
yNk/=yk+f(xk,yk)h/2=yk+yk+1/2
Получаем точку Nk/. В этой точке строим следующую касательную:
y(xk+1/2)=f(xk+1/2, yk+1/2)=αk (2.5.7)
Из точки Мк проводим прямую с угловым коэффициентом αк и определяем точку пересечения этой прямой с прямой Хк1. Получаем точку Мк/. В качестве ук+1 принимаем ординату точки Мк/. Тогда:
ук+1=ук+αкh
xk+1=xk+h
(2.5.8)αk=f(xk+h/2, yk+f(xk,Yk)h/2)
yk=yk-1+f(xk-1,yk-1)h
(2.5.8)-рекурентные формулы метода Эйлера.
Сначала вычисляют вспомогательные значения искомой функции ук+1/2 в точках хк+1/2, затем находят значение правой части уравнения (11) в средней точке y/k+1/2=f(xk+1/2, yk+1/2) и определяют ук+1.
Для оценки погрешности в точке хк проводят вычисления ук с шагом h, затем с шагом 2h и берут 1/3 разницы этих значений:
| ук*-у(хк)|=1/3(yk*-yk),(2.5.9)
где у(х)-точное решение дифференциального уравнения.
Таким образом, методом Эйлера можно решать уравнения любых порядков. Например, чтобы решить уравнение второго порядка y//=f(y/,y,x) c начальными условиями y/(x0)=y/0, y(x0)=y0, выполняется замена:
y/=z (2.5.10)
z/=f(x,y,z)
Тем самым преобразуются начальные условия: y(x0)=y0, z(x0)=z0, z0=y/0. (2.5.12)
3.Описание алгоритмов решения задачи
3.1.Описание переменных.
Наименование | Тип | Описание |
Входные данные | ||
Xi | double | Начальное значение (x) интервала вычисления |
Xkon | double | Конечное значение (x) интервала вычисления |
n | integer | Количество шагов |
Yi | double | Начальное значение y |
kx | double | Коэффициент при переменой x |
ky | double | Коэффициент при переменной y |
Выходные данные | ||
h | double | Фиксированное приращение аргумента (x) |
res | double | Расчётное значение уравнение y’=F(x,y) в точке (x) |
Промежуточные | ||
i | integer | Счётчик цикла |
Yprom | double | Промежуточное значение y в точке Xprom |
Xprom | double | Промежуточное значение x при h/2 |
a | double | Решение уравнения в точках f(Xprom,Yprom) |
f1 | double | Функция f(x,y) |
3.2. Блок- схема главного модуля
3.3 Описание алгоритма главной программы.
Номер блока | Описание |
1 | Ввод начального и конечного значений интервала вычисления уравнения, количество шагов, начальное значение у, а также коэффициенты при kxи ky. |
2 | Вычисление фиксированного приращения аргумента х |
3 | Цикл с шагом 1 и конечным значением не превышающим количество шагов, который высчитывает значение yна определённом интервале |
4 | Функция для расчёта уравнения вида y’=f(x,y); |
5 | Вывод результатов на интервале X |
3.4 Блок-схема функции “func”.
3.5 Описание блок- схемы функции “func”.
Номер блока | Описание |
1 | Вычисление: функции f1 с подстановкой начальных значений; промежуточных значений Yprom и Xprom, значения aдля вычисления f(Xprom,Yprom) и расчёт результатов функции и переход на следующий шаг. |
2 | Приращение аргумента xна h |
3 | Вывод результатов уравнения и интервала |
*Реализация алгоритма на языке программирования C++ представлена в приложении .
4.Описание программного обеспечения.
4.1 Описание операционной системы
Основное требование к операционной системе (ОС), предъявляемое поставленной задачей, это наличие ANSI или POSIX совместимого компилятора языка C++.
Для реализации задачи была выбрана последняя клиентская версия операционной системы Microsoft, основанная на ядре NT – MicrosoftWindowsXPProfessional.