Санкт-Петербургский государственный политехнический университет Институт Информационных технологий и управления

advertisement
Санкт-Петербургский государственный
политехнический университет
Институт Информационных технологий и управления
Кафедра «Системный анализ и управление»
Курсовая работа
Часть 1: Интерполяция.
Часть 2:Решение дифференциальных уравнений численным
методом.
Дисциплина: «Вычислительная математика»
Выполнила студентка группы
23502/1
Зефиров Артем Викторович
проверил:
Кирсяев Анатолий Николаевич
Санкт-Петербург
2014
Оглавление
ВВЕДЕНИЕ .............................................................................................................. 4
ГЛАВА 1................................................................................................................... 5
1. Задание .............................................................................................................. 5
2. Анализ задания ................................................................................................. 6
3.1
Методы интерполяции ............................................................................... 7
3.1.1 Метод Лагранжа ................................................................................... 7
3.1.2 Метод Ньютона .................................................................................... 8
3.2 Способы нахождения узлов .......................................................................... 9
3.2.1 С равномерным распределением ........................................................... 9
3.2.2 По Чебышеву ........................................................................................... 9
4. Разработка алгоритма .................................................................................... 11
5. Разработка программы ................................................................................... 11
5.1 Структура, исходные функции ................................................................... 11
5.2 Листинг ......................................................................................................... 11
6. Тестирование .................................................................................................. 13
7. Исследование .................................................................................................. 15
7.1
Программа исследования ......................................................................... 15
7.2 Методика исследования .............................................................................. 15
7.3 Теоретически ожидаемый результат ......................................................... 15
7.4 Исследование зависимости погрешности интерполирования от
количества узлов для обоих методов ............................................................... 16
7.5 Исследование сходимости метода интерполяции. ................................ 17
7.6
Выводы. ..................................................................................................... 17
ГЛАВА 2................................................................................................................. 19
1. Задание ............................................................................................................ 19
2. Преобразование данных задания к виду, удобному для численного
интегрирования ДУ. .............................................................................................. 20
3. Расчетные формулы метода .......................................................................... 21
4. Разработка алгоритма .................................................................................... 23
5. Разработка программы ...................................................................................... 23
5.1 Структура, исходные функции, данные .................................................... 23
5.2 Листинг ......................................................................................................... 24
6. Тестирование .................................................................................................. 26
7. Исследование .................................................................................................. 30
2
7.1 Программа исследования ............................................................................ 30
7.2 Методика исследования .............................................................................. 30
7.3
Теоретически ожидаемый результат ...................................................... 30
7.4 Исследование устойчивости метода ......................................................... 31
7.5 Исследование порядка сходимости метода ............................................. 34
7.6 Выводы......................................................................................................... 36
ЗАКЛЮЧЕНИЕ ..................................................................................................... 37
3
ВВЕДЕНИЕ
Одной из важнейших задач численного анализа является задача
интерполяции функции. Интерполяция в вычислительной математике – один
из способов аппроксимации. Аппроксимация функции заключается в
приближенной замене заданной функции f(x) некоторой функцией так, чтобы
отклонение новой функции от f(x) в заданной области было наименьшим. В
этой курсовой работе нам требуется восстановить функцию f(x) для всех
значений x на [a, b], если известны её значения в некотором конечном числе
точек этого отрезка.
Необходимость интерполяции функции в основном связана с двумя
причинами:
1. Функция f(x) имеет сложное аналитическое описание, вызывающее
определенные трудности при его использовании(например, f(x)
является спецфункцией: гамма-функцией, эллиптической функцией
и др.).
2. Аналитическое описание функции f(x) неизвестно, то есть функция
задана таблично. При этом необходимо иметь аналитическое
описание, приближенно представляющее f(x) ( например, для
вычисления f(x) в произвольных точках)
Численные методы изучают вопросы построения, применения и
теоретического обоснования алгоритмов приближенного решения различных
классов математических задач. Численные методы решения обыкновенных
Д.У. связаны с переходом от дифференциальной системы к разностной схеме
и вычислением приближенных решений в форме сеточных функций. Многие
вычислительные алгоритмы ориентированы на использование ЭВМ. Следует
отметить некоторые особенности численных методов:
1. для численных методов характерна множественность, т. е.
возможность решить одну и ту же задачу различными методами;
2. вновь возникающие естественнонаучные задачи и быстрое развитие
вычислительной техники вынуждают переоценивать значение
существующих алгоритмов и приводят к созданию новых.
В
этой
курсовой
работе
нам
необходимо
реализовать
интерполяционную формулу Лагранжа, а также осуществить решение
линейного дифференциального уравнения с помощью одного из численных
методов: метод Адамса-Башворта 4 порядка. Помимо этого необходимо
применить стандартную процедуру ode45 для решения линейного
дифференциального уравнения.
4
ГЛАВА 1
1. Задание
Сравнить графики заданной функции f(x) и интерполяционных
полиномов Pn(x) для n=2, 6, 14 на интервале x∈[c, d] при двух вариантах
выбора узлов:
𝑑−𝑐
1) Равномерно с шагом ℎ =
𝑛
2) По Чебышеву
Для заданий с нечетными номерами использовать формулу Лагранжа.
Исходные данные: a=3, c=-4, b=1, d=3.
Исходная функция представлена на рисунке 1.
Рисунок 1. Исходная функция
5
2. Анализ задания
Выявим аналитическую формулу для заданного графика:
1. 𝑥 < 0
Уравнение прямой на данном участке y=a/2=3/2;
2. 𝑥 ≥ 0
Как мы видим, на отрезке 𝑥 ≥ 0 функция имеет вид y=kx+b.
x
0
y
a/2
b/2
d
Составим систему уравнений и найдем k,b:
3/2=0k+b
1/2=3k+b
=> k= -1/3; b=3/2;
Итак, уравнение прямой на участке x>=0 y=-1/3x+3/2
Таким образом, конечная формула для различных участков x выглядит так:
3
,𝑥 < 0
2
1
3
𝑦=
− 𝑥 + ,𝑥 ≥ 0
3
2
{
6
3. Расчетные формулы метода
2.1Методы интерполяции
Интерполирование функций – один из вариантов аппроксимации,
иными словами замены исходной функции другой, близкой функцией,
удобной для проведения расчетов. Аппроксимируемая функция задается в
табличной форме (сеточная функция) {xi, y(xi) = yi} i=0, 𝑛; x∈[a,b]. В
качестве аппроксимирующей функции часто берут обобщенный полином
Фn(x) = anφn(x) + an-1φn-1(x) + … + a0φ0(x)
Где {φi(x) } i=0, 𝑛 - заданный набор базисных функций, ai i=0,…,n
подлежащие расчету коэффициенты.
2.1.1 Метод Лагранжа
При интерполяции методом Лагранжа интерполяционная функция
строится в виде полинома, а в качестве базисных функций выбираются
степенные функции 𝒘𝒌 (𝒙). Количество таких функций определяется числом
базовых точек. Таким образом, при построении интерполяционного
полинома по N точкам степень полинома равна N-1.
Для построения интерполяционных полиномов Лагранжа используют
следующие расчетные формулы, где Ln(x) – полином Лагранжа степени n:
Ln(x) = ∑𝑛𝑘=0 𝑤𝑘 (𝑥)𝑦𝑘
Полином 𝑤𝑘 (𝑥) будем искать в следующей форме:
𝑤𝑘 (𝑥) = с𝑘 ∏𝑛𝑖=0,𝑖≠𝑘(𝑥 − 𝑥𝑖 )
1, x  xk
wk ( x)  
0, xi  x k , i  k
Константа ck определяется из условия 𝑤𝑘 (𝑥𝑘 ) = 1.Откуда
1
ck = ∏𝑛
Таким образом,
𝑖=0,𝑖≠𝑘(𝑥𝑘 −𝑥𝑖 )
n
 (x  x )
i
( x  x 0 )...( x  x k 1 )( x  x k 1 )....( x  x n )
wk ( x ) 

( x k  x 0 )...( x k  x k 1 )( x k  x k 1 )...( x k  x n )
i 0
ik
n
 (x
k
 xi )
i 0
ik
Нетрудно убедиться, что 𝑤𝑘 (𝑥𝑘 ) = 0, когда 𝑖 ≠ 𝑘, i=0, 𝑛
Окончательный вид интерполяционного полинома в форме Лагранжа:
7
n
Ln (x) = ∑
k=0
∏j≠k(x − xj )
∏j≠k(xk − xj )
f(xk )
Ln (x) - интерполяционный полином, построенный на n+1 узлах.
Действительно, Ln (x) есть полином не выше n, так как 𝑤𝑘 (𝑥) – полином n-ой
степени, а, кроме того, Ln (xk ) = yk (k=0, 𝑛).
2.1.2 Метод Ньютона
Аналогично при интерполяции методом Ньютона интерполяционная
функция строится в виде полинома, а в качестве базисных функций
выбираются степенные функции 𝒘𝒌 (𝒙).
Nn(x) = y(x0) + (x-x0)y(x0, x1) + (x-x0)(x-x1) y(x0, x1, x2) + … + (x-x0)…(x-xn-1)
y(x0, x1,…,xn) = ∑𝑛𝑘=0 y(x0 , x1 , … , xk )ωk (𝑥);
𝑘−1
𝜔0 (𝑥) ≡ 1; 𝜔𝑘 (𝑥) = ∏(𝑥 − 𝑥𝑖 ).
𝑖=0
Докажем, что Nn(x) есть интерполяционный полином. Действительно,
это полином не выше n – ой степени. Кроме того, для любого xi (i=0, 𝑛).
Nn(xi) = f(x0) + (xi-x0)y(x0, x1) + (xi-x0)(xi-x1) y(x0, x1, x2) + … + (xix0)…(xi-xn-1) y(x0, x1,…,xn) = y(xi).
Последнее равенство следует из формулы, связывающей значения
сеточной функции с разделенными разностями.
В отличие от формы Лагранжа при добавлении узла в сеточной
функции форма Ньютона не требует пересчета всех её слагаемых:
Nn+1(x)=Nn(x)+y(x0, x1, …, xn, xn+1)𝜔n+1(x).
В силу теоремы о существовании и единственности алгебраического
интерполяционного полинома при любом способе вычисления получают
идентичные полиномы.
8
3.2 Способы нахождения узлов
3.2.1 С равномерным распределением
Для нахождения узлов с равномерным шагом используется формула:
xi = c +
(d − c)(i − 1)
n
i = 1, 𝑛 + 1
где i – номер узла, xi – i-ый узел, с – начальная точка интерполяции, d –
конечная точка интерполяции, n –общее количество выбираемых узлов.
3.2.2 По Чебышеву
Для нахождения узлов Чебышева используется формула:
xi =
c+d d−c
(2i − 1)π
+
∗ cos
2
2
2(n + 1)
i = 1, 𝑛 + 1
где i – номер узла, xi – i-ый узел, c – начальная точка интерполяции, d –
конечная точка интерполяции, n –общее количество выбираемых узлов.
Пусть число узлов (n+1) фиксировано и о функции y(x) известно лишь,
что она имеет (n+1) ограниченных производных. Тогда единственным
средством уменьшить погрешность является выбор узлов сетки. Этот выбор
должен удовлетворять решению характерной задачи на минимакс
𝑛
min { max |∏(𝑥 − 𝑥𝑖 |}
𝑥0 ,…𝑥𝑛 𝑎≤𝑥≤𝑏
𝑖=0
Из всех возможных стандартных полиномов ωn+1(x) путем выбора
корней нужно подобрать такой, чтобы модуль его максимального значения
на заданном интервале был минимальным. Эта задача, известная как задача о
построении полинома, наименее уклоняющегося от нуля, была решена (по
другому поводу) П.Л. Чебышевым, который доказал, что такими свойствами
обладают нормированные полиномы, известные под его именем.
Таким образом, наилучшей является сетка, узлы которой совпадают с
корнями нормированного полинома Чебышева степени (n+1) на интервале
[a,b].
Свойства полиномов Чебышева.
1. Полином Чебышева n – ой степени Tn(t)=cos(n*arccos(t)) (t∈[-1,1])
можно рассчитать по рекурсивным формулам T0(t)=1; T1(t)=t;
Tn(t)=2tn-1(t)-Tn-2(t); n=2,3,… .
2. На отрезке [-1,1] полином Tn(t) имеет n вещественных корней
9
(2𝑘 + 1)𝜋
; 𝑘 = ̅̅̅̅̅̅̅̅̅̅
0, 𝑛 − 1
2𝑛
n
n-1
3. Коэффициент при t равен 2 .
4. При n≥0 max |𝑇𝑛 (𝑡)| = 1
𝑡𝑘 = 𝑐𝑜𝑠
−1≤𝑡≤1
Если n≥1, то этот максимум достигается ровно в n+1 точках, которые
находятся по формуле:
𝑚𝜋
𝑡𝑚 = 𝑐𝑜𝑠
; 𝑚 = ̅̅̅̅̅
0, 𝑛
𝑛
m
При этом Tn(tm)=(-1) , т. е. максимумы и минимумы многочленов
Чебышева чередуются.
Предположим, интерполяционный полином строится на отрезке [-1,1] .
Тогда для минимизации погрешности нужно выбрать узлы, совпадающие с
корнями полинома Чебышева. То есть:
1
𝜔𝑛+1 (𝑡) = 𝑛 𝑇𝑛+1 (𝑡);
2
𝑀𝑛+1
max |𝑟𝑛 (𝑡)| =
−1≤𝑡≤1
(𝑛 + 1)! 2𝑛
Произвольный отрезок [a,b] приводится к стандартному [-1,1] заменой
𝑐+𝑑
𝑑−𝑐
2
𝑐+𝑑
переменных 𝑥 =
+
𝑡; 𝑡 =
(𝑥 −
)
2
2
𝑑−𝑐
2
При этом оказывается:
𝑏 − 𝑎 𝑛+1
𝜔𝑛+1 (𝑥) = (
;
)
2
1
𝜔
̃𝑛+1 (𝑡); 𝜔
̃𝑛+1 (𝑡) = (𝑡 − 𝑡0 ) … (𝑡 − 𝑡𝑛 ) = 𝑛 𝑇𝑛+1
2
ti- корни Чебышевского полинома Tn+1;
𝑐+𝑑
𝑑−𝑐
𝑥=
+
𝑡 , 𝑖 = 1, 𝑛 + 1
2
2 𝑖
Таким образом, выбор Чебышевских узлов приводит к следующему
результату
𝑀𝑛+1
𝑏 − 𝑎 𝑛+1
max |𝑟𝑛 (𝑡)| =
;
(
)
𝑎≤𝑡≤𝑏
(𝑛 + 1)! 2𝑛
2
10
3. Разработка алгоритма
В данной работе согласно заданию необходимо использовать метод
Лагранжа.
1) Исходные данные;
1.1) построить исходную функцию;
1.2) построить сеточную функцию;
1) построить Ln(x) – интерполяционный полином Лагранжа;
2) Вывод графиков.
4. Разработка программы
5.1 Структура, исходные функции
Основные функции и переменные, использованные в реализованной
программе:
1. n-количество узлов;
2. plot(x,y) – построение графиков;
3. Команды subplot(mnp) или subplot(m, n, p), где mnp - 3 цифры, производит
разбивку графического окна на несколько подокон, создавая при этом
новые объекты axes; значение m указывает, на сколько частей разбивается
окно по горизонтали, n - по вертикали, а p - номер подокна, куда будет
выводиться очередной график. Эти же команды могут использоваться для
перехода от одного подокна к другому;
4. grid on- rоманда grid on наносит координатную сетку на текущие оси;
5. hold on - Команда hold on включает режим сохранения текущего графика и
свойств объекта axes, так что последующие команды приведут к
добавлению новых графиков в графическом окне.
5.2 Листинг
%начальные условия
a=3;
b=1;
c=-4;
d=3;
%количество узлов
n=20;
%узлы при равномерном выборе и при выборе методом
чебышева
for i=1:n+1
x(i)=c+(d-c)*(i-1)/n;%равномерные узлы
%чебышевские узлы
11
end
y=linkus(x,c,d,a,b);
%Равномерный случай
% Реализация формулы Лагранжа Ln(x)
m=200; % число отрезков при построении Ln(x)
% строим массив значений аргумента Ln(x)
z=c:(d-c)/m:d; % Ln(z)
for j=1:m+1
L(j)=0;
for k=1:n+1
P=1;
for i=1:n+1
if k~=i
P=P*(z(j)-x(i))/(x(k)-x(i));
end
end
L(j)=L(j)+P*y(k);
end
end
%plot (z, linkus (z, c, d, a, b), 'r');
%xlabel('x');
%ylabel('y');
%title('Исходная функция')
%grid on
% построение графиков
subplot (2, 1, 1);
plot(x, y, ' * ', 'MarkerSize', 8)
grid on; % маркеры
hold on; % несколько графиков на одних осях
xlabel('x');
ylabel('y');
plot (z, L, ' r '); % интерполяционный полином Pn(x),
r-red
xlabel('x');
ylabel('y');
plot (z, linkus (z, c, d, a, b), 'b'); % исходная
функция
subplot (2, 1, 2);
plot (z, L-linkus(z, c, d, a, b)); % погрешность
12
max(L-linkus(z, c, d, a, b))
function y=linkus(x,c,d,a,b)
for i=1:length(x)
if x(i)<0
y(i)=3/2;
else if x(i)>=0
y(i)=-1/3*x(i)+1.5;
end
end
end
5. Тестирование
Целью тестирования является подтверждение того, что написанная
программа работает правильно. Для того, чтобы доказать, что программа
функционирует так, как положено, необходимо, чтобы соблюдалось
выполнение тестового критерия. В этой задаче тестовым критерием является
следующее:
Исходная функция и полученный полином должны совпадать в узлах
интерполирования при любом количестве узлов.
Для проверки выполнения тестового критерия рассмотрим несколько
случаев с различными узлами: n=2, 6, 14, 20.
n=2
Равномерные узлы
Узлы по Чебышеву
n=6
Равномерные узлы
Узлы по Чебышеву
13
n=14
Равномерные узлы
Узлы по Чебышеву
n=20
Равномерные узлы
Узлы по Чебышеву
14
Из графиков видно, что полином и сама исходная функция совпадают в
узлах интерполирования. Это означает, что выполнен тестовый критерий, что
подтверждает правильность проведенных вычислений.
6. Исследование
6.1
Программа исследования
1) Исследование зависимости погрешности интерполирования от
количества узлов;
2) Исследование сходимости метода интерполяции.
7.2 Методика исследования
1) Необходимо выявить зависимость погрешности от количества узлов.
Для этого необходимо исследовать максимальную погрешность для разного
количества узлов, как при равномерном распределении, так и при выборе
узлов по Чебышеву, после чего сравнить полученные результаты;
2) Необходимо исследовать сходимость метода интерполяции. Для
этого нужно заметить, как изменяется погрешность при большом количестве
узлов, после чего отметить стремиться ли она к бесконечности, что будет
означать сходимость метода, либо же погрешность стремиться к нулю, что
означает обратное.
7.3 Теоретически ожидаемый результат
Теоретически выбор в качестве узлов интерполирования корней
полинома Чебышева является наилучшим из данных двух. На графиках
должна прослеживаться ситуация, когда при интерполяции с
равноотстоящими узлами ошибка интерполяции больше на краях
15
промежутка, а при интерполяции с чебышевскими узлами ошибка более
равномерно распределена на интервале интерполирования.
Исследуя сходимость метода интерполяции, будем говорить, что при
заданной стратегии выбора узлов метод интерполяции сходится, если ΔP n =
max |𝑦(𝑥) − 𝑃𝑛 (𝑥)| → 0 при n→ ∞.
𝑥𝜖[𝑎,𝑏]
При n→∞ в случае использования чебышевской сетки ΔPn→0 для
равномерной сетки в аналогичных условиях ΔPn→∞.
Рассмотренная выше ситуация обобщается следующими теоремами:
Теорема 1. Какова бы не была стратегия выбора узлов, найдется
непрерывная на интервале [a,b] функция такая, что метод интерполяции
расходится, то есть
En(y)→∞ при n→∞.
Однако для функций, обладающих ограниченными производными,
стратегия, обеспечивающая сходимость, существует.
Теорема 2. Пусть в качестве узлов интерполяции выбирают
чебышевские узлы. Тогда для любой функции, обладающей ограниченными
производными на [a,b], метод интерполяции сходится.
7.4 Исследование зависимости погрешности интерполирования от
количества узлов для обоих методов
Максимальная погрешность
Максимальная погрешность
равномерных узлов
узлов Чебышева
2
0.1250
0.1055
6
0.0400
0.0276
14
0.2817
0.0125
20
12.6891
0.0156
Количество узлов n
Как видно из нашего исследования, при любом выборе узлов метод
Чебышева оказывается точнее по сравнению с методом равномерных узлов.
Погрешности при любом количестве узлов при методе Чебышева меньше,
чем при методе равномерных узлов.
Помимо этого на графиках можно заметить ситуацию, при которой с
интерполяцией с равноотстоящими узлами ошибка интерполяции больше на
краях промежутка интерполяции, а при интерполяции с Чебышевскими
узлами ошибка распределена более равномерно на интервале
интерполирования.
16
7.5Исследование сходимости метода интерполяции.
При использовании метода выбора узлов по Чебышеву должна иметь
место сходимость метода интерполяции, если не было вычислительной
ошибки. При равномерном выборе узлов сходимость может отсутствовать.
При увеличении количества узлов n для метода Чебышева можно
отметить следующее: при достаточно большом количестве узлов 𝑛 → ∞,
погрешность стремиться к нулю. Для равномерных узлов погрешность же
стремиться к бесконечности. Практически это подтверждается при работе
данной программы, что можно увидеть на следующих графиках, для
количества узлов n=600
n=600
Равномерные узлы
Узлы по Чебышеву
7.6Выводы.
В результате проделанной работы мною была исследована сходимость
метода интерполяции. Опираясь на данные, которые были получены с
помощью программы, и учитывая то, что метод интерполяции сходится, если
ΔPn = max |𝑦(𝑥) − 𝑃𝑛 (𝑥)| → 0 при n→ ∞, можно сказать, что при выборе
𝑥𝜖[𝑎,𝑏]
17
узлов по методу Чебышева имеет место сходимость метода, однако в случае
равномерного распределения узлов сходимость отсутствует, что
соответствует теоретическим данным.
Помимо этого была исследована зависимость погрешности от
количества узлов. После изучения полученных графиков, можно заметить,
что при интерполяции с равноотстоящими узлами ошибка интерполяции
больше на краях промежутка интерполяции, а при интерполяции с
чебышевскими узлами ошибка более равномерно распределена на интервале
интерполирования. Это говорит о том, что выбор в качестве узлов
интерполирования корней полинома Чебышева является наилучшим из
данных двух. Таким образом, теоретические данные были полностью
подтверждены практическим результатом.
18
ГЛАВА 2
1. Задание
Построить таблицу и график решения линейного дифференциального
уравнения заданным численным методом и аналитически, а также с
использованием стандартной процедуры ode45.
𝑎0 𝑦 ′′′ (𝑡) + 𝑎1 𝑦 ′′ (𝑡) + 𝑎2 𝑦 ′ (𝑡) + 𝑦(𝑡) = 10;
𝑦(0) = 𝑦 ′ (𝑜) = 𝑦 ′′ (0) = 0;
на интервале t∈[0,tm].
Сравнить полученные результаты с аналитическим решением. Исследовать
условия устойчивости метода. Исследовать зависимость погрешности
решения от выбора шага интегрирования.
Вар.№
a0
a1
a2
tm
Метод
13
12
25
4
160
А-М 3 пор
19
2. Преобразование данных задания к виду, удобному для
численного интегрирования ДУ.
Большинство численных методов предполагают систему уравнений,
решенных относительно первой производной.
Приведем данное ДУ 3-его порядка к нормальной форме Коши.
Исходное ДУ имеет вид: 12𝑦 ′′′ (𝑡) + 25𝑦 ′′ (𝑡) + 4𝑦 ′ (𝑡) + 𝑦(𝑡) = 10.
Так как ДУ имеет высокий порядок, то его необходимо свести к
системе уравнений, каждое из которых должно иметь первый порядок, т.е.
имеет место нормальная форма Коши:
𝑦 ′ (𝑡) = 𝐹(𝑦(𝑡), 𝑡);
Запишем нормальную форму Коши в следующем виде:
𝑦 ′ (𝑡) = 𝐴𝑦(𝑡) + 𝐵𝑓(𝑡);
Приведем уравнение к нормальной форме Коши:
𝑧 = 𝑦1
′
𝑧 = 𝑦1′ = 𝑦2
𝑧 ′′ = 𝑦2′ = 𝑦3
1
𝑢
𝑧 ′′′ = 𝑦3′ = (−𝑎3 𝑦1 − 𝑎2 𝑦2 − 𝑎1 𝑦3 ) +
𝑎0
𝑎0
{
𝑦3′ =
1
10
(−𝑦1 − 4𝑦2 − 25𝑦3 ) +
12
12
0
0
1
0
0
1 ); 𝑏 = ( 0 );
𝑎=( 0
10/12
−1/12 −4/12 −25/12
20
3. Расчетные формулы метода
В данной работе необходимо реализовать метод Адамса-Башфорта 3
порядка.
Рассмотрим задачу Коши
y' = f(x,y) , 𝑎 ≤ 𝑥 ≤ 𝑏
y(a) =y0
В методах Рунге-Кутта значение yk+1 зависело только от информации в
предыдущей точке xk . Кажется вполне вероятным, что можно добиться
большей точности, если использовать информацию о нескольких
предыдущих точках xk , xk-1 , … Именно так и поступают в многошаговых
методах. Большой и важный класс многошаговых методов возникает на
основе следующего подхода. Если подставить в первую формулу точное
решение y(x) и проинтегрировать это уравнение на отрезке [xk , xk+1 ] , то
получим
𝑥
𝑥
𝑥
𝑘
𝑘
𝑘
y(xk+1 ) - y(xk )= ∫𝑥 𝑘+1 𝑦′(𝑥)𝑑𝑥=∫𝑥 𝑘+1 𝑓(𝑥, 𝑦(𝑥))𝑑𝑥 ≈ ∫𝑥 𝑘+1 𝑝(𝑥)𝑑𝑥
где в последнем члене предполагаем, что p(x) - полином,
аппроксимирующий f(x,y(x)) . Чтобы построить этот полином, предположим,
что yk , yk-1 , … , yk-N -приближения к решению в точках xk , xk-1 , … , xk-N . Мы
по-прежнему считаем, что узлы расположены равномерно с шагом h .
Тогда fi є f(xi , yi ) (i = k, k-1, …, k-N) есть приближения к f(x,y(x)) в
точках xk , xk-1 , … , xk-N , и мы в качестве p возьмём полином для набора
данных (xi , fi ) (i = k, k-1, …, k-N) . Таким образом, p -полином степени N ,
удовлетворяющий условиям p(xi ) = fi , (i = k, k-1, …, k-N) . В принципе,
можно проинтегрировать этот полином явно, что ведёт к следующему
методу:
𝑥
yk+1 =yk + ∫𝑥 𝑘+1 𝑝(𝑥)𝑑𝑥
𝑘
В простейшем случае, когда N=0 , полином p есть константа,
равная fk ,и (4) превращается в обычный метод Эйлера. Если N=1 , то p есть
линейная функция, проходящая через точки (xk -1 , fk -1 ) и (xk , fk ) ,т.е.
p(x)= -(x-xk ) fk -1 /h + (x-xk -1 ) fk /h .
Интегрируя этот полином от xk до xk +1 , получаем следующий метод:
yk+1 =yk + h(3 fk - fk-1 )/2
(1)
21
который является двухшаговым, поскольку использует информацию в
двух точках xk и xk-1. Аналогично, если N=2 , то p есть квадратичный
полином, интерполирующий данные (xk -2 , fk -2 ) , (xk -1 , fk -1 ) и (xk , fk ) , а
соответствующий метод имеет вид
yk+1 =yk + h(23 fk -16 fk-1 +5fk -2 )/12
(2)
Если N=3 , то интерполяционный полином является кубическим, а
соответствующий метод определяется формулой:
yk+1 =yk + h(55 fk -59 fk-1 +37 fk-2 - 9 fk-3 )/24
(3)
Отметим, что метод (2) является трёхшаговым, а (3) - четырёхшаговым.
Формулы (1)-(3) известны как явные методы Адамса (АдамсаБашфорта) , т.к. они для нахождения yk+1 не требуют решения никаких
уравнений. Метод (1) имеет второй порядок точности, поэтому его
называют методом второго порядка. Аналогично, методы (2) и (3) называют
соответственно методами Адамса- Башфорта третьего и четвёртого порядков.
Методы Адамса- Башфорта используют уже сосчитанные значения в
точке xk и в предыдущих точках. В принципе, при построении
интерполяционного полинома мы можем использовать и точки xk+1 , xk+2 и
т.д.
Соответственно, так как заданный метод – это многошаговый метод
Адамса-Башфорта 3-ого порядка, то он требует предварительного
вычисления в 3 начальных точках. Поэтому для вычисления дополнительных
начальных значений использован одношаговый метод Рунге-Кутты 4
порядка.
Метод Рунге-Кутта 4 порядка:
ℎ
𝑦𝑘+1 = 𝑦𝑘 + (𝑘1 + 2𝑘2 + 2𝑘3 + 𝑘4 );
6
𝑘1 = 𝑓(𝑡𝑘 , 𝑦𝑘 );
ℎ
𝑘1
𝑘2 = 𝑓 (𝑡𝑘 + , 𝑦𝑘 + ℎ ( )) ;
2
2
ℎ
𝑘2
𝑘3 = 𝑓 (𝑡𝑘 + , 𝑦𝑘 + ℎ ( )) ;
2
2
𝑘4 = 𝑓(𝑡𝑘 + ℎ, 𝑦𝑘 + ℎ𝑘3 );
22
4. Разработка алгоритма
В данной работе согласно заданию необходимо использовать метод
Адамса-Башфорта.
1) Исходные данные
2) Реализация стартового метода Рунге-Кутта 4 порядка;
3) Реализация основного метода;
4) Вывод данных;
5) Построение графиков.
5. Разработка программы
5.1 Структура, исходные функции, данные
Шаг h=0.1;
DT = tmax-t0 = 160;
n=3;
t=0;
0
1
0
0
1 )
5) матрица а = ( 0
−1/12 −4/12 −25/12
1)
2)
3)
4)
6) начальные условия y=( 0; 0; 0 ); f= (0 ; 0 ; 10/12);
Основные
функции
и
переменные,
использованные
в
реализованной программе:
1. plot(x,y) – построение графиков
2. Команды subplot(mnp) или subplot(m, n, p), где mnp - 3 цифры,
производит разбивку графического окна на несколько подокон,
создавая при этом новые объекты axes; значение m указывает, на
сколько частей разбивается окно по горизонтали, n - по вертикали, а p номер подокна, куда будет выводиться очередной график. Эти же
команды могут использоваться для перехода от одного подокна к
другому.
3. grid on - Команда grid on наносит координатную сетку на текущие оси.
4. hold on - Команда hold on включает режим сохранения текущего
графика и свойств объекта axes, так что последующие команды
приведут к добавлению новых графиков в графическом окне.
5. out = zeros (m + 1, n + 1);
6. Функция out1 = zeros (m+1, n+1) формирует массив нулей размера
(m+1) х (n+1).
7.m = floor (DT/h) - функция m = floor(DT/h) возвращает значения,
округленные до ближайшего целого<= DT/h;
8.out (i, :) - формирует i-ую строку, : - столбец
23
5.2 Листинг
% Исходные данные
h = 0.01;
DT = 160;
n = 3;
a = [0 1 0; 0 0 1; -1/12 -4/12 -25/12];
y = [0; 0; 0]; m = floor (DT/h);
t = 0;
f = [0; 0; 10/12];
eig (a)
out = zeros (m + 1, n + 1);
s=3;
f1=zeros(n,s);
out (1, :) = [t, y'];
f1(:,1)=mf(t,y,a,f)
for i = 2: s
% Метод Рунге-Кутты 4 порядка
k1=mf(t,y,a,f);
k2=mf(t+h/2, y+h*k1/2, a,f);
k3=mf(t+h/2, y+h*k2/2, a,f);
k4=mf(t+h, y+h*k3,a,f);
y=y+h*(k1+2*k2+2*k3+k4)/6;
t = t + h;
out(i,:)=[t,y'];
f1(:,i)=mf(t,y,a,f);
end
for i=s+1:m+1
y=y+(h/12)*(23*f1(:,s)-16*f1(:,s-1)+5*f1(:,s-2));
t=t+h;
out (i, :) = [t, y'];
for j=1:s-1
f1(:,j)=f1(:,j+1);
end
f1(:,s)=mf(t,y,a,f);
end
x=out(:,1);
z=out(:,2);
s1 = dsolve ('12*D3y + 25*D2y + 4*Dy + y = 10', 'D2y(0) = 0',
'Dy(0) = 0', 'y(0) = 0');
s1 = subs (s1, x);
%построение графиков
subplot(2,1,1);
plot (x,z,'m','LineWidth',2);
grid on;
title ('Решение')
subplot(2,1,2);
plot(x, z-s1);
24
grid;
axis tight;
title ('Погрешность')
function z = mf (t, y, a, f)
z = a * y + f;% расчет правой части
Решение с помощью стандартной процедуры ode45
function od
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[t,y] = ode45(@rigid,[0 200],[0 0 0],options);
x=t;
s1 = dsolve ('12*D3y + 25*D2y + 4*Dy + y = 10', 'D2y(0) = 0',
'Dy(0) = 0', 'y(0) = 0');
s1 = subs (s1, x);
subplot(2,1,1);
plot(x,y(:,1),'-');
subplot(2,1,2);
plot(x,y(:,1)-s1,'-');
grid on;
function dy = rigid(t,y)
dy = zeros(3,1);
% a column vector
dy(1) = y(2);
dy(2) = y(3);
dy(3) =(-1/4)*y(1)-(34/40)*y(2)-(52/40)*y(3)+10/4;
25
6. Тестирование
Чтобы произвести тестирование, необходимо убедиться в том, что
написанная программа верно функционирует. Убедиться в этом можно с
помощью стандартной процедуры решения дифференциальных уравнений
ode45.
Рассмотрим решение линейного дифференциального уравнения
методом Адамса-Башворта 3 порядка. С помощью программы было получено
два графика, один из которых – это полученное решение, а второй –
аналитическая погрешность:
26
Помимо этого были получены собственные числа матрицы а:
ans =
-1.9332
-0.0751 + 0.1936i
-0.0751 - 0.1936i
После этого решение было получено с помощью стандартной
процедуры ode45. На первом графике показано решение дифференциального
уравнения с помощью стандартной процедуры, а на втором – разность между
данным решением и решением с помощью функции dsolve. Результат
приведен ниже на рисунке:
27
Для того, чтобы проверить, совпадают ли решения с помощью
стандартной процедуры ode45 и решение с помощью метода АдамсаБашворта 3 порядка, построим решение первым и вторым способом и с
помощью кнопки «Data cursor», расположенной на панели меню, рассмотрим
несколько точек.
28
Как можно заметить, решение с помощью стандартной процедуры
ode45 и решение с помощью метода Адамса-Башфорта совпадают,
29
погрешность, заключающаяся в разности решений между решением с
помощью ode45 и символьным методом, достаточно мала, что говорит о
правильности работы программ. Следовательно, решение найдено
правильно.
Помимо этого:
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
как видно, погрешность для ode45 - 1e-4
Согласно формуле для данной процедуры:
|e(i)| ≤ max(RelTol*abs(y(i)),AbsTol(i))
Становится понятным, что погрешность, полученная при решении
дифференциального уравнения (10-7) является верной, так как 10-7≤1e-4
7. Исследование
7.1 Программа исследования
1) Исследование устойчивости метода;
2) Исследование порядка сходимости метода.
7.2 Методика исследования
1) Необходимо исследовать устойчивость метода Адамса-Башфорта 3
порядка. Для этого необходимо производить вычисления ДУ данным
методом с различными шагами, и соответственно, либо сделать вывод о том,
что метод абсолютно-устойчив, либо условно-устойчив. Для условноустойчивого метода необходимо найти критический шаг, при котором метод
теряет свою устойчивость.
2) Необходимо исследовать порядок сходимости метода.
Для этого
необходимо исследовать зависимость погрешности от выбора шага и
посмотреть порядок сходимости.
7.3Теоретически ожидаемый результат
Разностный метод называется абсолютно устойчивым, если
устойчивость имеет место при любых h>0, и условно устойчивым, если она
может быть обеспечена только введением ограничений на шаг h.
Для вещественных отрицательных собственных значений λi(A)
ограничения на выбор шага имеют вид:
h|λi(A)| < 1.0 - для метода Адамса второго порядка
h|λi(A)| < 6/11 - для метода Адамса третьего порядка
h|λi(A)| < 0.3 - для метода Адамса четвертого порядка
Соответственно, теоретически ожидаемым результатом является
нарушение устойчивости метода Адамса-Башфорта при переходе через шаг
h=6/(11Re| λi(A)|).
30
Для исследования порядка сходимости данного метода известно, что
если численный метод устойчив и имеет порядок аппроксимации p, то он
сходится с p-ым порядком точности по h.
7.4 Исследование устойчивости метода
Согласно теоретическим данным, разностный метод называется
абсолютно устойчивым, если устойчивость имеет место при любых h>0, и
условно устойчивым, если она может быть обеспечена только введением
ограничений на шаг h.
Для исследования устойчивости метода и сравнения погрешности при
разных шагах интегрирования будем производить вычисления с различными
шагами. Вычисления представлены ниже в таблице.
h=0,1
31
h=0,15
h=0,2
32
h=0,25
h=0.33
После проведения тестирования можно заметить, что погрешность
метода Адамса-Башфорта увеличивается с повышением шага. Если
сравнивать с решением с помощью стандартной процедуры ode45, то на шаге
h>=0.33 погрешность становится больше погрешности стандартного ode45.
Можно сделать вывод, что при равномерном выборе величины шага метод
Адамса-Башфорта является недостаточно устойчивым для большой
величины шага.
33
При переходе через h=0.33 видно, что метод теряет устойчивость, его
погрешность резко увеличивается, и решение становится неверным. Это
говорит о том, что h=0.33 является критическим шагом, при переходе через
которой метод Адамса-Башфорта 3 порядка теряет устойчивость. Если метод
теряет устойчивость, то можно назвать его условно-устойчивым.
Теоретический критический шаг равен:
6
6
ℎкр =
=> ℎкр =
= 0.2811 ≅ 0.3
11𝑅𝑒|𝜆(𝐴)|
11 ∗ 1.9332
Видно, что критический шаг, полученный практически, совпадает с
теоретическим.
7.5 Исследование порядка сходимости метода
Чтобы подтвердить сходимость метода Адамса-Башворта 3 порядк,
необходимо подтвердить следующий факт: если численный метод устойчив и
имеет порядок сходимости р, то он сходится с р-ым порядком точности по h.
Рассмотрим зависимость погрешности от шага:
34
35
Шаг h
Погрешность
Порядок сходимости
-9
3
0,001
≅10
-6
0,01
10
3
-3
0,1
10
3
Поскольку экспериментальная оценка порядка сходимости может быть
выражена формулой:
𝑝 = ln(𝑄 − ℎ)
где p-порядок сходимости, Q- погрешность при данном шаге h
По этим данным видно экспериментальное подтверждение порядка
сходимости, так как допустим для h=0,001 =>𝑝 = ln(𝑄 − ℎ)== ln(10−9 −
10−3 ) ≅ 3.
Практическое подтверждение соответствует теоретически ожидаемому
результату.
7.6 Выводы
В результате проделанной работы мною было проведено исследование
устойчивости метода Адамса-Башворта, а также его порядка сходимости. В
результате исследования можно заметить, что теоретический результат
совпадает с практическим.
Помимо этого мною был найден критический шаг, чье значение
составило 1, при переходе через этот шаг метод терял свою устойчивость, из
чего можно сделать вывод, что метод Адамса-Башворта 3 порядка является
условно устойчивым. Критический шаг, который получен исходя из теории
практически совпадает с критическим шагом, который был получен на
практике. Также было подтверждено, что если численный метод устойчив, то
он сходится с p-ым порядком точности по h. Таким образом, теоретические
данные полностью подтвердились практическим результатом.
36
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы были проделаны
следующие пункты:
1.
При помощи формулы Лагранжа было проведено сравнение
заданного графика с интерполяционными полиномами для различного
количества узлов. Данное сравнение выполнялось при двух вариантах выбора
узлов
𝑑−𝑐

