
- •Тема 1: Приближенное решение алгебраических и трансцендентных уравнений.
- •Тема 2. Алгебраическое интерполирование.
- •1. Постановка задачи.
- •Тема 3. Приближенное интегрирование.
- •Тема 4. Вычислительные задачи линейной алгебры. Решение систем линейных алгебраических уравнений.
- •Тема 5. Интегрирование дифференциальных уравнений.
- •1. Постановка задачи.
- •Тема 6. Вычисление значений элементарных функций.
- •Тема 7. Нелинейная оптимизация.
Тема 5. Интегрирование дифференциальных уравнений.
1. Постановка задачи.
Дано уравнение F(x, y, y', y''…y(n))=0 (1). Здесь x – аргумент, y – функция. Общий интеграл (общее решение) записывается в виде Φ(x, y, c1, c2…cn)=0 (2). Здесь ci – произвольные постоянные. Решение (2) при фиксированных ci называется частным решением. Для выделения из общего решения частного необходимо задать n условий, называемых начальными. Пусть начальные условия заданы в виде y(k)(x0)=y0k, где k=0, 1…n-1 (3). Задачей Коши называется задача интегрирования (1) с начальными условиями (3). Иначе задача Коши называется задачей с начальными условиями. Численное решение задачи Коши – это отыскание для x0, x1…xn значений f(x0), f(x1)…f(xn), т. е. построение таблицы y(x). Численные методы интегрирования дифференциальных уравнений делятся на шаговые (Эйлера, Рунге-Кутта, Гилла) и разностные (Адамса, Милна, Штернера, Гаусса) методы. Обычно уравнение (1) разрешают относительно старшей производной, т. е. y(n)=f(x, y, y',y''…y(n-1)) (4). Его общий интеграл запишется в виде y=φ(x, c1, c2…cn) (5). Таким образом, займемся решением задачи Коши для уравнения (4) с начальными условиями (3).
2. Метод Эйлера.
Пусть
дано дифференциальное уравнение первого
порядка.
=y'=f(x,
y(x))
(6) и начальное условие y(x0)=y0
(7). Решение уравнения (5) в конечном итоге
сводится к интегрированию обыкновенного
дифференциального уравнения вида (6) с
начальным условием (7). Существование и
единственность решения дается специальной
теоремой из математического анализа.
Будем предполагать, то ее условия
выполняются, т. е. решение существует.
Построим систему равноотстоящих узлов
x0,
x1…xn,
где xi=x0+ih,
h=const>0.
Проинтегрируем (6) на отрезке [xi,
xi+1].
'dx=
(x,
y(x))dxy(xi+1)=y(xi)+
(x,
y(x))dx.
Если в интеграле принять f(x, y(x))=const=f(xi, y(xi)), то по квадратурной формуле левых прямоугольников получим y(xi+1)≈y(xi)+(xi+1-xi)•f(xi, y(xi)); y(xi+1)≈y(xi)+h•f(xi, y(xi)).
Это шаговая формула, т. е. для вычисления последующего значения необходимо знать предыдущее. Перейдем к сеточному представлению функции (т. е. приближенному решению) заменив yi≈y(xi). Получим yi+1=yi+Δyi; Δyi=h•f(xi, yi) xi=x0+ih; i=0, 1…N (8).
Это
формула Эйлера. Геометрическая
интерпретация метода довольно проста.
В точке M(x0,
y0)
к отыскиваемой функции строится
касательная. Затем ищется точка M1,
как пересечение касательной и прямой
x=x1.
Пусть O1
– точка пересечения прямых x=x1
и y=y0.
Рассмотрим треугольник MO1M1.
O1M1=MO1•tg(O1MM1)=h•y'(x0)=h•f(x0,
y0);
-
=
-y0=h•f(x0,
y0);
=y0+h•f(x0,
y0)=y1.
Следующий шаг – построение касательной
в точке M1
к кривой из семейства решений и отыскание
точки пересечения этой касательной с
прямой x=x2.
Затем – построение касательной в точке
M2
и так далее. Таким образом, в зависимости
от начальных условий, получим частное
решение семейства. MM1M2…
называется ломаной Эйлера. Пусть M1'
– точка на истинной кривой решения.
Тогда M1M1'
– погрешность метода (совпадает с шагом
метода).
3. Сходимость и устойчивость метода Эйлера.
Пусть
есть уравнение (6) y'=f(x,
y)
и начальное условие y(x0)=y0.
Если xi=x0+ih,
то yi+1=yi+h•f(xi,
yi)
(8). Пусть y(xi)
– точное решение (6) в точке xi,
а yi
– точное решение уравнения (8). Погрешность
метода на i-том
шаге εi=yi-y(xi).
Метод называют сходящимся, если εi→0
при h→0,
т. е. сходимость – уменьшение погрешности
с уменьшением шага. Доказана теорема,
что h→0
на любом конечном
отрезке метод Эйлера сходится, т. к.
εi<
•(exp(k(xi-x0))-1).
Здесь M
и k
– некоторые оценочные константы.
Неустойчивостью называют накопление
погрешности вычислений в результате
неточности вычислений на каждом шаге.
Метод Эйлера устойчив. Доказано что
если на первом шаге погрешность вычислений
=
-y0,
то на i-том
шаге |
|≤exp(k(xi-x0))•|
|,
т. е. погрешность имеет тот же порядок
малости, что и шаг (εi≈h).
Таким образом, Метод Эйлера имеет первый
класс точности.
4. Усовершенствования метода Эйлера.
Легко видеть, что при всей его сходимости и устойчивости обладает слишком большой погрешностью. В частности, если производная функции знакопостоянна и положительна, то решение по методу Эйлера будет все время ниже истинного решения. Очевидно, можно уменьшать шаг h до тех пор, пока погрешность не станет меньше заданной. Но это приведет к столь малому шагу, что очень сильно возрастет объем вычислений, и метод потеряет свое основное преимущество – простоту. Этот недостаток метода связан с тем, что мы вычисляем значение функции только в текущей точке и не пытаемся предугадать, характер изменения функции в будущей точке.
4.1. Алгоритм Эйлера-Коши.
Пусть
есть уравнение (6) y'=f(x,
y)
и начальное условие y(x0)=y0
(*) Построим численное решение на системе
узлов x0,
x1…xn
,где xi+1=x0+ih.
Проинтегрируем (*) на отрезке [xi,
xi+1]
'dx=
(x,
y(x))dx.
По формуле трапеций,
y(xi+h)-y(xi)≈
•(f(xi,
y(xi))+f(xi+1,
y(xi+1)));
y(xi+h)≈y(xi)+
•(f(xi,
y(xi))+f(xi+1,
y(xi+1)))
(**)
Уравнение (**) можно рассматривать как уравнение, описывающее y(xi+1) неявно, т. е. y(xi+1)≈B•y(xi+1).
Поскольку выразить y(xi+1) удается крайне редко, то получим его по методу Эйлера и подставим в (**) y(xi+h)≈y(xi)+h•f(xi, y(xi)); y(xi+h)≈y(xi)+ •(f(xi, y(xi))+f(xi+1, y(xi)+h•f(xi, y(xi)))).
Перейдем к сеточному представлению, обозначив xi+1=xi+h; y(xi)=yi; y(xi+1)=yi+1.
Таким образом, формулы Эйлера-Коши имеют вид
yi+1*=yi+h•f(xi, yi); yi+1=yi+ •(f(xi, yi)+f(xi+1, yi+1*)).
Этот
метод имеет второй класс точности, т.
е. εi~h2.
Геометрический смысл метода состоит в
следующем. Пусть A
– точка с координатами (x0,
y0)
(начальная точка). В этой точке к кривой
из семейства решений проводится
касательная. Точка B
– точка пересечения этой касательной
с прямой x=x1.
В точке B
проводится новая касательная к кривой
из семейства решений. Если α – угол с
положительным направлением оси Ox
первой касательной, а β – угол с
положительным направлением оси Ox
второй касательной, то следующая точка
будет пересечением прямой x=x1
и прямой из точки B,
угол с положительным направлением оси
Ox
которой γ удовлетворяет условию tg(γ)=
.
Пусть С – точка пересечения этой прямой
с прямой x=x1,
а точка D
– точка пересечения прямой y=y0
и прямой x=x1.
Из треугольника ACD
следует, что CD=AD•tg(γ)=h•
=
•(y'(x0)+y'(x1))=
•(f(x0,
y0)+f(x1,
y1*)).
Т. к.
CD=yC-y0,
то yC=y0+
•(f(x0,
y0)+f(x1,
y1*))=y1.
4.2. Алгоритм модифицированного метода Эйлера.
Пусть
есть уравнение (6) y'=f(x,
y)
и начальное условие y(x0)=y0
(*) Построим численное решение на системе
узлов x0,
x1…xn
,где xi+1=x0+ih.
Проинтегрируем (*) на отрезке [xi,
xi+1]
'dx=
(x,
y(x))dx.
По формуле центральных прямоугольников,
y(xi+h)-y(xi)=
(x,
y(x))dx≈h•f(xi+
,
y(xi+
));
y(xi+h)≈y(xi)+h•f(xi+
,
y(xi+
)).
После интегрирования появится неизвестная
y(xi+
).
Ее найдем методом Эйлера с шагом
.
y(xi+
)≈y(xi)+
•f(xi,
y(xi));
y(xi+h)≈y(xi)+h•f(xi+
,
y(xi)+
•f(xi,
y(xi))).
Перейдем к сеточному представлению,
обозначив xi+h/2=xi+1/2;
y(xi+
)=yi+1/2;
y(xi+h)=yi+1.
Таким образом, формулы модифицированного
метода Эйлера имеют вид yi+1/2=yi+
•f(xi,
yi);
yi+1=yi+h•f(xi+1/2,
yi+1/2).
Этот метод также имеет второй класс
точности. Геометрический смысл метода
состоит в следующем. Пусть M
– точка с координатами (xi,
yi)
(текущая точка). В этой точке к кривой
из семейства решений проводится
касательная. Пусть эта касательная
имеет угол αi
с положительным направлением оси Ox.
Из точки пересечения этой касательной
и прямой x=xi+1/2
проводится новая касательная, которая
имеет угол αi+1/2
с положительным направлением оси Ox.
Новая точка M1
будет точкой пересечения прямой x=x1
с прямой, имеющей угол αi+1/2
с положительным направлением оси Ox,
проведенной из точки M,
4.3. Усовершенствованный метод Эйлера-Коши с последующей итерационной обработкой.
Метод более точен, чем метод Эйлера-Коши. На каждом шаге производится итерационная обработка каждого найденного значения yi. В начале выбирается грубое приближение yi(0)=yi+h•f(xi, yi). Далее строится итерационный процесс yi+1(k)=yi+ •(f(xi, yi)+f(xi+1, yi+1(k-1))). Итерации продолжаются до тех пор, пока два приближения yi+1(k) и yi+1(k+1) не совпадут в интересующем вычислителя количестве знаков. После этого полагают yi+1=yi+1(k).
4.4. Метод Эйлера для решения систем дифференциальных уравнений.
Пусть имеется система y'=f(x, y, z),z'=g(x, y, z) с начальным условием y(x0)=y0, z(x0)=z0.
Перейдем к сеточному представлению, обозначив y(xi)≈yi; z(xi)≈zi. Тогда yi+1=yi+Δyi; zi+1=zi+Δzi; Δyi=h•f1(xi, yi, zi); Δzi=h•f2(xi, yi, zi).
5. Метод Рунге-Кутта.
Одним из методов повышенной точности является метод Рунге-Кутта. Этот метод основан на прогнозе и коррекции тангенса угла наклона касательной.
Пусть
есть уравнение (6) y'=f(x,
y),
начальное условие y(x0)=y0
и отрезок интегрирования, который можно
разбить на n
частей, получив шаг h=
.
Общая идея шаговых методов состоит в
том, что значение в следующей точке
находится исходя из значения в предыдущей
точке, т. е. yi+1,
как и в методе Эйлера, определяется по
формуле yi+1=yi+Δyi.
Разложим y(xi+h)
в ряд Тейлора в окрестности точки xi.
y(xi+h)=y(xi)+h•y'(xi)+
•y''(xi)+
•y'''(xi)+
•y(4)(xi)+…
Ограничимся членами до h4 и вычислим Δyi.
Δyi=y(xi+h)-y(xi)=h•y'(xi)+ •y''(xi)+ •y'''(xi)+ •y(4)(xi), где y''(xi), y'''(xi), y(4)(xi) находят дифференцированием уравнения (1).
Идея Рунге состоит в том, чтобы искать решение Δyi в виде Δi=a1k1(i)+a2k2(i)+a3k3(i)+a4k4(i)+…, где k1(i)=h•f(xi, yi); k2(i)=h•f(xi+b1•h, yi+c1k1(i)); k3(i)=h•f(xi+b2•h, yi+c2k2(i)); k4(i)=h•f(xi+b3•h, yi+c3k3(i)); …
При этом Δi должно совпадать с точностью до членов малости заданной степени h с остатком ряда Тейлора Δyi=h•y'(xi)+ •y''(xi)+…
Рассмотрим идею метода на примере метода второго порядка, т. е. Δi=h•y'(xi)+ •y''(xi), а членами более высоких порядков малости пренебрежем.
ΔiТейл=h•y'(xi)+ •y''(xi)+0(h3); Δi=a1k1(i)+a2k2(i) (*); k1(i)=h•f(xi, yi); k2(i)=h•f(xi+b1•h, yi+c1k1(i)). Индекс (i) у коэффициентов можно опустить.
Разложим k2 в ряд Тейлора с точностью до второго порядка малости.
k2=h•fi+h2•b1
+h•c1k1
+0(h3);
k1=h•fi;
k2=h•fi+h2•b1
+h2•c1fi
.
Подставим k1 и k2 в (*).
Δi=h•a1fi+h•a2fi+h2•a2b1 +h2•a2c1fi ; ΔiТейл=h•yi'+ •yi''=h•fi+ • + •fi .
Сравнивая
Δi
и ΔiТейл,
получим a1+a2=1;
a2b1=
;
a2c1=
.
Эта система имеет бесконечное множество
решений. Если положить a1=a2=
,
то b1=c1=1.
Тогда k1=h•f(xi,
yi)
– формула Эйлера. k2=h•f(xi+h;
yi+k1);
Δ=
•(f(xi,
yi)+f(xi+h;
yi+k1));
yi+1=yi+Δ
– формула Эйлера-Коши. Можно взять и
другие значения коэффициентов a1
и a2,
получив другие значения k1
и k2,
но можно строго показать, что такие
значения коэффициентов являются
оптимальными.
Метод Рунге-Кутта 4-того порядка.
Если
Δi=a1k1+a2k2+a3k3+a4k4,
то
k1=h•f(xi,
yi);
k2=h•f(xi+
,
yi+
);
k3=h•f(xi+
,
yi+
);
k4=h•f(xi+h,
yi+k3),
т.
е.
b1=b2=c1=c2=
;
b3=c3=1.
Значения
коэффициентов a1=a4=
;
a2=a3=
.
Таким
образом, рабочие формулы метода
k1(i)=h•f(xi,
yi);
k2(i)=h•f(xi+
,
yi+
);
k3(i)=h•f(xi+
,
yi+
);
k4(i)=h•f(xi+h,
yi+k3(i));
yi+1=yi+
(k1(i)+2k2(i)+2k3(i)+k4(i)).
Метод имеет четвертый класс точности.
Недостаток метода в том, что для вычисления
каждого значения yi+1
требуется четыре вычисления правой
части дифференциального уравнения,
поэтому если у уравнения правая часть
сложна, то применяют более эффективные
методы.
Метод
можно применять и для систем дифференциальных
уравнений. Пусть имеется система y'=f(x,
y,
z),
z'=g(x,
y,
z)
с начальным условием y(x0)=y0,
z(x0)=z0.
Определим
значения
Δyi,
Δzi.
Δyi=
(k1(i)+2k2(i)+2k3(i)+k4(i));
Δzi=
(e1(i)+2e2(i)+2e3(i)+e4(i));
k1(i)=h•f(xi,
yi);
e1(i)=h•g(xi,
yi);
k2(i)=h•f(xi+
,
yi+
);
e2(i)=h•g(xi+
,
yi+
);
k3(i)=h•f(xi+
,
yi+
);
e3(i)=h•g(xi+
,
yi+
);
k4(i)=h•f(xi+h,
yi+k3(i));
e4(i)=h•g(xi+h,
yi+e3(i)).
yi+1=yi+Δyi;
zi+1=zi+Δzi.
6. Экстраполяционный метод Адамса (Разностный метод Адамса).
При
решении дифференциальных уравнений
методом Рунге-Кутта требуется многократные
вычисления правой части для каждого
yi+1.
Если правая часть дифференциального
уравнения сложна, то применение метода
Рунге-Кутта неоправданно. Метод Адамса
не требует многократного вычисления
правой части дифференциального уравнения.
Пусть имеется уравнение y'=f(x,
y(x))
с начальным условием y(x0)=y0,
которое требуется проинтегрировать на
отрезке [a,
b].
Построим систему равноотстоящих узлов,
разбив [a,
b]
на n
частей. Тогда xi=x0+ih.
Проинтегрируем заданное дифференциальное
уравнение на промежутке [xi,
xi+1].
yi+1=yi+
'dx
или Δyi=
'dx.
Заменим y'
интерполяционным полиномом Ньютона в
конце таблицы, ограничившись тремя
конечными разностями.
y'(t)=y'i+tΔy'i-1+
•Δ2y'i-2+
•Δ3y'i-3,
где t=
.
Если
x(xi,
xi+1),
то t(0,
1); dx=hdt.
Подставим y'(t)
в выражение для Δyi,
получим
Δyi=h•
y'i+tΔy'i-1+
•Δ2y'i-2+
•Δ3y'i-3)dx=h•(y'i+
•Δy'i-1+
•Δ2y'i-2+
•Δ3y'i-3)
– формула Адамса. Эту формулу можно
преобразовать.
Δyi=
•(24y'i+12•Δy'i-1+10•Δ2y'i-2+9•Δ3y'i-3).
Т. к. Δy'i-1=y'i-y'i-1; Δ2y'i-2=y'i-2y'i-1+y'i-2; Δ3y'i-3=y'i-3y'i-1+3y'i-2-y'i-3, рабочая формула метода Адамса имеет вид yi+1=yi+ •(55y'i-59y'i-1+37y'i-2-9y'i-3).
Метод имеет четвертый класс точности. Для нахождения первого значения по методу Адамса требуется знание решения в четырех предыдущих точках, т. е. требуется знание так называемых стартовых или опорных точек, которые находятся другими методами, класс точности которых не ниже четырех.