Моделирование физических процессов

ГОУ ВПО “Сибирский государственный университет телекоммуникаций и информатики”

Уральский технический институт связи и информатики (филиал)

Кафедра информационных систем и технологий























Моделирование физических процессов

























Екатеринбург 2009


Оглавление



Введение

Математическая модель

Описание теории применяемой к задаче

Блок – схемы

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

Фотография графика

Решение задачи в MathCAD

Вывод

Литература


Введение



Благодаря данной курсовой работе, я получу основные навыки: в моделирование физических процессов, грамотного распределения информации и грамотного использования возможностей языка программирования Pascal.

Курсовая работа является первой объёмной самостоятельной работой для меня в роли программиста. Эта работа завершает подготовку по дисциплине “Программирование на языках высокого уровня” и становится базой для выполнения последующих курсовых проектов по специальным дисциплинам. После выполнения данной курсовой работы, я рассчитываю научиться строить графики функций, работать в MathCAD, и понимать геометрический смысл методов: Эйлера модифицированного и Рунге-Кутта.


Математическая модель, постановка задачи



Обсчитать первую точку методами Рунге – Кутта и Эйлера модифицированного.

Построить график к первой точке.

Составить блок - схемы.

Написать программу.

Построить график в MathCAD.

Сделать выводы



Описание теории применяемой к задаче



Метод Рунге – Кутта. Теория:

Пусть дано дифференциальное уравнение первого порядка



 = 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, …

 - узлы сетки, 

 – значение интегральной функции в узлах.

Обозначим точки: A(,), C(+h/2, +h/2*f(,)) и B(,).

Через точку 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. Еще я понял, как можно строить различный функции по точкам, с помощью циклов. Так же я понял, как нужно правильно масштабировать графики, в зависимости от заданной функции. Вследствие того, что данная курсовая, была для меня первой серьезной и объемной работой, я научился оформлять серьезные работы.


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



	Демидович Б.П., Марон И.А., Шувалова Э.З., Численные методы анализа: Физматгиз, 1963.

	Немюгин С.А. turbo Pascal. Практикум – СПБ.: Питер, 2009.

	Немюгин С.А. turbo Pascal. Программирование на языке высокого уровня: Учебник для вузов. – СПБ.: Питер, 2005.

	М.М. Боженова, Л.А.Москвина.

	Практическое программирование. Приемы создания программ на языке Паскаль.

	Основные процедуры и функции модуля graph: http://rsc-team.ru/cgi-bin/index.pl?rzd=2&group=lection&ind=21

2