Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений)




Скачать 113.69 Kb.
НазваниеЛабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений)
Дата публикации06.07.2013
Размер113.69 Kb.
ТипЛабораторная работа
zadocs.ru > Математика > Лабораторная работа


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное агентство по образованию
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра нефтехимии и химической технологии










Лабораторная работа № 2

подбор константы скорости химичесеой реакции

(решение математических уравнений в форме дифференциальных уравнений)

Вариант 24

Выполнил ст. гр. ТС-О3-01 И.В. Хлебникова

Принял, проф. Н.А. Самойлов


Уфа – 2007
^

1Цели и задачи лабораторной работы


  • Закрепить методику формирования математической модели кинетики химической реакции в форме дифференциальных уравнений

  • Рассмотреть принципы компьютерного подбора численных значений константы скорости реакции по исходным экспериментальным данным кинетического исследования

  • Уяснить особенности алгоритма численного решения математической модели в форме дифференциальных уравнений методом Эйлера.
^

2Исходные Данные


В ходе провндения химической реакции получены следующие кинетические кривые для компонентов А, В, С. В ходе моделирования процесса предложить и обосновать ктнетику реакции и рассчитать константы скоростей частных реакций. Концентрации СА0=400 г/л, СВ0=200 г/л.

^

3 Анализ исходных данных и ход работы




  1. Экспериментальные кинетические кривые

Кинетический кривые, полученные в ходе эксперимента, показаны на рисунке 1. Из условия постоянства массы можно заключить, что на диаграмме не изображен четвертый компонент. Построим его график. Диаграмма примет вид, показанный на рисунке 2.



  1. Дополненная диаграмма

По имеющемуся набору кривых определим вид реакции. Количество исходных веществ и продуктов реакции одинаково, материальный баланс сходиться.

Из анализа графических данных делаем вывод, что в системе протекают обратимые реакции превращения вещества А в вещество D (константы скорости реакции k1 и k2) и вещества В в вещество С (константы скорости реакции k3 и k4). Составим систему дифференциальных уравнений, описывающую эти равновесные превращения.



Решая данную систему методом Эйлера, находим путем подбора значения констант k1, k2, k3, k4. После этого получаем зависимости

CA = F(),

CB = F(),

CC = F(),

CD = F().

Аналитические зависимости должны хорошо аппроксимировать опытные данные.
^

4Алгоритмы методов расчета


4.1Метод Эйлера

4.1.1Блок-схема алгоритма

4.1.2Список идентификаторов

Смысл переменной

Обозначение

В алгоритме

В программе

Исходные данные

Константы скорости реакции

Шаг интегрирования

Таблица реперных точек

Количество точек


k1, k2



T

n


k1, k2

dt

C

n

Промежуточные данные

Текущее значение времени

Текущая концентрация вещества А

Текущая концентрация вещества В

Предыдущая концентрация вещества А

Предыдущая концентрация вещества В


T

Ca

Cb

Pca

Pcb


T

ca

cb

pca

pcb

Выходные данные

Таблица значений функции

T

C

4.2Метод двойного просчета

4.2.1Блок-схема алгоритма

4.2.2Список идентификаторов

Смысл переменной

Обозначение

В алгоритме

В программе

Исходные данные

Константы скорости реакции

Допустимая погрешность

Таблица реперных точек

Количество точек


k1, k2

e

T

n


k1, k2

e

c

n

Промежуточные данные

Шаг интегрирования

Вспомогательная таблица

Текущая погрешность

Погрешность в данной точке

Коэффициент уменьшения шага


dt

T’

ef

d

k


dt

c_tmp

d

d

K

Выходные данные

Таблица значений функции


T


c
^

5Результат расчета


В результате решения системы дифференциальных уравнений получены следующие значения констант скоростей реакции.

k1 = 0.08

k2 = 0.025

k3 = 0.7

k4 = 0.7

Аналитически зависимости примут вид, указанный на рисунке 3.



  1. Кривые, полученные методом Эйлера

6Выводы


В ходе лабораторной работы освоили методику формирования математической модели кинетики химической реакции в форме дифференциальных уравнений

