PDF / lecture_1
.pdf(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
1 |
Лекция 1
Процесс решения задачи можно разбить на следующие этапы.
1.О Б Ь Е К Т. Постановка задачи. Экспериментальное исследование физико-химического процесса или объекта и определение основных законов управляющих данным объектом или процессом.
2.М О Д Е Л Ь. Построение математической модели (математическая формулировка задачи) - запись законов описывающих процесс в форме уравнения или системы уравнений (алгебраических, дифференциальных, интегральных и т.д.).
3.А Л Г О Р И Т М. Разработка численного метода и алгоритма (блок-схема). Поскольку ЭВМ не понимает постановки задачи в математической формулировке, то для решения задачи необходимо найти численный метод, позволяющий свести задачу к некоторому вычислительному алгоритму. Алгоритм можно изобразить в виде блок-схемы.
4.П Р О Г Р А М М А. Алгоритм решения задачи записывается на понятном машине языке в виде точно определенной последовательности операций - программы для ЭВМ. Составление программ (программирование) обычно производится с помощью промежуточного (алгоритмического) языка. В качестве такого языка будем использовать VBA(Visual Basic for Applications).
5.Проведение вычислений и анализ результатов.
Запись алгоритмов в виде блок-схем и написание программ
|
|
Основные Элементы блок-схем. |
|
|
|
|
|
поцесс |
Ввод-вывода |
|
|
условие |
|||
( вычисление ) |
|
|
|
|
( решение ) |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
основные типы алгоритмов
линейный |
разветвляющий |
циклический |
2
2
1
нет да
3
2
3
4 |
5 |
нет да
3 |
4 |
|
6
5
(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
2 |
пример алгоритмов и программ
Переменные и константы используются для хранения необходимых программных данных, которым даются уникальные имена (идентификаторы). Переменные получают свои значения во время выполнения программы и сохраняют их, пока им не будут присвоены новое значение. Константы применяют в случаях, когда требуется много раз использовать в программе одно и тоже значение. Обычно, перед использованием переменных и констант необходимо произвести их объявление – т.е. заранее указать их имена и типы данных, для которых они предназначены, а для констант и их значения.
Литейный алгоритм. Вычислить значения констант скорости реакции по уравнению Арениуса для двух значений температур, полагая известными энергию активации Ea и
предэкспоненциальный множитель k0 .
−Ea
k =k0 e RT
|
|
нач |
|
|
|
|
|
|
|
|
|
|
|
Sub Blok1() |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dim T1 as single, T2 as single |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dim K1 as single, K2 as single |
|
R =8.314 Ea |
|
|
|
|
|
|
|
|
|
|
|
|||||||
=53234 |
|
1 |
Const |
R as single=8.314, Ea as single=32000 |
||||||||||||||
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Const |
K0 as single=56123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
T1=cells(2,1): T2=cells(2,2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
K1=K0*exp(-Ea/(R*T1)) |
|
|
k0 |
= 32000 |
|
2 |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
K2=K0*exp(-Ea/(R*T2)) |
|||||||||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cells(3,1)=K1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cells(3,2)=k2 |
|
|
|
T1,T2 |
|
3 |
|
|
|
|
|
|
|
|
|
End Sub |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
1. Переменные T1, T2, K1 и K2 объявлены, как |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вещественные обычной точности. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Задаются значения констант R,Ea и K0. Они |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
−Ea |
|
|
|
|
|
|
|
|
объявляются как вещественные с обычной |
|||
|
k |
=k |
0 |
e RT1 |
|
4 |
|
|
|
|
точностью |
|||||||
|
|
|
|
|
|
|||||||||||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Переменным T1 и T2 присваиваются значения |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
из соответствующих ячеек текущего листа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
−Ea |
|
|
|
|
|
|
|
|
EXCEL. |
|||
|
k2 |
=k0 e RT2 |
|
|
5 |
|
|
|
||||||||||
|
|
|
|
|
|
3. Вычисляются значения переменных K1 и K2 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Вычисленные значения выводятся в ячейки |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
листа EXCEL. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k1 ,k2 6
Кон.
Разветвляющий алгоритм. Решить квадратное уравнение ax2 +bx +c =0
Вычисляем значение дискриминанта
D =b2 −4ac
(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
3 |
Затем значения корней уравнения.
x |
= −b ± D |
1,2 |
2a |
|
нач
|
|
|
|
|
|
|
a,b,c |
1 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D := b2 |
−4ac |
|
2 |
|
|
|
|||||||||
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
D<0 | 3 |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x := |
−b + |
D |
4 |
|
|
|
|
|
Нет | 7 |
|||||||||
1 |
|
2a |
|
|
|
|
|
|
|
|
Решения| |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
x21 := |
−b − |
D |
5 |
|
|
|
|
|
|
|
|
|||||||
|
|
|
2a |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
x1, x2 |
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sub blok2()
Dim a as single, b as single, c!,D!,x1!
a = cells(2,1): b = cells(2,2): c = cells(2,3) D = b^2 - 4*a*c
if D<0 then cells(3,2)=”нет решения”
else x1=(-b+sqr(D))/(2*a) x2=(-b-sqr(D)/2/a
x1 = ( -b + sqr(d))/2/a cells(3,1) = d cells(3,2) = x1 cells(3,3) = x2
end if End Sub
D 8
Кон.
Циклический алгоритм. Вычислить среднее арифметическое n чисел.
_ |
∑n |
xi |
|
x |
+ x |
2 |
+ x |
3 |
+... + x |
n |
x = |
i=1 |
|
= |
1 |
|
|
|
|||
n |
|
|
|
n |
|
|
||||
|
|
|
|
|
|
|
(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
4 |
нач
n | 1
i:=1 | 2
i<=n. |.2
xi 3
I=I+1 | 2
s:=0 | 2
i:=1 | 2
i<=n. |.2
s:=s+xi | 4
|
|
= |
s |
|
|
7 |
|||
|
x |
|
|||||||
|
n |
||||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
кон
|
|
нач |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n | 1 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i:=1 шаг 1 до n |
| 2 |
|
|
|||
|
|
|
|
|||||
|
|
|
|
|
|
| 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
xi |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s:=0 | 4
i:=1 шаг 1 до n | 2
s:=s+xi | 4
|
|
= |
s |
|
|
7 |
||||
|
x |
|
||||||||
|
n |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
кон
(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
5 |
|
Sub blok3() |
Sub blok31() |
|
Dim n as byte, x() as single |
Dim n as byte, x() as single |
|
Dim i as byte |
Dim i as byte |
|
Dim x_average as single |
Dim x_average as single |
|
n=cells(2,1) |
n=cells(2,1) |
|
Redim x(n) |
Redim x(n) |
|
i=1 |
For i=1 to n |
|
While i<=n then |
x(i)=cells(i+3,1) |
|
x(i)=cells(i+3,1) |
Next i |
|
i=i+1 |
s=0 |
|
Wend |
For i=1 to n |
|
s=0 |
s=s+x(i) |
|
i=1 |
Next i |
|
While i<=n then |
x_average=s/n |
|
s=s+x(i) |
cells(2,2)=x_average |
|
i=i+1 |
End Sub |
|
Wend |
|
|
x_average=s/n cells(2,2)=x_average
End Sub
Вычислить значения констант скорости реакции по уравнению Арениуса в зависимости от температуры ( от T-нач. до T-кон. в n+1 точке)-Табуляция.
−Ea
k =k0 e RT
Полагая известными энергию активации Ea и предэкспоненциальный множитель k0 .
нач
− Ea
k =k0e RT
T_Big, T_End, T_Step | 1
T:=T_Big шаг T_Step до T_End | 2
T, k(T) | 3
кон
(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич |
6 |
Const R = 8.314, K0 As Single = 55234, Ea As Single = 32000 Sub blok41()
Dim T_Big As Single, T_End As Single
Dim T_Step As Single, T As Single, i As Byte T_Big = Cells(2, 2): T_End = Cells(3, 2) T_Step = Cells(2, 4)
i = 6
For T = T_Big To T_End Step T_Step Cells(i, 1) = T: Cells(i, 2) = k(T)
i = i + 1 Next T
End Sub
Function k(T As Single) As Single k = K0 * Exp(-Ea / (R * T))
End Function