Постановка задачи и разработка алгоритма решения задачи

Найти приближенное решение обыкновенного дифференциального уравнения y’=f(x,y), y(a)=y0 методом Рунге-Кутта пятого порядка на отрезке [a,b] с заданным постоянным шагом h. Значение функции y(x) в узловых точках вычисляются по формуле:

Y [i+1]=y[1]+h/6(K[i]+2K[2]+2K[3]+K[4]), i=0,1,2,…

Где K[1]=f(x[i],y[i]);

K[2]=f(x[i]+h/2, y[i]+h/2K[1]);

K[3]=f(x[i]+h/2, y[i]+h/2K[2]);

K[4]=f(x[i]+h, y+hK[3]).

Основная блок схема

           
  Постановка задачи и разработка алгоритма решения задачи - student2.ru
 
    Постановка задачи и разработка алгоритма решения задачи - student2.ru
      Постановка задачи и разработка алгоритма решения задачи - student2.ru
 

Procedure RK4

 
  Постановка задачи и разработка алгоритма решения задачи - student2.ru

Procedure der

       
  Постановка задачи и разработка алгоритма решения задачи - student2.ru
 
    Постановка задачи и разработка алгоритма решения задачи - student2.ru

Введены данные (Enter = a, b, h1,k). Программа выводит y (решение) с постоянным шагом h.

Выбор состава технических и программных средств.

Для решения задачи «методом Рунге-Кутта» используется компьютер с минимальными требованиями:

1.Процессор - Intel 166.

2. ОЗУ 16Мб, видеокарта 8Мб.

3.Операционная система MS – DOS.

4.Винчестер (жесткий диск)-1Гб.

Вызов и загрузка программы.

Данная программа находится на диске А(floppy disk).

Для запуска необходимо вставить floppy disk в дисковод.

На рабочем столе открываем «Мой компьютер», диск А, файл «Rkutt.exe»

Тестирование программы

Программа работает на языке Turbo Pascal 7.0, по методу Рунге-Кутта.

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

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

Данная программа приближённо вычисляет обыкновенные дифференцированные уравнения по методу Рунге-Кутта. Вводятся исходные данные (a,b,h1,k) и в результате появляются результативные данные (приложение №1).

Заключение

В ходе выполнения курсовой работы выполнена цель: найти приближенное решение обыкновенного дифференциального уравнения y’=f(x,y), y(a)=y0 методом Рунге-Кутта пятого порядка на отрезке [a,b] с заданным постоянным шагом h. Значение функции y(x) в узловых точках вычисляются по формуле:

Y [i+1]=y[1]+h/6(K[i]+2K[2]+2K[3]+K[4]), i=0,1,2,…

Где K[1]=f(x[i],y[i]);

K[2]=f(x[i]+h/2, y[i]+h/2K[1]);

K[3]=f(x[i]+h/2, y[i]+h/2K[2]);

K[4]=f(x[i]+h, y+hK[3]).

С использованием языка программирования «Turbo Pascal» было найдено решение обыкновенного дифференциального уравнения. Вычисление функции, используемую в задаче, оформила в виде подпрограммы, так, чтобы можно было представить любую функцию, не меняя самой программы.

Список литературы

1.Бахвалов Н.С. Численные методы учебник для ВЗУов М., Наука, 1978

2.Воробьева Г.Н. Данилова А.Н. Практикум по численным методам: М., учебник 1987

3.Демидович Б.П. и Марон И.А. Основы вычислительной математики учебник для ВЗУов издание четвертое М., Наука, 1970

4.Каханер Дэвид. Численные методы и программное обеспечение учебник для ВЗУов М., Мир, 1998

5.Немнюгин С.А. Turbo Pascal.Практикум,учебник для ВУЗов, второе издание, С.-П., издание Питер. 2003.

6.Немнюгин С.А. Turbo Pascal. Программирование на языке высокого уровня. Учебник для ВУЗов, второе издание. С.–П., издание Питер, 2003.

7. Новикова Ф.А Дискретная математика для программистов. С.-П., издание Питер 2001.

8. Рюттен Т.Г. Франкен П.Р. Turbo Pascal 7.0 – К.: Торгово-издательское бюро BHV, 1996 – 448 С.: ил.

9.Турчак Л.И. Основы численных методов учебник для ВЗУов М., Знание, 1987

10. Фараонов В.В. Турбо Паскаль (в 3-х книгах). Книга 2. Библиотека Turbo Vision.-М.: Учебно-инжерненый центр МВТУ-ФЕСТО ДИДАКТИК, 1993.

Приложение: форма окна

Borland Pascal Version 7.0 Copyright (c) 1983,92 Borland International

Постановка задачи и разработка алгоритма решения задачи - student2.ru

Рис.
Листинг программы:

PROGRAM RKutt;

uses crt;

const

nmax=8;

type

vec=array[1..nmax] of Real;

var

h,a,b:Integer; i:Integer;

procedure der(x:Real; y:vec; var f:vec);

var

ki:array[1..5] of real;

begin

for i:=1 to 5 do

f[i]:=(h/6)*ki[i]+2*ki[2]+2*ki[3]+ki[4];

y[i+1]:=y[1]+h*y[i];

y[i]:=x*x+5;

end;

procedure RK4(n:Integer;x,h:Real; var y:vec);

var

i,j:Integer;

h1,h2,q:Real;

y0,y1,f:Vec;

begin

h1:=0;h2:=h1/2;

for i:=1 to n do begin

y0[i]:=y[i];

y1[i]:=y[i];

end;

for j:=1 to 4 do begin

der(x+h1,y,f);

if j=3 then h1:=h else h1:=h2;

for i:=1 to n do begin

q:=h1*f[i];

y[i]:=y0[i]+q;

y1[i]:=y1[i]+q/3;

end;

end;

for i:=1 to n do

y[i]:=y1[i];

end;

var

k,n:Integer;h1,y1:Real;

k1,k2,k3,k4:Integer;

x,ki:Array[1..5] of real;

y:Array[1..5] of real;

begin

writeln('Enter a=');

Readln(a);

writeln('Enter b=');

Readln(b);

writeln('Enter h1=');

Readln(h1);

writeln('Enter k=');

Readln(k);

n:=3;

h1:=a;

ki[1]:=k;

for i:=1 to n do begin

y[i+1]:=y1+(h1/6)*(Ki[i]+2*ki[2]+2*ki[3]+ki[4]);

writeln(y[i+1]);

end;

while h1<=b do begin

h1:=h1+h;

end;

Readln;

end.

Наши рекомендации