Моделирование физических процессов
Математическая модель, описание теории, применяемой к задаче. Обсчет точек методом Рунге-Кутта, модифицированным методом Эйлера, схема и листинг программы. Решение дифференциальных уравнений и построение графиков, решение уравнений в среде Turbo Pascal.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.11.2009 |
Размер файла | 76,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
13
ГОУ ВПО “Сибирский государственный университет телекоммуникаций и информатики”
Уральский технический институт связи и информатики (филиал)
Кафедра информационных систем и технологий
Моделирование физических процессов
Екатеринбург 2009
Оглавление
Введение
Математическая модель
Описание теории применяемой к задаче
Блок - схемы
Листинг программы
Фотография графика
Решение задачи в MathCAD
Вывод
Литература
Введение
Благодаря данной курсовой работе, я получу основные навыки: в моделирование физических процессов, грамотного распределения информации и грамотного использования возможностей языка программирования Pascal.
Курсовая работа является первой объёмной самостоятельной работой для меня в роли программиста. Эта работа завершает подготовку по дисциплине “Программирование на языках высокого уровня” и становится базой для выполнения последующих курсовых проектов по специальным дисциплинам. После выполнения данной курсовой работы, я рассчитываю научиться строить графики функций, работать в MathCAD, и понимать геометрический смысл методов: Эйлера модифицированного и Рунге-Кутта.
Математическая модель, постановка задачи
1. Обсчитать первую точку методами Рунге - Кутта и Эйлера модифицированного.
2. Построить график к первой точке.
3. Составить блок - схемы.
4. Написать программу.
5. Построить график в MathCAD.
6. Сделать выводы
Описание теории применяемой к задаче
Метод Рунге - Кутта. Теория:
Пусть дано дифференциальное уравнение первого порядка
= f(x, y), с начальным условием y() = .
Выберем шаг h и введём обозначения:
= + i*h, = y(), где
i = 0, 1, 2, …
- узлы сетки,
- значение интегральной функции в узлах.
Аналогично Модифицированного метода Эйлера решаем дифференциальное уравнение. Отличие состоит в делении шага на 4 части.
Согласно методу Рунге - Кутта 4 порядка, последовательные значения искомой функции y определяются по формуле: = + ?y, где
? = (+ 2 + 2 + ), I = 0, 1, 2, …
А числа , , , на каждом шаге вычисляются по формулам:
h* f(, )
, )
, )
h* f(, +)
Обсчёт первой точки методом Рунге - Кутта:
Заданно уравнение движения материальной точки: = x*sin(t), с условием
t 0 =1, t к =1.4, h = 0.05, x 0 =2. Необходимо построить физическую и математическую модель движения.
tg(a) = x*sin(t) = 2*sin(1)= 1.6829
/(a) = 1.0346
t(b) = 1.6829 + 0.125 = 1.8079
x(b) = 2+0.125*1.8079 = 2.2259
tg(b) = 2.2259*sin(1) = 1.8730
/(b) = 1.0803
t(c) = 1.6829 + 0.025 = 1.7079
x(c) = 2 + 0.025*(1.7079) = 2.0426
tg(c) = 2.0426*sin(1) = 1.7187
/(c) = 1.0438
t(d) = 1.6829 + 0.0375 = 1.7204
x(d) = 2 + 0.0375*1.7204 = 2.0645
tg(d) = 2.0645*sin(1) = 1.7372
/(d) = 1.0484
Метод Эйлера модифицированный
Теория:
Пусть дано дифференциальное уравнение первого порядка
= f(x, y), с начальным условием y() = .
Выберем шаг h и введём обозначения:
= + i*h, = y(), где
i = 0, 1, 2, …
- узлы сетки,
- значение интегральной функции в узлах.
1) Обозначим точки: A(,), C(+h/2, +h/2*f(,)) и B(,).
2) Через точку A проведем прямою под углом a, где
Обсчёт точки модифицированным методом Эйлера
Заданно уравнение движения материальной точки: = x*sin(t), с условием
t 0 =1, t к =1.4, h = 0.05, x 0 =2. Необходимо построить физическую и математическую модель движения.
A(1; 2)
tg(a) = x*sin(t) = 2*sin(1)= 1.682
/(a) = 1.034
= + * f(, )
= 2 + 0.025*(1.6829) = 2.042
C(0.025; 2.042)
tg(c) = x*sin(t) = 2*sin(1.025) = 1.709
/(c) = 1.041
= +h*f(+ ; +*f(;))
= 2 + 0.05*(1.041) = 2.05205
Листинг программы:
Uses crt,graph,graph0;
const
h=0.05;
var
gd,gm,n,i,j:integer;
a,b,k1,k2,k3,k4,d,g,c:real;
Xf:array[1..50] of integer;
Yf:array[1..50] of integer;
begin
clrscr;
a:=0;
b:=1.4;
n:=abs(round((a-b)/h));
readln;
writeln(' x= y= ');
writeln;
c:=2;
d:=0;
for j:=1 to n do
begin
k1:=h*c*sin(d);
k2:=h*(c+0.5*k1)*sin(d+0.5*h);
k3:=h*(c+0.5*k2)*sin(d+0.5*h);
k4:=h*(c+k3)*sin(d+h);
g:=k1+2*k2+2*k3+k4;
Xf[j]:=round(100*d);
Yf[j]:=round(100*c);
if (j=1) or (j=2) or (j=3) or (j=4)
or (j =5) or (j=6) or (j=7) or (j=8) or (j=9) then
begin
write(' ');
write(j);write('. '); write(d);write(' ');writeln(c);
delay(3000);
end
else
begin
write(j);write('. '); write(d);write(' ');writeln(c);
delay(2000)
end;
d:=d+h;
c:=c+g/6;
end;
readln;
gd:=detect;
init('c:\tp70\bgi');
setbkcolor(15);
setcolor(3);
line(0,240,640,240);
line(320,0,320,480);
for i:=1 to n do
begin
if i+1<=n then
begin
setlinestyle(0,0,3);
setcolor(7);
line(320+Xf[i],Yf[i]-160,320+Xf[i+1],Yf[i+1]-160);
putpixel(460,240,15);
putpixel(320,40,15);
putpixel(Xf[i]+320,Yf[i]-160,0);
end;
end;
readln;
closeGraph;
end.
Таблица измерений в Pascal, Mathcad:
t |
X1 |
X2 |
Xm |
|
2 |
2,077 |
|||
2,1 |
2,16 |
|||
2,2 |
2,247 |
|||
2,3 |
2,341 |
|||
2,4 |
2,44 |
|||
2,5 |
2,545 |
|||
2,6 |
2,656 |
|||
2,7 |
2,773 |
|||
2,8 |
2,896 |
X1 - метод Эйлера модифицированный, X2 - метод Рунге - Кутта, Xm - решение в Mathcad
Решение в Mathcad.
Вывод
В результате проделанной работы, я научился решать дифференциальные уравнения и строить к ним график, еще я научился решать такие уравнения в среде Turbo Pascal. Узнал, как решать различные уравнения в MathCAD. Еще я понял, как можно строить различный функции по точкам, с помощью циклов. Так же я понял, как нужно правильно масштабировать графики, в зависимости от заданной функции. Вследствие того, что данная курсовая, была для меня первой серьезной и объемной работой, я научился оформлять серьезные работы.
Список литературы
1. Демидович Б.П., Марон И.А., Шувалова Э.З., Численные методы анализа: Физматгиз, 1963.
2. Немюгин С.А. turbo Pascal. Практикум - СПБ.: Питер, 2009.
3. Немюгин С.А. turbo Pascal. Программирование на языке высокого уровня: Учебник для вузов. - СПБ.: Питер, 2005.
4. М.М. Боженова, Л.А.Москвина.
5. Практическое программирование. Приемы создания программ на языке Паскаль.
6. Основные процедуры и функции модуля graph: http://rsc-team.ru/cgi-bin/index.pl?rzd=2&group=lection&ind=21
Подобные документы
Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.
курсовая работа [929,7 K], добавлен 06.01.2013Принцип и значение метода Эйлера для расчета дифференциальных уравнений. Анализ его геометрического смысла. Улучшение метода за счет аппроксимации производной. Разработка блок-схем и программы на языке Turbo Pascal для проверки методов интегрирования.
курсовая работа [385,7 K], добавлен 15.06.2013Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.
курсовая работа [226,6 K], добавлен 05.04.2013Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.
курсовая работа [2,7 M], добавлен 05.11.2011Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Суть метода Рунге-Кутта и его свойства. Решение дифференциальных уравнений первого порядка. Вычислительный блок Given/Odesolve. Встроенные функции rkfixed, Rkadapt, Bulstoer. Решения линейных алгебраических уравнений в среде MathCad и Microsoft Excel.
курсовая работа [1,1 M], добавлен 02.06.2014Решение дифференциального уравнения с помощью численных методов (Рунге-Кутта и Эйлера модифицированного). Особенности построения графиков в программе Microsoft Visual Basic 10 с использованием ответа задачи, который имеет незначительную погрешность.
курсовая работа [1017,3 K], добавлен 27.05.2013