Автор работы: Пользователь скрыл имя, 20 Ноября 2012 в 13:15, лабораторная работа
Решить данную краевую задачу указанными методами (варианты 1, 3, 5, 7, 9 - метод редукции, варианты 2, 4, 6, 8, 10 – метод дифференциальной прогонки). При решении вспомогательных начальных задач реализовывать алгоритм классического метода Рунге-Кутты (четырехстадийный метод четвертого порядка). Построить графики функций и , а также график приближенного решения . Оформить отчет по лабораторной работе.
Министерство образования и науки Российской Федерации
Федеральное
государственное бюджетное
АМУРСКИЙ ГОСУДАРСТВЕННЫЙ
(ФГБОУ ВПО «АмГУ»)
Факультет математики и информатики
Кафедра математического анализа и моделирования
Специальность 010501 – Прикладная математика и информатика
Отчет
по лабораторной работе № 5 Предиктор-корректорные методы Адамса и Милна.
по дисциплине «Численные методы решения обыкновенных дифференциальных уравнений»
вариант № 8
Исполнитель
студент группы 852 Давыдов А.В.
Руководитель
Благовещенск 2012
Задание для самостоятельной работы:
Решить данную краевую задачу указанными методами (варианты 1, 3, 5, 7, 9 - метод редукции, варианты 2, 4, 6, 8, 10 – метод дифференциальной прогонки). При решении вспомогательных начальных задач реализовывать алгоритм классического метода Рунге-Кутты (четырехстадийный метод четвертого порядка). Построить графики функций и , а также график приближенного решения . Оформить отчет по лабораторной работе.
|
|
Реализуем решение срадствами MATLAB :
clear all;
clc;
a = 0; b = 1;
h_high = 0.1;
x_h_high = a:h_high:b;
dudx = inline('-u^2-2*x*u-x^2');
dvdx = inline('-v*u+2*x*v+x^2-2*x+4')
u = zeros(length(x_h_high),1);
v = zeros(length(x_h_high),1);
u(1) = -1/6 ;
v(1) = -2 ;
i = 1;
while ( x_h_high(i) < b )
k1 = h_high*dudx( u(i), x_h_high(i) );
m1 = h_high*dvdx( u(i), v(i) , x_h_high(i));
k2 = h_high*dudx( u(i)+k1/2,
x_h_high(i)+h_high/2
m2 = h_high*dvdx( u(i)+k1/2, v(i)+m1/2 , x_h_high(i)+h_high/2);
k3 = h_high*dudx( u(i)+k2/2,
x_h_high(i)+h_high/2
m3 = h_high*dvdx( u(i)+k2/2, v(i)+m2/2 , x_h_high(i)+h_high/2);
k4 = h_high*dudx( u(i)+k3/2,
x_h_high(i)+h_high/2
m4 = h_high*dvdx( u(i)+k3/2, v(i)+m3/2 , x_h_high(i)+h_high/2);
u(i+1) = u(i) + 1/6*(k1+2*k2+2*k3+k4);
v(i+1) = v(i) + 1/6*(m1+2*m2+2*m3+m4);
i = i+1;
end
y = zeros(length(x_h_high),1);
y(length(x_h_high)) = (7 + 5*v(length(x_h_high))) / (1 - 5 * u(length(x_h_high)));
i = length(x_h_high);
dydx = inline('u*y+v');
while ( x_h_high(i) > a )
k1 = h_high*dydx(u(i)-h_high/2,v(i)
k2 = h_high*dydx(u(i)-h_high/2,v(i)
k3 = h_high*dydx(u(i)-h_high/2,v(i)
k4 = h_high*dydx(u(i)-h_high/2,v(i)
y(i-1) = y(i) - 1/6*(k1+2*k2+2*k3+k4);
i = i-1;
end
subplot(1,3,1); plot(x_h_high,y,'r', 'LineWidth',2); grid on; title('y(x)');
subplot(1,3,2); plot(x_h_high,u,'r', 'LineWidth',2); grid on; title('u(x)');
subplot(1,3,3); plot(x_h_high,v,'r', 'LineWidth',2); grid on; title('v(x)');
Вывод : В ходе данной лабораторной работы мы научились решать линейные краевые задачи сведением к начальным задачам.
Информация о работе Предиктор-корректорные методы Адамса и Милна