Равномерно с шагом ℎ =
𝑛

По Чебышеву
Для реализации этих пунктов была написана программа, тестовым
критериям правильности которой являлось совпадение полинома и исходной
функции в узлах интерполирования, что было успешно выполнено.
Помимо этого было проведено исследование зависимости погрешности
интерполирования от количества узлов, исходя из которого можно сделать
вывод, что выборка узлов по Чебышеву обеспечивает наиболее точный
результат, чем метод равномерных узлов.
Была исследована сходимость метода интерполяции, после чего был
сделан вывод о том, что при увеличении количества узлов n для метода
Чебышева, погрешность стремиться к нулю, что хорошо заметно по
предоставленным графикам.
2.
Во второй части курсовой работы было найдено решение
линейного дифференциального уравнения 12𝑦 ′′′ (𝑡) + 25𝑦 ′′ (𝑡) + 4𝑦 ′ (𝑡) +
𝑦(𝑡) = 10.
Реализовать решение удалось с помощью метода Адамса-Башворта 3
порядка, а также с помощью стандартной процедуры ode45. Как видно из
исследования, решения, полученный и тем и другим способами совпадают.
Это подтверждает правильность работы программы.
В ходе работы программы по реализации метода Адамса-Башфорта
были построены два графика: решение и аналитическая погрешность. Был
проведен сравнительный анализ данных, при котором исследовалось
нарушение
устойчивости
для
различных
шагов.
Также
была
проанализирована зависимость погрешности от шага интегрирования в связи
с порядком сходимости метода.
37
Download