ПРИМЕНЕНИЕ СПОСОБА РАСЧЕТА ИНТЕГРАЛОВ НА ЭВМ ПРИ МОДЕЛИРОВАНИИ ХИМИЧЕСКИХ РЕАКЦИЙ. Кононова З.А. Кафедра информатики ФИиСТех ГОУ ВПО ЛГПУ В процессе изучения дисциплины «Компьютерное моделирование в естествознании» рассматриваются не только экологические, биологические и физические модели, но химические. Определенная сложность при написании химических моделей связана с продолжительностью химических процессов: при различных параметрах одна и та же реакция может иметь различное время. Но, с другой стороны, существуют данные экспериментов, по которым можно определить параметры химического процесса. Это направление моделирования имеет наиболее прикладной характер, так как позволяет экстраполировать имеющиеся опытные данные и определить границы процесса, для которых нет экспериментальных значений. Согласно принципу, описанному в статье [2], разработаем математическую модель, компьютерную программу. При разработке программы немалое внимание уделим удобному и понятному интерфейсу. Рассмотрим конкретный пример. В ходе изучения термического разложения динитроксида на золоте при 990 оС получены следующие кинетические данные: время, мин 30 53 100 степень превращения, % 32 50 73 Определить порядок реакции n и константу скорости k с помощью вычислительной машины. Для решения задачи надо подготовить следующие вычислительные блоки: блок, моделирующий собственно реакцию, и блок, воспроизводящий экспериментальную кривую, химическую В уравнении dC kC n dt производим замену: С = С0(1-x), где С0 и преобразуем уравнение следующим образом Очень распространенная задача построения зависимости или определения закона изменения параметров, в данном случае, концентрации реагирующих веществ, по экспериментальным данным. Такая зависимость позволяет впоследствии экстраполировать данные на другие условия эксперимента. Задача сводится к определению константы скорости реакции, построения экспериментальной и теоретической зависимостей, после чего делается вывод об адекватности полученной модели. Чтобы получить линейную зависимость выбираем координаты натуральный логарифм концентрации от времени . После логарифмирования в програме выражение для определения константы скорости примет следующий вид: k:= abs(ln(1-al[3])-ln(1-al[1]))/(tt[3]-tt[1]) Для расчета порядка реакции используется тот же принцип и в программе записывается следующее уравнение n:=100*(ln(al[3])-ln(al[1]))/((ln((1-al[1])/(1-al[3])))*(tt[3]-tt[1])) Как видно из уравнений, для моделирования используются массивы переменных, т.к. в этом случае сохраняются все результаты расчетов. Как было пояснено ранее [2], такая система обрабатывается в компьютерной программе как простой подсчет суммы набора значений (C=C+dC). Следующим шагом надо определиться с условиями работы цикла для расчета сумм. Так как заранее время реакции неизвестно, условие должно быть универсальным. Такими условиями могут быть либо снижение концентрации практически до нуля (а точнее - до определенной точности, например 0.001), либо установления практически неизменяемой концентрации (когда разница между предыдущим и текущим значениями не превышает заданной точности). Приходим к необходимости применения в программе для моделирования протекания химических реакций конструкций циклов с условиями и массивов, объявленных как глобальные переменные для использования данных расчетов в разных частях программы. Так как данный процесс протекает необратимо в сторону уменьшения исходного продукта, то условием цикла является снижение концентрации исходного компонента до значения заданной точности. В данном примере приводятся графические зависимости для определения константы скорости (k), порядка реакции (n), экспериментальная (дискретная) кривая изменения концентрации исходного компонента и теоретическая (непрерывная) зависимость изменения концентрации. Надо напомнить, что целью данного курса («Компьютерное моделирование в естествознании») является не точные модели живой или неживой природы, а получение начальных знаний и навыков моделирования. В результате построенной модели можно сделать вывод об адекватности модели. В качестве среды проектирования выбран Delphi версии 7. Такой выбор объясняется большими возможностями языка Object Pascal, возможностью его интеграции с системой Windows в части визуализации работы программы. В данном примере для удобства были выведены на форму экспериментальные значения, экспериментальная и теоретическая зависимости изменения концентрации исходного продукта выведены отдельно от зависимостей для определения константы скорости и порядка реакции. Ниже приводятся код программы, спроектированная форма и фрагменты работающей программы (рис.1-4). unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Math, ExtCtrls, TeeProcs, TeEngine, Chart, Series; type TForm1 = class(TForm) Memo1: TMemo; Chart1: TChart; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Chart2: TChart; Edit2: TEdit; Label6: TLabel; Series2: TFastLineSeries; Edit3: TEdit; Label7: TLabel; Edit4: TEdit; Label8: TLabel; Memo2: TMemo; Series4: TFastLineSeries; Memo3: TMemo; Memo4: TMemo; Series3: TLineSeries; Series1: TLineSeries; procedureFormCreate(Sender: TObject); {вывод на экран экперимен-тальных данных и построение полулогарифмической зависимости} procedure Button2Click(Sender: TObject); {очисткатекстовыхполей} procedure Button3Click(Sender: TObject); {очисткаграфиков} procedure Button1Click(Sender: TObject); {основнаяпрограмма} private { Private declarations } public { Public declarations } end; var Form1: TForm1; i:integer; tt,al:array [0..3] of real; k,dt,t,c,n:real; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin tt[0]:=0; al[0]:=0; tt[1]:=30; al[1]:=0.32; tt[2]:=53; al[2]:=0.5; tt[3]:=100; al[3]:=0.73; memo1.Clear; memo2.Clear; memo3.Clear; memo4.Clear; for i:=0 to 3 do begin memo1.Lines[0]:=memo1.Lines[0]+' '+floattostr(tt[i]); memo2.Lines[0]:=memo2.Lines[0]+' '+floattostr(al[i]); series1.AddXY(tt[i],1-al[i],''); series2.AddXY(tt[i],Ln(1-al[i]),'') end; k:= abs(ln(1-al[3])-ln(1-al[1]))/(tt[3]-tt[1]); edit2.Text:=floattostr(k); n:=100*(ln(al[3])-ln(al[1]))/((ln((1-al[1])/(1-al[3])))*(tt[3]-tt[1])); edit3.Text:=floattostr(n); memo3.Lines[0]:='зеленая - эксперимент, красная - расчет'; memo4.Lines[0]:='зеленая -Ln(1-al[i]), красная - 1-al[i] '; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=''; edit4.text:=''; end; procedure TForm1.Button3Click(Sender: TObject); begin series3.Clear; series4.Clear; end; procedure TForm1.Button1Click(Sender: TObject); begin c:=strtofloat(edit1.text); dt:=strtofloat(edit4.text); t:=0; while c>0.001 do begin series3.AddXY(t,c,''); t:=t+dt; c:=c-k*power(c,n)*dt; end; c:=strtofloat(edit1.text); for i:=0 to 3 do series4.AddXY(tt[i],c*(1-al[i]),''); end; end. Рис. 1. Исходная форма. Рис. 2 Окно программы с расчетом константы скорости (k) и порядка реакции (n) и ввод данных с клавиатуры Рис. 3 Рабочее окно с экспериментальной и теоретической зависимостями. Рис. 4 Рабочее окно с вводом новых данных и с экспериментальной и теоретической зависимостями. Используемая литература 1. В.А.Кудрявцев, Б.П.Демидович. Краткий курс высшей математики. Издание седьмое, исправленное. Москва, «Наука». Главная редакция физикоматематической литературы. 1989. 656 с. 2. З. А. Кононова Расчет интегралов на ЭВМ. Проблемы непрерывного образования: проектирование, управление, функционирование. Материалы международной научно-практической конференции г. Липецк 19-20 мая 2008 г. Ч. III. Липецк. 2008. С 135