val sc = new SuperCompiler(p)
val pt = sc.buildProcessTree(SParsers.parseTerm("gApp(gApp(x, y), z)")) val (expr, p1) = new ResidualProgramGenerator(pt).result println(expr) println(p1)
В результате на консоли выведутся новое выражение и остаточная программа, будет видно, что список x анализируется один раз и что остаточная программа содержит первоначальное определение конкатенации (gApp1) и специализированное (gApp0) - для конкатенации трех списков.
gApp0(x, y, z)
gApp0(Cons(v1, v2), y, z) = Cons(v1, gApp0(v2, y, z)); gApp0(Nil(), y, z) = gApp1(y, z); gApp1(Cons(v3, v4), z) = Cons(v3, gApp1(v4, z)); gApp1(Nil(), z) = z;
В этой статье мы постарались описать простейший суперкомпилятор для ленивого функционального языка первого порядка. При этом преследовалась цель представить полный код суперкомпилятора.
Однако построение частичного дерева процесса так, как это описано в статье, не всегда завершается. Ситуации, когда дерево конфигурации начинает опасно разрастаться, определяются с помощью специального критерия, называемого в суперкомпиляции свистком. В этом случае одна из
конфигураций (которая приводит к бесконечному росту) обобщается - некоторые части конфигураций заменяются на переменные. Суперкомпиляция со свистком и обобщением завершается всегда.
Подробнее о более совершенной версии суперкомпилятора можно ознакомиться на сайте проекта в Интернете (http://spsc.googlecode.com).
Литература
1. Turchin V.F. The Language Refal: The Theory of Compilation and Metasystem Analysis. Department of Computer Science, Courant Institute of Mathematical Sciences, New York University, 1980.
2. Turchin V.F. The concept of a supercompiler. ACM Transactions on Programming Languages and Systems (TOPLAS), 1986. № 8 (3). pp. 292-325.
3. Абрамов С.М., Парменова Л.В. Метавычисления и их применение. Суперкомпиляция: учебник. - Переславль-Залесский: Изд-во «Университет города Переславля имени А.К. Айламазяна», 2006. 76 с.
4. Odersky M., Spoon L. and Venners B. Programming in Scala: A Comprehensive Step-by-step Guide. Artima Inc. 2008.
5. S0rensen M.H. Convergence of program transformers in the metric space of trees. In Mathematics of Program Construction. Vol. 1422 of Lecture Notes in Computer Science. Springer, 1998.
ПРОГРАММНАЯ ПОДДЕРЖКА ПОСТРОЕНИЯ ОБЛАСТИ РЕАЛИЗУЕМОСТИ ТЕРМОДИНАМИЧЕСКИХ СИСТЕМ
А.М. Цирлин, д.т.н.; И.Н. Григоревский (ИПС им. А.К. Айламазяна РАН, г. Переславль-Залесский, tsirlin@sarc.botik.ru, ivan@baby.botik.ru)
Исследованы общие особенности области реализуемости необратимых термодинамических систем, возможности ее построения и исследования качественного характера с использованием программного пакета Maple.
Ключевые слова: необратимая термодинамика, системы, область реализуемости, программное обеспечение, диссипация, тепловая машина.
Значительную часть технологических процессов можно охарактеризовать термодинамическими закономерностями. Тепловые и холодильные машины, процессы разделения, сушки, кристаллизации, химические реакторы и другое характеризуются такими переменными, как внутренняя энергия, концентрация тех или иных компонент, температура и энтропия.
Параметры входных и выходных потоков в таких системах связаны между собой уравнениями энергетического, материального и энтропийного балансов [1, 2]. Для открытой стационарной системы эти уравнения имеют вид:
-р=0, £&хч wv=ovk,
j i j V
Еад+Й-о=0, (1)
j i Т
где gj - интенсивность ,|-го материального потока; ^ - его удельная энтальпия; хц - концентрация в нем к-го вещества; qi - интенсивность 1-го потока тепла; Т1 - температура этого потока на
контрольной границе системы; р - потребляемая механическая работа (мощность); Wv - скорость v-й химической реакции; а^ - стихиометриче-ский коэффициент, с которым к-я компонента входит в уравнение v-й реакции (а^, > 0 для образующихся и а^,< 0 для расходующихся веществ);
а - производство энтропии (диссипация) в системе, которая зависит от потоков энергии и вещества. Коэффициенты в уравнениях (1) зависят от внешних факторов и от параметров самой системы - коэффициентов тепло- и массопереноса, интенсивных переменных (температуры, давления, концентрации и др.).
В оптимизационной термодинамике [3] решают задачу о такой организации процесса, при которой для тех или иных ограничений производство энтропии достигает своей нижней границы ат1п. Для любых условий а>ат1„, а значит, при подстановке в уравнения (1) ат1„ эти уравнения выделяют в пространстве потоков границу области, которую будем называть областью реализуе-
мых значений параметров системы, или областью реализуемости. Если интенсивность стремится к нулю или коэффициенты тепло- и массопереноса сколь угодно велики, то атщ=0 и граница области реализуемости соответствует обратимым процессам. При этом ее граница всегда линейна. Если интенсивность одного или нескольких потоков задана, атт>0 и область реализуемости сужается. Однако может измениться и ее качественный характер, так как функция ат]„ нелинейно зависит от интенсивности потоков.
Общие особенности границы области реализуемости
Области реализуемости термодинамических систем с ненулевой производительностью (интенсивностью целевого потока) и ограниченными размерами имеют ограниченные коэффициенты переноса. Говорить об общих особенностях можно потому, что множество реализуемости в пространстве потоков вещества и энергии определяется уравнением энтропийного баланса, в которое с постоянными коэффициентами входят потоки энтропии на входе и выходе системы, линейно зависящие от потоков вещества и энергии. Минимально возможное производство энтропии в системе от1„(ё, р, я), которое является положительно-определенной, строго выпуклой вниз функцией потоков вещества и энергии, зависит от коэффициентов переноса и кинетики химических реакций, стремится к нулю при интенсивности потоков, стремящейся к нулю. Во многих случаях кинетика такова, что потоки пропорциональны движущим силам (законы теплопереноса Фурье, мас-соперенос, пропорциональный разнице химических потенциалов, и пр.), а в окрестности равновесия это всегда так. В таком случае производство энтропии является положительно-определенной квадратичной формой. При этом потоки связаны друг с другом уравнениями энергетического и материального балансов (см. формулу (1)).
Предположим, что число компонентов во входных и выходных потоках равно „. Тогда общее число уравнений (1) равно „+2, так как к уравнениям материального баланса добавлены балансы по энергии и энтропии. Число переменных (потоки вещества и энергии на входе и на выходе системы) обычно гораздо больше, часть из них может быть фиксированной.
Для исследования общих особенностей области реализуемости обозначим материальные и энергетические потоки через х^ Выделим целевой поток, характеризующий возможности системы (мощность тепловой машины, хладопроизводи-тельность обратного цикла, расход разделяемой смеси и пр.), и обозначим его через хь а поток затрат, который может быть одним из входящих в балансовые соотношения или линейной комбинацией хь обозначим через х2. Минимальное произ-
водство энтропии представляет собой квадратичную функцию потоков, если они пропорциональны движущим силам, в противном случае оно может быть аппроксимировано в таком виде.
Перепишем уравнения (1) в общей, канонической форме:
¿а„х, =0, ]=1,2,...,„+1,
ЕЬ„х, -От,„(х)> 0.
(2)
Границе области реализуемости соответствует замена в последнем соотношении знака неравенства на знак равенства. Из системы линейных уравнений для невырожденного случая можно исключить „+1 переменных (будем исключать переменные с большими значениями индексов) и подставить в условие энтропийного баланса. Последнее для точек границы области реализуемости примет форму
С1Х1 + С2Х2 + --От1„(х) =
= С1Х1 + с2х2 +ХЙиХ15
=0.
(3)
При этом а™„(х) зависит только от переменных, оставшихся после исключения, но, как и ранее, представляет собой выпуклую вниз положительно-определенную квадратичную форму этих переменных.
Построим область реализуемости в плоскости с координатами х1 и х2, считая, что значения всех остальных переменных, оставшихся после исключения переменных с большими значениями индексов, фиксированы. В случае отсутствия потоков вещества этих оставшихся переменных может и не быть.
Общие свойства границы области реализуемости следующие.
• При обращении всех потоков, кроме целевого, в нуль х1 тоже равен нулю, так что граница области проходит через начало координат. Эх1
Производная
Эх,
в начале координат пред-
ставляет собой коэффициент эффективности в обратимом процессе. Она положительна и равна
п0=
Эх1
дХ
ч 2
„(х)/дх2 - С2
дОтт(х)/дх1 - С1
=—. (4)
• В точке максимума целевого потока (если этот максимум существует) наклон границы области реализуемости равен нулю. Условие максимума целевого потока совместно с уравнением границы области реализуемости определяет предельное значение х1 :
З^т,„(х)/дх2 = ^22х2 + М^х = С2 ,
-Й22Х2 -Й11Х1 -2Й12Х1Х2 = 0 .
(5)
Если система (5) не имеет действительных корней, то область реализуемости не ограничена
с
сверху (рис. 1а), в противном случае область реализуемости имеет иную форму (рис. 1б), при этом величина целевого потока ограничена значением
хтах, которому соответствует значение х2.
Рис. 1. Примеры области реализуемости термодинамических систем
• Область реализуемости выпукла вверх в силу свойств функции ат1„(х).
Область реализуемости для а>0 обозначим Б0 (ее граница соответствует обратимым процессам),
а для случая а>ат1„ - Б* сБ0 и покажем на примере тепловой машины последовательность построения этих областей.
Рассмотрим тепловую машину, состоящую из горячего резервуара с температурой Т+ , холодного - с температурой Т- и рабочего тела, поочередно контактирующего с каждым из резервуаров и производящего механическую работу с интенсивностью р. Машина отбирает поток тепла q+ от горячего источника, отдает поток q_ холодному источнику и вырабатывает мощность р. Если процесс циклический, то под упомянутыми потоками будем понимать среднее значение потоков подводимого, отводимого тепла и механической работы (мощности) за цикл. Обмена веществом в данном случае не происходит, п=0.
Отобразим термодинамические балансы через исходные переменные:
p-q+ + q_= 0, T-0 .
(6)
Введем обозначения: x1 = p, x2 = q+ , x3 = q_ и
запишем термодинамические балансы для тепловой машины в форме (2), приняв во внимание, что omin или ее аппроксимация квадратично зависят от параметров системы:
ajXj + a2x2 + a3x3 = 0, (7)
C1X1 + C2X2 + C3X3 _
_[d11Xl2 +d22x2 +d33X3 +di2XiX2 +d23X2X3 +d13X1X3].(8)
Для определения границы области реализуемости неравенство в (8) заменим на равенство. Из формулы (7) выразим X3 через X1 и X2 и подставим в (8). Получим для границы области реализуемости квадратичное выражение вида F(x1, x2)=0 с двумя переменными. Функция найдена с помощью пакета Maple (см. уравнение (24)).
Чтобы найти точку экстремума границы области реализуемости, воспользуемся уравнением (5), которое линейно относительно хх и х2. Из решения этого уравнения совместно с условием Г(х1,х2)=0 (9)
тах 0 ■ т ■
определяем х1 и х2. Так как переменную х2 в
силу линейности (5) легко выразить через хь приходим к квадратному уравнению
ф(х1)=Г(х1,х2(х1))=0. (10)
Это уравнение имеет действительный корень, если его дискриминант Б неотрицателен. Условие неотрицательности Б, выраженное через коэффициенты системы, записанной в канонической форме, получено с использованием пакета и дано в задаче 4. Если это условие выполнено, область реализуемости имеет форму, как на рисунке 1 б. Если дискриминант отрицателен, область реализуемости имеет вид, как на рисунке 1а. При известных коэффициентах канонической формы можно вычислить значение дискриминанта и определить вид области достижимости.
Пример расчета
Продолжим рассмотрение примера с тепловой машиной. После исключения х3 запишем систему в виде (2):
T
-+X.
' -1 _ 1 ^
ЧТ- Т+,
-а=0.
Таким образом, коэффициенты c1 =
1___1_
Т Т
\ - + /
c2 Т
Обратимый КПД nk =—2=1--
ci Т+
(11) - Т"'
(12)
равен КПД Карно и не зависит от законов теплообмена.
Для построения границы области реализуемости воспользуемся решением задачи о минимальной диссипации в цикле тепловой машины [4], приняв заданными коэффициенты теплообмена рабочего тела с источниками а+ и а_ соответственно и закон теплопередачи в форме
Х2=а+ (Т+_ Тх), хз =а_ (- _Т_). (13)
Здесь Тх и Т2 - температуры рабочего тела при контакте с источниками. Отметим, что для принятой формы закона теплообмена (его называют ньютоновским) поток непропорционален движущей силе, равной разности обратных значений температур, поэтому производство энтропии не является квадратной функцией потока и нахождение коэффициентов требует его аппроксимации квадратичной формой.
X
c
2
Для этих ньютоновских законов теплообмена задача о минимальной диссипации решена в [4], в которой найден предельный КПД тепловой машины заданной мощности:
ПЪ)=|
ат+ ,к
1
4
\2
аТ+ ,к
аТ+
(14)
- а+а_ где а—
а++а_
В свою очередь, omin(x1)=-
x1
T_ I n(x1)
(15)
Ясно, что атт=0 при х1=0 и а™„>0 при х1>0,
причем при малом значении мощности зависимость а(х1) квадратична.
Чтобы воспользоваться условием (5), необходимо найти значение коэффициента Для этого выразим атщ через х2. Так как х1=х2п(х1),
x2(xi)=
n(xi)
(16)
и amin перепишется в виде
omta(xi,x2)==г
Т
x2 Пк
1
1
= T(x2Пк _x1) • (17)
ч Л1
Для тепловой машины поток х2 связан с х1 соотношением [3]:
x2=ax
Т _ Т
1
ч
1-xJx2 j
После преобразования получим x2 _аТ+ x2+аТ_ x2
x
аТ+_ x2
(18)
(19)
Подставим результат в (17) и получим Omin(x2):
„2 ^п "
1
/
Jmin (x2) = т
x2 Пк
x2 _аТ+ x2+аТ_ x2
ат+_ x2
Аппроксимация a min (x2) имеет вид: \
C min(x2) = ~2
"d2Omin(X2)
dx2
22 x2 = d22x2 •
• (20)
(21)
2 jx2=0
С помощью Maple (см. ниже, задача 1) дважды продифференцировав (20) по x2 и подставив x2=0, найдем значение коэффициента d22:
d
1
22 аТ+2
(22)
Так как атщ(х2) не зависит от х1, значения коэффициентов аппроксимации бп и равны 0. Уравнения (5) примут вид
1 02
V = 2"
2 аТ++
они определяют максимальную мощность и соответствующий ей поток теплоты от горячего источника.
3amin(x)/dx2 = ^—2x2 = е2, xmax = T_d22x2 ; (23)
Программы построения области реализуемости необратимых термодинамических систем в пакете Maple
Задача 1.
#Расчет
коэффициентов
аппроксимации 2
sigmamta (x)=du *x1 + 2*d12 *x^ +d22*x2
restart;
#Вид функции sigmamin(x) может быть произвольным и зависит от решаемой задачи. В данном случае мы оставляем sigmamin(x) в общем виде и проводим расчет. Тем самым даем возможность читателю подставить свое значение функции sigmamin в нашу программу и автоматически рассчитать значения коэффициентов аппроксимации для своего случая.
#Ввод конкретной функции sigmamin:
sigmamin (x)=du *x2+2*du *x^ +dn*x2;
#Для нахождения коэффициента d11 необходимо дважды продифференцировать функцию sigmamin по x1, взять значение производной при x1=0 и домножить на /:
toef^ := subs(x1 = 0,diff(sigmamin, x15 x1 ))/2;
#Для нахождения коэффициента d22 необходимо дважды продифференцировать функцию sigmamin по x2, взять значение производной при x2=0 и домножить на /:
toeff^ := subs(x2 = 0,diff(sigmamin, x2, x2 ))/2;
#Для нахождения коэффициента d12=d21 необходимо взять смешанную производную функции sigmamin по x1 и x2 и домножить ее значение на / при x1=0 и x2=0: Roeff^ := subs(x1 = 0, x2 = 0, diff(sigmamin, x15x2 ))/2;
Задача 2.
#Вид функции F, определяющей границу области реализуемости
#Приложение для выражения функции F(xb x2) в квадратичной форме для тепловой машины
#Выпишем уравнения термодинамических балансов в общем виде для тепловой машины (7), (8)
2*x2+a
tb1:= a1*x1 + a tb2:= e1*x1 + e2*x2 + c3
-(d11*x2+d
3*x3;:
0
+d *
23
x *x, + d,
22 x2 + d33 x3 + d12
x *x +
Л3 1 "13 Л1*хз)>0;
#Для определения границы области реализуемости неравенство в (8) заменим на равенство Ш2:= с, *х, + с2 *х2 + с3 *х3 -
-(du*xi+d
*x2+d *x2+d * 22 x2Td33 x3 d12
*x3 + d,3*x, *x3)=0;
2
+d23 *x
x *x +
2 3 13 1 3
#Из уравнения (7) выразим х3: х3:= 8о1уе(1;Ь1,х3);
#Подставим полученное выражение в уравнение
(8): Г:= Ш2;
#Преобразуем полученное соотношение, собрав все коэффициенты при х1, х2. Это и будет искомое соотношение Е(х1, х2)=0 в квадратичной форме Г := соПес^, х1, х2);
F:=
_d d33ai di 1 i
d13a1
x2+
x
x
x
1
x
1
x _
3
a
a
3
3
{f - \ d13a2 2d33a2ai . d23al
--3322 1 -d12 x2 + c,
a
3
a
a
/
X +
+
-d -d33a2 . d23a2^ /
22 a2
+
x2 +
"3 7
x2 = 0 . (24)
лз 7
ч з
Задача 3.
#Построение границы области хх(х2) по условию Е(хх, х2)=0 для тепловой машины
#Используем выписанную функцию (24) Е(хх, х2)=0 #Используем значения коэффициентов а1; с1, dij для тепловой машины:
ах:=1; а2:=Х; а3:=Х;
=_ х ; = х__^ = х
С!:=_ — ; С2:=™ ^ ; сз
Т
minus
Т Т
minus plus
Т .
minus
dn:=0; du:=0; dM:=0; d2
1
alpha*^
-; d13:=0;
plus
d2з:=0; dзз:=0;
#Решаем получившееся уравнение относительно хх и получаем функцию для расчета границы области хх(х2):
хх:=8о1уе(Г,хх);
:= _ х х2(х2Тт1„и5 _ 2a1phaTp2lЦS + а^аТ^Т.^)
2
Задача 4.
alphaX
plus
^Нахождение точки экстремума xx restart;
#Используем выписанную функцию (24): F(x1,x2)=0 #Выпишем первое уравнение системы (5) eq:=2*d^*x1+2*d22*x2 = c2; #Выразим x2 из выписанного уравнения: x2 :=solve(eq,x2);
#Подставим полученное соотношение в функцию F(x1, x2)=0 (24) и сгруппируем члены при x1: F:= collect(F,x1);
#Найдем дискриминант полученного квадратного уравнения
d:=discrim(F,x1);
d:= ^-угИ 4d22c2a3d11 - «зз^^Х+4a2c2d22d
4a3d22
2c2d d -
c2d22d33
-8a1d33c1c2a2d22 -
-4ald33cld1lal -8a1c1a3c3d22 -4aldllclaзd13 + +4aldllcзcldl3al + 4aldllcзaзcldll-
-8a1d22c3dua2 -4a1c2d23c3d22 + 4a1d22c2d23a3c1-
-2a1c2d23d13a2 + 4a1c2d23d12c3a2 +
+2alCldl3aзd1l- 8dl3Cзaзd11Clal + 4d22CXa3C2dX3a2 --4dllC1—3Cld1l + 8d22c1a3d12c3a2 +
+8dззclcldllal + 2cldllaзdlзal- 4cзdlзcldllal-
-4cзaзdllalcl -8c2d23a3d12a2cl +
+4c2d23a3dna2 + ^a^ + ^c^ + 4c2d22a2 + +c2d22a3 + c2d23a2 + a2c2d23)
#Если найденный дискриминант d больше или равен нулю, поток x1 ограничен сверху и точка экстрему-
max r
ма x1 может быть найдена.
В статье проанализированы общие свойства множества реализуемых режимов необратимых термодинамических систем. Показано, что задача построения этого множества может быть решена с использованием программных средств пакета Maple. В качестве примера построена область реализуемости тепловой машины.
Литература
1. Хейвуд Р. Термодинамика равновесных процессов. М.: Мир, 1983.
2. Орлов В.Н., Розоноэр Л.И. Оценки эффективности управляемых термодинамических процессов на основе уравнений баланса энергии, вещества и энтропии: матер. X Всесоюз. совещ. по проблемам управления. М.: Наука, 1986.
3. Цирлин А.М. Математические модели и оптимальные процессы в макросистемах. М.: Наука, 2006.
4. Розоноэр Л.И., Цирлин А.М. Оптимальное управление термодинамическими системами // Автоматика и телемеханика. 1983. № 1. С. 70-79; № 2. С. 88-101; № 3. С. 50-64.
c3a1
a
3
c3—2
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА ПРИБЛИЖЕННОГО РЕШЕНИЯ ЗАДАЧИ УПРАВЛЕНИЯ
(Работа поддержана РФФИ, проект № 09-01-00246-а) Е.Ф. Сачкова (ИПС им. А.К. Айламазяна РАН, г. Переславль-Залесский, elenas@u-pereslavl.ru)
Рассматривается компьютерная реализация алгоритма приближенного решения задачи управления для трехмерных нелинейных систем, описываемых обыкновенными дифференциальными уравнениями, с двумя линейными неограниченными управлениями. Итерационный алгоритм для решения локальной задачи управления построен на основе метода нильпотентной аппроксимации, реализован в системе компьютерной математики Maple, апробирован на примере управления ориентацией катящейся по плоскости сферы. Для решения глобальной задачи управления разработан комплекс программ, приведена его апробация на примере импульсного управления двухзвенным манипулятором.
Ключевые слова: задача управления, нелинейная система, управляемая система, нильпотентная аппроксимация, алгоритм, программа.
Настоящая работа посвящена описанию программной реализации алгоритма перемещения трехмерной нелинейной системы с двумя линей-
ными управлениями из заданного начального состояния в малую окрестность заданного финального состояния. Написанная в системе компью-