Моделирование физических процессов
Моделирование физических процессов
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
|