Автор работы: Пользователь скрыл имя, 20 Марта 2014 в 18:57, курсовая работа
В различных сферах технических и даже экономических отраслей приходится достаточно часто сталкиваться с математическими задачами, для которых не представляется возможным описать точное решение классическими методами или это решение крайне трудно реализовать на практике.
Разрабатываемые вычислительной математикой численные методы носят в основном ориентировочный характер, однако они позволяют получить итоговый числовой результат с достаточной для практических нужд точностью. Численные методы представляют собой алгоритмы вычисления приблизительных значений искомого решения на определенной сетке значений аргумента. При определенных условиях значения аргумента могут являться точными.
x_end - точка, в которой необходимо вычислить результат
n - количество шагов для вычисления результата }
var
i : word; { счетчик цикла }
x,h : extended; { текущая точка и длина шага }
res : extended; {переменная для накопления конечного результата функции }
k1,k2,k3,k4: extended; {вспомогательные переменные вычисления результата }
begin
h:= (x_end - x0_)/n; { Находим длину шага }
res:= y0_; { устанавливаем начальные значения}
x:=x0_;
writeln(F1,x:0:3,' ',res:0:3); {Вывод расчитанных значений в файл}
for i:=1 to n do
begin { вычисляем результат по методу Рунге-Кутта 4го порядка }
k1:=f(x,res);
k2:=f(x+h/2,res+h*k1/2);
k3:=f(x+h/2,res+h*k2/2);
k4:=f(x+h,res+h*k3);
res:=res+h*(k1+2*k2+2*k3+k4)/
x:=x+h; { переходим к следующей точке }
writeln(F1,x:0:3,' ',res:0:3); {Вывод расчитанных значений в файл}
end;
RungeKutt:=res; { присваиваем конечный результат функции }
end;
begin
ClrScr;
assign(F1,'C:\runge.txt'); {Настройка записи в текстовый файл}
rewrite(F1);
writeln('Численное решение дифференциальных уравнений:');
writeln('Алгоритм Рунге-Кутты 4-го порядка');
writeln(' Tdy(y)/dt + y(t)=kx T=2; k=1');
writeln;
{Считывание данных для расчета}
write('Введите x0='); readln(x0);
write('Введите x_end='); readln(x_end);
write('Введите n='); readln(n);
write('Введите y0='); readln(y0);
writeln;
writeln(' x y'); {Вывод "шапки" таблицы на экран}
writeln(F1,' x y'); {Вывод "шапки" таблицы в фай}
writeln('n=',n, ' Результат: ',RungeKutt(func, x0, x_end, y0, n):5:5);
Close(F1);
readln;
end.
В процессе выполнения курсовой работы закреплены теоретические навыки и знания в вопросе численного решения дифференциальных уравнений на основе метода Рунге-Кутты, приобретены основные навыки составления и отладки процедур и функций программ для решения дифференциальных уравнений на основе метода Рунге-Кутты.
При реализации на практике задания для курсовой работы, заключающегося в решении дифференциального уравнения методом Рунге-Кутты, была составлена и отлажена программа.
Установлено, что при задании определенного интервала значений шага интегрирования ошибка интегрирования уменьшается с уменьшением шага. Однако нельзя обойти вниманием тот факт, что для довольно малых значений с уменьшением шага интегрирования ошибке свойственно увеличивается. Это связано с лавинообразным ростом числа требуемых для получения решения вычислений и c увеличением ошибки вычислений.
Информация о работе Численные методы решения дифференциального уравнения