Метод Рунге-Кутта 4 порядка:

4.  Разработка алгоритма

В данной работе согласно заданию необходимо использовать метод Адамса-Башфорта.

1)  Исходные данные

2)  Реализация стартового метода Рунге-Кутта 4 порядка;

3)  Реализация основного метода;

4)  Вывод данных;

5)  Построение графиков.

5. Разработка программы

5.1 Структура, исходные функции, данные

1)  Шаг h=0.1;

2)  DT = tmax-t0 = 160;

3)  n=3;

4)  t=0;

5)  матрица а =

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-ую строку, : - столбец

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);

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;

6.  Тестирование

Чтобы произвести тестирование, необходимо убедиться в том, что написанная программа верно функционирует. Убедиться в этом можно с помощью стандартной процедуры решения дифференциальных уравнений ode45.

Рассмотрим решение линейного дифференциального уравнения методом Адамса-Башворта 3 порядка. С помощью программы было получено два графика, один из которых – это полученное решение, а второй – аналитическая погрешность:

Помимо этого были получены собственные числа матрицы а:

ans =

-1.9332

-0.0751 + 0.1936i

-0.0751 - 0.1936i

После этого решение было получено с помощью стандартной процедуры ode45. На первом графике показано решение дифференциального уравнения с помощью стандартной процедуры, а на втором – разность между данным решением и решением с помощью функции dsolve. Результат приведен ниже на рисунке:

Для того, чтобы проверить, совпадают ли решения с помощью стандартной процедуры ode45 и решение с помощью метода Адамса-Башворта 3 порядка, построим решение первым и вторым способом и с помощью кнопки «Data cursor», расположенной на панели меню, рассмотрим несколько точек.

Как можно заметить, решение с помощью стандартной процедуры ode45 и решение с помощью метода Адамса-Башфорта совпадают, погрешность, заключающаяся в разности решений между решением с помощью 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-71e-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)|).

Для исследования порядка сходимости данного метода известно, что если численный метод устойчив и имеет порядок аппроксимации p, то он сходится с p-ым порядком точности по h.

7.4 Исследование устойчивости метода

Согласно теоретическим данным, разностный метод называется абсолютно устойчивым, если устойчивость имеет место при любых h>0, и условно устойчивым, если она может быть обеспечена только введением ограничений на шаг h.

Для исследования устойчивости метода и сравнения погрешности при разных шагах интегрирования будем производить вычисления с различными шагами. Вычисления представлены ниже в таблице.

h=0,1

h=0,15

h=0,2

h=0,25

h=0.33

После проведения тестирования можно заметить, что погрешность метода Адамса-Башфорта увеличивается с повышением шага. Если сравнивать с решением с помощью стандартной процедуры ode45, то на шаге h>=0.33 погрешность становится больше погрешности стандартного ode45. Можно сделать вывод, что при равномерном выборе величины шага метод Адамса-Башфорта является недостаточно устойчивым для большой величины шага.

При переходе через h=0.33 видно, что метод теряет устойчивость, его погрешность резко увеличивается, и решение становится неверным. Это говорит о том, что h=0.33 является критическим шагом, при переходе через которой метод Адамса-Башфорта 3 порядка теряет устойчивость. Если метод теряет устойчивость, то можно назвать его условно-устойчивым.

Теоретический критический шаг равен:

Видно, что критический шаг, полученный практически, совпадает с теоретическим.

7.5 Исследование порядка сходимости метода

Чтобы подтвердить сходимость метода Адамса-Башворта 3 порядк, необходимо подтвердить следующий факт: если численный метод устойчив и имеет порядок сходимости р, то он сходится с р-ым порядком точности по h.

Рассмотрим зависимость погрешности от шага:

Шаг h

Погрешность

Порядок сходимости

0,001

10-9

3

0,01

10-6

3

0,1

10-3

3

Поскольку экспериментальная оценка порядка сходимости может быть выражена формулой:

где p-порядок сходимости, Q - погрешность при данном шаге h

По этим данным видно экспериментальное подтверждение порядка сходимости, так как допустим для h=0,001 =>=.

Практическое подтверждение соответствует теоретически ожидаемому результату.

7.6 Выводы

В результате проделанной работы мною было проведено исследование устойчивости метода Адамса-Башворта, а также его порядка сходимости. В результате исследования можно заметить, что теоретический результат совпадает с практическим.

Помимо этого мною был найден критический шаг, чье значение составило 1, при переходе через этот шаг метод терял свою устойчивость, из чего можно сделать вывод, что метод Адамса-Башворта 3 порядка является условно устойчивым. Критический шаг, который получен исходя из теории практически совпадает с критическим шагом, который был получен на практике. Также было подтверждено, что если численный метод устойчив, то он сходится с p-ым порядком точности по h. Таким образом, теоретические данные полностью подтвердились практическим результатом.

ЗАКЛЮЧЕНИЕ

В результате выполнения данной курсовой работы были проделаны следующие пункты:

1.  При помощи формулы Лагранжа было проведено сравнение заданного графика с интерполяционными полиномами для различного количества узлов. Данное сравнение выполнялось при двух вариантах выбора узлов

·  Равномерно с шагом

·  По Чебышеву

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

Помимо этого было проведено исследование зависимости погрешности интерполирования от количества узлов, исходя из которого можно сделать вывод, что выборка узлов по Чебышеву обеспечивает наиболее точный результат, чем метод равномерных узлов.

Была исследована сходимость метода интерполяции, после чего был сделан вывод о том, что при увеличении количества узлов n для метода Чебышева, погрешность стремиться к нулю, что хорошо заметно по предоставленным графикам.

2.  Во второй части курсовой работы было найдено решение линейного дифференциального уравнения 12.

Реализовать решение удалось с помощью метода Адамса-Башворта 3 порядка, а также с помощью стандартной процедуры ode45. Как видно из исследования, решения, полученный и тем и другим способами совпадают. Это подтверждает правильность работы программы.

В ходе работы программы по реализации метода Адамса-Башфорта были построены два графика: решение и аналитическая погрешность. Был проведен сравнительный анализ данных, при котором исследовалось нарушение устойчивости для различных шагов. Также была проанализирована зависимость погрешности от шага интегрирования в связи с порядком сходимости метода.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4