Курсовая работа: Решение систем дифференциальных уравнений методом Рунге - Кутты 4 порядка
Рассмотрим
процесс подробнее. Вещество А на протяжении всего процесса расходуется на
образование веществ В и С. Концентрации вещества А в начальный момент времени
расходуется быстрее, чем концентрации его же в конце процесса. Это обусловлено
тем, что скорость химической реакции зависит от концентрации реагирующего
вещества. Производная имеет знак «минус». Это говорит о том, что вещество
расходуется. Следовательно, чем выше концентрация вещества, вступающего в
процесс, тем выше скорость его реагирования с другими веществами. Вещества В и
С образуются пропорционально, так как, исходя из кинетической схемы процесса и
значений констант скоростей химической реакции, видно, что образование этих
веществ и расходование этих веществ, одинаково. Производная имеет
знак «плюс». Это говорит о том, что вещество образуется.
График. 4

Это видно
также и по результатам расчета, на протяжении всего времени исследования
процесса концентрации и скорости веществ В и С одинаковы. В этом можно
убедиться по виду графической зависимости концентрации веществ В и С от
времени.
Можно сказать, что процесс протекает в сторону
увеличения концентрации веществ В и С и уменьшения концентрации вещества
А. Процесс будет протекать до момента установления равновесия, но в данном
случае равновесие не установлено, так как вещества продолжают расходоваться и
образовываться. На протяжении всего процесса ни одно из образующихся веществ не
поменяло знак производной. Это говорит о том, что процесс протекает в одну
сторону.
9. Инструкция
к программме
Итак,
программа состоит из 3 основных процедур:
Init -
процедура инициалиации, включающую в себя ввод данных;
Run -
процедура вычисления и обработки результатов, включает в себя вызов двух
вспомогательных процедур Difur, RK-4, Stroka, первая из
которых отвечает за вычисление, а последняя - за вывод результатов в файл в
табличном виде;
Done -
процедура подготовки к выходу из программы;
и трех
вспомогательных:
Difur -
процедура вычисления производных (изменение концентрации веществ за единикцу
времени )
RK-4 -
используя значения производных, вычисленных процедурой Difur, вычисляет
последущие концентрации веществ методом Рунге-Кутта
Stroka -
процедура вывода результата в файл в табличном виде
Рассмотрим
все эти процедуры поподробнее:
Процедура
INIT:
В данной
процедуре задействованы операторы ввода/вывода Wite/Read, оператор
модуля Crt - CrlScr - очистка экрана, файлового ввода/вывода - Reset/Rewrite
– открытие файла для чтения и создание нового файла, соответственно. Данная
процедура выполняет функцию инициализации программных данных, считывание данных
из файла in.dat, создание, открытие на запись файла out.rez и
запись в него шапки таблицы результатов.
Процедура RUN:
![Подпись: PROCEDURE RUN; BEGIN X:=Xn; dX:=0.05; REPEAT IF (ABS(x-p)<eps) THEN BEGIN Difur; sum:=C[1]+C[2]+C[3]; STROKA; p:=p+dp; END; FOR i:=1 TO n DO Cpr[i]:=C[i]; RK_4; X:=X+dX; UNTIL(X>Xk); WRITELN(' - done.'); END; ](/image/66536_21_1.png)
В данной
процедуре задействованы операторы цикла Repeat/Until, и For/Do c
операторами условного перехода IF/Then. В зависимости от условий
вызываются процедуры Difur и Strok. В теле цикла постоянно вызывается процедура
RK-4 вызывающая
4 раза функцию Difur.
Процедура DONE:

