Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа - Метод Рунге-Кутта.doc
Скачиваний:
288
Добавлен:
02.05.2014
Размер:
219.65 Кб
Скачать

Заключение

В ходе выполнения курсовой работы выполнена цель: найти приближенное решение обыкновенного дифференциального уравнения 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]).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис.

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

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.

22