Подобраны численные значения констант скорости реакции по исходным экспериментальным данным кинетического исследования с использованием метода Эйлера.

Получены в ходе решения системы дифференциальных уравнений концентрационные зависимости для компонентов A, B, C, D. Данные зависимости практически совпадают с опытными кинетическими кривыми по соответствующим компонентам (среднеквадратичное отклонение 0,71%).

Вычисленные значения констант подтверждают верность выбранной математической модели кинетики процесса, так как при достижении =40 мин (время достижения равновесных концентраций) скорости обратимых реакций выравниваются.
^

7Текст программы


program lab_2;

const

array_max = 30;

{ global types * }

type

point = record

t: real;

ca: real;

cb: real;

end;

table_t = array [1..array_max] of point;

vector = array[1..array_max] of real;

{ reporting of errors * }

procedure error(msg: string);

begin

writeln('ERROR: ',msg);

readln;

halt;

end;

{ method of Euler * }

procedure euler(

k1: real;

k2: real;

dt: real;

var c: table_t;

n: integer);

var

ca: real;

cb: real;

pca: real;

pcb: real;

t: real;

i: integer;

begin

t := c[1].t;

ca := c[1].ca;

cb := c[1].cb;

for i:= 2 to n do

begin

while c[i].t-t >= dt do

begin

pca := ca;

pcb := cb;

ca := pca + (-k1*pca + k2*pcb)*dt;

cb := pcb + (k1*pca - k2*pcb)*dt;

t := t + dt;

end;

c[i].ca := ca;

c[i].cb := cb;

end;

end;

{ double calculation method * }

procedure double_calc(

k1: real;

k2: real;

e: real;

var c: table_t;

n: integer);

const

k = 0.5;

var

ca: vector;

cb: vector;

dt: real;

ef: real;

e_pred: real;

d: real;

i: integer;

begin

dt := (c[n].t-c[1].t)/100;

repeat

euler(k1, k2, dt, c, n);

e_pred := ef;

ef := 0;

for i:= 2 to n do

begin

d := abs(c[i].ca - ca[i]);

if d > ef then ef := d;

d := abs(c[i].cb - cb[i]);

if d > ef then ef := d;

ca[i] := c[i].ca;

cb[i] := c[i].cb;

end;

dt := k*dt;

until (ef < e) or (ef > e_pred);

end;

{ difference between two tables * }

function difference(

t1: table_t;

t2: table_t;

n: integer): real;

var

i: integer;

max: real;

s: real;

d: real;

begin

max := 0;

for i:=2 to n do

begin

d := abs(t1[i].ca - t2[i].ca);

s := s + sqr(d/t1[i].ca);

if d > max then max := d;

d := abs(t1[i].cb - t2[i].cb);

s := s + sqr(d/t1[i].cb);

if d > max then max := d;

end;

difference := 100*sqrt(s/2/n);

end;

{ printing a table * }

procedure print_table(const table: table_t; n: integer);

var

i: integer;

begin

writeln(' time | Ca | Cb');

writeln('------------------------------------');

for i:= 1 to n do

writeln(

table[i].t:10:3,' | ',

table[i].ca:10:3,' | ',

table[i].cb:10:3);

writeln;

end;

{ reading a table * }

procedure read_table(var table: table_t; n: integer);

var i: integer;

begin

for i:= 1 to n do

begin

writeln(i,':');

write(' t : ');

readln(table[i].t);

write(' Ca: ');

readln(table[i].ca);

write(' Cb: ');

readln(table[i].cb);

end;

end;

{ copy from array to table * }

procedure copy(

const src: array of point;

var dst: table_t;

n: integer );

var

i: integer;

begin

for i:= 1 to n do

dst[i] := src[i-1];

for i:= n+1 to array_max do

begin

dst[i].t := 0;

dst[i].ca := 0;

dst[i].cb := 0;

end;

end;

{ input data * }

procedure input_data(

var c: table_t;

var n: integer);

var

i: integer;

begin

write('Enter number of points: ');

readln(n);

writeln('Enter graph data');

read_table(c,n);

end;

{ display a menu * }

function choice(

const v: array of string;

n: integer;

var selected: integer): boolean;

var

i: integer;

