Численные методы решения дифференциального уравнения
Курсовая работа, 20 Марта 2014, автор: пользователь скрыл имя
Описание работы
В различных сферах технических и даже экономических отраслей приходится достаточно часто сталкиваться с математическими задачами, для которых не представляется возможным описать точное решение классическими методами или это решение крайне трудно реализовать на практике.
Разрабатываемые вычислительной математикой численные методы носят в основном ориентировочный характер, однако они позволяют получить итоговый числовой результат с достаточной для практических нужд точностью. Численные методы представляют собой алгоритмы вычисления приблизительных значений искомого решения на определенной сетке значений аргумента. При определенных условиях значения аргумента могут являться точными.
Файлы: 1 файл
Курсовая.doc
— 461.50 Кб (Скачать файл)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 увеличением ошибки вычислений.
Список использованных источников
- Самарский А.А., Гулин А.В. Численные методы – М.: Наука, ГРФМЛ, 1989.- 432с.
- Бахвалов Н.С. Численные методы – М.: Наука, ГРФМЛ,1987.-600 с.
- Маликов В.Т. Вычислительные методы и применение – Киев: В.Ш.-1989.-213 с.
- 1. Мудров А.Е.Численные методы для ПЭВМ на языках Паскаль, Фортран и Бейсик – Томск, МП “Раско”, 1991 г.