Предиктор-корректорные методы Адамса и Милна

Автор работы: Пользователь скрыл имя, 20 Ноября 2012 в 13:15, лабораторная работа

Описание работы

Решить данную краевую задачу указанными методами (варианты 1, 3, 5, 7, 9 - метод редукции, варианты 2, 4, 6, 8, 10 – метод дифференциальной прогонки). При решении вспомогательных начальных задач реализовывать алгоритм классического метода Рунге-Кутты (четырехстадийный метод четвертого порядка). Построить графики функций и , а также график приближенного решения . Оформить отчет по лабораторной работе.

Файлы: 1 файл

Отчёт.docx

— 29.09 Кб (Скачать файл)

Министерство образования и  науки Российской Федерации

Федеральное государственное бюджетное образовательное  учреждение высшего профессионального  образования

АМУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

(ФГБОУ ВПО «АмГУ»)

 

 

Факультет математики и информатики

Кафедра математического анализа  и моделирования

Специальность 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)-h_high/2,y(i));

    

     k2 = h_high*dydx(u(i)-h_high/2,v(i)-h_high/2,y(i)+k1/2);

    

     k3 = h_high*dydx(u(i)-h_high/2,v(i)-h_high/2,y(i)+k2/2);

    

     k4 = h_high*dydx(u(i)-h_high/2,v(i)-h_high/2,y(i)+k3/2);

   

    

    

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

 

Вывод : В ходе данной лабораторной работы мы научились решать линейные краевые задачи сведением к начальным задачам.


Информация о работе Предиктор-корректорные методы Адамса и Милна