В данной
процедуре задействованы оператор работы с файлами Close, который закрывает
файлы с исходными данными и файл с полученными в резуультате вычислений
результатами.
Процедура DIFUR:
![Подпись: PROCEDURE Difur; BEGIN dC[1]:=C[3]*k2+C[2]*k4-C[1]*k1-C[1]*k3; dC[2]:=C[1]*k3-C[2]*k4; dC[3]:=C[1]*k1-C[3]*k2; END; ](/image/66536_23_1.png)
Данная
процедура вычисляет производную изменения концентрации везества за единицу
времени.
Процедура STROKA:
![Подпись: PROCEDURE STROKA; BEGIN WRITE(f2,'¦',x:4:1,'¦',c[1]:7:3,'¦',c[2]:7:3,'¦',c[3]:7:3,'¦'); WRITE(f2,sum:3:0,'¦',dc[1]:7:3,'¦',dc[2]:7:3,'¦',dc[3]:7:3,'¦'); WRITELN(f2); END; ](/image/66536_24_1.png)
Данная
процедура с помощью оператора вывода WRITE записывает результаты в файл,
соответствующий файловой переменной F2, назначенной коммандой ASSIGN в
процедуре INIT
![Подпись: PROCEDURE RK_4; BEGIN Difur; FOR i:=1 TO n DO BEGIN r1[i]:=dC[i]; C[i]:=cPR[i]+r1[i]*(dX/2); END; Difur; FOR i:=1 TO n DO BEGIN r2[i]:=dC[i]; C[i]:=cPr[i]+r2[i]*(dX/2); END; Difur; FOR i:=1 TO n DO BEGIN r3[i]:=dC[i]; C[i]:=cPR[I]+r3[i]*dX; END; Difur; FOR i:=1 TO n DO r4[i]:=dC[i]; FOR i:=1 TO n DO rSR[i]:=((r1[i]+r2[i])*(r2[i]+r3[i])*(r3[i]+r4[i]))/6; END; ](/image/66536_25_1.png)
Процедура RK-4:
Данная
процедура, используя вызовы процедур Difur, а также циклы операторы
цикла FOR, вычисляет последуущие концентрации веществ по предидущим
точкам.
Программа представляет собой
2 файла – файл с исходным текстом на языке Паскаль smith.pas и
исполняемый модуль smith.exe скомпилированный компилятором TNT Pascal
3.25 фирмы Layer`s Ins.
Исполняемый модуль программы
предназначен для запуска в операционных системах: MS Dos, Windows95, Windows
NT, OS/2, а также в X-windows под Linux (при
наличии эмулятора )
Для нормальной работы
программе необходимо 640 кb «нижней» памяти и 20 kb дискового пространства.
Согласитесь – требования минимальные, учитывая то, что сама программа абсолютно
не требовательна к процессору.
В процессе работы программа
считывает данные из файла in.dat и записывает результаты работы в файл out.rez
в табличном виде. Исходный файл программма открывает стандартными средствами
ОС, не проверяя его наличие перед работой, поэтому, если данный файл не будет
доступен в каталоге, в котором расположена программа, компилятор выдаст
сообщение об ошибке. Если Вы после запуска программы увидели что-то типа
«Runtime error 202 at 0000:0A86» - это всего лишь значит, что программа не
смогла найти файл с исходными данными в текущем каталоге. Если Вы забыли
поместить его туда, скопируйте этот файл в каталог с программой и
запустите исполняемый модуль еще раз. Если данный файл у Вас отсутствует,
Вам прийдется сделать его самому.
Для этого в любом текстовом
редакторе наберите 3 выделенных строчки и сохраните созданный файл с именем in.dat
100 0 0
0.2 0.1 0.2 0.1
0 10 0.5 3 0.05 0
Создав файл и скопировав его к исполняемому модулю
программы, запустите исполняемый модуль еще раз.
В процессе работы программа будет выдавать сообщения
об успешном окончании каждого блока. Если все прошло нормально, то на экране
своего компьютера Вы увидите следуще сообщения:
Step 1: Read data from file : in.dat - done.
Step 2: Write header to file : out.rez - done.
Step 3: Calculating data and writting
results to file : out.rez - done.
Страницы: 1, 2, 3, 4 |