begin

writeln;

for i:=0 to n-1 do

writeln(i+1,' - ',v[i]);

writeln;

write('Your choice: ');

readln(selected);

if (selected > n) or (selected < 1) then

begin

writeln('Nothing selected');

choice := false;

end

else

choice := true;

end;

{ get data * }

procedure get_data(

var c: table_t;

var n: integer);

const

menu: array [1..3] of string =

('Your own data',

'Sample data. Variant 1',

'Sample data. Variant 2');

sample_1: array [1..3] of point =

((t: 0; ca: 400; cb: 0),

(t: 10; ca: 200; cb: 200),

(t: 40; ca: 100; cb: 300));

sample_2: array [1..3] of point =

((t: 0; ca: 200; cb: 0),

(t: 5; ca: 150; cb: 50),

(t: 40; ca: 100; cb: 100));

var

ch: integer;

begin

writeln('Select type of data');

if choice(menu, 3, ch) then

case ch of

1: { own data }

input_data(c,n);

2: { sample 1 }

begin

n := 3;

copy(sample_1,c,3);

end;

3: { sample 2 }

begin

n := 3;

copy(sample_2,c,3);

end;

end

else

error('Unable to read data');

end;

{ manual run * }

procedure manual_run;

var

str: string;

ch: integer;

make_check: boolean;

c: table_t;

rc: table_t;

c_tmp: table_t;

n: integer;

m: integer;

k1: real;

k2: real;

i: integer;

time: real;

interval: real;

prec: real;

d: real;

begin

{ read the data }

make_check := true;

get_data(c,n);

writeln('You have selected the following data');

print_table(c,n);

c_tmp := c;

{define some reference points}

write('Enter total time(min): ');

readln(time);

write('Enter reference interval(min): ');

readln(interval);

m := trunc(time/interval) + 1;

for i:= 1 to m do

rc[i].t := (i-1)*interval;

rc[1].ca := c[1].ca;

rc[1].ca := c[1].ca;

write('enter precision: ');

readln(prec);

repeat

{ enter the constants }

writeln('Enter the constants');

write('k1 = ');

readln(k1);

write('k2 = ');

readln(k2);

{ build the table }

double_calc(k1, k2, prec, rc, m);

print_table(rc,m);

{ calculate diffefence }

if make_check then

begin

double_calc(k1, k2, prec, c_tmp, n);

d := difference(c, c_tmp, n);

writeln('maximum difference is ',d:8:3);

end;

write('Press enter to continue. Type ''exit'' to exit: ');

readln(str);

until 'exit' = str;

end;

{ main program * }

var

c: integer;

begin

writeln('Hello');

writeln;

manual_run;

writeln('Finished. Press enter');

readln;

end.
^

8Результаты программного расчета


При помощи метода Эйлера получены таблично заданные функции

  • Для веществ A и B

Enter the constants

k1 = 0.08

k2 = 0.025

time | Ca | Cb

------------------------------------

0.000 | 400.000 | 0.000

1.000 | 374.938 | 25.062

2.000 | 351.936 | 48.064

3.000 | 320.932 | 79.068

4.000 | 302.372 | 97.628

5.000 | 277.354 | 122.646

6.000 | 262.377 | 137.623

7.000 | 242.190 | 157.810

8.000 | 230.105 | 169.895

9.000 | 213.815 | 186.185

10.000 | 199.493 | 200.507

11.000 | 190.920 | 209.080

12.000 | 179.363 | 220.637

13.000 | 172.445 | 227.555

14.000 | 163.120 | 236.880

15.000 | 157.538 | 242.462

16.000 | 150.013 | 249.987

17.000 | 145.508 | 254.492

18.000 | 139.437 | 260.563

19.000 | 135.802 | 264.198

20.000 | 130.903 | 269.097

21.000 | 127.970 | 272.030

22.000 | 124.016 | 275.984

23.000 | 121.650 | 278.350

24.000 | 118.460 | 281.540

25.000 | 116.550 | 283.450

26.000 | 113.976 | 286.024

27.000 | 112.435 | 287.565

28.000 | 110.358 | 289.642

29.000 | 109.115 | 290.885

30.000 | 107.438 | 292.562

31.000 | 106.435 | 293.565

32.000 | 105.083 | 294.917

33.000 | 104.273 | 295.727

34.000 | 103.182 | 296.818

35.000 | 102.529 | 297.471

36.000 | 101.648 | 298.352

37.000 | 101.121 | 298.879

38.000 | 100.410 | 299.590

39.000 | 99.985 | 300.015

40.000 | 99.595 | 300.405

maximum difference is 0.710

  • Для веществ B и C

Enter the constants

k1 = 0.07

k2 = 0.07

time | Ca | Cb

------------------------------------

0.000 | 200.000 | 0.000

1.000 | 189.114 | 10.886

2.000 | 179.412 | 20.588

3.000 | 166.804 | 33.196

4.000 | 159.532 | 40.468

5.000 | 150.080 | 49.920

6.000 | 144.628 | 55.372

7.000 | 137.543 | 62.457

8.000 | 133.456 | 66.544

9.000 | 128.144 | 71.856

10.000 | 123.676 | 76.324

11.000 | 121.098 | 78.902

12.000 | 117.748 | 82.252

13.000 | 115.816 | 84.184

14.000 | 113.305 | 86.695

15.000 | 111.857 | 88.143

16.000 | 109.974 | 90.026

17.000 | 108.888 | 91.112

18.000 | 107.477 | 92.523

19.000 | 106.663 | 93.337

20.000 | 105.605 | 94.395

21.000 | 104.995 | 95.005

22.000 | 104.202 | 95.798

23.000 | 103.745 | 96.255

24.000 | 103.150 | 96.850

25.000 | 102.807 | 97.193

26.000 | 102.361 | 97.639

27.000 | 102.104 | 97.896

28.000 | 101.770 | 98.230

29.000 | 101.578 | 98.422

30.000 | 101.327 | 98.673

31.000 | 101.183 | 98.817

32.000 | 100.995 | 99.005

33.000 | 100.887 | 99.113

34.000 | 100.746 | 99.254

35.000 | 100.665 | 99.335

36.000 | 100.559 | 99.441

37.000 | 100.498 | 99.502

38.000 | 100.419 | 99.581

39.000 | 100.373 | 99.627

40.000 | 100.333 | 99.667

maximum difference is 0.231


Добавить документ в свой блог или на сайт

Похожие:

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconВопросы к экзамену по курсу дифференциальных уравнений
Виды дифференциальных уравнений. Интеграл дифференциального уравнения. Общий интеграл. Интегральная кривая

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconНахождение решений обыкновенных дифференциальных уравнений и систем...
Тема: Нахождение решений обыкновенных дифференциальных уравнений и систем дифференциальных уравнений при помощи формул Эйлера и Рунге...

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconМы уже научились находить решение системы уравнений методом Крамера...
...

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconРешение уравнений
Итерационные методы решения интегральных уравнений, особенность частичной сходимости

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconЛабораторная работа №1. Основные этапы создания программ (на примере...
Лабораторная работа №1. Основные этапы создания программ (на примере программы для решения квадратных уравнений) 2

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconВопросы по курсу «Теория электромагнитных волн»
Комплексная форма уравнений поля. Решение основных уравнений поля при известных токах и зарядах

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconРешение уравнений и систем уравнений в Excel методом«Поиск решения»
Локальные и глобальные сети Принципы построения и основные топологии локальных cетей, прободные и беспроводные сети

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconРешение алгебраических и трансцендентных уравнений приближенными методами
Цель: научиться применять численные методы для уточнения корней алгебраических и трансцендентных уравнений

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconЧисленнное решение обыкновенных дифференциальных уравнений
Оду называются такие уравнения, которые содержат одну или несколько производных от искомой функции. В общем виде оду первого порядка...

Лабораторная работа №2 подбор константы скорости химичесеой реакции (решение математических уравнений в форме дифференциальных уравнений) iconМатематические модели в форме систем линейных алгебраических уравнений и методы их решения
Некоторые физические системы могут быть адекватно описаны математической моделью в виде системы линейных алгебраических уравнений...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
zadocs.ru
Главная страница

Разработка сайта — Веб студия Адаманов