Текст
                    

УДК 621 аз : 534.62 Программирование и вычислительные методы в химии и хнмпче- свой технологии. Каунасе В. С., .Веггаогим 8. H,t Впяринм Л И, М., «Науках., 1972 Книга представляет собой первое систаматиэмгроаалиое иадапнв в котором рассматриваются вопросы прдмапеиин средств вычисли тельной техники, для решения задач химии и химнчасцой тех- нологии В доступной форма изложены основы программирования к Элементы вычислительной математики, а также некоторые общие вопросы подготовки химических и технологических задач к решению на ЦВМ. Изложение всех численных методов иллюстрируется закончен" пыми программами, записанными лл ютгоритилчеел^и языке. Приведено большое число алгоритмов и программ решения коккрег- ных задач из области химии и химической технологии — обра- Сотка экспериментальных данных, кянмическвд расчеты, расчеты химических и маессюбмепных процессов в т. п. Книга предназначена для иаучпых и инженерно-технических работников научно-исследовательских институтов и предприятии химической промыпиюшхсс'пг. Она может использоваться также о качестве учебного пособия для студентов и аспирантов химических п хлмнко-тохпологлчешшх спвцаальноиой вузол в уннварсн тетов. Илл 72 табл 32, бнбл 50 здзв 344-2; 34-14 Ж72
ОГЛАВЛЕНИЕ Предисловие.................................................. 9 Вмдопло . . , ,.,.... . . , 12 Часть первая техника расчетов на цифровых вычислительных машинах Глена I Устройство я принцип действия ЦВМ...................... 17 1 . Устройство ЦВМ , . , . . ............ 17 2 Система команд . ........................... . . - 31 3 Продстлвпенве информации............................ 2? Глава II Подготовка авдачд и ев решение на ЦВМ ................ 30 1 Выбор метода решения.......... , . 32 2 . Описание алгоритма вычпелеиля , .............. Зв 3 Элементы дрограммироиапяя . . ............ 39 4 Выявление ошибок при отладке программы . . , 41 Часть вторая АВТОМАТИЧЕСКОЙ ПРОГРАММИРОВАНИЕ Глава III. Адгол’60......... . . ............. 47 -1. Элементы языка .................................. 51 2 Структура программе............................... 35 3 . Оператор цписваниаипя . . ...... . 70 Расчет коэффициентов диЛфуаип тазов (72). Расчет теплообмвнштка (72)<ьРасчет комМпщиентов активности компонентов н бинарной сноси (75) 4 Оператор, перехода (Т^еклшчатель . ....... 78 Расчет температурной .зависимости мольного объема жидкости (78), 'РаоЧст иопцептрадии реагента в химиче- ской реакции (80) 5. Пустой оператор.................................... 82 в. Условный оператор ....................... . . . . 83 Расчет зависимости pH водного раствора (80), Расчет амплитудко.фааовыт и частотных характеристик объек- тов рогулнрования (87) 7. Оператор цикла................................. 83 Расчет коэффициентов линейной корреляция (94). Вычисление произведении матриц (195), Расчет пдро- ягплкостного равновесия в идеальных многокомпонент- ных сносях (97). Определение эмпирической формулы химического соединения (98) Б
Расчет коэффициентов активности компонентов в много- компонентной смеси по уравнениям Воя Лаара (100). Рас- чет плотности паровой фавн многокомпонентной смеси (1(И) г 8 Процедура...................................... . 105 >, Расчет двухступенчатого реактора идеального смеше- ния (146), Онределенпе параметров ячеечной модели i реактора (118), Расчет вязкости многокомпонентной смоси (121) Глава IV, Фортран-IV , , , ................................... 123 ; 1 Огруятура программы ............ , 123 2 Элементы входного явыьа ........................... 125 : 3, Функции п подпрограммы , ........ ,. 126 *’ 4. Операторы..................... , , , , . . . 134 Глава V. Автовод «Инженер» (АКИ) . . ............. 146 “ 1, Структура программы в автокоде , , ............ 148 2 Элемопгы входного языка ...........................147 3 Операторы . . . ...................149 4 Сравнение структуры алгоритмических иаыкоп Алгол 80, Фортран-IV и автокод «Инженера ......................158 / Глава Vi. Реалиовцвш Алгола......................................... 163 1, Общая характеристика трансляторов . . ...... 183 2 Алгамс — конкретное представление нанка Ал го гк 60 164 3, Стандартные Процедуры транслятора «МЭИ-3» . 168 1 Часть третья ВЫЧИСЛИТЕЛЬНЫЕ МНГОДЫ Глава VH. Общие замечания о точноств пычаслевиЙ ...... 173 Глава VIII Уравнении о одним нснвясстным.......................181 1. Отделение норией...................................182 2. Утопление нерпой............................... , 183 Расчет температурного режима реактора (196). Расчет аппарата однократного испарения (198). Расчет колой* ны ректификации бинарной смеси (200) Глава IX. Вычисление интегралов . -........................... 207 1. Формулы чнелвавого янтегрнроравин................. 207 2 Оценка точности формуп численного интегрирования 217 3. Проверка тврмодпнампческои совместимости экс пер и* ментальных данных по парожидкостному равновесию 219 Глава X. Системы линейных алгебраических ураипений .... 228 1, Основные определения............................. 228 2, Матричные операция . ....................... 232 Расчет иоэффициелтон еффекгавцосте для ячеечной модели движения потока жидкости на тарелка рактпфи- нациоипой колонны (243) 3 Решение системы линейных алгебраических уравнений 247 Модель тарельчатого абсорбера (264). Модель тарель- чатой колонны роктифшеапви многокомпонентных сме- сей (266) 6
4, Собственные значения я собственные векторы матрац в задачах химической технологии...................... 276 5. Вычисление собстпаимых значений я собственных век- торов матриц ........................................ 282 Гланя XI Обработка ввшержментольиых данных.................296 1 Интерполирование............................ .... 299 Определение титра раствора 312 2 Аппроясимацвл ... .... ........ 314 Определение параметров уравнения Редлпха —. Кистера дня расчета коаффициентов активности помпоеоегтов в растворе (332) Расчет коэффициентов зависимости дав- лении нард чистого компонента от тоыиаратуры (338) 3 Вычисление коэффициентов нелинейной аавясняости ио методу наименьших квадратен . , ............. , . 339 Гнева XII Дифференциальные уравнения.......................... 347 1 Методы члененного интегрирования диффереяцяальных уравнения .. ................................. . 352 Математическая модель нестационарных режимов тарель- чатой ректификационной иолошод (368) математическая -модель реакторе идеального вытеснения (369) 2 Решений двухточечных краевых аадач............, . 379 Расчет профиля температур при нестационарной тепло- пролодпостн (381). Расчет разделительной способности таролкв рвктнфиконцонной-нолокны для диффузионной модели движения потока жидкости (382) Глава ХШ. Программы решения некоторых аадач химической техно- логии .................................................. .... 386 1 Задачи оптимизации ................................386 2 Математическая модель реактора идеального смещавия 398 3 Программа расчета физяко-хныичоских свойств угле- водородных смесей 398 4 Расчет парснкидковтиого равновесия........... 402 Часть четвертая КРАТКИЕ СВЕДЕНИЯ О ЦИФРОВЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ ИЙ.Х МАТЕМАТИЧЕСКОМ ОБЕСПЕЧЕНИИ Глава XIV Машины сорив «Промипь» . . .............. 421 1, Общая характернстииа , .................... 421 2. Программирование . , . , , , . , . 427 Глава XV, Машины серив «Наирне ............................. 450 4, Общая характорастпка ............................ 450 2, Автоматическое программирование (АП) , , , , . 453 Глава XVI ЦВМ «Мипон-22» . ....................... 466 1, Общая характеристика , ...................... . 466 2 Математическое обеспечение........................474 ЗвнлиАенне .............................................. 482 Литература................................................... 483 Указатель метвлппгвисткческих переменных н терминол ...... 485 Предметный указатель , ..................................... 486
ПРЕДИСЛОВИЕ На современном этапе развития химик и химической техноло- гии химик-исследователь и химик-технолог встречаются в своей практической деятельности с разнообразными явлениями, описа- ние которых требует использования достаточно сложных мате- матических зависимостей. Применение этих зависимостей в прак- тических расчетах требует обычно больших объемов вычислений, что в значительной степени снижает их ценность при ручных способах счета. В этой связи средства вычислительной техники существенно расширяют возможности исследователей, поскольку позволяют, с одной стороны, спять расчетные ограничения, обус- ловленные сложностью вычислений, а с другой—дают вовмож-; кость более оперативно обрабатывать экспериментальные данные и обобщать их в форме зависимостей, наиболее полно отражающих сущность рассматриваемых явлений. Настоящая книга имеет целью ознакомить хнмиков-исспедо- в ат ел ей и химиков-технологов с возможностями современных средств вычислительной техники на примерах решения разно- образных задач из различных областей химии и химической тех- нологии, Особенностью настоящего издания является то, что в нем в сжатой и одновременно доступной форме изложены основ- ные сведения, относящиеся ко всем этапам решения задач на вы- числительных машинах, включая постановку задачи, математик ческое описание, выбор численного метода, программирование, отладку программы и решение задачи, Кинта рассчитана на читателя, имеющего уровень математи- ческого образования в объеме курсов общематематической подго- товки химических и технологических специальностей вузов и университетов. Отдельные разделы книги, касающиеся програм- 9
мировайця на языке Алгол, вычислительных методов, а также многочисленные примеры законченных программ решения раз- личных задач могут использоваться самостоятельно без углуб- ленного систематического знакомства со всем материалом. В большинстве приведенных примеров расчета дается мате- матическая формуляров»а задачи и рассматриваются основные особенности используемого математического описания. Читате- лям, желающим более подробно познакомиться с методамп пост- роения математических описаний, объектов химии я химической технологии, можно рекомендовать монографию В. В. Кафарова «Методы кибернетики в химии и химической технологии». При подготовке нястпятцаго издания авторы ставили своей целью представить в нем тот минимум сведений, который необ- ходим для практического освоения средств вычислительной тех- ники. Большое впимание уделяется изложению алгоритмического явыка программирования Алгол-60, причем основной акцент при изложении Алгола делается на составление законченных программ решения тех или иных задач. Внимание, уделяемое Алголу в настоящем издании, по мнению авторов, оправдано, с одной стороны, тем, что атот язык широко используется сейчас в качестве входного на многих вычислительных машинах, а с другой — тем, что знакомство с этим языком, с его семантичес- кими и синтаксическими средствами одновременно дает возмож- ность познакомиться и с приемами программирования различных вычислительных процессов. Представленные в книге разделы вычислительной математики отобраны на основе опыта решения различных химических и технологических задач самих авторов, а также на основе ана- лиза многочисленных публикаций в области химии и химичес- кой технологии отечественных к зарубежных исследователей. Естественно, что при таком способе отбора не все разделы вычис- лительной математики оказались освещенными в равной мере. Однако в задачу настоящего издания не входило систематическое наложение всех вычислительных методов, в ставилось целью проиллюстрировать их применение дли решения практических аадач. Читатели, желающие более углубленно познакомиться с вычислительными методами, могут обратиться к литературным источникам, ссылки на которые даны в соответствующих разделах книги 10
При подборе примеров авторы стремились затронуть самые различные области химии и химической технологии, не ограни- чиваясь какой-либо одной узкой областью Все примеры практи- ческих расчетов оформлены в виде закопченных программ и могут использоваться для выполнения вычислений Кроме того, в главе 13 приводится ряд специальных программ решения некоторых задач, которые могут представить интерес для многих специали- стов. При записи всех программ в настоящем издании используется конкретное представление Алгола — входной язык транслятора МЭИ-3, разработанного для вычислительной машины «Минск-22» Выбор этого языка в качестве основного для записи программ, представленных в книге, объясняется тем, что машины типа «Минск-22» довольно широко распространены в настоящее время, и все представленные программы могут без изменений использо- ваться на них для выполнения расчетов. Из числа других ЦВМ отечественного производства в книге рассмотрены машины серий «Про минь», «Напри» как наиболее широко распространенные малые машины, обладающие вместе с тем достаточно большими возможностями для решения химических и технологических задач Вероятно, но всо затронутые здесь вопросы рассмотрены с полнотой, желательной широкому кругу читателей, на которых ориентирована эта книга Поэтому авторы будут благодарны за все советы н замечания, высказанные им по поводу этой книги.
ВВЕДЕНИЕ Способность цифровых вычислительных машин (ЦВМ) пере- рабатывать огромные объемы информации в сравнительно корот- кое время н выполнять сложнейшие вычисления в процессе этой переработки открывает широкие возможности использования .цифровой техники практически в любых отраслях химик и хими- ческой технологии, где только возникает необходимость в более *йли менее сложных расчетах, Среди разнообразных применений ЦВМ и химии и химической технологии можно выделить следую- щие области: 1. Переработка больших массивов информации. 2. Обработка экспериментальных данных. 3. Математическое моделирование 4. Оптимальное проектирование. 5. Управление. Несмотря на существенное.различие в содержании отдель- ных задач, относящихся к различным направлениям, в процессе подготовки их к решению па ЦВМ необходимо выполнение опре- деленных этапов, связанных с математической формулировкой задачи, выбором численных методов ее решения, разработкой общего алгоритма, программированием и т. д. От того, насколько 'успешно решены отдельные вопросы, возникающие па этих этапах, во многом зависят быстрота, а иногда и возможность получения желаемых результатов. Переработка больших массивов информации В настоящее время исследователям приходится иметь дело с огромными мас- сивами информации. Например, только органических соединений сейчас известно и описано около четырех миллионов н около трех миллионов неорганических. Кроме того, сейчас неизмеримо возрос поток научной информации. Только реферативный журнал «Хи- мия» публикует ежегодно более 120 тыс рефератов не различным областям химии и химической технология. Каждые 10 лет этот поток информации удваивается. Естественно, что в таках усло- виях поиск необходимой информации превращается в самостоя- тельную проблему. В химической технологии типичными примерами подобных еадач, связанных о переработкой больших массивов информации, являются учет промышленной продукции, планирование снаб-
жения и сбита, оперативное управлений производством, которые формируются в виде автоматических систем управления производ- ственными предприятиями и отраслями (АСУП и ДСУО). Обработка экспериментальных банных. Вее в ад анк обработки экспериментальных данных по существу можно разделить па два класса: отыскание неизвестных параметров в закономерностях, построенных на теоретических предпосылках, учитывающих физи- ческую сущность рассматриваемого процесса или явления, и отыс- кание неизвестных параметров в формализованных закоиомернас- тях, построенных па статистической обработке опытных дяиных, полученных в результате пассивных или активных экспериментов. Решение задач второго класса, как правило, сводится к получе- нию регрессивных соотношений, чисто имеющих вид полиномиаль- ных уравнений, (Математическое моделирование Метод математического моде* дарования основан на том, что реальный процесс* протекающий в объекте моделирования, представляет собой сочетание различ- ных явлений/ подчиненных закономерностям, ц может быть опи- сан (математическими [соотношениями. Изучение этих явлений, их описание на языке1*математики позволяет при последующем объединения уравнений в единую систему получить матема- тическое описание исследуемого объекта? Само по себе математически о описание еще не дает возможности судить о свойствах объекта моделирования, в особенности в тех случаях, когда оно достаточно сложно. Необходим алгоритм решения системы уравнений математического описании, позволя- ющий определить значения переменных, характеризующих сос- тояние объекта моделирования в различных ситуациях, т. е. моделировать процесс. Математическая модель любого процесса реализуется на вы- числительной машине. Поэтому (моделирование резко сокращает объем часто весьма сложных и дорогих натурных экспериментов и дополняет их исследованиями на вычислительной машине. Ме- тод математического моделирования открывает возможности прог- нозирования поведения объектов в неизвестных ситуациях* поз- воляет изучать многие характеристики проектируемых процессов, оценивать различные варианты аппаратурного оформления, а также использовать математические методы оптимизация для отыскания оптимальных режимов эксплуатации и способов^уп- равления ими1 Й*' Различают детерминированные н статистические модели. Ма- тематическое описание детерминированной модели представляет собой совокупность уравнений, определяющих взаимосвязь вход- ных и выходных переменных состояния объекта моделирования с учетом конструктивных и режимных параметров процесса, К нх числу относятся уравнения, отражающие общие -физические за- коны (например, законы сохранения массы и энергии), уравнения, описывающие отдельные элементарные процессы, протекающие в 13
объекте моделирования (например, химические превращения, массообмен), и т. п. Кроме того, в состав математического описа- ния могут входить также эмпирические и полузмпирические зави- симости между различными переменными в процессе, если Teopet- тнческая форма этих зависимостей неизвестна или известна лишь приблизите л ьно. При отсутствии информации о характере процессов, протекаю- щих в Объекте моделирования, иногда используются статистичес- кие модели, представляющие собой систему эмпирических зави- симостей, полученных в результате статистического обследова- ния действующего объекта. Математическое описание в этом, слу- чае имеет вид корреляционных иди регрессионных соотношений между входными и выходными параметрами процесса. Такие опи- сания, как правило, не отражают индивидуальных свойств объек- та моделирования, что затрудняет обобщение результатов, по- лучаемых при их применении. Выбор того или иного алгоритма решения системы уравнений математического описания определяется конкретным ппдом урав- нений, входящих в состав математической модели. Для описания свойств объектов моделирования используются различные урав- нения. Конечные уравнения алгебраические п трансцен- дентные используются для описания стационарных режимов объек- тов, рассматриваемых как объекты с так называемыми сосредото- ченными параметрами. Отличительным признаком таких объектав являются сосредоточенные конечные объемы массы, в пределах которых переменные состояния сохраняют постоянные значения, например реактор идеального смешения. Кроме того, коночные уравнения используются в составе математического описания для отражения определенных закономерностей о физической природе тех или иных явлений, например, для расчета температуры кипе- ния смеси компонентов известного состава и др. Обыкновенные дифференциальные у ран- не и и я используются для математического описания нестацио- нарных режимов объектов с сосредоточенными параметрами, а также для описания стационарных режимов объектов с так назы ваемыми распределенными параметрами, в которых значения параметров зависят от одной пространственной координаты, как, например, в реакторе идеапьного вытеснения. При математичес- ком описании с помощью обыкновенных дифференциальных урав- нений необходимо задавать граничные условия. Дифференциальные уравнения в ^част- ных производных используются для математического описания пест ац иокарпы х режимов объектов с распре де ленными параметрами, а также стациопарных режимов объектов, в кото- рых значения параметров зависят более чем от одной простран- ственной координаты. Например, для описании нестационарных режимов теплообменников и реакторов вытеснения или для они-
сакля распределений температур и концентраций в потоках, в которых эти параметры изменяются как в осевом, так и в попе- речном направлениях. Оптимальное проектирование Часго при создании нового процесса приходится решать целый ряд задач оптимального про- ектирования, подчиненных, общей единой цели,— созданию дос- таточно эффективного н экономичного производства. Оптимальное проектирование современных кимико-технологических процессов предполагает отыскание таких вариантов аппаратурного оформ- ления процесса, при которых определенный его показатель имеет наибольшее или наименьшее значение Типичными примерами таких задач являются проектные разработки, в которых требуется обеспечить возможность реализации процесса с наименьшими зат- ратами па ею аппаратурное оформление или требуется выбрать вариант аппаратурного оформления процесса, позволяющий полу- чить максимальный выход продукта. Как правило, решение задач оптимального проектирования требует наличия математических моделей процессов, составляю- щих новое производство. G использованием этих моделей решаются как задачи оптимального проектирования отдельных стадий, т ак и задачи объединения этих стадий в единую производственную схему. Математические модели процессов позволяют эффективно ис- пользовать математические методы оптимизации, определять оп- тимальные решения на тон или иной стадии проектирования По существу задачи оптимального проектирования эквивалентны, задачам отыскания тех параметров математических моделей, ко- торые определяют конструктивное оформление и режим процесса при заданных требованиях и количественным и качественным ха- рактеристикам подучаемой продукции. Решение задач оптимального проектирования, как правило, требует огромного объема вычислений, выполнить который воз- можно лишь при достаточно мощных средствах вычислительной техники я рациональном их использовании. Этим в значительной степени объясняется то, что до создания вычислительных машин, способных быстро и точно производить большой объем вычисли- тельной работы, методы оптимального проектирования практи- чески не имели широкого распространения. Проектирование про- цессов обычно выполнялось на основе весьма приближенных рас- четов и оценок, что чрезвычайно задерживало сроки осуществле- ния и освоения новых производств. Появление вычислительных машин позволило качественно изменить отношение к важнейшему этапу создания нового процесса — этану проектирования, сфор купировать его во многом как математически точную задачу и воспользоваться для ее решения современными вычислительными средств ами. Управление, Задачи управлении различными химико-техноло- гическими процессами по существу неразрывно связаны с задача- 15
’4 ‘’ХУ’ ;"><;. '.5 ? г' I . ' ' '. ' ' J .1 .'МИ оптимального проектирования Более того, при оптимальном ^проектировании новых процессов задана управления рассматри- . ваются с необходимостью, и часто возможность реализации -най- . Денного проектного решения целиком определяется возможностью '''осуществления того или иного варианта оптимального уиравле- , яия процессом. Для задач оптимального управления современными химичес- кими производствами характерна четко выраженная иерархическая ‘ структура в соответствии с конкретным назначением системы. Пер- вый уровень составляют задачи управления отдельными процес- сами производства, которые в простых случаях решаются чаще всего локальными средствами автоматизации, а в более сложных случаях относительно несложными вычислительными устройст- вам^ реализующими заданный алгоритм оптимального управ- ления. Второй уровень иерархии составляют задачи управления со- вокупностью отдельных процессов, составляющих в определен^ ном смысле законченное производство. На этом уровне решаются ввдачн оптимального распределения энергетических и материаль- ных потоков с учетом важнейших показателей отдельных про- цессов. Решение задачи распределения требует использования уже более мощных средств вычислительной техники и разработки специальных алгоритмов управлении, учитывающих конкрет- ную структуру данного производства. Наконец, на третьем уровне иерархии находятся задачи оп- тимального управления" функционированием совокупности целого ряда производства, подчиненных единой производственной прог- рамме. Этот уровень составляют задачи оптимального планиро- u валяя, отличительными чертами которых являются высокая раз-, мер порть, возможность неопределенности некоторых условий, а также огромный объем информации, подлежащей переработке. Возможности современных средств вычислительной техники н . достижения вычислительной математики позволяют весьма эф- фективно использовать вычислительные машины в области хими- ческой технологии во всех рассмотренных выше областях ее применения. От инжеиера-исслодовагелп теперь требуются пре- дельно точная формулировка задачи и разработка алгоритма ее решения, для чего необходимо совершенное владение численными методами анализа и одним из важнейших инструментов иссле- дования — вычислительной машиной
ЧАСТЬ ПЕРВАЯ ТЕХНИКА РАСЧЕТОВ НА ЦИФРОВЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ Глава I УСТРОЙСТВО и ПРИНЦИП ДЕЙСТВИЯ ЦВМ 1. Устройство ЦВМ Рно. j НркоцкпяшнаЛ Алок-схемh ЦВМ Лю ба и цифровая машина состоит из следующих взаимосвязан- ных блоков: запоминающего устройства (ЗУ); устройства ввода (УБ); устройства вывода (УП); арифметического устройства (АУ); устройства управления (УУ). Каждое из устройств ЦВМ может рассматриваться как отдель- ное целое, но все онн связаны между собой логической структу- рой машины, иными словами, связаны каналами передачи ин- формации и каналами управле- ния. Принципиальная блок-схе- ма ЦВМ представлена на рис. 1. Запоминающее устройство (память), В исходные данные, необходимые для решения зада- чи, обычно входят исходная информация, представленная в виде коэффициентов, констант, начальных условий, таблиц из- вестных функций л других чис- ловых данных, и программа — алгоритм данный □ой м решения задачи, аа- языке вычислитель- на У ьа о запоминающего устройства заключается в храпе- иыформадии и программы и передаче ее в другие при решении задачи Емкость запоминающего ляется количеством ячеек памяти Каждая ячей-
ка строго фиксирована, т. е. имеет енол адрес, н предназначена для хранения числа или команды программы, называемых обычно машинным словом. Машинное слово представляет собой совокуп- ность цифр, каждой иа которых соответствует одни разряд. Ко- личество разрядов, отведенное для записи одного слова, опреде- лает разрядность машины или так называемую разрядную сетку. . Важной характеристик ой запоминающего устройства явля- ется время выборки одного слова информации При этом иод вре- менем выборки понимается время, необходимое для отыскания слова в общем массиве слов памяти машины и пересылки его в соответствующее устройство. Величина времени выборки непос- редственно связана с быстродействием ЦВМ. В современных вычислительных машинах обычно использу- ются два типа аапоминающих устройств — оперативные запоми- нающие устройства (ОЗУ) к долговременные или внешние запо- минающее устройства (ДЗУ). ОЗУ характеризуется малым временем выборки и непрерывно используется в процессе вычислений. ДЗУ имеют относительное большое время выборки, ко информации из них используется ив непрерывно, а периодически путем обмела с ОЗУ, причем этот обмен, как правило, производится большими массивами Подоб- ное двухступенчатое построение памяти позволяет хранить боль- шие массивы информации и быстро ее обрабатывать. Иногда пспольвуется еще един тип запоминающих устройств — Tait называемые буферные устройства. Буферные запоминаю- щие устройства занимают промежуточной положение между опе- ративными и внешними, обладая меньшим временем выборки, чем ДЗУ, но большим объемом памяти, чем ОЗУ Опи позволяют как бы увеличить емкость оперативной памвти н используются либо для хранения часто используемой в вычислениях информации, либо для хранения промежуточной выводимой или вводимой информации. В настоящее время наиболее часто ОЗУ выполняется на ферри- товых сердечниках, реализуемых в виде матриц, состоящих из колец магнитного материала, способных перомагпичнвПться под воэдействнам импульса тока. Каждое кольцо используется для Хранения'одного разряда Для хранения числа, содержащего, например, 36 двоичных разрядов, необходимо 36 ферритовых колец. Использование магнитных сердечников для хранения инфор- мации осповапо па том, что сердечник имеет два устойчивых состоя- ния: состояние положительной намагниченности (хранение едипн- цы) и состояние отрицательной намагниченности (храпение нуля). Переход на одного состояния в другое осуществляется под воз- действием импульса тока. Время выборки информации ия ДЗУ обычно составляетьели- чину порядка нескольких миллисекунд для магпнтных^арЯбанов 18
к дисков п нескольких секунд для магнитных лент, Важно, чтобы при ограниченном числе разрядов машинного слова иметь воз- можность хранения большего объема информации, чем при ад- ресной реализации ОЗУ Это достигается с использованием спе- циальных команд обращения к ДЗУ, с помощью которых обеспе- чивается передача информации между ОЗУ и ДЗУ большими массивами. Устройство ввода. Исходная программа и информация, соот- ветствующим образом закодированные ц деренесенные на мате- риальный носитель информации (перфорированная бумажная лента, бумажные перфокарты к т. д.), вводятся в машину при помощи электроиио-механических устройств. В процессе ввода чтение информации с перфолент и перфокарт обычно производился фотосчитмвающимн устройствами, преоб- разующими последовательность отверстий на носителе в последо- вательность электрических импульсов. Поскольку скорость ра- боты электронно-механических устройств знататолъио меньше быстродействия электродных, входные устройства часто строятся как автономные группы механизмов, работающие несинхронно с машиной и независима от нее. Общая организация ввода исходной информации и программы состоит из следующих этапов: нанесения оператором ири помощи клавишных устройств числовых данных и программы на первич- ный носитель информации;. контроля подготовленных данных; ввода исходных данных в вычислительную машину. При автономной работе входных устройств вводимая инфор- мация поступает в буферное запоминающее устройство, откуда по мере необходимости передается в ОЗУ или ДЗУ. При работе входных устройств необходим контроль правиль- ности ввода. Для этого чаще всего используется способ сумми- рования элементов вводимого массива. В некоторых устройствах ввода суммирование выполняется автоматически. Вели контроль- ная сумма вводимого массива известна, то проверка правильности ввода заключается в сравнении контрольной н вычисленной сумм. Если же контрольная сумма вводимого массива неизвестна, тс обычно используются повторный ввод информации и сравнение контрольных сумм первого и второго вводов. Устройство вывода (печать) предназначено для вывода резуль- татов вычисления. Организация вывода может быть автономной. В этом случае выводные устройства работают несинхронно с ма- шиной я выводят информацию из собственного буферного запо- минающего устройства. По мере получения результатов информа- ция переносится из ОЗУ в буферное ЗУ выводных устройств, где произведшей ее обработка н вывод иа печать Печать при необ- ходимости может ^производиться1 я несколькими'^печатающими устройствами При неавтономной работе выводные устройства работают син- хронно с машиной, Результаты решения задачи выдаются в ne- tt
чЩфщее устройство, которое при этом синхронизирует работу °Цй машины. Арифметическое устройство (АУ) позволяет осуществить в вв^И<цштеяьной машине любую операцию над числами. Ойо со- г Д^Р^ит отдельные блоки для выполнения различных операций, .. яйЦрдмер, сложение, вычитание, умножение, деление. Для хра- п6^йя чисел в процессе выполнения над ними элементарных one- в АУ также организована память в виде специальных ре- -гастров, в которых может храниться только одно число. Коли- чеетао регистров арифметического устройства обычно невелико и ?®^о бывает больше 2—5. О содержимом регистров можно ву- 8®**, как правило, по световой сигнализации на пульте управ- ле*Ия машиной. Визуальная индикация результатов выщолне- операций позволяет программисту в процессе отладки программы следить за правильностью выполнении программы. “°ДныЙ цикл работы арифметического устройства складывается трех этапов: вызова информации в-регпстры пз ОЗУ; выпол- ®еЯця операции; передачи результата из регистров в ОЗУ. Устройство управления (УУ} обеспечивает автоматизацию ^Целительных процессов в с о ответе твик с заданной программой. Программа решения задачи представляет собой определенный на%р команд, порядок следования которых устанавливается за- РаНее нри реализации выбранного алгоритма решения. Каждая ка&ацда определяет выполнение одной операции. Это могут быть °Яерации ввода исходных данных и программы, операции сбра- к запоминающим устройствам, арифметические и логине* скЯо операции, операции изменения последовательности вычисли ПЙЙ (операции перехода). УУ не имеет такой автономности, как, например, запоминаю- щее устройство или устройство ввода — вывода, и его функции аа^йсят от структуры мапшны. В процессе решения задачи У У свя- *Цо с различными устройствами машины и координирует их ра- б°ту.‘ Его работа определяется рабочим циклом машины. Цикл нзцинается с выполнения очередной команды и заканчивается Сборкой следующей команды. В зависимости от выполняемой ясЧи‘анды УУ подготавливает машину для выполнения соответствую- щей операции. Например, выполнение команды действия над Ослами проиеводится следующим образом. УУ обеспечивает ®Мюрку чисел по адресам на ОЗУ н передачу их в регистры ариф- м^Тичесиого устройства, после чего оио настраивает । арифмети- ческое устройство на выполнение операций, соответствующих Цюзняемой команде. После выполнения операции и записи (яри необходимости) результата в ОЗУ проиеводится выборка сг*0дующей команды.
2, Система команд Любая ЦВМ может выполнять лишь определенные операция* К таким операциям обычно относятся сложение, вычитание, умно- жение, деление и ряд логических действий. Операция реализуется я машине кмиаябой, задаваемой в программе вычислений. Рад- личные типы ЦВМ могут иметь различные наборы команд, обра- зующих систему команд данной машины. При решении любой задачи на ЦВМ необходимо составить такую последовательность команд, которая прн ее выполнении приведет к желаемой цели — решению Эта последовательность команд, необходимая для ре- шения задачи, называется программой, В общем виде команда для выполнения арифметической опе- рации типа сложения или умножения может содержать следующее количество элементов информации: — код операции, т, е. указание, как должны быть обработаны операнды (числа, над которыми производятся действия); — адреса величин или чисел (номера ячеек ОЗУ), над кото- рыми должка выполняться операция-, — адрес ОЗУ, куда должен быть помещен результат выпол- нения операции; — адреса вспомогательных ячеек, где хранится информация о характере изменения как кодов операции, так и адресных частей команды. По числу адресов (операндов), :;которые может содержать команда, все ЦВМ могут быть подразделены на одноадресные, двухадресные, трех адресные Обычно команды программы выполняются последовательно в корящее их следовании, г. е. за командой с первым номером вы- полняется команда со вторым номером и т. д., иона не встретится команда, изменяющая такой порядок выполнения программы. Все команды по характеру выполняемых операций можно раз- делить на следующие- Команды для выполнения арифметических операций сложения, вычитания, умножения и деления. Указанные операции могут выполняться с различными модификациями, например, обратное вычитание, операции с модулями чисел, умножение с удвоенной точностью я др. Сюда относятся также операции нормализации, сдвига машинного слова на некоторое число разрядов и т. д. Команды для выполнения ловимеских операций поразрядного сложения (сложение без перекоса единицы в старший разряд), поразрядного и логического умножения, логического к цикли- ческого сдвига п т. д К о.наибы для выполнения операций передачи управления, поз- воляющие изменять последовательность выполнения команд в программе, Они могут быть условными и безусловными. Первые используются для изменении последовательности выполнения команд программы в зависимости от результата предыдущей 31
операции или значения какою-либо признака. Вторые — для заданного изменения последовательности вычислений. Команды обращения к запоминающим устройствам и устрой- ствам ввода — вывода используются для передачи информации менаду запомпнающимн устройствами, и такщо между запомина- ющими устройствами и каналами ввода — вывода информации. Команды для выполнения циклических вычислений позволяют изменять коды операций или адресные части команд при орга- низации циклических вычислительных процессов. 3. Представление информации Символы и цифры, используемые для представления вводимой, информации, составляют входной язык машины, состоящий обыч- но на цифр десятичной системы счисления, букв одного пли не- скольких алфавитов и ряда вспомогательных символов — знаков операций, разделителей и т д. Символы входного языка машины представляются па входных устройствах — па клавишном набор- ном устройстве или иа клавиатуре печатающего уотройства Системой счисления называется совокупность правил п зна- ков, позволяющих выразить любое число. Для изображения чисел обычно используется позиционный принцип записи, согласно которому один л тот же символ (цифра) имеет различное значе- ние в зависимости от места, которое он-занимаем в разрядной сетке числя. Основной характеристикой позиционной системы счисления является основание, Основание системы численно равно количе- ству различных знаков, используемых для записи произвольного числа. Так, у системы с основанием 10 для записи чисел исполь- зуется десять различных символов: 0,1,2, . ,9; у системы с основанием 2 — всего два символа: 0,1, Основание системы показывает^ во сколько раз меняется вна пение цифры при переходе ее на соседнее место в числе (в соседний разряд). Перемещение цифры на разряд влево равносильно умно- жению ее иа основание, а на разряд вправо — долеплю па основа- ние Например, число':г1233321 может быть записано в видо 1000000 4- 200000 4- 30000 4- 30000 300 4- 20 4- 1 или 1*10* 4- 4- 2*10в 4- 3-10* 4- 3-10» -| 3-102 4- 2-101 4- 1-Ю®. Аналогично запишется п любое дробное число, например, 76,22 = 70 4- 6 4- 0,2 4- 0,02 = 7*101 |- 6*10® 4- 2-КГ1 + 2*10Л Двоичное число 1101,11 может быть записано 1101,11 = 1-23ь4" 4- 1-2“ 4-0-21 4- 1-2® 4-1-21 4- 1*2 » Таким образом, позиционная система счисления позволяет записать любое число в виде суммы произведений основания в соответствующей степевп на цифру данной системы, т е. x=3o,s’-‘, Jt-1 за
где S — основание системы счисления; а — цифры ОД, ,, , , 5 —1; р — количество разрядов, соответствующих целой части числа; п — количество разрядов или длина числа, к — индекс В этой записи основание 5 может быть произвольной цифрой и, очевидно, чем больше величина основании, тем короче запись одного н того же числа Для представления чисел в машине обычно используется двоичная система счисления. Такая система обладает преимущест- вом н том смысле, что для записи достаточно иметь набор из двух символов 0 и 1, тогда как в десятичной системе — десять апаков ОД,2, , . , ,9. Для записи одного разряда двоичного числа до- статочно иметь элемент с двумя устойчивыми состояниями, соот- ветствующими символам 0 и 1. Для записи одного разряда деся- тичного числа уже необходим элемент, который может находиться в десяти устойчивых состояниях, соответствующих цифрам 0,1,... . . . , 9 Естественна, что техническая реализация устройства, оперирующего с числами, записанными в двоичной системе счис- ления, значительно проще, чем устройства, предназначенного для операций о десятичными числами Двоичная система счисления для представления машинного слова, в частности команды, требует обычно 30—40 разрядов Для сокращения ааниси команд испольауются восьмеричная и шестнадцатиричная системы Восьмеричная система счисления является наиболее распрост- раненной для кодирования команд машины Один восьмеричный разряд есть три записанных рядом двоичных разряда Символами восьмеричной системы являются цифры ОД, . . . , 7, а основа- ние, как п для любой системы, запишется числом 10. Для того чтобы перевести двоичное число в восьмеричную запись, необходимо двоичное число, начиная с младших разрядов, разбить на триады н каждую из ипх записать восьмеричной циф- рой. Прп этом неполную старшую триаду следует дополнить нулями слева. Например, 101011100101g - 5345». Если переводимое число дробпов, то отдельно переводится целая и дробная частя, причем д.'гя дробной части числа триады отсчи- тываются слева направо и неполные — дополняются нулями спра- ва Например, 101Д12 = 101Д102 = 5,6» Система счисления с основанием 16 используется реже В ос- нове перевода чисел из двоичной системы здесь такжо исполь- зуется то обстоятельство, что 2* = 16, и, таким образом, деление двоичной записи чпела производится па тетрады. Например, «МИО 1010И0л = 13526g = 17561в. 23
В табл. 1 представлены примеры записи чисел в различных 'Системах счнслепия Здесь для написания недостающих цифр в Шестнадцатиричной системе введены следующие обозначения: Ю — А; 11 — В, 12 — В; 13 — Г; 14 — Д; 15 - Е. Таблица 1 CuerawiH Стимгнир Сиотжяы сш-whwi НМЙШЧ- йжя дврнч кал иоаьмврич’ анк шеетнад* латирич- иая десятич* ндя Д8ОНЧ ижн EOObMttUtf’P пая шесгиад- и ап 0 0 0 0 9 1001 11 9 1 1 1 1 10 1010 12 А 2 10 2 2 И 1011 13 Б 3 и 3 3 12 4100 14 В 4 100 4 4 13 1101 15 Г 5 101 5 5 14 1110 10 Д в 110 6 6 15 1111 17 Е 7 111 7 7 1b 10000 20 10 8 1000 10 8 0,5 0,1 0,4 0,8 Двоично-десятичная система используется как вспомогатель- ная при вводе и выводе, и вычисления л иен не производятся. Запись чисел в двоичво-десятичной системе производится следующим образом. Каждая десятичная цифра числа записыва- ется двоичным кодом Поскольку три двоичных позиции позволя- ют вакодировать десятичные цифры от 0 до 7, то в этой системе для кодирования используются четыре двоичных разряда Та- ким образом, чтобы изобразить цифры от 0 до 9 при двоичном основании, необходимо минимум четыре позиции, которые изоб- ражают 8, 4, 2, 1, Оставшиеся комбинации двоичных тетрад по- пользуются при кодирования вспомогательных признаков, таких, как знаки операций, признаки ввода и вывода п др. ^Чтсбы перевести десятичное число в двоично-десятичный код, необходимо каждый его разряд представить двоичным кодом. Например, десятичное число 19875,234 запишется как 19 875 234 0001 1001 1000 0111 QW1 0010 ООН 0100 Таким образом, десятичное число 19875,234 в двоцчно-десятпч- п ом коде есть , 11001100001110101,0010001101 24
Переход от двоично-десятичного кода к десятичному также весьма прост. Для этого число разбивается па тетроды, и каждая ив них записывается десятичной цифрой Числов ан информация, представленная в десятичной система счисления при вводе в намять машины, должна быть преобразова- на в код машины, и наоборот, при выводе — на кода машины — в десятичную систему. Перевод чисел осуществляется по специаль- ным алгоритмам, которые могут быть реализованы конструктив- но или оформлены в виде стандартных подпрограмм В первом случае числовая информация преобразуется в код машины ав- томатически при вводе, а во втором — предусматривается про- граммой. В основе алгоритмов перевода используется то, что пози- ционные системы счисления позволяют записать десятичное чис- ло в виде дискретной суммы произведений цифр на основание в соответствующей степени, т. е. в виде 1 Й х = 3 eiio»-‘ = з мп-*, (i-i) Jt*al lt=l где а* = 0,1, . . 9; 5 — основание новой системы счисления; Ьл ~ ОД, . . . , 5 — 4; Z, 2 — количество разрядов числа в де- сятичной и вовоЙ системах счисления (при 5 < 10 z^>Z);m,n — количество разрядов в целой части числа. _ Различные алгоритмы перевода отличаются тем, как устанав- ливается соответствие, определяемое формулой (1—1). Алгоритм посАеВоватеАЪНооо дыышя на основание систему Этот алгоритм пригоден для перевода целых чисел и заключается й том, что число в соответствующей системе'счнс ления последова- тельно делится на основание той системы, в которую оно пере- водится Деление продолжается до тех пор, пока частное не будет меньше основания Если число делится без остатка, то соответ- ствующая цифра в повой системе будет равна нулю, в противном случае — остатку Число в новой системе запишется в виде ряда цифр, соответствующих последнему частному и остаткам на каждом этапе деления. Пример 1. Найти двоичную запись числа 35id 35и «100011 а 25
Пример 2 Найти десятичную запись числа Ю0101Ц« 10010111 1010 40001 ” 1010 1111 "1010 _1011 1010/ I 1010 11111 ’ 1010 101 1010 10010111ц1511п Ллгормтл сумыирвванмл степеней основания. Этот алгоритм заключается в том, что целое число, ааписанное в виде уравнения (1—1), можяп интерпретировать как многочлен степени основа- ния при старшем разряде числа, т е X « 4- 4 - • + М14- “ = (* • • (сп^ 4“ ея-1) 5 4" . • "4 С1) 5 + г0> где ск = 0,1,2, * ,S — 1, 5 — основание системы счисления. Для того чтобы получить вались числа в повой системе, не- обходимо осповапис 5 и каждую цифру са записать в этой системе счисления и последовательно раскрыть скобки, начиная с внут- ренней. П рпмер 3 Найти двоичную вались числа 107ш 107 -w 1 10! 40.1014 7*10° = (1*1010 4 0)-10Ю4 0111 = 1101011* Пример 4 Найти десятичную валясь числа 1000111а 1000111 = ((<((1-2 40)-2ч 0) ^40) 240 2-Н)<241==7Ь Алгоритм последовательного умножения на..-основаиие системы. Этот алгоритм используется для перевода правильной, дроби ив одной системы счисления в другую. Дробь последовательно умно- жается на основание новой системы с отбрасыванием при каждом умножения целой части получаемого результата. Умножение продолжается до тех пор, пока дробная часть результата после очередного умножения ие будет равна нулю Если этого невоз- можно достичь (бесконечная дробь), то процесс умножения обры- вается иа задаппом шаге, определяемом точностью представления числа. Целые части результатов умножения составляют вались числа в повой системе счисления 26
Прямор 5 Найти двоичную аалась числа 0,175^ 0,175 X 2 0,350 X 2 0,700 X 2 1,400 X 2 " 0,300 0,175m0,0010.. П ример в Найти десятичную ваппсв »jucaa 0,111а 0,111 X101Q 1000,11 X 1010 111,1000 ИТХ15 М11.=о,мъ Представление чисел. Независимо от класса решаемых задач все исходные данные и промежуточные результаты должны нахо- диться в диапазоне, определяемом разрядной сеткой машины. Диапазон чисел, с которыми производятся операции в маши- не, зависит от способа их представления. Существуют две формы представления чисел в машине — с фиксированной и плавающей запятой Обе формы находят применение в современных вычисли- тельных машинах. Обычно система команд машины включает в себя операции для действий над числами с фиксированной запятой и операции для действий над числами с плавающей запятой. Если даже машина не имеет формы представления с плавающей^запятой, то последняя может быть введена программ- ным путем.” Числа с фиксированной запятой. Форма представ леи ия чисел с фиксированной запятой предполагает, что местоположение за- пятой, отделяющей целую часть числа от дробной, остается не- изменным для всех чисел, с которыми производятся операции. Отводимое количество разрядов для представления целой и дроб- ной частой числа устанавливается при конструировании машины н в’дальпейшем не может быть изменено Для машин, работающих в двоичной системе счисления, обычно принято фиксировать за- питую непосредственно перед старшим разрядом числа, т. о если число записано в виде 3L А.—1 27
' / - ' * “ " .,-1. . ‘I ’ то р — 0, Следовательно, любое число в машине представляется в ходе правильной дроби % X — 0 Xi, Х-ц , , , In га О ИЛИ 1), а диапазон чисел, которые могут быть представлены в машине, включает всо числа от—1 до +1. Число, получаемое в реэуль- 'тате вычислений, не должно по величине выходить за указан- ный интервал. Если положить, что машина для представления чисел' имеет п-раарвдную сетку, то, очевидно, минимальным числом будет число, с единицей в младшем разряде, т. е. 2_п. Если число по аб- солютной величине меньше 2гп, то оно будет записано в машине как пуль — так называемый машинный нуль Максимальное по абсолютной величине число, которое может быть представлено в машине при фиксации запятой перед 'стар- шим разрядом, очевидно, по будет превосходить единицу, а точ- нее 1—2_п Форма представлен ил чисел с фиксированной запятой дает возможность оперировать с числами в диапазоне, задаваемом ин- тервалами -(1-2^) < X < 2~п и 2“n < X < 1—2"". Если число больше максимального, то оно выходит за разрядную сетку машины старшими разрядами, т е старшие разряды теря- ются. Это приводит к так называемому переполнению разрядной сетки к искажению результатов вычислений. Возможность переполнения разрядной сетки необходимо предусматривать при подготовке исходных данных, а также в процессе вычислений. Для этого исходные данный умножаются на соответствующие масштабные коэффициенты, обеспечивающие сохранение значений этих чисел, а также промежуточных резуль- татов в заданном диапазоне. Числа с плавающей запятой записываются в виде произведе- ния двух сомножителей X — А • 5Р, где А — мантисса числа*, S — основание системы счисления, р — порядок числа, опреде- ляющий положение запятой. ,/ Число X считается представленным в нормальной форме, если его мантисса А является Правильной дробью, т. о. 0<| А | < 1. Любое число может быть представлено в нормальной форме, Например, число 165,54 для представления в нормальной форме должно быть записано в виде — 165,54 — 0,16554-10si т е. в первоначальной записи числа необходимо перенести запятую влево на количество разрядов, соответствующее целой части числа. В этой записи нудь может’быть опущен, поскольку известно, что запятая стоит перед первым разрядом мантиссы, может быть опущено и 28
< осковавие системы. Тогда с учетом знаков мантиссы и порядка число можно записать как Ц- 16554 Ц- 3* Мантиссе числа не должна превышать единицы, однако эта не накладывает никаких ограничений на нижнюю границу чпсйа. Поэтому не будет ошибкой, если число 165,54 записать в виде1 + 0016554 4- 5 Но в атом случае понижается точность представ- ления числа в машине, поскольку добавление незначащих нулей при ограниченности разрядной сотки уменьшает количество зна- чащих цифр. Например, если для записи мантиссы числа отве- t дено шесть разрядов, то во второй записи число будет воспринято как 001655 4- 5, т е, ужо с меньшей точностью Для представле- ния чисел с одинаковой, относительной погрешностью вводится понятие нормализованных чисел Число в нормальной форме называется нормализованным, если в его мантиссе первая цифра после запятой отлична от пуля, т, е. (1/5) С | 4 J < 1 Введение нормализованной формы представления чисел дает возможность независимо от абсолютной величины чисел изобра- жать их с постоянной относительной погрешностью Использование плавающей запятой значительно расширяет диапазон представляемых чисел в машине. Например, для маши- ны с 36 разрядной сеткой («Минск-22») максимальное число по. модулю, представляемое в машиие, равно величине порядка Ю9®, а минимальное —- 10“а0. Числа, выходящие за атн продолы, при- водят либо к переполнению разрядной сетки, либо воспринима- ются машиной как нуль. Целые числа чаще всего представляются в виде количества единиц младшего разряда машинного слова Максимально воз- можное число при этом составляет величину 2™* — 1. Числа, за- писанные подобным образом, носят название условно целых чи- , сел, н с ними могут выполняться операции с фиксированной за- пятой
Глава II ПОДГОТОВКА ЗАДАЧИ П BE РЕШЕНИЕ НА ЦВМ Решение задачи па ЦВМ включает следующие этапы, поста- новку задачи — формулировку модели процесса; математическую формулировку задачи — Составление математического описания; выбор численных методов решения уравнений; разработку общего алгоритма, программирование; выявление ошибок (отладку про- граммы); решение Блок-схема последовательности выполнения этапов представ- лена на рис. 2. I Г ___________ МтоЛг | JniKfHU? IWp&ittM tfWilHWW tf Mmti и Msvptrs;» /liTCWfl Сйоиайтагйг rww.uirs Ргагечл Hsdestr Пкаанг&а и Ariftjp лра/мригИ Ca&a-> Pud 2 Яоолвдтт'тьноеть решения вэдшчп ш> ЦВМ Приведенная на этом рисунке последовательность этапов яв- ляется типичной при решении самых различных задач. Блоки, отмененные пунктиром, при использовании системы автоматичес- кого программирования могут быть обработаны машиной автома- тически, Естественно, такая система должна обладать блоками синтеза и анализа структур? В простейшем случае это может быть набор алгоритмов отдельных частей общей программы, храня- щийся в памяти машппы, и программа в целом формируется на этих частей пли отдельных элементов Формулирование модели процесса целиком является компетен- цией исоледователя или технолога Именно на этом етапо опре- деляются физическое содержание задачи и весь круг явлений, 30
включаемых в рассмотрение. Значительную роль при этом играют опыт и интуиция исследователя; позволяющие’выделить наиболее существенные причийно-следственяые связи в рассматриваемом процессе или явлении Стедует четко представлять основную цель, которую необходимо достигнуть при завершении расчетов, а также возможность последующей проверки расчетных резуль- татов н их практической реализации. Задача составления математического описания процесса, наи- более полно отвечающего реальным условиям его протекания, зависит прежде всего от степеви изученности отдельных состав- ляющих элементов я степени их взаимосвязи. В первом прибли- жении при минимуме теоретических сведений об явлениях, со- ставляющих процесс, возможно упрощенное математическое описа- ние. основанное па общих физических закономерностях или на результатах обработки экспериментальных наблюдений. Такое представление позволяет выявить характерные качественные со- отношения между отдельными параметрами, С другой стороны, чреамервое усложнение и детализация ма- тематического описания могут повлечь за собой серьезные вычис- лительные трудности, которые могут сделать невозможным реше- ние задачи исследования процесса даже при наличия мощных вычислительных машин. Это в значительной степени связано с решением задач оптимизации сложных технологических процес- сов, исследовании динамических свойств таких объектов. По- этому па этапе разработки математического описания процесса всегда необходимо иметь четкое представление о вычислительных проблемах, связанных с решением используемых уравнений. Наиболее общим приемом разработки математического описа- ния является блочный, принцип [1], Согласно этому принципу со- ставлению математического описания предшествует анализ от- дельных «элементарных» процессов, протекающих в объекте мо- делирования. В составе математического описания, разработанного на осно- ве физической природы моделируемого объекта, обычно можно выделить следующие группы уравнений,* уравнения баланса массы и энергии, записанные с учетом гидродинамической структуры движения потоков в объекте; эта группа уравнений обычно определяет распределение в потоках температуры, составов и связанных с ними свойств, например, плотности, вязкости, теплоемкости и т, д , уравнения элементарных процессов, определяющих измене- ния переменных состояния потоков веществ и нх взаимодейст- вие; и этой группе относятся описания процессов химических превращений, массо- и теплообмене и т д.; теоретические, полуэмпиричвекие или1 эмпирические соотно- шении между различными параметрами мбдели, пеиример, зави- симость коэффициентов мае со передачи от скоростей потоков фаз, зависимость плотности раствора от состава и т д, 81
Кроме перечнеленных выше групп уравнений в соотав мате- матического описания могут входить различные ограничения не допустимые области использования тех нли иных эмпирических зависимостей, ограничения па диапазон изменения некоторых ие переменных и т д Рассмотренные группы уравнении отражают лишь самые об- щие свойства системы уравнений математического описания, сос- тав которого с учетом этого можно представить блок-схемой. изоб- раженной па рис. 3. Рио S Состшв мцтемаТи’юского описания 1. Выбор метода решения Для решения различных задам иа ЦВМ существует большое число методов, которые рассматриваются в части III. Здесь лишь необходимо отметить, что из всех возможных методов решения в каждом конкретном случае следует выбирать тот, который обес- печивает решение задачи с желаемой. точностью и быстродейст- вием при имеющейся в распоряжении памяти машины. Требова- ния повышения точности п быстродействия вычислений особен- но существенны при составлении программ, которые затем будут многократно использоваться f Насколько существенным оказывается выбор соответствую- щего метода при решении задач на машине, можно проиллюст- рировать следующими примерами Пусть в процессе решения не- обходимо многократное вычисление натурального логарифма In (1 + х) для значений х в интервале (0,1). Для вычисления логарифма можно воспользоваться следующими методами: интерполированием с храп ей иен в памяти машины таблицы еначеиий In (1 4-х); разложением в ряд 14(1+3) = »-4 + 4- 32
разложением во непрерывным дробям 1И (Ц. ж) = +--------------- полиномпялыпш приближением In (1 -t-x) = а0 + «i® + <Ма"г Метод интерполирования в данном случае можно отбросить сразу, так как, с одной стороны, он по очрнь точен, а с другой — таблица величин займет в памяти машины значительное место Кроме того, может окаэатьсп, что отыскать значение в таблице гораздо дольше, чем вновь провести вычисления. Не годится н полиномиальное представление, поскольку опо пе может обеспе- чить высокую точность. В итоге, оказывается, что для получения аиаченпя логарифма о девятью точными цифрами следует вос- пользоваться разложенном по непрерывным дробям, поскольку при этом придется суммировать меньшее количество членов ряда по сравнению с разложением в ряд. Так, при х = 0,9 число чле- нов при использовании разложения ио непрерывным дробям равно 34, а при разложении в ряд — 143. Еще более важное значение приобретает выбор метода числен- ного анализа нрн решении задач оптимизации Поиск оптимума функций многих переменных является обычно задачей крайне трудоемкой, поэтому эффективность' использования различных ме- тодов зависит от класса функций п накладываемых ограничений [1] Некоторые методы эффективны прп решении небольших задач, одпако с увеличением числа переменных объем вычислений на- столько возрастает, что прпходится от них отказываться. Такого класса задачи обычно имеют место при решении систем, алгебраи- ческих пли дифференциальных уравнений, поиска оптимальных значений параметров многомерных функций. Математическое описание является отражением физической сущности протекающего процесса со свойственными ему особен- ностями и ограничениями. Этиособениосгииограничвння должны учитываться как при формулировании задачи, так и прп выборе метода и в процессе решения. Следствием этого является часто возникающая трудность непосредственного использования клас- сических методов численного анализа, Неправильный учет этих особенностей и ограничений, с одной стороны, может привести к абсурдным, физически нереализуемым результатам, а с другой,— к значительному усложнению программы и увеличению непроиз- водительных расходов машинного времени Наиртшер, при расче- те масс о обменных аппаратов концентрации могут изменяться в пределах отО до 1. В равной степени получение в результате рас- четов как отрицательной концентрации, так и концентрации больше единицы может свидетельствовать как о несовершенстве 2 в в кифщдан н пр. 33
принятого математического описания, так к о сяшшсом большой погрешности используемых методов. Большинство численных методов являются итерационными. Это означает,, что решение получается в виде предела некоторой последовательности приближений -Если эта последовательность некоторым образом стремится к пределу, то процесс называется сходящимся, если йот—то расходящимся. Итерационные методы весьма удобны при использовании вычислительных машин, по- скольку последовательные приближения выполняются одними и теми же командами, по над различными числами, поэтому прог- раммы итерационных методов занимают малый объем в памяти машины. При использовании рекуррентных соотношений, струк- тура программ аналогична. Время решения задачи итерационными методами определяется заданной точностью и выбором начального приближения. Яви ближе начальное приближение к истинному решению, тем быст- рее ояо будет достигнуто. Более того, от начального приближения зависит вообще возможность получения решения Прежде чем выбрать тот или иной численный мвгод. необхо- димо проанализировать ограничения, связанные с его использо- ванием Это проявляется в том, чго функция или система урав- нений подвергается аналитическому исследованию, в результата которого выясняется возможность использования данного метода. При этом весьма часто исходная функция пли система уравнении должна быть соответствующим образом преобразовала с тем, что- бы можно было эффективно применить чнелепный метод. ДТреоб- разованнем и введением новых функциональных за вися но стен часто удается значительно упростить задачу Проиллюстрируем сказанное иа примере расчета парожидьост- ного равновесия многокомпонентной системы. Пусть задана сис- тема п компонентов и требуется по известному составу жпдиой фазы н давлению системы определить температуру кипения и состав паровой фазы. Предположим, что система подчиняется за- конам отдельных газов и что давление равно 1 атм. Тогда за- висимость между паровой и жидкой фавами по каждому из компо- нентов может быть выражена законов Генри, = (i 1.2,..., п). (2—1) где yt — состав паровой фазы, лоль/люль, — состав жидкой фа- зы, лмиь/лйль, fcj — константа равновесия, б/р Константа равновесия, равная отношению давления паров чистого компонента к общему давлению системы, является в простейшем случае функцией температуры и обычно выражается аналитически в виде полинома пли уравнением Рейделя(2]1 — вхр (4ц 4- Ла/(Т4* 49i In (71)), (2—2) где — Ац — константы; Т — *К, 34
Система уравнений (2—1) содержат п + 1 неизвестных и имеет бесконечное число решевий. Для получения однозначного решения систему уравнений необходимо дополнить соотношением вид-д 3 И = 1- (2-3) i-1 Выражая одну из концентрации черев остальные, например, п 2 система (2—1) приводится к виду, когда число неизвестных равно J числу уравнений и с учетом стехиометрического соотношения (2—3) имеет единственной решение Поскольку константы рав- новесия ty, а следовательно, и pj при фиксированном составе жид- кой фазы являются только функцией температуры, решение может быть найдено путем соответствующего подбора температуры Рио 4 РЛочвт температуры кипения BJceflu Система уравнений (2—1) — (2—3) может быть сведена к урав- нению с одним неизвестным, если просуммировать левую и правую части уравнений (2—1) от 1 до п, Тогда получим п 1 = 2 Ьи1 или, вводя новую функцию, окончательно можно записать /(Т) = 2а*х,-1«О. (2-4) 4=1 Функция / (Т) есть мера отклонения суммы концентраций ком- понентов в паровой фазе от единицы к ее значение равно нулю в том случае, если Т = Гкин (рпс, 4)* ^ак видно нз рпсупка, / (Г) имеет один положительный корень. Для нахождения этого нор- ия можно воспользоваться любым на методов решения уравнений е одним неизвестным. аз 2*
2, Описание алгоритма вычислений После того как выбран метод решения задачи, необходимо составить четкоо описаний последовательности вычислительных и логических операций, приводящих к конечным результатам, т. е. составить алгоритм решения задачи Основными требованиями к форме записи алгоритма являют- ся его наглядность, комиактпость и выразительность В практике математического обеспечения вычислительных машин обычно ис- пользуются два способа описания алгоритмов графический и операторный. Графический способ осповзи па представления отдельных эле- ментов алгоритма графическими символами, а всего алгоритма — в виде блок-схемы. При атом набор графических символов мо- жет быть произвольным, важно, чтобы опп позволяли детально представить описание алгоритма решения, В дальнейшем при составлении блок-схем будут использоваться приведенные на рис, 5 условные обозначения [31. Рис. 5. Увлтлые «геоаяачо7шя вяс®1с«*ан блок-гжемы а — арпфметицьсиий блок; б — индексный блок; • — лотчеспиЛ блок (условная переда- ча управления); в — перениннии передача управления; д - фиксирований л ’{беауслрвтМО первцйчп с — бион свода; ж — Елок яышодк; л — блок останови Арифметический блок предназначен для схемати- ческого обозначения расчетов но формулам. Если при расчете используется последовательно несколько формул, то для упро- щения блок-схемы алгоритма их можно объединить в одни ариф- метический блок Индексный блок обычно используется в качестве счет- чика мри организации циклических вычислительных процессов, в которых на каждом цикле расчет ведется по одним и тем же формулам, по с различными числовыми данными. В индексном блоке происходит изменение значения переменной, называемой индексом, что позволяет на кая?дом цикле использовать в рас- чете соответствующим образом перенумерованные значения ве- личии Логический блок служит для о писан ня разветвлений вычислительного процесса в лйвясимостп от выполнения нди
йййыполпопйя заданного условия Если условно выполняется, то управление передается выходу из блока с пометкой «да», если не выполняется — то выходу с поыеткей «нет» Переменная передача управления исполь- зуется в том случае, когда в алгоритме предусматрянается более чем два разветвления, выбирается тот путь, для которого индекс у буквы справа совпадает с индексом у буквы слева. Фиксированная передача управления предназначена для упрощения структуры блок-схемы слоящих алгоритмов. 9'1 о символ позволяет исключить пересечения взаи- мосвязей отдельных элементов блок-схемы. Блоки ввода и вывода предназначены для указания операций ваода походной информации и вывода промежуточных п конечных результатов, Остапов используется для указания логического окон- чания алгоритма В качестве примера составления блок-схемы вычислитель ного алгоритма рассмотрим задачу расчета коэффициентов актив- ности компонентов смеси- По уравнению Вильсона [21: 1ПТ1 = 1-1П (2®,Л|л) -2~(< = 1.2, (2-5) 1=1 2 где п — число компонентов смеси; Zj — концентрация /-го ком- понента в ж и дк ост я; — заданные константы, число которых равно п х п, Иэ уравнения (2—5) следует, что при вычислении значений коэффициентов активности необходимо выполнять пеодвократпое суммирование величин, помеченных различными индексами. Опе- рации суммирования в данном случае реализуются с помощью циклических процессов пли циклов. Рассмотренные выше условные обозначения позволяют запи- сывать циклические алгоритмы с использованием арифметичес- ких, логических и индексных блоков Например, блок-схема вычисления суммы п 3 xJ^iS ]=! при фиксированном значении индекса i будет иметь вид (рнй. б) гие. в 37
Сначала в индекса ом и арифметическом блоках индекс cyML миравапия j и Сумма полагаются равными нулю. Верхний индекс у суммы 5(Л показывает ее значение при текущем значе- нии /. После входа в цикл в индексном блоке индекс / увеличи- вается на единицу и к прежнему значению суммы в ариф- метическом блоке прибавляется произведение Затем в логическом блоке проверяется условие, «равно ли / номеру пос- леднего компонента» Если то цикл вычислений повторя- ется с увеличением на единицу значением /. Прп каждом повто- рении цикла текущее значение суммы увеличивается на величину произведения Эта последовательность действий будет повторяться до тех пор, пока индекс / пи будет равен и, После этого будет равно искомой сумме, и логический блок прервет выполнен не цикла. Полная схема-блок алгоритма расчета коэффициентов актив- ности для всех компонентов по уравнению (2—5) приведена на рис. 7 Рио 7. Вдок-схема imropitrxa рмчвто яовффицпептов амцяпОСТИ В рассмотренном примере число повторений цпьла, равное числу компонентов смеси.— величина постоянная. Подобные циклы обычно реализуются при составлении программы коман- дами цикла. Если число повторений цикла заранее неизвестно п определяется точностью вычислений (например, итерационные методы расчета), то такие циклы также организуются с помощью логического блока. При этом условием, проверяемым в логичес- ком блоке, является контроль точности вычислений. В операторном способе для описания алгоритма используются специальные элементы, называемые операторами, и знаки для обозначения изменений в последовательности выполнения опера- торов, Под оператором понимается часть вычислительного алго- ритма, имеющая закопченное логическое значение Вычислитель- 38
ный процесс, так же как и при записи алгоритма в виде блок- схемы, подразделяется на отдельные операторы, каждый из кото* рых обозначается бупвой, а алгоритм решения записывается в виде последовательности букв, читаемой слева направо В каче- стве операторов выделяются арифметический оператор — Л, логи- ческий — Pt операторы ввода и вывода — Я, останова — Я и др Для указании переходов в программе используются специ- альные знаки перехода — стрелки с померши. Для обозначения одной передачи управления необходимо две стрелки е одинако- выми номерами, одна пн которых ставится перед оператором, ко- торый передает управление, в вторая — над оператором, кото- рый должен выполняться следующим Для того чтобы можно было прочитать операторную запись алгоритма, каждый из операторов сопровождается пояснениями, Операторный способ используется в основном как язык прог- раммирования для конкретных вычислительных машин. Поэтому описания операторов составляются с учетом особенностей маши- ны, вплоть до указания адресов отдельных операндов. В этом случае логическая структура программы вместе с описаниями операторов вводится в запоминающее устройство машины, мо- шила по Специальной программе расшифровывает операторы в записывает их в командах машины. 3. Элементы программирования Процесс подготовки алгоритма к реализации его на ЦВМ на- зывается программированием Различают два способа програм- мирования — ручиов и автоматическое При ручном программировании вся последовательность дей- ствий, задаваемая алгоритмом, записывается в системе команд конкретной ЦВМ. Поскольку система команд обеспечивает вы- полнение только элементарных действий, задача программиста заключается в том, чтобы записать каждый из элементов алго- ритма в виде набора элементарных действий и, таким образом, получить программу При автоматическом программировании программа записы- вается в виде более обобщенных выражений, пежели команда машины, т е на так называемом языке системы автоматического программирования. Эта запись в дальнейшем воспринимается машиной и но специальной программе пр зоб разуется в последо- вательность машинных операций, К достоинствам ручного программировании относятся в пер- вую очередь гибкость, которая проявляете»! Я Многовариантности реализации одной и той же нослсдовательмооти вычислений, и быстродействие программы, обое поливаемо о НДДлежащим выбором команд, Эти достоинства обычно иснользуЮТШ при окончатель- ной записи разработанных алгоритмов. 39
При разработке алгоритмов решения типовых задач прежде всего необходимо обеспечить сходимость решения и его точность. Это лучше всего достигается с помощью систем автоматического программирования, при котором объем исходной программы зна- чительно меньше и меньше вероятность ошибок в связи с прос- тотой ее записи. Машины высокого класса используются только с системами автоматического программировав ня, иначе эффективность ис- пользования машинного времени за счет непроизводительных за- трат времени на составление программы и отладку весьма низ- кая. Существуют различные системы автоматического программи- рования, которые позволяют не только составлять автоматиче- скую программу, но и проводить весь комплекс исследований по отработке алгоритмов — выбору метода решения с учетом еатрат времени и точности вычислений. Библиотека стандартных программ (БСП) Программа ре- шения задачи, получеппая ручным способом или с использова- нием системы автоматического программирования, в дальнейшем может эксплуатироваться самостоятельно или кэк составная часть более общей задачи Такого рода програмлгы, называемые стандартными программамв СП, обычно составляют фонд ти новых алгоритмов и включаются в БСП, СП должна быть снаб- жена краткой инструкцией, содержащей сведения о ее назначе- нии, используемом методе к его особенностях, входных и выход- ных параметрах, способе и форме подготовки исходной информа- ции, быстродействии и точности расчетов, ВСП в машинах с несколькими накопителями информации обычно хранятся во внешних запоминающих устройствах п н моменту выполнения вызываются л ОЗУ. К программам, записан- ным *в ВСП, Предъявляются высокие требования по быстродеЙ* ствию, точности и порядку их размещении в памяти. СП могут использоваться как части бплеа сложных вычисли- тельных алгоритмов (подпрограммы) и как программы общего назначения Обычно в виде подпрограмм оформляются алгоритмы вычисления едомептарных функций (тригонометрические, гипер- болические и т. д.), которые нслользуются практически во всех вычислительных алгоритмах. СП общего назначения (например, программа расчета коэффициентов активности компонентов, прог- рамм расчета реактора и др.) предназначены для решения само- стоятельных задач, но могут также использоваться как составные части более общих алгоритмов. Для того чтобы использовать СП, необходимо в основной программе паписать' обращение к ней. В обращопии содержится информация о размещении походных данных и конечных резуль- татов. Здесь же указываются адреса начала СП к возврата в основную программу. СП вычисления значений элементарных функций обычно имеют прямую функциональную связь между 40
аргументом функции и результатом. Поэтому код обращения со- держит только начальный адрес СП. а аргумент перед началом выполнения заносится в оддп из регистров машины или в фик- сированную ячейку памяти. Результат вычислений остается либо в регистре, либо заносится в фиксированную ячейку памяти. В другой ячейке памяти указывается адрес возврата в основную Рис 9. Структуре пратразшы с СП общего ивлначекпл программу Структура такой СП приведена па рис 8 СП общего назначения могут содержать в качестве исходных дачных сово- купность параметров и результатом может являться совокупность величин. Поетому обращение содержит информацию о начале СП, об адресах ячеек размещения исходных данных и результатов и о количестве занимаемых ячеек 'памяти. Структура СП общего назначения‘приведена на рис 9. 4. Выявление ошибок при отладке программы Все ошибки, возникающие в процессе подготовки и решения задачи, можно свестн к следующим; ошибки в алгоритме; ошиб- ки программирования; ошибки при подготовке информация (ошиб- ки, допущенные при перенесении программы и исходных данных на носитель информации); ошибьп вычислительной -машины Ошибки в алгоритме могу? быть как следствием неточности математической формулировки задачи, так и следствием непра- лильного выбора метода решения Типичным примером ошибок в алгоритме являются, например, колебательность или расходимость итерационного вычислитель- ного процесса, когда решение либо нрнпцпппальпо не может быть получено данным методом, либо не может быть обеспечена тре- буемая точность. Ошибки в1 алгоритме выявляются либо после по лучения ре- зультата, либо в о посредственно в процессе счета, когда машина И
/У^;? л^< . не выходит на окончание расчетов вследствие «зацикливая я я» В некоторых частях программы. Одним из приемов выявления ошибок в алгоритме является контроль по физическому смыслу получаемых результатов В задачу вводятся дополнительные условия, которым должны удовлетворять результаты решения. Эти условия могут отражать дополнительные связи между искомыми переменными задачи, ио непосредственно в алгоритме решения не использоваться. На- пример, ограниченно на сумму невязок правых и леных частей при решении системы уравнений, равенство единице суммы кон- центраций компонентов, положительное значение времени пре- бывания вещества в реакторе, выполнение уравнении закона сохранения массы и энергии и т д При решении задачи эти дополнительные условия проверяются и в случае их нарушения вычислении прекращаются Во время отыскания ошибок-должен предусматриваться вы- вод достаточного количества промежуточной информации, ана- лиз которой позволил бы установить момент нарушения нормаль- ного хода вычислительного процесса. Ошибки программирования обусловлены тем, что алгоритм ре- шения неправильно запрограммирован Ошибки ручного прог- раммирования обычно выражаются в том, что неверно записы- ваются коды операций, неправильно задаются адреса кодов, в записи, программы отсутствуют отдельные команды и т. п, Прп автоматическом программировании ошибки программирования обычно проявляются в нарушении синтаксиса входного языка. При автоматическом программировании большинство ошибок, связанных с нарушением синтаксиса языка, выявляются прог- раммой перевода и информация о них выдается на печать,Поэтому этот вид ошибок легко исправляется Определенные трудности могут возникнуть при выявлении механических ошибок — про- пуск символов, неправильная передача управления и т. д. Ошибки при подготовке информации могут возникнуть вслед- ствие неисправности электромеханических клавишных устройств, па которых перфорируются программа и исходные донные, а также из-за невнимательности оператора. Поэтому перед вводом в машину программа и числовая информация должны проверяться иа правильность переноса ее на носитель. Распространенным способом проверки правильности нанесе- ния информации, иа носитель является дублирование, когда одна и та же информация независимым образом подготавливается в двух экземплярах с последующей проверкой, вх тождествен- ности. Другой способ состоит в том, что информация после ввода в машипу сразу выдается па печатающее устройство, поело чего сравнивается с исходной информацией. Это одновременно поз* волнвт не только проверить правильность перфорирования, яо в исирайность входных устройств. 42
Ошибки вычислительной машины могут иметь систематический н случайный характер. Систематические ошибки свидетельствуют о явной неисправности отдельных устройств и обычно проявляют- ся в виде отказа соответствующего устройства. Случайные ошиб- ки проявляются в виде сбоев цри выполнении отдельных опера- ций Случайные ошибки трудно обнаружить □ процессе отладки программы, когда е\цене установлена правильность самой про- граммы. Они обнаруживаются обычно путем многократного реше- ния одной и той же задачи н сравнением конечных резуль- татов. Исправность вычислительных машин проверяется путем про- ведения профилактического контроля, в процессе которого про- веряется работа как машины в целом, так и отдельных ее уст* ройств При нормальной эксплуатации машин предусматриваются ежедневные профилактические осмотры Проверка исправности отдельных устройств обычно проводится на предельных режи- мах работы машины и ио специальным программам, называемым тестами. Тесты представляют собой программы, составленные в машин- ных командах и задающие более жесткие условия для работы от- дельных устройств машины по сравнению с обычными програм- мами. Результаты выполнения таких программ заранее известны, поэтому легко установить исправность того или иного устройства. Жесткость режима работы задастся обычно многократностью вы- полнения одной или нескольких команд при повышенном или пониженном панряжеппи источников питания Например, тест для проверки исправности оперативного запоминающего устрой- ства может состоять ив команд, которые обеспечивают многократ- ную запись единичного кода во все разряды ячеек с текущей про- ворной правильности его записи, а затем однократную запись ну- левого кода, Тем самым проверяются динамические и статические свойства магнитных сердечников. Многократное выполнение от- дельных команд мапппш как раз и способствует выявлению слу- чайных сбоев машины. В современных ЦВМ обычно предусматривается автоматичес- кий контроль правильности выполнения отдельных операций. замечания по выявлению ошибок^ Основным правилом, используемым при отладке программ, является локализация ошибки. Программа разбивается на отдельные участки и после отладки одной части переходят к отделке другой. Способ разбиения п последовательность отладки устанавлива- ются программистом Вообще интуиция программиста, его зна- ние задачи являются основными критериями ус пошлой отладки программы При этом отладка существенно упрощается ири ис- пользовании БСП, Затраты машинного времени на отладку должны быть сведены к минимуму, Для этого желательно производить отладку п авто- магическом режиме работы машины, когда последовательность 43
команд программы выполняется без вмешательства оператора и число остановов машины минимально. Первое, что нужно сделать при отладке программы, это вы- вести исходную программу на устройство печати и сравнить ее с вводимым вариантом, Такое сравнение обычно позволяет выявить большую часть механических ошибок, ошибок программирования и ошибок, допу щепных при вводе программы в ЦВМ Затем не- обходимо убедиться в правильности выполнения отдельных час- тей программы и последовательности реализации отдельных ко- манд. Желательно перед отладкой иметь числовой пример или по крайней мере некоторые промежуточные вычисления. Срап- неппе результатов расчета с реэулкгатами числового примера поз- воляет установить, правильно ли составлена программа н в слу- чав результатов локализовать ошибку.
ЧАСТЬ ВТОРАЯ АВТОМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ т Автоматическое программпроввнпе есть совокупность методов исредств, позполяющих записывать и реализовывать программы ид символических языках, отличных от системы команд машины. Применение символического языка дает возможность получить более простую запись алгоритма, чем запись в машинных коман- дах, н возложить обязанности по составлению программы на машину* Язык как совокупность символов и правил, используемых для записи алгоритмов при автоматическом программировании, называется алгоритмическим языком-, Этот язык являсчсп входным или исходным языком для задания информации машине. Выход- ным или рабочим языком автоматического программирования является система команд машины, для которой осуществляется программирование Преобразование символов входного языка в программу, записанную в командах машины, осуществляется с помощью специальной программы, заранее составленной в систе- ме команд данной машины и находящейся в ее запоминающем устройстве. Обычно используются два способа автоматического програм- мирования, отличающихся типом программ перевода — компили- рующих и интерпретирующих Компилирующая программа (компилятор) воспринимает ис- ходную программу и преобразует ее в рабочую. При этом алго- ритм решения задачи заранее представляется так, что отдельные его части соответствуют стандартным программам БСП компи- лятора. Рабочая программа может быть напечатана внешними устройствами машипы и в дальнейшем использоваться как прог- рамма, записанная в командах машины. Прд необходимости опа может нспользоввться для решения задачи сразу после работы компилятора. Интерпретирующая программа в процессе работы последова- тельно по мере перевода исходной программы исполняет предпи- санные действия. С окончанием перевода закапчивается решение задачи. При. повторном решении весь цикл действий, начиная с перевода, повторяется. Интерпретация является менее аффектив- ным способом по сравнению с компилированием, поскольку в за- траты машинного времени на решение задачи входят и время на 45
перевод, Вместе с тем этот способ автоматизации программирова- ния обычно используется по машинах с малым объемом памяти, так как по требуется память для храпения рабочей программы Достоинства систем автоматического программировании опре- деляются главным образом том» насколько синтаксически полным и гибким является используемый алгоритмический язык. По- скольку автоматическое программирование призвано облегчить труд программиста по подготовке и отладке программы, прн разработке синтаксиса языка учитываются именно эти требова- ния. Необходимо учитывать такие факторы, как простота освое- ния к использования языка, для чего он должен по возможности приближаться к обычной записи формул, быть компактным и емким в смысле значения отдельных конструкций, иметь немно- гочисленные и простые правила, Наиболее иодное осуществле- ние указанных требований достигается при разработке языка, ориентире ванного иа определенный класс машин, когда учиты- ваются конструктивные особенности машин, Однако обилие алго- ритмических языков программирования усложняет обмен гото- выми алгоритмами и приводит к необходимости изучения не- скольких языков. Потребность унификации алгоритмических языков привела к созданию универсального языка программирования, необходи- мость которого диктуетоя тем, что нужно: иметь средство обмена алгоритмами между различными типами вычислительных машин; исключить необходимость изучения нескольких языков програм- мирования; иметь возможность непосредственного использования программ независимо от типа машин. В различных областях науки в настоящее время получили наибольшее распространение следующие алгоритмические языки, удовлетворяющие перечисленным выше требованиям: для науч- ных и инженерно-технических расчетов — Алгол (Algorithmic Langnage), фортран (Formula Translation); для обработки эко- номической информации — Кобол (Common Business Oriented Language), Табсол (Table Command Language); для решения информационно-логических задач — Комнт (General purpose sym- bol manipulating language), Лисп (List Programming), В нашей стране получили распространение Алгол, Фортран н их модификации.
't Глава Iff АЛГОЛ-601 * * При*4 записи любого алгоритма в системе автоматического программирования необходимо, чтобы эта запись содержала ин- формацию о всех переменных и постоянных величинах, а также об операциях, совершаемых иад ними. Поэтому программа, запи- санная на алгоритмическом языке программирования, может рас- сматриваться как состоящая ив двух частей*, описания, характе- ; i'1'* ризующего каждую из величин, используемых в программе, и операторов, определяющих действия над этими величинами. Как и любой разговорный язык, алгоритмический, язык прог- раммирования должен иметь определенный набор основных сим- волов (букв, знаков),-элементов (слов), с помощью которых по синтаксическим правилам можно охарактеризовать описании и операторы В этом смысле Алгол-60 в настоящее время является одним из наиболее совершен- ных языков программирования, выразительные средства кото- рого позволяют наглядно и ла- конично представить алгоритм решения задачи. Алгол-60 характеризуется набором основных символов, из которых строятся «слова» и «предположепнн». Правила по- строения конструкций опреде- ляются синтаксисом языка, а их смысловое' значение опре деляется семантикой. Основными символами языка являются буквы, цифры, ло- гвческие значения, ограничи- те. 10. Структура Jwmputau’teeKoro яаыкв тели (см- табл. 2). Структуру языка можно представить в виде блок-схемы сле- дующим образом (рпс. 10), Исходя из основных символов языка, 1 Алгоритмический язык программировании Алгол впервые быа пред- ложен в 1958 г. па Цюрихской конференции представителей Ассоциацпн по вычислительной технике (США) в Общества но прикладной математике н механике (ФРГ). После широкого обсуждении в рвиличдых странах в I960 г. был принят доработанный вариант языка, который в дальнейшем стал кисловаться Алгоа*60 4?
Таблица S Ооиояные символы языка Ллгол-60 * Наименование ЙИМ1ИМ1Ы Буквы латинского йяДй> | А 1 а|В |&|С |c|Z>f d|*|e I Fj/I G | g |Д | h 1 в «та *(* |ДЩМ |м| ЛГ( «|О{о|Г | pf Q [ g| Л|г | *1-‘ |Тр | U J п| Х[г|У| у| И|л| Цифры 0| 112|314J5|fi|7 |819 Логическое вначснив true истина false ложь Ограничитель знак арифметической Ч-1-1Х 1/1-1Г оворацпя ?ЕИ операции №0 шоива знак логической IIVIAPIb операции опак операции ела- goto иорейтл к then тогда ДОИЙЯНЯ if если else иначе for для do цикл равделвтмь tl (пробили н(ер шаг while до until лона comment нешмевянпе скобка (11(111'1’1 описатель begin начале) end конец boolean логпчвоьпй integer целый real дойепштшишый array массив own собстваипый switch перок чгла- тель procedure процедура сиоцпфньатор string отроки label метка value зночешш • Вергикальван черта означает знак «яшм, Сдавз-стМЕо.ты (tine, К it т. д.) в руко- писной программе подчСрнивгштся а в пе’щтиоц — ввщаляююп полужирным шрифтом по правилам, определенным спптакснсом, образуются такие эле менты яшко, как числа, переменные, выражения н т. д Эти эле- менты являются основой для построения более сложных конст- рукций — операторов п описаний, которыо в совокупности состав- ляют программу. Исходная программа, записаннан на Алголе, после ввода в машину преобразуется транслятором (см. стр, 163) в рабочую программу, записанную в системе команд данной мешины. 18
Для того чтобы представить объем информации» содержащей- ся в исходной программе, рассмотрим следующий пример Пусть для 10-кояпонентпоп системы задан весовой состав в молейуляр пыо вес о калщого компонента. Требуется составить программу перевода весовых понцеитрацпп в мольные но формуле (1 = 1,2, ,10) 2 ’Ж Jr-1 В денном случае необходимо организовать циьа для вычисления зна- менателя заданной формулы и произвести расчет для каждого компонента, пснольп} а циклические вычислении- Блок-схема алгоритма вычисления приведена на рве. 11. Рис 11 Ияок схема алгоритма расчета во уравнений (3-1> Поскольку в структуре Алгола имеются операторы для оргшаиаацип циклических расчетов, то вычислительная часть программы будет содержать два оператора цикла для вычисления знаменателя формулы н расиста. моль* вых концентраций иомповевтов- Сюда ясе будут включены и операторы вво- да походных данных п вывод» результатов вычислений Дня подпои характеристики алгоритма решения необходимо также дать информацию о характере исходных да1шых_н промежуточных результатов. Это нужно для того, чтобы при составлении рабочей программы для них был отведоп требуемый объем памяти машины и обеспечена соответствующая форма записи (с фиксированной или плавающей запитой) Информация о количестве п характере используемых пороменпых в ал- горитме» ври записи программы па языке Алгол содержится в описании Со- держание исходной программы можно охарактеризовать следующим обра- тим Начало программы Описание переменных, используемых в вычислениях i — переменная, принимающая целые щхачщшя, а?1Ь, .... гмЬ г1К, ляи.... z1(Od, Mv М. iWI0— п-моршяе вокторы, ооотвотствукицпе концентрациям и молекулярным весам компонентов, в л ом гиты которых — действительные числя; £ —nepfr- менндя для обозначения суммы, принимающая действительные значения; 49
г- Y |>1 •- вычислительная часть програимьг организовать цикл для еычислешш апдмбйатОля расчетной формулк ю ‘у — 2 ,10) программы запишется в следующем воде; опясвине > вычяслптолъпая часть организовать цикл для расчета мольных концентраций ьомпопептов, вывести результаты расчета йЦщ Xib/ (Л/1’5) (i s= 1,2, Конец программы Иа Алгол такая структура begin integer i, real a; иг ray, XB, ArAf, StI fl ,10], mo» (XB, Af), в: = o,o, for i. = 1 etep 1 until 10 do *:=b+XB [fl/Jkf [i]; lor i ; = 1 step I until 10 do XM U1 : = X& (П/JW [il X в, гыесЭ (X.W) end Программа,записанная ко Алголе, начинается с символа begin (пачапо)г аа которым следуют описания переменных, представленных в Алголе,' целое i действительное 5, массивы — ХВТ ХМ, М, яаждый из которых включает аломепты, вереауморовадпые от 1 до 10. Далее следует оператор ввода мас- сивов ХВ и М, после чего начинается вычислительная часть программа Вычислении начинаются, с присвоения переменной л значения, равного нулю. Затем следует циклическая часть вычислений, в процесса которой с пере- менкой 1 последовательно складываются частные от делания звачопкй весо- вых процентов ХВ ]i] на молепулярпые веса М [i]r т с- производится вы- числение суммы, стоящей в внлиенатола расчетной формулы Для реализации циклических вычислении в программе используется специальная коцструк- цпя — оператор цикла for i: =^1 step 1 until 10 du, с помощью которого рас- положевный вслед за ним оператор выполняется дал всех эначеций 2 от I до 10, Далее в прогрвыме следует ещв один оператор цикла, с помощью которого вычисляются моаьныа концентрации для всех компонентов, которые затем выводятся на печать Программа зпканчивается символом end (конец). Для алгоритмического языка Алгол-GO приняты три уровня (способа) ого представления* эталонный язык, язык публикаций д я'аык конкретного представления [4], Зтдло/гн^Й. язык предназначен для основных публикаций син- таксиса языка Это описание является основой и руководством для разработки программы перевода (транслятора) и не связано с какими-либо особенностям конкретных вычислительных машин и математических формулировок. Язык публикаций предназначен для целой, обмена алгоритмами. 50
Он допускает видоизменения эталонного языка, связанные с удоб- ством написания основных символов и особенностями машинопис- ной печати. Основные символы языка публикации могут отли- чаться от эталонного представления, однако должно соблюдаться их однозначное соответствие Язик конкретного представления предназначен для реализа- ции Алгола на вычислительных машинах, и его применение обус- ловлено конструктивными особенностями машины, Программа, обеспечивающая перевод логпко-математическнх конструкций ал- горитма на язык машины, называемая транслятором, составляется исходя из конкретного представления эталонного языка. Для описания сидтансиса алгоритмического языка использу- ется яаык металингвистических формул (метаформул) [5]« Мета- формула состоит из двух частей — левой и правой, разделенных знаком : : =, означающим «равно по определению» или «по опре- делению есть», Например, понятие «цифра» с помощью метафор- мулы можно определить (цифра) ”==0|1|2|3]4|516|7|8|9 В левой части формулы пишется определяемое понятие (циф- ра), а в правой — определяющие его символы (знаки десятичной системы счислении) Роль постоянных величин, записываемых без скобок, играют основные символы изыка. Определяемое по- нятие может различным образом выражаться через основные сим- волы В атом случае каждое из его значений в правой части от- деляется вертикальной чертой, означающей iz/ш. Таким образом, приведенная выше формула означает, что цифрой может быть 0, 1, 2, . . г. е любой знак десятичной си- стемы счисления. Знаки или символы, заключенные в угловые скобки < ), называют металингвистическими переменными (ме- тапеременныын). Важным синтаксическим приемом описания структуры языка является его рекурсивностъ.. Это означает, что определяемая переменная, записанная в левой части метаформулы, может вы- ступать как одно из определяющих значений. Например, «целое без знака» может быть определено как <ыелоо без знака> , , « (цифра) | (целое Вез впала) (цифра) Эта формула читается слева направо и означает следующее: це- лым без знака может быть цифра или то. что является целым без знака, за которым следует цифра, т е, целым бов знака может быть любая последовательность цифр, еаписаииая рядом. 1. Элементы языка Элементами языка Алтол-60 являются числа, переменные, выражения, стандартные функции и операторы- "Числа в Алголе используются двух типов; целые и действитель- ные Они отличаются формой записи и представления в машине. S1
Целое число синтаксически определяется следующим образом (целое без знака) 1 : m (цифра) | (целое без знака) (цифра) (целое) ; ; = (целое без знака) | + <цслоо без знака) | — (целое бее знака) Следовательно, запись целого числа в Алголе аналогична обычной, записи. В эталопном языке но рассматривается максимальная величи- на целого числа, однако в каждом конкретном представлении существует некоторая величина, больше которой целые числа не могут быть заданы Эта величина определяется разрядной сеткой машяпы. Например, дли машины серии «Минск» максимальное целое число не должно превышать девять десятичных разрядов. Действительное числе имеет две формы представления — в виде десятичного числа и числа с десятичным порядком В основе этих представ гений используются определения правильной дроби н порядка. (правильная дробь) :; =. (целое боз знака) (поряден) : : = w (целое) Испольщя понятие правильной дроби, десятичное число оп- ределяется как (десятичное число) : : = (целое без знака) | (ппавильвая дробь) | (цслоо без знака) (правильная дробь) Отсюда следует, что целое число не может оканчиваться точ- кой и что точна относится к дробпой части числа, т, е. действи- тельное число может быть записано как целое или правильная дробь, а также в виде последовательности целой части и правиль- ной дроби. Окончательно действительное число определяется следующими метаформулами’ (число беа знака) .. = (десятичное число) | (ворядок) | (десятичное число) (порядок) (число) ; ( = (число беи знака) | (число бес знака) | — (число без знака) при записи положительных чисел знак плюс можно опускать, Примеры а апис и действительных чисел: Запись обычная 2,45 0 2089 0(125 10» —0,00000027 0 Запись на Алголе 2.45 0,2089 ,125in—2 —,27ю—6 0,0(,б) (.2089) Целые числа в памяти ыапшпы хранятся в форме с фиксирован- ной запятой (псевдоцелые числа), а действительные — в форме с плавающей запятой Переменные и массивы, Синтаксически пор емейл а я определя- ется следующим образом: (вврвиеиная) :: — (прост а л перемспнан) ] (иоремсишая о индексом) Скалярным величинам в Алголе соответствуют простые пере- менные, а векторам, матрицам и образованиям более, высокой 32
размерности — массивы* составляющими которых являются переменные с индексами При написании программы переменные разливаются пденги- фикаторами, т с, наименованиями, Выбор идентификаторов переменных п массивов определяется следующей мета<]юрмулой' (идентификатор) ; ; — (буква) | (идентификатор) (буква) | (идентифи- катор) (цифра) Таким образом, идентификатор — есть буква или любая по- следовательность букв и цифр, начинающаяся с буквы. Запись идентификатора может иметь произвольную длину. Однако в кон- кретных представлениях длина идентификатора ограничивается обычно шестью символами, причем пробелы не учитываются. Пример записи идентификаторов переменных a, a map, abc, аА, а123, AB3G24, Аа, АВС Смысловое значение идентификаторов задается программистом. Исключение составляют наименования стандартных функций, таких, как cos, sin, In и др. Поскольку переменная с индексом является элементом мас- сива, то ее наименование совпадает с наименованием массива, Но значением идентификатора массива является совокупность чисел, тогда как значением переменной с индексом — одно число. В Алголе допускается использование массивов произвольной размерности При этом размерность характеризуется не числом элементов, а числом измерений. Например, n-мерному вектору бу- дет соответствовать массив с размерностью, равной единице, а матрице— двумерный массив. Количество элементов по каждому измерению массива характеризуется разностью между макси- мальным н минимальным значениями соответствующего индекса, т. е верхней и нижней границами изменения индексов. Границы по каждому измерению массива образуют граничную пару, Оче- видно, переменная с индексами будет иметь такое количество индексов, сколько граничных пар у массива. Границы в каждой граничпбй паре разделяются двоеточием. / Идентификаторы массивов в программе сопровождаются1 опи- сателем array Например, массив Аг соответствующий квадрат- ной матрице порядка р, запишется как array А[1 : р, 1 р], где А — идентификатор массива, 1: р — граничные пары, 1 и р — нижняя и верхняя границы соответственно. Перемогшая с ин- дексами, еоответетвующаяэлемепту матрицы запишется кзк A U, fc], где 1 < I, к ^р. Границы изменения индексов по каждому измерению могут принимать любые целые значения, в том числе и отрицательные. Обязательным является то, чтобы верхняя граница была не мень- ше иижяей. Например, аггау В [—1: 10, 0:2], array С1[й : р], где р > к Значение индекса переменной всегда заключено между зна- 63
f' l-l* *VIj* J| v' * ** -4-j ** » * * . *cf - j” /* *• ‘ 1 *’v . Д • * ГГ." •;,.••;• „- . . , чеяцями пижнек н верхней границ и задастей индексным выра- жением, которое определяется следующим образом* (индексное выражение > . . = (арифметическое пырвжоыие> Индексным выражением, т. е. индексом, может быть ярифме- Л, тнческое выражение (в частности, число, переменная), ирипимаю- ? щее целые значения (см. стр. 56). Например, А 11,3]; Л [2хл— I," &, 2]; С [Л [1,3]]. Последний пример доказывает, что индексом J' переменной с индексом может быть опять переменная с индексом. ; \ Информация о том, какое значение принимает переменная — логическое или числовое, а если числовое, то целое нлп действи- тельное,— содержится в описании типа. В соответствии с этим ... тип переменной в Алголе определяется следующей ыетаформулой* <тнп> .: *= baolean | Integer ] real Например, если известно, что переменная ai2 принимает значо- ? иля целого типа, то в программе это указывается как integer ai2. Описание типа указывает, что данным идептпфпкатором обов- иачеда именно переменная, а пе какой-либо другой объект прог- ;; раммы У , В исходной программе каждый идентификатор должен -снаб- жаться описанием тика Однако волн группа переменных имеет один и тот же тип, то описатель ставится однажды перед всей груп- , пой переменных. При этом отдельные наименования разделяются ' ‘ между собой запятыми, я за последним стадится точка с запятой. Например, для описания действительных переменных а, Ь, с и поромепдых целого типа k, т необходимо записать real я, Ь, с; integer Л, лт, ; Следует заметить, что оииоапие одной и той же переменной в программе различными типами приводит к неопределенности и поэтому недопустимо. Опнсанне типа массива аналогично описанию простых пере- менных, однако в описание массива включаются границы изме- нения индексов. Описать массив — значит описать все переменные с индексами, соответствующие данному массиву. Поскольку опи- санием переменных с индексом является описание соответствую- щего массива, все элементы массива должны быть одного типа. Например, квадратная матрица А порядка р, элементы кото- рой действительные числа, описывается как real array _Л (1 «/>J Если массив имеет действительные элементы, то описатель real можно опускать, т, е, запись вида array А 11с р] ие будет ошиб- кой. Аналогично описываются массивы целых и логических чисел. Например, integer array В [t : ft, 1 ; п), bonlean array С [1 ; p, Q : ft), И
В том случае, если необходимо описать одноврембиие Ив- > сколько массивов, имеющих компоненты одного и того >ко типа, одну и ту ?ке размерность и ранные граничные пары, т. е. мас- сивы, отличающиеся только конкретными значениями их эле- ментов и идентификаторами, можно воспользоваться понятием сеа- мента массивов. Сегмент массивов представляет собой перечень • идентификаторов массивов, после которого указывается общий' для всего перечня список граничных пар. Например, нс будет : ошибкой, если каждый пз действительных массивов А [1 : п], * В [1 и], С 11 .и] будет опиоан отдельно, однано запись вида array Л, В, СД : Л‘] будет синтаксически правильной в более компактной Группа массивов А [1 ) га, 1 : nJ, В (0 • к, 1: /с], С [— 1 : О, —5 1 0] действительного типа ие может быть объединена в сегмент массивов, поскольку, хотя все массивы одного типа, они отличаются между собой граничными парами. Так же как и ранее, их можно описать каждый в отдельности, но, очевидно, удобнее восполь- зоваться понятием списка массивов и описать следующим образом array А [I . n, 1 : д], В |О , Л, 1 • А). С 1— 1 0, -5 : 0] Если массивы отличаются типом и размерноьтями, то они описы- ваются отдельно Массивы в сегменте и списке массивов отделя- ются друг от друга запятыми, а в конце обязательно ставится точка с занятой. Аналогично при описании массивов в отдель- ности после каждого описания ставится точка с запятой. Выражения. В Алголе первичными составляющими частями программы являются выражения Выражения могут состоять ив переменных, констант и функций, соединенных-знаками операции или другими символами класса «ограничитель», ц_в зависимости от типа является правилом для вычисления числового или логи- ческого значения Выражения используются для записи вычис- лительных действий в алгоритме, поэтому в них вкладываетсн более широкий смысл, чем, папример, в термин «алгебраическое выражение». Выражение в Алголе определяется следующей мвтаформулой: <выражение) *.: = (арифметическое выражение) | (логической выраже- ние) | (именующее выражение} В свою очередь каждый ив классов выражений по характеру вычисления удобно разделить па безусловные и условные. Безус- ловные выражения строятся с помощью знаков арифметических, логических операций, знаков операций отношения и скобок, в необходимым элементом условных выражений является условие. Первые два класса выражений связаны с реализацией вычис- лительной части алгоритма, з именующие выраженпя попользу- ются при записи операторов перехода и переключателя (см стр. 76). 55
Арифметические выражения Исходными элементами при пост- роении арифметических выражении являются лорвичпые выра- жения. Первичные арифметические выражения строятся как обыч- ные арифметические формулы из чисел и идентификаторов с помо- щью круглых скобок и знаков арифметических операций, т. е вяако» -г, —, X , —, j . Знаки 4-, —, х имеюг обьтчпый смысл. Употреблять точку вместо знака умножения нельзя Для обозначения операции де- ления используется знак I Операция « —» (целочисленное де ление) определяется только для целых чисел. Знак j соответ- ствует операции возведения в степень. По определению дервячиое выражение есть {первичное выражение) :: ™ (число без знака) | (переменная) | (указа- тель функцию ] «арифметическое выражение)) Здесь под указателем функция понимается идентификатор стан- дартной функции (см стр. 62). Примеры первичных арифметических выражений О 567 abc (Р X 1'/(ЯХТ)) 510^ (Х[ЛХЬА’(У)) Более широкий смысл вкладывается в понятие простого ариф- метического выражения, которое является расширением первич- ного выражения путем введения операции возведении*в степень. Первичные к простые арифметические выражения являются безусловными арифметическими выражениями. Прп вычислении значении арифметических выражений со- храняется обычное правило старшинства операций. Старшие опе- рации — это возведение в степень, умножение и деление. Опе- рации одного уроввя выполняются в порядке следования слепа направо Если необходимо изменить порядок выполнения опе- раций, то следует соответствующим образом расставить скобки. Арифметические операции, аа исключением операции цело- численного деления, определены над числеми как целого, так и действительного типа. Следовательно, тип арифметического выра же пи я будет определяться типом его операндов. Результат операций сложения, вычитания, умножения имеет тип integer, если оба операнда целого пша и тип real в любом другом случае. Результат операции деления (символ /) имеет тип real независимо от тина операндов. Результат операции целочис- ленного деления имеет тип integer. Эта операция заключается в выделении целой части частного: { целон части albt еелп Д -> О ( I —целой честя а/b, всяк («/&)<Q 5G
Тип результата операции возведения в степень зависит от типа основания и типа показателя- Волее того, в зависимости от типа операндов возведение в стопонь осуществляется по-раз ио му ’ а X а X а х X а Ъ & риз типа integer, >0 a f Ь= < 1/(а X д X „ X д) Ь Ь раз типа luitgor, Ь< со „ охр (Ь X In (а)) b типа real, £0 Результат имеет тип integer только в том случае, если основа- ние степени е показатель типа integer и Ь > 0, во всех, осталь- ных. — типа real. Возведение отрицательного числа в степень тина real в Алголе не определено Примеры записи арифметических выражении в Алголе ofrr«ll|in ЦНПНСЬ мпенна верно a/bc с/ЬХй fl/(6Xe) —к | b а № a 4 1/р а4-ЬЦ1/р) а -1- Ь'2р-’ а 4-6 J 2Xjo—i a 4-b | (2Xp—1) а + Ь с— S a 4- — 3) (<» +3) 0,3-10”» 3x10 t—2 .31П—2 а {—Ь) cX—Ь a X (—b) a | Ь [ c 4 H «) дЬ с a J bxa a ] Ь * О 10” ° W3.5 10 J 2.5 / Логические выражения. В основу построения логических выра- жении положена алгебра Буля [61 , поэтому часто «логический» заменяется термином «булевский». Например, говорят «булевская переменная» вместо «логическая переменная» и т. д Элементами логических или булевских выражений являются утверждения (первичные логические выражения), которые и при- нимают значения true (истина) или false (ложь). Вместе с тем в машино оси должны иривимать численные значения, отличные по форме от чисел типа real н integer. Поэтому для внутреннего ко дировання этих величин в машине введен специальный тип — тип boolean Значит, и логические выражения должны принимать значения типа boolean. По определению первичными логическими выражениями могут быть логическое значение true или false, логическая переменная, т е. переменная, принимающая зпачомие типа boolean, функция 67
типа boolean, простые арифметические-'выражения, соединенные знаками операций отношения, т. е знаками —=> =Т^> 's'* 1 *^1 В практике математических расчетов наиболее распространен* ным типом выражений являются отношения! / беаусло&ноо > оп(тй„„й ч / безусловное ч < арифметическое > < > < арифметическое > \ выражение / \ОТНОП1ев11я/\ выражение / Например- о >• Ь х = 1 2-^3 х ] 2 = у/х 2-}-ft^=3 — b b | с — у 2- 5 Первичные выражения могут комбинироваться в более спор- ные выражения при помощи знаков логических операции, т е. знаков 1, Д, \Д -3» = Правила вычисления результата логического выражения удобно представить в виде таблицы истинности (табл. 3). S Таблица истинности Операции Операнд А false IHlsr true true Операнд В (л Ise true fa he true ид true true false false лдл false false false true А V -S ful&e true true true А^В true true false true А=В true false false true Здесь А и В — первичные логические выражения Отрицание “| Л — одноместная операция и принимает зна- чение true, в том случае, если А — false, в наоборот Конъюнкция J Д В имеет значений true тогда и только тогда, если Л и В имеют значение true Поэтому эту операцию удобно применять в том случае, если цулшо проверить одновременное выполнение двух пли нескольких условий. Например, функция / (я) имеет в точке максимум, если конъюнкция отношений /'(ч) = од№)>о имеет значение true. Дизъюнкция А V В имеет значение true, если хотя бы одно высказывание А или В имеет значение true Ona используется в 58
'foil Случай, когда переход » программе осуществляется й йаЬй- “ •=._;' симости от выполнения любого условия. Например, один из двух возможных путей в программе реализуется в том случае, если j выполняется условие х > 0 \/ х —1, т о значение этого вы- ; ражепия true. Импликация А зз J3 (А влечет В) нмоет значение false только * > в том случае, если А и В имеют соответственно пмачения true - ; И false. . Эквивалентность А = В используется для фиксации сов па- ; дения значений высказываний Л и В, так как результатом атой , операции является логическое значение true в гом случае, если - > логические значения А я В совпадают. •. Условные выражения Правила построения условных арифме- тических и логических выражений совершенно аналогичны. Объектами этих Конструкций должны быть соответствующие пер- вичные выражения, J Основным элементом условных выражений является условие^ определяемое следующей метаформулой: <>словпе> : „ = it <ли1яческое вмражепае) then Отсюда следует, что мет а переменной «логическое выражение» * может быть любое первм’шое логическое выражение, а также то- < бое логическое выражение, заключенное в круглые скобки (та- ким образом прообразованное в первичное) Например, if а = Ь then ifх>0Д then / if с = true then где с — булевская переменная Условное выражение с использованием конструкции типа ' условие определяется следующим образом: <логической' у бeajсловиа-е .эыражеяшк / нираженив у lhen Z выражение 5 else < этого жа \ ' ^любого класса' ' класса < ! Эта запись означает, если, логическое выражение выполняется, т. е. принимает значение true, то значением всего условного вы- ражения будет значение безусловного выражения, следующего за символом then; если логическое выражеппе не выполняется, то условное выражение принимает значение выражения, следующего за символом else. Рассмотрим ограничения, накладываемые па отдельные части этой конструкции Таких ограничений два 1. Класс выражений, стоящих после then и else, должен сов- падать. Тем самым все условные выражения подразделяются па арифметические и логические условные выражения. 2 За символом then должно следовать обязательно беауслов- 59
feoe выражейие Ёсли его вьфажейиё по сь!кслу решаемой задачй является условным, то его следует заключить в круглые скобки п тем самым превратить в бвзусловноо. На выражения! следующие за символами if и else, никаких ограничений не накладывается Следовательно, на этих местах могут стоить любые выражения соответствующего класса Это обстоятельство в значительной степени расширяет логические возможности условных выражений и позволяет на их основе строить сложные конструкции, включая другие условные выри- женвя в качестве основных объектов. Так, на месте булевского выражения может стоять условное логическое выражение, а на месте выражения после символа else опять условное выражение. Но на месте безусловного выражения может быть опять условное выражение, заключенное в круглые скобки, и т д Вычисление выражения (арифметического или логического) начинается с вычисления значения логических выражений, участ- вующих в условиях, слева направо в порядке записи (с учетом скобок) до тех пор, пока' не найдется выражение, принимаю- щее значение true, Если такое зп&чоняе найдено, то значением выражения будет значение безу- словного выражения, заключен- ного между then н соответствую- щим ему else. На этом заканчи- вается вычисление значения вы- ражения. Если ни одно из ло- гических выражений, входящих в условиня, но имеет значения Рис 12 true, то значением условного выражения будет значение вы- ражения, следующею за последним else. Пример 1 Арафметпческое выражение, описывающий ступенча- тую фэшщшо (рио. 12), запшпмен так. ifx> then 1 else О Пример 2. Арифметическое иыражеям, описывающее график фуяк- цпн, щщдставтснпый па рис 13, имеет вид — 1 then 2 ehe 2 then 4 else If аг > 2 then д X « + b else — « X » 4- b Это выражений может быть цесколъпо сокращено, если учесть, что график представляет собой модуль ф^тгкцпи. Поэтому, воснольэовавишсь функцией «абсолютная волпчнеш» — abs (г), можно записать; if ahs (х) < 1 then 2 else if aba (z) C 2 then 4 else jf fibs (r) > 2 then (if x > 2 lheu a else — л) x x (- b 60
ПояскиМ эту заййоь Функция аЬэ (х) обеспсчпЬает определение МодулЧ аргументе, ааилточовйогз в круглые скобки, Поэтому проверка условий производится по модулю аргумента Смысл цервой строки ваппси очевиден, а выражение в скобках, сгоящев за then (if х 2 then в eke — s), является первым сомножителем арифметического выражения ах + & и определяет знак коэффициента а, который a и висит ат аргумента Такая ав пись ио противоречит правилам написания арифметических выражений, по скобки здесь существенны, поскольку операндом может быть только порвпч- Отличие логических выражений от арифметических заклю- чаемся лишь s том, что элементами этих выражений могут быть высказывания или первичные выражения, принимающие булев- ские значении, а также то, что значением всего выражения будет булевское значение, т, о true или false, Пример 3 Условное логическое выражение И д = & then С = Р eke if а > Ь then С 7J Р eke СДР при С н Р — 1гие будет иметь значением если д = Ь апачеияе выражения С s Р, т е. true: если а > & значение выражения С 7Э Р, т< е. fake; если а. <С Ь апдчеияа выражения С Д Р, т< с. true. П р к м е р 4, Вычислить авачеппо логического выражения / if If 0 Ь then С eke Т then ~| С els.e —। Г где С, Т — логические выражения, яиачепня которых true и fake соответ- ственно; д, b — арнфметнч&скпе ныраженпя Для большей наглядности в этой записи можно расставить избыточные скобки, т. с. записать в виде if (if с = Ъ then С else Г) then —। С else “[ 2 Выражение,, зеключепкое л скобки, лыбирнст логическое выражению дла внешнего условия Пусть а = Ь, тогда все выражение эквивалентно записи if С then —| С eke —| Г, т е, false Пусть д -Д Ь, тогда вкшпзалентная форма выражения следуюгцал; if Г then —[ С eke “| Г, i • true hl
При вычислении значений логических. выражений последова- тельность выполнения операций определяется скобками. Если. Скобки не полностью определяют ату последовательность, то не- обходимо учитывать старшинство операций. Сначала выполняются арифметические операции, затем операция отрицания, далее по порядку старшинства операции Д, V» 55 Стандартные функции. Под стандартными функциями в Алголе понимаются наиболее употребительные арифметические фупйции, обычно называемые элементарными. К таким функциям относятся, например, абсолютная величина, логарифм и т. д. Для того чтобы включить стандартную функцию в программу, достаточно указать ее идентификатор и аргумент Как правило, ети функции одноместные, поэтому аргументом будет скалярная ве лич ни а или арифметическое выражение, которое в свою оче- редь ыож'от содержать стандартные (или какие-либо другие) функции Обязательным является то, чтобы, аргумент был заклю- чен в круглые скобки. Стандартные функции обычно содержатся в ВСП транслятора, и описанию подлежат только переменные, об разующие аргумент При переводе программы транслятор предус- матривает обращение к этим функциям При задании аргументов стандартных функций следует за- ботиться о том, -чтобы нх значения находились в области опреде- ления фуяицип Например, аргумент логарифмической функции должен быть положительным и но выходить из диапазона чисел, представленных в машине, Количество функций, используемых как стандартные, может быть различным для различных транелнторов. О^иако функция, представ ленные в табл, 4, имеются в любом трансляторе Примечание; 1 Выражение в скобках может быть любым арифметическим нырз/ке- нлеп 2 , Про обращения к стандартной трпгояопвтричесаой функция аргу- мент должен быть представлен и радианах. Если же аргумент и градусной море, его необходимо умножить Яй переходный коэффициент 0,01745929; например, a in (53е) —. sin (53 X 0,01745329). Для получения значения обрат- ной тригонометрической функции в градусной мере необходимо воспользо- ваться переходным ноиффпциентом 57,29576; например. 57.29578 X нгсаш (0.0). Десятичный логарифм выражении может быть получен по форыута ,, 1g (ж) = 0.43429448 !п (ж), и наоборот, bi (х) = 2.3025851 ig’(a') Показательная функция с основанием домтичашо логарифма вычнеля ется ио формуле lv =*- охр (2.9025851 X Е) 3 . ОпарАиин entier (ж) производят иыделетше целой части аргумента с учетом его заакв Например, enlicr (3.7) = 9, entler (0.999) = 0. entier (— 0.999) — — 1 62
Тдблшр 4 Фу НИЦ(ТП ИДеятйфяка юр ОЕзаеть значений иргумсша ООлпсгь значений функция Снпус 81П (Г) — 0О<^Х <С -|- to, рад — ао <^Х <Г 4* 00 -11 Косинус сое (х} — I1 Танге яс iff (я) СО — <»О< + «? Арксинус arcgin (х) — П/2<у<л/2 Арккосинус ЙГС.15ОЗ (г) — 1 г 1 л Арктангенс arctg (л) ОО Л -ф- CW — л/2< у< л/2 Логарифм натуральный In (х) х> 0 — °° <Г у <Г Ф* 00 Показательная функция с освокаашж натура ле- вого логарифма охр (х) 0-^ | х| cw 0 < у< + «> Корень квадратный sqrt (.г) х>а у 1 л при а: >0 Величина абсолютная аМ (х) ° < 1711 < + 00 у = 1 0 прих =а 0 1—хпрпх<0 ( 1 при х > 0 Зная аргумента siga(r) оСИ< Ь°° ао 1KV я к Я Q , П.Я, & Е ОчН "V Наибольшее целое,, па превосходящее аргумент entier (г) о< |я|< + «> Целое число, но превосходящее х i В вид) многоаяачлосп! обратиых тригонометрических функций по- следние ОПрОДй.чеиы ТОЛЬКО ДЛЯ ГЛнВИЫХ ЗИЛЧСлИЙ Операторы синтаксически определяются следуюпщми мета- фор мулами*. (оператор) ; ; = (безусловный оператор) | (оператор цикла) [ (условный) оператор) . (безусловный оператор) > ; (основной оператор) | (составной оператор)] (блох) (йоиоввон оператор) ;: — (непомеченный основной оператор) [ (метка) : (непомеченный основной оператор) (аепомечелный основной оператор) ,: = (оператор присваивания) | (опе- ратор перехода) ( (пустой оператор) ] (оператор процедуры) Как следует ив определений, для записи алгоритма в Алголе попользуется ограниченное количество операторов, причем не все иэ них являются осповпьиш, т- с. такими, действие которых; нельзя заменить действием последовательности других вибраторов Рас- смотрим функции каждого из операторов, выполняемые ври записи алгоритма на Алголе, Оператор присваивания в Алголе выполняет роль, аналогия-
ную роли алгебраического выражения при описания некоторого вычислительного процесса По описательным возможностям алгеб- раическое выражение я пл я ото л частным случаем оператора при- сваивания. Оператор перехода по приводит ни к каким вычислительным действиям, а только осуществляет передачу управления, т е наменяет естественный порядок выполнения операторов програм- мы без какого-либо условия. Л устой оператор выполняет вспомогательную роль при ис- пользовании других операторов программы Его назначение — указать, что в зависимости от некоторых обстоятельств, возни- кающих ирп вычислениях, пе нужно производить никаких дей- ствий, а необходимо продолжить вычисления. Полезность этого оператора будет ясна пв дальнейших примеров.. Оператор процедуры в Алголе является аналогом подпрограм- мы при ручном программировании Стандартные вычислительные алгоритмы обычно оформляются в виде процедур и могут вклю- чаться в различные программы без дополнительной переработки. Таким образом, процедура является обобщающей конструкцией Алгола] поскольку она может внутри содепжать произвольное количество различных операторов Составной оператор состоит из группы операторов, заключен- ных в операторные скобки begin и end В составной оператор могут объединяться любые операторы и в произвольном количестве Он используется в программах в тех случаях, когда группа опе- раторов должна выполняться как единое целое, например, при выполнении условия Этот оператор часто является составной частью других операторов программы (условного, оператора цик- ла, процедуры). Программа в целом также может оформляться в виде составного оператора. Блок состоит на произвольной группы операторе» и, заключен- ных в операторные скобки begin п end, причем первому оператору предшествует характеристика используемых переменных (описа ния). В отличие ат других операторов блок определяет область действия переменных. Это значит, что переменные,, указанные в описаниях данного блока, могут использоваться только опера- торами этого блока При записи программы блок попользуется как организационное средство, например, объединение от де ль пых алгоритмов в едииоо целое, оптимальное использование за- поминающего устройства Оператор цикла позволяет производить значительную по объему вычислений работу с помощью небольшого числа опера- торов. Достигается это том, что отдельные части программы или программа в целом выполняются многократно, по каждый раз прп новых значениях некоторых параметров. Если заранее известно, что какой-либо параметр задачи изме- няется в некотором интервале и известны его начальное и конеч- ное значении, то эта величина может быть использована для
определения числа повторений цикла, т. а. в качоствеГг^рдмэтра цикла. Иногда такой параметр вводится искусственно. ' ' '- Циклические вычисления заключаются в том, что: а) организуется порядок изменения параметра цикла и конт>" роль иа окончания цикла; 1 б) производятся действия о помощью некоторых опереторов в цикле над величинами, адреса которых могут определяться те- кущим аначением параметра цикла Существует множество примеров применения оператора цикла, но обычно всегда объем вычислений, который необходимо произ- вести, ие зависит от способа организации последнего- Поэтому оператором, выполняемым в цикле, может быть любой иэ опера- торов Алгола. Условный оператор является удобным средством описания разветвляющихся вычислительных процессов При этом выбор на- правления расчета зависит от результатов промежуточных вычис- лений или значений некоторых параметров. Условный оператор обязательным элементом содержит условие, позволяющее срав- нивать значения переменных пли выражений. Б зависимости от результата сравнения он обеспечивает передачу управления иа выполнение тех нлп иных операторов программы- В условный оператор могут входить составными частями любые операторы Алгола. 2. Структура программы л} Выразительными средствами для описания программы явля- ются описания и операторы. По определению программа, записан- ная на Алголе, есть* «программа >: ! — <блов> | «составной оператор> Другие операторы, не входящие в блок или составной опера- тор, не должны использоваться в программе. Описания не несут информации о вычислениях, они только информируют транслятор о некоторых свойствах объектов про- граммы. Наоборот, операторы используются для записи вычисли- тельной части алгоритма В общем случае программа, представленная в виде блок-схемы, приведена на рис. 14. Операторы программы выполняются один за другим в по- рядке’ написания. Последовательность выполнения операторов может прерываться операторами перехода. Вследствие возможности передачи управления необходимо точно указывать' окончание каждого ив операторов Для этого операторы обязательно разделяются точкой с запятой. Точка с занятой ие ставится лишь в тех случаях, когда за оператором следует end или else. Б одпой строке может находиться один или несколько опера- торов или только часть оператора, причем допускается испольэо- 3 в В Кафиров и др 65
ванне пробелов. Последние машиной не воспринимаются, за исключением тех случаев, когда вводятся алфавитно-цифровые коды Пробелы ставятся для удобства чтения программы. Чаще всего в литературе используется ступенчатая структура записи fjptrfinHHa | MfM Mvitwf toefiiasp uWSfilt программы, соответствующая открывающим или закрывающим операторным скобкам. Этот спо- соб, являющийся достаточно наглядным при что пн и програм- мы, и использовав в дальней- шем язлощеппи. Если нарушается естествен- ный порядок выполнения опе- раторов, то указанием того, ка- кой оператор будет выполнять- ся следующим, является метка Она ставится непосредственно iJwpj.ww i'r.lfffub'U UUiAJ dejyw-r&fwu I цнрияср перед оператором н отделяется от него двоеточием В операторе перехода сшератор-прсимник указывается с помощью метки. Правила написания меток аналогичны соответствующим правилам для идентификаторов, за тем исключением, что меткой Jnryojftiriur ivvflaaftx ^Л-mnir rawaAw Рлс 14. ВДО1ЕЧ1ЯСИА прогреми и, вяппсдппой па Алгол? может быть и любое десятичное число целого типа без знака. Комментарии в Программе облегчают ее чтение В Алголе ырвилто два варианта включения комментариев; * любой текст, заключенный между end н первым по порядку символом из трех end, либо; (течка с запятой), либо else счи- тается примечанием; любая последовательность символов, следующая аа раздели- телем comment н оканчивающаяся точкой с. запятой, будет вос- приниматься как примечание Разделитель comment может ста- виться либо после точки с запятой, либо после открывающей операторной скобки begin, Примечание можно вводить в машину, но оно при трансляции опускается. Примеры коммента риеи; end основного цикла змчйслепий; cud конец программы end; end вывод промежуточного результата else, cornmeal ниже следует программа решения системы траавений мето- дом" Гаусса; begin comment программа по известным коэффициентам, полученным в пре дыдущем блоке, производит оценку точности вычислений; Локальные и глобальные переменный* Любой блок программы вводит свой, уровень обозначений Переменные, описанные в яа- 68
чале (заголовке) блока, имеют силу только внутри данного блока и за его пределами воспринимаются как неописанные: Эти пере- менные носят название локальных переменных Если переменная описана в заголовке блока, содержащего внутри еще один или несколько блоков со своими описаниями, то она имеет силу (со- храняет значение) во внутренних блоках и называется глобальной переменной. Понятия локальной и глобальной переменных явля- ются рекурсивными в вавнсиыостн от структуры программы в целом Одна н та /ко переменная может быть локальной по от- ношению к охватывающему блоку и глобальной относительно иложенпых в него подблоков. Однако она не будет ни локальной, ни глобальной по отношению к другому независимому блоку программы. Рассмотрим следующий пример. Пусть Al, А2, АЗ, А4 — по- меченные блоки, Bd, В2, ВЗ, В4, В5 — операторы нли группы операторов, а в начале каждого па блоков описаны некоторые переменные Al : begin real а, Ь, г, Si, А 2; begin real p, t, S2 end .42, A3: begin real m, p, £3; Ad: begin real t, Ж, Б5 end A4 end A3 end Ai Области действия отдельных переменных интерпретируются следующим образом. Переменные а, 7/, с описаны в начало блока А1, следовательно, локализованы в нем. В свою очередь блок А1 содержит внутри блоки А2, АЗ н А4, причем блоки А2 и А4 яв- ляются независимыми. В блок АЗ вложен блок А4. Переметшие а, &, с являются глобальными для блоков Л2, АЗ, А4. Следовательно, опп могут быть использованы при написании операторов В1, 32, 33, В4 н В5 в том смысле, какой был вло- жен в них при описании в блоке А1, т. с. этн переменные дос- тупны любому оператору программы. Переменные р н t яв- ляются локальными для блока А2 и не являются пи локальными, ни глобальными для остальных блоков Они пе доступны операто- рам Bi, ВЗ, В4 и В5. 67 3*
Переменные m- и р, описанные в начале блока Л 3, являются ло- кальными для блока ЛЗ н глобальными для блока Л4, поскольку ' последний вложен в ЛЗ. Эти переменные могут использоваться в операторах £3, 54 и 55, но не доступны операторам 51 н 52 Переменная f,‘ описанная в блоке А 4, является для него локаль- ной и может использоваться только в операторах 54 и 55. Следует заметить, что в блоках Л 2 и ЛЗ использовано одно и то же наименование переменной — идентификатор р (аналогично в блоках А2 и Л4 — идентификатор /). Это'вполне допустимая ситуация, поскольку области действия и временных таких блоков не пересекаются. Переменные совпадают по наименованию, но используются для обозначения различных объектов программы. Ранее отмечалось, что транслятор распределяет память машипы по описаниям. Бели программа состоит из нескольких блоков; то распределение памяти под локальные н глобальные переменные производится по-раэпоыу. Память, отведенная для хранения гло- бальных переменных, поможет использоваться ни в какой другой части программы для размещения других объектов. Память же для хранения локальных переменных представляет собой массив рабочих ячеек, содержимое которых сохраняется только при вы- полнении операторов данного блока н занимается другими вели- чинами при входе в другой независимый блок. Отсюда понятен смысл неопределенности идентификаторов локальной переменной за пределами блока. Значение переменной ие сохраняется при повторном входе в блок. Блочная структура программы имеет следующие преимущества. Во-первых, программа может быть разбита на отдельные части и составлена без каких-либо ограничений на выбор идентифика- торов. Для связи таких частей в единое целое необходимо отдельно выписать общие переменные и описать их в охватывающем блоке как глобальные. Здесь по возможности следует избегать совпаде- ния локальных и глобальных переменных по наименованию, по- скольку это может затруднить чтение программы. Во-вторых, достигается экономия объема запоминающего, уст- ройства. Локальные переменные независимых блоков могут хра- ниться в одних и тех же ячейках памяти. Последнее обстоятельство не всегда удобно при решении иге рационных задач. Действительно, итерационный процесс заклю- чается в многократном повторении одних и тех же вычислений, но с различными значениями некоторых параметров, обеспечиваю- щих сходимость решения При этом предыдущее приближение часто оказывается ианлучтим пряйльинц значением последующе- го расчета. Чтобы • обеспечить сохранение значения этой пере- менной после однократного выполнения цикла, являющегося отдельным блоком, ее необходимо описать кай глобальную величину, хотя оиа нигде более не используется. В Алголе локальная переменная сохраняет свое значение при повторном входе в блок, если она сопровождается описателем own. 68
Для переменных, включенных в список описателя оwli, СоХфайЯ- готе я все свойства локальных величин, за исключение и того,' что / их значения сохраняются и могут использоваться в качестве начального приближения следующего расчета, например / Л Г begin гей! «, tfi; Л2: begin own real bt c; B2 . end ?12, /•/ S3 < end Л1 / переменные b и с не могут использоваться за пределами блока А2, так как они не описаны, но при выходе из этого блока их > значения сохраняются, потому что они описаны как собственные (own). , Метки не описываются в программе, однако на них раепрост- _ , раняется общий принцип локализации объектов, Считается, что . метка описана н локализована в том минимальном блоке, в кото- _ ром опа находится. При выполнении оператора перехода оператор-преемник равыс- Л кивается сначала в минимальном блоке, содержащем оператор перехода, а затем (если таковой пе найдется) в минимальном ox- -j ватывающем блоке и т. д Динамическое распределение памяти, Вход в блок возможен только через заготовок, т, е, нельзя обратиться я внутренним опе- раторам блока, минуя его описания. Это является следствием прин- ципа локализации переменных. В момент входа в блок значение его локальных переменных не определено, не определены и гра- ницы расположения используемых массивов, если они заданы идентификаторами. Значения переменных вычисляются в про- цессе выполнения операторов блока, а массивы размещаются в памяти динамически, т е. в момент входа в блок, Алгол допускает использование массивов с переменными верх- ними границами.' Поскольку распределение памяти под массивы происходит в момент входа в блок, то в выражениях для границ индексов пс должны содержаться идентификаторы, значения ко- торых устанавливаются операторами Данного блока (локальные неремопныс). Переменные выражений для индексов должны при- нимать числовые значения в блоке, охватывающем блок с пере- менными границами массивов Например, запись вида begin nitegen t, m, array Л [t * mj, need (m, Л), 69
иеверпа, так как верхняя граница йассива /1 устанавливается внутри блока оператором ввода, т. е m является локальной пере- менной, Правильно будет, если верхнюю границу задать к виде числа (например, array А И : 10)) или определить в охватывающем блоке следующим образом begin Integer m, flso5 (m), begin array A [4 : m], integer i; ймЭ (/I), i Программа на Алголе после составления должна быть подго- товлена к вводу в запоминающе а устройство машины. С этой целью она наносится на перфоленту или перфокарты на специ- альных клавишных устройствах. Каждому основному символу язы- ка сопоставляется восьмеричный код. Программа, представляющая собой последовательность восьмеричных кодов, вводится в ма- шину и перерабатывается в рабочую программу транслятором Если для решения задачи необходимы исходные данные, то они вводятся в процессе выполнения рабочей программы. Для ввода и вывода данных используются специальные операторы ввода и вывода. В эталонном языке определены первичные операторы ввода и вывода для различных каналов (фотосчитывающее устройство, перфокартнып ввод и т, д,), а тикже соответствующие форматы, определяющие последовательность и порядок расположения ин- формации на внешних носителях. Однако в практике эксплуата- ции трансляторов для различных машин операторы ввода и вы- вода па уровне конкретного представления существенно отлича- ются от эталонного уровня и определяются в зависимости от имею- щихся внешних устройств. Позтоыу в дальнейшем при рассмотрении примеров программ будут попользоваться для обозначения ввода к вывода указатели ввод п ewcw?, за которыми в круглых скобках следуют объекты ввода — вывода любого типа При знакомстве с конкретным представлением Алгола эти операторы будут уточнены (глава ft). 3, Оиератор присваивания Значение арифметического или логического выражения можно присвоить идентификатору переменной только с помощью оператора присваивания. Поэтому этот оператор является естественным обобщением понятия «формула» <п0ртмепаая> ; = <вырюкепие> 70
п состоит из левой и правой частей, разделенных знаком присваи- вания (:=) Оператор присваивания пе есть уравнение, а запись, означающая» что «переменной, стоящей слева, присваивается значение выражения в правой части». Например, р = ехр(а-|-&/£), х = x^i.Qt у = 5 2110_а, у. = (ifя = Athena | 2 elseb)-f-с В левой частя оператора присваивания может стоять перемон- пая, или наименование процедуры-функцшг (см стр. 114), а в при- вой — любое выражение. Если одно и то же значение выражении необходимо присвоить песколыснм переменным, го левая часть оператора присваивания будет содержать наименования этих пе- ременных, разделенных знаком (‘=), т. е образует список левой части, например а : = ZfltJ : = с — eqrt (х) л В списке левой части могут быть только переменные), по не выражения, к их число может быть произвольным. В общем случае оператор присваивания выполняется следую- щим образом: вычисляются значения индексов переменных с индексами спис- ка левой частп; вычисляется япачепие выражения в правой части оператора; значение выражения правой части присваивается переменным левой части. Все переменные списка левой частп по описанию должны иметь один и тот же тип Если атн переменные типа boolean, то и вы- ражение в правой, части тоже должно быть типа boolean. Если же операции производятся с переменными типа real или integer, то тип списка левой части может не совпадать с типом выражения в правой части Переменные слева могут быть типа real, а выра^ женив справа — типа integer, и наоборот. В этом случае тип вы- ражения справа преобразуется к типу переменной в левой части Например, если переменные к, т—типа Integer, то после вы- полнения оператора к : — т , = х/я частное от деления будет округлено до ближайшего целого с помощью стандартной функции entier (Е f- 0 5)t где Е — частное Перемен- ные ь н т примут значения 1 Существенно отметить, что порошенные списка левой части должны совпадать по типу Нельзя, например, записать к = а V«, если к — типа real, а — типа integer 71
j /;1 ji ; '/'5 / ?/-о/c-v: ^',j./.;,<' •-, v,? Синтаксически оператор присваивания определяется следую- щей; металингвистической формулой: {оператор присваивания) ;: — < список левой части) С арифметическое выражение) | <с дисои девой части) {логическое выражение) Примеры возможных ошноов при записи оператора присваивания: Неправильный оператор а : = Ь 2,5 : х (а X Ь) Г 2 : = с * i «=• if Ь then с [l] ! <= b = 7,5® Onmflnti Неправильно написав идентификатор пере- менной слева Слева должен стоять идентификатор перемен- пой Левая пасть не может быть аыражевиен Правая часть ив является выражением Пропущен анак умножения и дня отделения целой части, числа от дробной нельзя упот- реблять запятую Расчет коэффициентов диффузии газов Дяя определения коэффициентов диффузии в бинарных га- < sob их системах яри низких давлениях рекомендуется уравнение [7] pu = 1,8S8.10-»_g_(^-^^y. (3-1) где £>и — коэффициент диффузии, cmVcw, ЛГ — молекулярный sec; Т — температура, °К; Р — давление, атл; сг1В1 Од — па- раметры, характеризующие потенциальную энергию взаимодей- ствия между компонентами смеет Последние рассчитываются либо по экспериментальным данным о вязкости, лпбо на основе крити- ческих свойств компонентов. Уравнение (3—1) получено теоретически на основе теории Неод- нородных газов и позволяет рассчитывать коэффициенты диф- фузии с точностью порядка 5%. Запишем программу расчета коэффициента диффузии по урав- нению (3—1). Программа со держит описание используемых пере- менных н операторы ввода, вывода и присваивания Программа begin real rf, mi, m2, /, signia, omega, p, aeot) (ml, m2, t, sigma, omega, p) , if: ~ 1,858м - 3 X И (3/2) X X (1/ml 4- 1/тп2)/ (p X sigma J 2 X omega), eusod (d) end Расчет теплообменника Пусть в прямоточном теплообменнике типа «труба в трубе» происходят подогрев Р кг/час продукта (рис. 15). Для расчета теп- лообменника, т е определения поверхности теплообмена и рас- 72
ХоДй ТёйЛбиОсйтйЛя, АойпбЛьзуёИСй урайнйпйбА! tGnrtOftotO ба- ланса, Уравнение теплового баланса бсскопе'шо малого участка теп- лообменника имеет вид dgf = Ко (i*i> — tn) (Mo* где gr — тепловая нагрузка, ккал/час; Ка — коэффициент теплопере- дачи ккал/м^ С, tn. — температура теплоносителя н продукта соответственно, °C; Лс—поверхность теплообмена, мг. Рно 16. Схема распределения т&илсратуры в тсплмИ|бДО|ЕИ1Чпе Если предположить, что удельные теплоемкости жидкостей ие зависят от температур, то зависимость разности температур от тепловой нагрузки может быть выражепа d(At) Д13 — &3 9 тогда "та* ~ Дк — Дк я А, п Это уравнение легко иптегрируется, еелп принять, что коэффици- ент теплопередачи ле зависит от температуры q <=» К0Ад Atz - ДЬ In (Д гГ/Дй) Расчетные формулы для прямоточного теплообменника имеют вид ? = РСП (tun Лш) I3 ас код теплоносителя IV = д/ [©г (£пг — iwr)], ла/час (3—3) Поверхность геп’юобмепа <3-41 73
Здесь Cni <?т — удёльйая теплоемкость продукта и теплоносителя соответственно, ккал/кг °C Программа b₽giu real д, «1, c2t flrt, 4A, i2n, /2А, a, A, del2, q. w; s&mJ (p, «1, c2, fin, ИА, /2л, t2kt k}, q J ™ p X d X (HA — (In); iw : «= q / («2 X (f2n — /2А)); Д?И ; (f2A — /1А); deZ2 : « (f2zi — Hn); e ; = с / (A X (dfi/2 - dell) / /л (de/2/de/l)), аыеод (a, ii ) end Программа позволяет рассчитать поверхность теплообмена и расход теплоносителя при фиксированных значениях исходных данных. Чтобы произвести расчет теплообменника с другим теп- лоносителем, необходимо в исходных данных представить его па- раметры. Таким образом, изменяя исходные данные, можно рас- считать указанные параметры при подогреве любого продукта с произвольным теплоносителем. Количество идентификаторов, используемых б приведенной вышо программе, может быть существенно сокращено, если: а) воспользоваться тем свойством оператора присваивания, которое позволяет записывать идентификатор и в правой и в ле- вой частях; б) ввести массив для описания начальных и конечных темпе- ратур продукта и теплоносителя Г; Т - [ПЯ, TiK, Т2Н, Г2Я] С учетом сказанного, второй вариант программы запишется: hagui real р, a, cl, «2, А, array Т JI : 4]; ввод (р, к, cl, <£, 7'), а * р X cl X 12' [2]- Т [1]), р : = «/ (с2 х (Г 13] - Т [4]); ci:=T [4] -Т [2]; с2 ; » Т [3] - Т Ш; a . = л/ (А X (с2 - а1)/1д (с2Ус1), et.tffo-3 (a, р) end Примечание При подготовке исходных данных темпорагуры дол- жны печататься □ той же последовзтсльпоств, в какой свн увазаны в описа- нии массива. 74
Расчет коэффициентов активности компонентов в бинарной смеси При термодинамической обработке данных: о фазовом равнове- сии расхождение опытных я расчетных значений концентраций мо- жет быть обусловлено ие только погрешностью эксперимента, ио и неидеальностыо паровой фазы Последнее особенно существенно при высоких давлениях, Нелдеальность паровой фазы чаще всего учитывается путем введения поправки к коэффициенту активности в предположении, что пар подчиняется законам идеальных газов Если для описания зависимости объема газовой смеси от темпера- туры, давления и состава воспользоваться уравнением состояния, со вторым внриалъным коэффициентом, то для расчета коэффи- циента активности компонента в бинарпои смеси можно получить формулу [8] Ы п = I 1(В|| - ЛИР - Р°) + Wil 1ВТ,(3-5) где у, х — мольный состав паровой и жидкой фазы соответственно; Р(1 — общее давление системы, атмг Ра — давление пара чистого компонента, onwt; V — мольный объем, 6 — 2B1Z—Blt— — Вт B-# ~ (В — y\Blt — В — второй вириаль- ный коэффициент паровой смесн, сма/.ноль; Вп, Вщ — вторые ви- риальные коэффициенты компонентов, см3/молъ\ В12 — пере- крестный второй вириальный коэффициент, смР/молъ, Т — йК. Значении коэффициентов В, Вн и В22 обычно рассчитываются по экспериментальным данным Р — У — Т* Программа begin real х, у, t, pt pl, rt i?, del, array В [1 ; 4], eted (z, у, I, p, pi, г, r., B) В [4]: = (В [3] — у f 2 X2?U]-(1 - v) f 2 X В [2])/ (2 X у X (1 - у}); d«?. = 2 X В 14] — В II] — В [23, gam ; = exp (fa (у X р/(® X J>1)} + ((S [И — cr) X (р — /?1) + р X del X (I - у) ] 2)/ (г X Г)). выгоЭ (gam) end В программе все внрнальные коэффициенты объединены в мас- сив. В IBjj, Вт В, В121. При вводе этого массива последний эле- мент можно положить равным нулю, так как он затем вычисляет- ся я программе. Как и в рассмотренном выше примере, количество идентифика- торов можко сократить, если подставить выражения дчя В!г и б в основную формулу. 75
4. Оператор перехода, Переключатель Синтаксически оператор перехода определяется следующим об- разом: «оператор перехода) :: “ goto (именующее выражение) По определению именующими выражениями могут быть метка; условное именующее выражение, “ указатель переключателя. Если именующим выраженном является метка, то оператор перехода запишется в виде goto Af, где М — метка. Действие та- кого оператора заключается в том, что управление передается one- ратору программы, перед которым стоит метка Af* Оператор с условным именующим выражением позволяет пе- редать управление оператору программы в зависимости от неко- торого условия. Например, goto И Fthen К else Р; где Р — услов- ное выражение; К, Р — мотки Если логическое выражение F истинно, то управление переда- ется оператору с меткой АГ, в противном случае — оператору с меткой F. Правила написания и вычисления значений условных именую- щих выражений аналогичны соответствующим правилам для ариф- метических и логических выражений* Отличие заключается в Том, что значением именующего выражения является метка* Действие оператора перехода с указателем переключателя свя- зано со специальной конструкцией — переключателей Синтаксически переключатель определяется следующим об- разом* «овиоахшо пьрекдютатяля) : : = switch <идентификатор переключате- ля) ; ™ сдорекличателышп список) «указатель переключателя) •*: — «идентификатор переключателя) [«индекс- ное выражение)] Согласно определению, описание переключателя состоит из описателя switch, за которым следует идентификатор, и переключа- тельного списка, отделенного от левой части знаком присваивания* Правила выбора идентификатора переключателя аналогичны правилам выбора идентификатора вообще (это может быть буква или последовательность букв и цифр, начин агощансн с буквы). Переключательный список представляет собой последовательность именующих выражений, разделенных запятыми, Следовательно, в переключательном списке могут быть метки, условные иыепующие выражения и указатели переключателя* Например, switch ЛИ * = /11, i[ а г= Ь then А2 else ЛЭ, Л4 [i]. Условно принято, что элементы переключательного списка пронумерованы слева направо в порядке 1, 2, 3, ***, П (под отдель- 76
‘[А-'Ч-.." -< t Г-л ’ Y ,:?-1 i \,|'1 ' Ч, .-15. ' х 1 * ным элементом понимается как метка, так и любое другое именую- ‘ .$' щее выражение). Указатель переключателя, сострит па идентификатора того >' переключателя, которому он соответствует, и следующего ва ним ‘ в квадратных скобках индексного выражения. Напошшм, что ин- дексным выражением, может быть любое арифметическое вираже- ; нив, принимающее целке зиаченяя Например KI [£]. .. J Описание переключателя в программе ставится в заголовке ;f; блока среди описаний переменных. Указатель переключателя моу ткет быть использован везде в программе, где определены описания. Предположим, например, что в программе в зависимости от ; значения параметра i необходимо передать управление одно- му из операторов с, метками Л1, А2, ЛЗ, А4. Это. можно сделать при помощи оператора перехода с именующим выражением: goto if I ™ 1 then Al else if = 2 then A2 else if i = 3 then A8 elgc A4 Эту операцию можно реализовать более компактно, если вос- пользоваться указателем переключателя. -* . goto Р [fl; где Р — идентификатор переключателя В этом случае указатель переключателя обратится к описанию переключателя switch Р ; ₽= Л1, Л2, АЗ, А4 который в зависимости от величины передает управление оце- р агору с соответствующей меткой. Эффект действия переключате- ля такой же, как и оператора перехода с условным именующим и: выражением, но запись более короткая. Ранее отмечалось, что метки, ио сравнению с другими объек- тами языка, такими же, как идентификаторы, не описываются в начале программы или блока. Это справедливо для меток, не яв- ляющихся элементами переключателя. Но переключатель есть средство упорядочения операций перехода и является в некотором смысле описанием меток. Итак порядок выполнения оператора перехода следующий: 1 Если именующее вы реже в не в операторе перехода представ- ляет собой метку; то в программе отыскивается оператор, перед который стоит эта метка, и управление передается данному опера- тору. 2 Если-в операторе перехода используется условное именую- щее выражение, то вычисляется значение именующего выражения, т, е, в зависимости от условия выбирается метка, и управление пе- редается оператору, перед которым опа стоит в программе. На- пример, goto if а х Ъ = 2 then Ki else К2 Еслиа.х Ь =» 2, то следующим выполняется оператор с меткой /И, иначе, т. е, еелд а х Ь =£ 2, выполняется оператор с меткой TI
3 Если именующее выражение является указателем переклю- чателя, то переключатель выберет соответ с таующ но метку и. уп- равление будет передано оператору с дайной меткой.. Может оказаться, что при вычислении значения индексного выражения его величина превысит число членов соответствующего переключательного списка или станет меньше единицы. Очевидно, указателю переключателя ие будет соответствовать ин одно имену- ющее выражение переключательного списка. Б соответствии с синтаксисом эталонного языка в этом случае переключатель не производит никакого действия и выполняется следующий за ним оператор. Пример 5, Составить программу извлечения корпя степени иа числа Л с точностью е, воспользовавшись итерационной формулой Алгоритм, расчета но уравнению (3—В) заключается в следующем 1 Задаются значения подкоренного выражения А, степени корпя А, точности нычислеашЁ л и начального првбпиженил корня х0. 2 По формуле (3—5) вычисляется следующее приближенно 3 Проверяется условие | — а01 < в Если условие не выполняется, то вместо я?0 в формулу (3—б) подставаяется значение и расчеты повторя- ются с пункта 2. Если модуль разиоств | | < в, то расчеты заканчи- ваются н искомой величиной будет последиео значение Программа begin real а, xprev, eps, ввод (и, я, ерг, к)', А1 ; хргеК = а; 31 = (А — 1)/А х « + -|в/(А X х t (к — 1)), goto И abs ((я — хрте»}/а] >• apj then Al else A2) Л2 • (X} end Программа выполняется следующий образом. После ввода исходных данных с метки А1 начинается итерационный цикл по вычислению последую- щих приближений корня.* запоминается предыдущее значение корня я вы- числяется новое ио формуле (3—6). Если модуль разности двух последующих приближений, отпесоппой к аначонню подкоренного выражения, превосхо- дят заданную точность вычислений, то оператор перехода передает управле- ние па повторении расчетов (переход к метке А1) В противном случае управ- ленце передастся оператору вывода решения (метке А2). Расчет температурной зависимости мольного объема жидкости Предположим, что в некотором температурном интервале (Tlt 7\) известны экспериментальные значения мольного объема Уь Vs, У3. Чтобы воспользоваться этими данными для расчета V при7\^ 78
Г 7*2, необходимо ймбть апалйтцчос кой йыра;к6нне V « / (71) В данном случае к качестве такого выражения можно использовать полином второго порядка V = а + ЪТ + сТл и коэффициенты а, Ь, с определить по формулам с (Г» - У1) —гр - & - (У» - и>) _ (7« - 21®) (Г, — Т>) - (Г* - 7$ (Гя 2’!) * fj *аж w >!! —-— (Та-Т1) а^-ЬЛ-сТ?- £3-7) Если известны только две экспериментальные точки, то мож- но воспользоваться лилейной интерполяцией и коэффициенты опре- делить по формулам '-О- Ь = в-Гх-И’х. (3-8) Запишем программу расчета коэффициентов а, Ь, с по формулам £3-7) н £3-8). Программа begin real в, Ь, с, fl, (2, (3, t-1, у2, уЗ, switch Р : — Л1, А2, мод (fl, 12, 13, yl, i'2, w3); goto Р [If t3 = 0 then 2 else 1]; At : с: - ((Й — Н} X [у2 — pl} - (г2 — Н} X (иЗ - р!»/((т2 [ 2 — fl 1 2) X (f3 — И) — (t3 f 2 — f Ц 2) X (е 2 — Н}}-, Ъ : ~ (i-2 — ul — с х (:2 [ 2 — М | 2})/(е2 — И}; goto /13, А2 : с :в 0.0; & 1= (у2 — ul}/(f2 — 11}, ЛЗ : а : — id — b X Н. — с X fl f 2, въшод (а, Ь, о} end Программа выполняется следующим образом. После вводе исходных данных производится вычисление значения индексного выражения указателя переключателя. Если число эксперимен- тальных точен равно трем, то индексное пыраженио принимает значение, равпоа 1 £13не равно нулю), и рассчитываются коэффи- циенты для уравнения квадратичной интерполяции мольного объ- ема Если /я равно пулю, то значением индексного выражения бу- дет 2 и коэффициенты вычис,1яются для случая линейной интерпо- ляции Предположим, что fs = 0 Тогда указатель переключателя 79
J V kt A**/ 4if>b4» Jk -jH r'^; * . » »t * r j4' '' АЧ' ’ ''л;* Ъ/гМ ' < :Г - "* - i ^7 - •:•' •?• 5 к’ после зычислеввя значения индексного выражения будет иметь / ' вид t. goto Р (2J '.', , Считая, что элементы переключательного списка пронумерованы ? слева направо, указатель переключателя выберет в переключатель** . i • ном списке именующее выражение (в данном случае метку) с по- рядковым номером 2, т* е. метну А2. Оператору о меткой А2 и Г будет передано управление* Г. Расчет концентрации реагента а химической реакции Для реакции &' 24 + Л-^С, С , протекающей при постоянном объеме н атмосферном давлении, ско- ; рость превращения реагента В выражается уравнением ! ‘ ТГ = * <С" - - «), (3-9) г'< где к — константа скорости, реакции; Сд0, СвЛ — начальные кои- £,• центрацин ррлгептов; х — концентрация компонента В к моменту ;времени t S ' Решением уравнения (3—9) является выражение [9], . ' к1(?Га Г ^СЯВ““САо)^ 1 (gA0 ~~ 2х) СНд (ъ Н.„ • kl (2CS, - См) - ^5——+ Ju (3-10) 1' Для тою чтобы определять концентрацию реагента В в момент 1 времени необходимо вычислить корень уравнения (3—10). Уравнение (3—10) является трансцендентным уравнением с । одним неизвестным и для его решения можно воспользоваться од- туи из методов последовательных приближений (глава 8). Перепишем уравнен не (3—10) в виде И >„ Рао“Мса<з „п /(г) 1М(2(7Л0 См) ол;--°' . (3-11) •- ' тогда его, решением будет точка пересечения графика функции / (а?) с осью абсцисс. Для вычисления корня уравнения (3—11) * ' удобно воспользоваться методом линейной интерполяции, посколь- ку не придется вычислять производную в каждой тонне. Метод линейной интерполяции заключается в том, что график функции на некотором отрезке £зг,н а;п+1) заменяется уравнением прямой линия и последующее приближение вычисляется как точка f ' пересечения этой йрямой с осью абсцисс по формуле f(x } •Р»1+а 1=1 “ у _у ) ('rn+J ^п) 12) 80
Pue 10. Решение уршнижя (8—11) методом пикейной япгсрлоляцяи Алгоритм решений уравненья (3—11) состсйт йй следующих этапов (рис. 1&). 1 Выбирается произвольнее сначеиие х такое, что х Сва £г<0,5 Сло), вычисляется. значение функции в этой точке йо уравнению (3—11) и запоми- наются ее координаты (точка 2 . Вычисляется значение функции в точке, отстоящей от давкой иа величину Ал; (точка 5^1)- d. Полагая, что точки соеди- нены прямой, по формуле (3—12) вычисляется координата ее пе- ресечения с осью х (точка Хя+г)- 4 Производятся сравнение значений аргумента (пли функ- ции) в двул прилежащих точ- ках если разпостр меяыпе до- пустимой ошибки, то расчет за- канчивается. в противном слу- чае вычисляется зпачение функ- ции п точке Ял+з, ее координа- ты записываются вместо координат точки xrt и расчет повторяет- ся с пункта 3. Программа begin real х, к, /, fprev, xprev, e/w, c&o, cao, delxt f, *, integer t; switch P : “ Ai, Л2, «оаф, еру, cbo, <иа, tfeU, i), i. = h A : f! «= к X t X (2 X obo — oao) f 2 — (2 X c&o — сдо) X x / ((.5 X сяо — x) X mo — In ((еде — 2 X я) X 0&o/ ((c bo — i) X сдо)}), goto p Id? A 1; i: = i -f- 1; fprsv: = /, xprev : =» x; x : = ® -|- del®, goto A, A2 : л . = (f ‘—•Jprev) / (x — xjorep), xprev : ~ ®; । fpreu: s= /; x ; <= x — //s; goto if a Jis (я? — xprew} > eps then A else ЛЗ, ЛЗ : емп’бЭ (x, /) end 81
Программа выполняется Следующим образом. Вводятся исход- ные данные и вычисляется значение функции в начальной точке Поскольку i = 1, то следующий за оператором присваивания ука- затель переключателя передаст управление группе операторов с моткой At, где будет изменено значение i (£ » 2), запомнятся координаты этой точки и изменится значение х на величину Да? При повторном вычислении значения функции указатель пере- ключателя передаст уяравленне оператору с метиой 42. Здесь вычисляется тангенс угла наклона интерполирующей прямой, запоминаются координаты предыдущей точки и определяется но- вое значение з? по формуле (3—12). Если разность между двумя последовательными приближени- ями по абсолютной величин? не превышает заданной точности вы- числений epsy то управление передается оператору с моткой 43, т. е. па вывод' конечного результата, иначе расчет повторяется с оператора под меткой 4. 5. Пустой оператор Синтаксически пуотой оператор определяется следующей мета- формулой < пустой оператор > 1 • = < вусто > В программе пустой оператор не выполняет никаких вычи- слительных действий. Чаще всего ои используется для разме- щения метки перед закрывающей операторной скобкой блока или составного оператора, когда необходимо закончить вычисления выполнением оператора, не являющимся последним оператором программы П р в ы е р 6 Составить программу расчета кривой рапгюнесия бинарной смеси, подчиняющейся законам идоадышх газов, если аа постен коэффициент относительной летучести а Расчетное уравнение си? у = 1 + (а — 1) г • (3“ Алгоритм расчета кривой фазового равновесия заключается в тон, что при различных значениях концентрации людности, изменяющейся от 0 до 1 с некоторым шагом Дг, производится расчет но формуле (3—13). Результаты расчета на каждом шаге выводятся на начать Исходными данными длн расчета являются alfa — коэффициент относитольиой летучести, defe — шаг нзмеаеяия концентрации жидкой фазы Программа begin real х, -у, al/a, dclv, плод (aijii, deix). 82
» . = 0.0; AI : г ' = r -J- goto И 1 then ЛЗ else /12; Л2 ; if : = al] a X x/ (1 + (alfa — 1) r), fiWoS (г, t/J, goto 41; /13. end Программа позволяет рассчитать состав паровой фазы для концентра- ций жидкости 0<»< 1. Если х^- I, то оператор перехода с условнымиме- яующим выражением передаст управление пустому Оператору, попеченному меткой АН, т е аа окончание расчетов 6. Условный оператор Синтаксически условный оператор определяется следующей ме- таформулой: (условный оперетор> : = (оператор И> | (оператор if> else (оператору <усаовяе> (оператор цяьла> | (метка> ; (условный оператор> Из этой формулы следует, что в Алголе используются два типа условных операторов: а) оператор if (оператор «еелг»), б) полный, условный оператор Оператор «если» но существу является частным случаем пол- ного условного оператора и используется в тех случаях, когда только при нстппности логического выражения необходимо выпол- нить определенные действия. По определению оператор if есть (оператор if> . • = (условие> (безусловный оператору Например, if A then Я, где А — логическое выражение, В — без- условный оператор, Если текущее значение логического выраже- ния А оказывается значением true, то выполняется оператор', следующий эа then, т е оператор В, в противном случае его действие эквивалентно пустому оператору, Действие оператора if можно замолить последовательностью таких операторов; goto if A then At else Л2 At : оператор Bt A2! пустой оператор, 1. о постедовательнрстью оператора перехода и пустого опера- тора \ Иэ определения оператора if следует, чго после then может стоять только безусловный оператор, в том числе и группа опера- торов, заключенная в операторные скобки begin и end (составной оператор). 8^
Полный условный оператор символически представляется так5 If /^огичьскоеЧ th^ ХбоэуслоэяынЧ j <0ператОр> Хвыражение/ \оператор / С1ТО \vu»Fei^H/ и>йго действие может быть описано другими операторами следую- щим образом; goto if »ырдав1!ни#> then Л1 else >12, Al : б^смечм^ опарлтпсф; goto сле^укн^вй оператор; А%: оператор; вле&уилций oneptrmop; Полный условный оператор определяет преемника как ири ис- типностн, так и ложности логического выражения. Если значе- нием логического выражения является true, то его действие за- ключается в выполнении оператора, следующего за then, если же false, то в выполнения оператора, следующего за else Оператор, следующий эа then, должен быть обязательно безу- словным (см, стр. 63), в то же время па оператор после else никаких ограничений не накладывается. Эдо значит, что здесь может опять стоять условный оператор, который будет выполняться в случае ложности первого условия. Например, можно записать if Л! then #1 е!ве if А2 then В2 else if ЛЗ eUe 33 else 54, Bb здесь 41, 42, 43 — логические выражения; 511 В2, 53 — безусловные операторы; 54, 55 — операторы произвольного типа. Полный условный оператор выполняется следующим обра- зом. Слева направо вычисляются значения логических выражений. Как только будет найдено логическое выражение со значением true, выполняется безусловный оператор, следующий за* ним, ос- тальные операторы опускаются. Если, логическое выражение лож- но, то выполняется оператор, следующий за else, и если ои опять условный, то повторяются указанные действия. Если на одно ло- гическое выражение ие имеет значения true, то выполняется опера- тор, следующий за последним else. Если все выражения ложные н и конце нет else, то условный оператор не производит никакого действия. Порядок выполнения условного оператора наглядно иллюстри- руется блон-схемоЙ, приведенной на рис. 17. В условном операторе объекты, следующие за then и else, мо- гут быть как операторами перехода, таи и составными операторами Это значит, что выход иэ условного оператора произвольный, На- пример, при выполнении оператора if а = Ь then begin ff i = ° ±
goto P end else Ь ; = Ъ — 1, д : = a — I, возможны следующие случаи. если а = Ь, то выполняется составной оператор и управле- ние передается метке Р, стоящей в любой части программы, если а =/= Ь, то выполняется'оператор Ь : Ь + 1, а следую- щим ва пим — оператор а : — а — 1. IfAf thtnJ/ (bt IfW liimJ? ebelfAl rUrW, 85 Рис 17 ПОСЛСДПТМГПЛЫКЮТЬ ВЫШКЛТСЦпЛ УЫНЖНОГО onврвтора Согласно синтаксису мОжио не только свободно выходить ив условного оператора, цо и входить в него для выполнения любого внутреннего оператора. Для этого внутренний оператор должен быть помечен. При передаче управления внутрь условного опера- тора сначала выполняются все операторы (начиная с помеченного) до ближайшего then или else (если среди них нет оператора пере- хода), а затем оператор, следующий за условным. Аналогично, если условный оператор иомечеп, то ему можно передать управление пе только из любой части программы, но и одним из операторов, следующих за then или else в самом .операторе. Например, чтобы пайти число и, факториал которого а не пре- вышает некоторой величины с, можно воспользоваться следующей последовательностью операторов: п: « « ; = 1; At : if а < с then begin л : = / * —]— 1 ( а : = л х а, goto Л1 end else goto Л 2: n . = n— 1, Д2. Управление оператору с меткой At будет передаваться до тех вор, пока не па рушится условие а <С с. Искомое значение п после выполнения условного оператора будет не единицу больше, по- этому попользуется оператор п : — п — 1. Следует заметить, что после then можно использовать и услов- ный оператор, если его заключить в операторные скобки, т, е, S5
запись вида if Л 2 then begin if A3 then else B2 end else B3 не противоречит синтаксису языка Расчет зависимости pH водного раствора Концентраций ионов гидроксония раствора соляной кислоты может быть определена исходя из следующих предпосылок [10]; Уравнение диссоциации кислоты [На(Г] = [СГ] -| [ОН“]. Ионное произведение воды Киг = [ОН-] (НаО+] Отсюда [Нао+р- [СГ] [Н3О+] - = о. Концентрация конов [С1"1 равна молярности кислоты, а величина — константа при постоянной температуро. Таким образом для определения концентрации иопов [Н>0+] необходимо решить квадратйое уравнение, причем представляет интерес только поло- жительный корень г={|0Г] + ([Crp + 4Kv)%}/2 £3-14) Алгоритм расчета ааключается в следующем: 1. Задается печальное значение концентрации раствора (кон- центрация ионов [С]’]) и величина 2. вычисляется величина pH раствора; 3 изменяется концентрация раствора, например в 10 рая, и повторяется п 2 Концентрация раствора изменяется до тех пор, пена ие будет получено установившееся значение pH с заданной степенью точности Программа begin real й, сл, рЛ, php, моЭ са, php)‘ Al : ph: = - In ((са - sqrt (са j 2 т 4 X Л))/2>/2 303, вывод (aat phy if aba (php — ph) > 1 О10 — 8 then begin php : ” phi ca ; => гд/10 0, goto Al end $ud S6
В представленной программ^ пДрйду с начальной концентра- цией раствора са и величиной иоппого произведения воды к вво- дится рнр — конечное знчепие ph раствора. Значение php задает- ся в определенных пределах произвольно, но неравное величине ph исходного раствора. Согласно определению ph — есть деся- тичный логарифм от концентрации нонов гидроксония, взятый с обратным знаком. Для перехода от натурального логарифма к десятичному используется множитель 1/2.303. Составной опера- тор, входящий в условный, будет выполняться до тех лор, пока абсолютная величина разиостн двух последующих значений ph будет превышать заданную точность Как только логическое вы- ражение оператора if станет ложным (достигнуто значение php с заданной точностью), составной оператор не будет вьшочнен и расчет закончится Расчёт амплитудно фаговых л частотных характеристик объектов регулирования Предположим, что имеется объект регулирования с переда- точной функцией где р = dldi — символ дифференцирования. Для того чтобы получить уравнения амплитудно-частотной, и амплитуд ко-фа зоной характеристик, необходимо в уравнении (3—15) заменить р на кв и отделить вещественную и мнимую сос- тавляющие частотной характеристики 7? (о) и 7 £<а) соответст- венно £3-16) £3-17) Тогда дчя амплигудно частотной характеристики мощно записать А («,) = (M) + /'W' = / у- m , v Р-18) V (‘-—“’J и для комплексной амплитудно фазовой характеристики ГК £ia) - 7? (to) 4 II (m) (3-10) Чтобы рассчитать таблицу значений указанных функций, при фиксированных значениях параметров т, с, (J необходимо задагь 87
«'л с , -/ ' . ..Г л ‘ _• и . W ? у , г -Ъ , £ ' Г . . " -- У' । । ‘ л г ‘ ‘ , * ‘ z J -Г ' - W&iii ftc а и для каждого аиачеййя й> йычйслИть велйчйны Л (а), . Г (лэ) иг R (а) / Частота <в должна изменяться от 0 до со Как следует if нз уравнений, при f . а *-► 0 а —> оо >Л Л(©) = 1 Л(а)->0 I (ю) = 0 Я (а) —> О /£а)-о Следовательно, если исключить нулевое зиачепнв а, при ко- , тором величины функций известны, то выход на окончание’"расчетов ; ~ можно осуществить цо отплоненню величины I (а) от нуля с за- -' “ данной степенью точности (функция / (w) убывает медленнее < всех, поэтому точность решения по остальным зависимостям . . будет гарантирована). Программа begin ; real а, г, i, с, тп, beta, олм^а, de?*, J мод (т, с, beta, del); omega : 0.0; И1: omega : = omega 4~ del; ? г ; = 1.0 — mic X omega f 2; 11 = r 12 + (beta/ c X omega) | 2, a ; — 1 o/sqrt У); .. r : => r/i, i: beta X omega/e/l; еыыд (omega, a, r, (); If abs (() > del then goto .41 г end 7, Оператор цикла Синтаксически оператор цикла определяется следующей ме- , таформулой: Сопвратор цпкла> :: = <эаголовок цпкла> <оператор^ | <м«,ка> . <оператср цикла> Значит, оператор цикла состоит из заголовка цикла и оператора, которые в свою очередь определяются как <наголовок Цикла > : ; = for <парамэтр цяйяа> : <&ттсок цпкла> do <оператор> :: = <безусловный оДератор> | <условный оператор> | <оператор цикла> Оператор, выполняемый я цикле, обычпо называют управля- емым. Иа последнею определения следует, что управляемым опе- ратором в цикле может быть любой оператор Алгола (см стр. 63), в том числе и оператор цикла Действие оператора цикла заключа- ем
этея в тон, что управляемый оператор выполняется столько раэ, сколько' значений выдает список цикла своему параметру. Несколь- ко операторов цикла могут быть вложены один в другой; В атом случае при каждом з на чениип ар амет рецикл а внеш не го оператора параметр вложенного оператора цикла пробегает все значении своего списка цикла Из определения оператора цикла можно заключить, что ого различные типы могут отличаться только списком цикла. Список цикла состоит из отдельных элементов списка цикла, которые раз- деляются запятыми. В простейшем случае список цикла может содержать только одни элемент списка. При записи оператора цикла1 допускается три типа элементов списка цикла, причем объединяться всписок они могут произволь- ным образом. В зависимости от типа элемента списка различаются 1рн типа операторов цикла: оператор с элементом списка цикла типа арифметического вы- ражения;. оператор с элементом цикла типа арифметической прогрессии; оператор с элементом списка цикла итерационного типа. В любом случае независимо от типа элемента списка цикла опе- ратор позволяет выполнять управляемый оператор при значениях параметра цикла, задаваемых списком цикла. Оператор цикла с моментом типа арифметическом выражения far х • и A do <оп0ратор> выполняется следующим образом; определяется значение арифметического выражения А и при- сваивается параметру цикла яг; выполняется оператор, следующий после do. П рямер 7 Вычислить у = & In х3 при х *=* 1,1, Л1^', 3, (3 -)-» 4- я»)* Эти действия можно выполнять о помощью оператора цикла следующего вида; for х : “ 1,1 зец! (ЗЛ4), 2-71, 3, sqrt (3-|-3.141 2) do у . = охр (r)-f-ln (х1 2) При такой эапяси управляемый оператор выполняется столько рае, сколько злемевггов содержит список цикла, причем элементы перебираются последовательно слева направо, так что х принимает значении 1,1; нт. д. и Оператор цикла е элементом типа арифлютической прозрессии fnr Т ; яс A step В until С do <оператор> 1де Т — параметр цикла — переменная; .4 — арифметическое вы- ражение, соответствующее начальному значению параметра цикла; В — арифметическое выражение, соответствующее шагу изменения параметра цикла; С — арифметическое выражение, соответствую- щее конечному значению параметра цикла. 69
Оператор цикла позволяет выполнить управляемый оператор столько раз, сколько значений принимает параметр цикла, изме- няясь от начального значения А стягом# до конечного значения С, Выполнение такого оператора иллюстрируется блок-схемой на рве. 18. Ряс. 18. ПоСдедОпдтмыгостъ ги* подв(мпя опор а тарщик ла с элиисп- таы тили арифметической «регр^ СНВ Параметр цикла по л аг ветел равным начальному значению — значению выражения А Если эта величина не превосходит конеч- ного значения, а вернее, если выполняется условие (Г- С) sign£#)<0, (3-20) то выполняется управляемый оператор. После выполнения управ- ляемого оператора параметр цикла изменяется па величину при- ращения В и слова осуществляется проверка на окончание. Если условие (3—20) пе выполняется, то управление передается следую- щему оператору программы. При наличии нескольких элементов списка цикла аналогичные действия производятся с каждым нз них и пыход из цикла будет лишь после того, как исчерпан по- следний элемент Например, при выполнении оператора for t; = Л1 step until Cl, А2 step B2 until C2 do <оператор} параметр t принимает последовательно аиачения от А1 с шагом #1 до £71, а затем от А 2 с шагом В2 до С2 и при каждом значе- нии t выполняется управляемый оператор Поскольку проверка на окончание цикла производится с уче- том знака приращения параметра цикла, параметр цикла может не только возрастать, по и уменьшаться. П р и м s р 8 Составить программу для вычисления скалярного произ- ведения докторов А “ а........«к), & ~ (Ьр t kfc)> Спадярное произведение векторов есть число, для обозначения кото- рого аподем вдеитяфнкатор т Алгоритм заключается в том, что произведе- ния соответствующих элементов массивов >1 и И будут складываться со зна- чением переменной ;п, начальное оначение которой, очевидно, должно быть равно нулю. Процесс повторяется до тох пор, пока ив будет прибавлено про- изведение последних элементов. Следовательно, необходимо органпвешать цикл по индексу I, который изменяется от 1 до А, Для определенности положим It = i0 90
Программа begin Integer I, real m, array A, В (1 Ю], б’ррй (Л, В), m О, far i • = 1 step 1 until 10 do m ; m -i- A [i] X В If], eiteod (m) end Оператор цикла о бес почивает памсиепво параметра цикла пт единицы до 10. В данном случае параметр цикла используется для выбора перемен- ных с индексами Л\ п В], а следовательnoi является пеядчпной типа in- teger Этот жо оператор цикла можно записать в такой форме, когда параметр цикла убывает от 10 до I Очевидно, при этом шаг должен быть отрицатель- ным: for I ‘ «-□ ю step — 1 unhl 1 do <оператору Следует заметить, что при подонштельиои шаге в этой конструкции управляемый оператор не выполнятся нп разу, так как уже при первом ври- своеппн I =3 Ю пыдолявно условие выхода пв цикла, Аналогично, оператор цикла виде £ur I =3 step — I until 5 do <ошератор> не дает воамояшостп выполнить управляемый оператор ни разу Параметр цикла может принимать значения типа real пли inte- ger и использоваться п управляемых операторах наравне с любой переменной. Например, при пы пол пенни опера юра цикла for 1 : 1 step 1 until A do begin X [i] = т [I] t 2, У [/] : = 3 0 t f, c [f] : = f; Ъ : = b -ь i end параметр цикла используется кап нпдекс, степень, элемент мас- сива и операнд. Аналогично и для параметра цикла типе real. Если параметр цикла — переменная типа reel, то и значения выражений, соответствующих начальному значению, приращению и конечному значению, будут тина real. Величина типа real хра- нится п машине с конечной точностью. Поэтому для параметра цикла типа real при записи программы рекомендуется к желаемо- му конечному значению прибавить псличппу, равную полоняне шага. 91
Начальное й конечное значения пар А метр А цйкЛА, шйг йймбнб- вин могут быть не постоянными, а зависящими от других перемен- ных или даже от с'воих предыдущих значений Но в любом случае окончание цикла будет определяться значением параметра. Следу- ет иметь в виду, что значение параметра цикла пе может быть из- менено в процессе выполнения управляемого оператора, Пара- метр цикла определяется только списком цикли. Оператор цикла с элементом итерационного типа имеет, не- сколько ограниченные возможности в смысле задания начального значения параметра цикла него возрастания, но обеспечивает поч- ти полную свободу в способе окончания цикла, В этом случае окон- чание цикла производится в зависимости от выполнения или невы- полнения некоторого условия, которое, вообще говоря, может быть и пе связано с параметром цикла. Оператор цикла с элементом итерационного типа имеет следую- щий вид: for Т : = Е while F do <одератор> где Т — параметр цикла — переменная; Е — арифметическое вы- ражение; F — логическое выражение. Рно. <И, Послвдавательвить пьцюл- )>е>лпя оператора цикла с минентом мтурацмоппаго типа Выполнение такого оператора ил.чюстрируегся блок-схемой на рнс. 19. Параметр цикла Т полагается равным значению выражения Е. Если при этом логическое выражение F истинно, то выполняется управляемый оператор и снова параметру цикла присваивается значение выражения Е. Если учесть, что в выражение, определяю- щее начальное значение (выражение Е), могут входить переменные, вычисляемые в управляемом операторе, то при каждом повто- ’ рении параметр цикла будет принимать новые значения. Пример 9 Составить программу вычисления обратной величины о: -яж 1 /А до итерационной формуле «ш = »,-(2-Л-®0 (4 = 0,1,2......!,..)• (3-21) Для тою чтобы, вычислить величину х, необходимо задать численные зкачовия А, начального приближения г/ и точности расчета б Программа begin real л, х, х}, del} мод (д, a:/, del); for х = г/ X (2 0 — а х a/) while аЬв (г - xf) > del do г/ , == х, вмйоЭ (ж}; end 92
Программа начинается с присваивания начального прйбляэКвняп Па ра- ненной af оператором ввода. Оператор цикла вычисляет новое приближение по формуле (3—2i) и сравнивает абсолютную величину разности двух послед дующих приближений с заданной ошибкой del* Если 'воличйны совпадают с заданной точностью*' то одоратор щгкла прекратит вычисление новых при- блнжедийн передаст управление оператору выхода В противном случае вы- полнится управляемый оператор, т в. вновь вычисленное заачаино будет присвоено предыдущему, произойдет повторение вычленений п проверка условия окончания цикле. Очевидно, число повторений цикла зависит от того, насколько ^ляоио значение пачдльпого прнблткенпя к решению, о также от заданной точности расчета. Существенно заметить, что при проварке берется абсолютная величина Если вместо абсолютной величины брать разность со знаком, то может случиться, что первое вычисленное прибли- жение онажетсл меньше начального и цикл закончится раньше, чем нач- нутся вычисления Возвращаясь к общему виду оператора цикла, заметим что элементы списка цикла указанных типов могут включаться .в спи- сок цикла в произвольном порядке и количестве. Последователь- ность их выполнения определяется порядком следования в списке. Например, если записать for х 1 i= 2,3, х + 1 while х 5 do <оператор>, то управляемый оператор будет выполнен при х = 2, 3, 4, 5. Оператор перехода, написанный внутри составного управляе- мого оператора, может передавать управление не только любому помеченному оператору, внутри составного, ио также и любому помеченному оператору вне оператора цикла и, следовательно, мо- жет прекратить выполнение оператора цикла. Таким образом, выход из цикла возможен даже в том случае, если не выполнено условие на окончание цикла. Например, for I 1 = 1 etep 1 unlit к do hegin С[0:=РШ, if С [(1 > 3 then goto A ecd Л. Если C [il станет больше трех нри i =£= /с, то оператор пере- хода передаст управление пустому оператору аа пределами цикла Существенно заметить, что при вынужденном прерывании ра- боты оператора цикла значение параметра цикла сохраняется та- ким, каким оно было непосредственно перед выходом. Если же цикл закончен после исчерпания списка цикла, то значение пара- метра цикла не определено за пределами данного оператора (т. е, ЯЗ
Может быть любым). Это правило справедливо для любого типа эле- ментов списка цикла В оператор цикла можно входить только через заголовок цик- ла, поэтому передача управления какому-либо оператору внутри цнила невозможна. Результат действия оператора перехода к метке, .находящейся внутри оператора цикла, по определен, если оператор перехода также не находится в этом операторе цикла Расчет коэффициентов линейной корреляции Пусть заданы две последовательности значений X и У: Л л Xi & z< £n У У1 У1 У» У* Ул между которыми отсутствует явная линейная функциональная за- висимость Это значит, что каждому значению одной переменной, например X, соответствует некоторая группа значений другой пе- ременной У, причем распределение У определенным образом меня- ется при изменении X. В этом случае между X и У существует корреляционная спязь, которая является промежуточной между функциональной зависимостью и полной независимостью пере- менных. В статистике коэффициент линейной корреляции является ме- рой вероятпостпоп оценки линейной зависимости двух переменных. Абсолютная величина коэффициента корреляции всегда меньше единицы* когда опа равна единице, то переменные связаны линей- ной зависимостью, при равенстве нулю —между переменными отсутствует линейная корреляционная связь. Коэффициент линейной корреляции может быть подсчитан по формуле п пл “S *л-(3 г<3 »<) * = -~-В. (3-22) [(-3 *4-(3 *ч) )("3«?-(2».))] 1-^1 1=1 1=1 где »i, члены соответствующих последопатетьпостой X, У; п—число пар у,. Алгоритм расчета станет более очевидным, если формулу пе- реписать, заменив все суммы простыми переменными _ п,8илх zy— sum х.'sum у [(п $««1x2 — (xn<sum у2 — (sum У)*)!'1 Здесь swm — означает операцию суммирования по $ от 1 до н. Программа hegin integer I, л, 04
еиоЭ (л), begin real sumar, yutny, sums 2r 3u«ly 2, surnxy, r, array Л, Y [1 ‘ л], 1ТвоЭ (Jt, Y)t sums 1 = jumy : = луп1х2 = sumy2 : — sumsy , = 0; £>r i: = 1 step 1 until n do begin jrum s . — sums 4* X 1*1» sumy : *-=- sumy Ц- У [(]; sums 2 , = swns2 -J’ X [<1 f 2, sumy2 , — sumy2 + У [l] | 2, sumxy : — sumxy 4* X UI X Y U1 end, r : = (n X sutnxy — sumx X «umyl/aqrl ({n X sums 2 — sums $ 2) X (л X suffly2 — sunty f 2)); еымд (r) end end Вычисление произведена ч матриц Пусть заданы матрицы 4 и й Произведенном матриц будет такая матрица С, элементы которой есть сумма произведений, элементов строки матрицы А на элементы соответствующего столб- ца матрицы В: п С|,к =3 А ,В^ (i,i = l,2. . ,»), (3-23) J=1 Алгоритм вычисления произведения двух матриц представ- лен на рпс, 20 Как следует иэ блок-схемы, для вычисления матрицы С не- обходимо задать три цикла; но индексу 2, по индексу А и по индек- су у, причем циклы должны'быть вложены друг в друга, Первый цикл задает помер строки первой матрицы н помер строки матрицы результата. Второй цикл (цикл по к) задает номер столбца второй матрицы и номер столбца матрицы результата. Третий цикл (цикл по ;) обеспечивает продвижение соответственно по строке п столб- цу матриц А и В^ Программа hegin integer n, esud (л) begin real s; integer i, /r k, 05
array А, В, С, [1 : л, 1 1 л]; ввод (А) for I; — 1 step 1 шШП п Йо for к: =» 1 stop 1 1шЩ л Йо begin г: = 0.0, for / : => 1 step 1 until л do Г: = 9 + A If, Я х в [/, ft], С U, ft]: “ г, end; «ЬиоЗ {С) end end Рассмотрим порядок выполнения программы при вычислении эле- ментов одной строки матрицы С При входе во внешний цикл па- раметр цикла I принимает значение, равное единице, и выполняется управляемый оператор, в данном случае опять оператор цикла, нб-уже по индексу А. Но выполнение оператора цикла по Л означа- ет, что к принимает все значения от 1 до п и при каждом значении к выполняется его управляемый оператор, теперь уже составной Гис 2G Блок-схема алгоритма перелтножоппя матриц оператор. Первым значением переменной к будет единица. При атом значении к н уже фиксированном во внешнем цикле значении I переменная в будет положена равной нулю, и выполнится опера- тор цикла по Д тем самым будет вычислен элемент п На следующем этане изменится значение параметра цикла по к^ н снова выполнится составной оператор, тем самым будет рассчи- тан элемент CjZt Как только к примет все значения от 1 до га (будут рассчитаны элементы первой, строки матрицы С), параметр внешнего цикла/ изменится не единицу и вся процедура повторится уже с элементами второй строки. 05
Расчет парсжидкостнмо равновесия в идеальных льногокоипсненгпных смесят Ппрожидкостиое равновесие многокомпонентной системы, па- ровая фаза которой подчиняется законам идеальных газов, опи- сывается уравнением У1 — -рг Xi = KfXi £* = 1,2, , .n), £3—24) где р° — давление пара чистого компонента при заданной темпе- ратуре, атм] Р — общее давление системы атм\ у — коэффици- ент активности компонента Если коэффициенты относительной летучеегн компонентов не зависят от температуры, то расчет равновесия удобно выполнять с использованием константы фазового равновесия ведущего компо- нента, т. о компонента, по отношению к которому определяются эти коэффициенты. В этсм случае температуру кипения смеси, от- вечающую заданному составу жидкой фазы, определяют по зара- нее установленной эмпирической зависимости как функцию кон- станты равновесия ведущего компонента Т = / (К), По определению коэффициент относительной летучести есть _ \ _ у№ где индекс к относится к ведущему компоненту. Из выражения £3—25) следует, что J/i = ft. £3—25) £3—26) Суммируя обе части выражения £3—26) от 1 до nt окончатель- но мощно записать / д ajxi £3—27) Пусть зависимость Т = f (Кк) выражаетсд полиномом второй степени Т = аА* с Запишем программу расчета температуры кипения смеси п ком- понентов и состава паровой фазы, еелп известны, a, bt с, O| (* = 1, 2, ..., п) 4 В Б Кифарой н др 97
>"J т-<; 'С:;‘-.s / ; ft: . ' •' ' 1 7 V’. .... X Г Программа begin V4 Integer ft, р’— woa (ft); if. begin Integer I, ‘ teal komtt i, a, b, c, s; array ALFA, X, Y II ’ fc]t К , nod (n, 6, t, ALFA, [;* s ; = 0.0, [«’ ’ for I; = 1 step 1 until k do *. = r + ALFA |il X X [t], J. farnst , = 1/s; '!" -1 IJ = « X /const t 2 f Ь X /const + r, t.'. for i: =“ 1 step 1 until ft do J 4 Y It] .* = ALFA Id X X jf ««we! (tj Y) fe,' «* к 80,1 *w J |г ' Программа выполняется следующим образом. Сначала вводятся необходимые исходные данные (коэффициенты зависимости Т = £ = / (Кь)» коэффициенты относительной летучести компонентов и к ‘ состав жидкости). Затем вычисляется знаменатель выражения (3— » . 27), определяются 2Гк и температура кцнепия смеси 7\ Расчет сос- i '.‘' 7£ва паровой фазы по уравнениям (3—26) производится । - во втором операторе цикла. д £ ' Определение эмпирической формулы химического соединение *1 ' В количественном анализе одним из методов установления эм- лирических формул соедциешш является метод оценки содержания ‘ L элементов в грамм-атомах по отношению к элементу, количество f которого наименьшее в данном соединении 110]. j Предположим, что известен процентный состав соединения и атомные веса элементов, Эдошшт Состаи % АюканА ьев ' К Pi At С Pi Ai 'i В Рь Ла. T Pi At Число грамм-атомов каждого элемента в соединении можно определить как Г, = (I = 1, 2, 3,4) (3-29) S8
Пусть элемент Т присутствует в наименьшем количестве. Тогда' возможная эмпирическая формула соединения будет (3-30) где kt = Гч/Гг(1 — 1, 2, 3, 4) Следовательно, определение эмпирической формулы соедине- ния заключается в па хождении элемента, присутствующего в наи- меньшем количестве, и в расчете по формулам (3—29) и (3—30). Исходные данные: Р — массив процентного содержания элементов в соединении; Я — массив атомных весов элементов; У — массив порядковых номеров элементов в исходной информации. Программа begin Integer л; tfeoS (л); begin Integer i, /; real c, array P, A [1 : и], integer array У [1 : л], ввод (P, Л, У)г for I : = 1 step 1 until n do p|i]. = p'uiMh], for i: = 1 step 1 until л — 1 do for j : = i + 1 step 1 until n do begin if P [i}< P [/llhcn begin с: = P [II, p HI: = p 1/1, p [/]: = c. e: = ПИ; У Ш: = P [;L У Ш: = « end end; for i. = 1 step 1 until n do p|i}: = p[(l/P W; tueod (P, У) end end Программа выполняется следующим образом. Вводятся исход- ные данные и по формуле (3—29) определяется число грамм-атомов каждого элемента. Затем элементы вместе с их порядковыми номе- рами расставляются в виде убывающей посладоьательпости по 09 4*
значениям атомных факторов Г{ Это осуществляется с помощью операторов цикла Элемент, присутствующпй в наименьшем ко- личестве, будет в этой последовательности яа последнем месте Поело этого по формуле (3—30) определяются стехиометрические коэффициенты kt, Выходными данными программы являются мас- сив значений к и массив У, элементы которого расположены в со- ответствия с величинами kit Расчет коэффициентов активности компонентов в многокомпонентной смеси ло уравнениям Ван Лаара Одним из методов учета пепдеальности жидкой фазы ври расчете парожпдкостного равновесия в многокомпонентных сме- сях является использование уравнения Ван Лаара для определе- ния коэффициентов активности [2] К Й * k д in Yi = 2 " 2 "^2 2 —^1) J=1 j=I i="l ji где Aij — коэффициенты, определяемые но экспериментальным да и ям м о ралпоиеснв в оппаряых смесях, г< =-^-------------- 2 VW4*? J = 1 эффективная молярная доля компонента г, у( — коэффициент ак- тпвнсстп компонента в. Для расчета коэффициентов активности компонентов в много компонентной смеси необходимо располагать числовыми значе- ниями коэффициентов Ац и составом жидкости Коэффициенты учитывают межмолокулярпое взаимодействие компонентов в бинарных смесях и определяются по опытным данным о развозе спи между всевозможными парами компонентов в многокомпо- нентной смеси (см. стр 409) Для системы, содержащей А компо- нентов, они образуют матрицу порядка k X к, причем диаго- нальные элементы Ли равны нулю Запишем программу расчета коэффициентов активное; и по уравнению (3—31). Программа begin integer к, бвод (fc), hegin integer I, У, I, real st da; array, G/lAf, 2, 2, [1 • ft]. A [1 A, i . AJ, ввод (X, Л), for i ; = 1 stop 1 until к da 100
begin s.= .O, for У : = 1 stop 1 until ft do 3 : ® s + (if l = j then X [/] else X bl X A (]/Л Ll, fl), 2 [i] : = X [(JXs end; for Z: =* 1 step 1 mrtfl к do bogin s : ds • =“ .0; for f : = i alep 1 until к do begin s: = s + 4[(t/IXZb], dsz= ds + A U./l X Z[l] X Z[flt for I : = 1 stop 1 until к do ds : ds -f- (if J = t\/t = 1 then 0 eke A [/, Z] X A [ft /] X Z [fl X X Z [IJM [/, fl) end, GAM Jfl : = exp (s — ds) end, выли? (СДМ) end end В программе после ввода исходных данных производится вы- числение молярных долей компонентов, д затем расчет но формуле £3—31). Исключение элементов в соответствии с формулой (3—31) осуществляется в операторах присваивания с помощью логических выражений Расчет плотности паровой фазы, многокомпонентной смеси Уравнение состояния Бенедикта — Вебба — Рубила (11). р = ЛГр + (ЙОЙТ — Ло - Са/Т*) р + {ЬПТ — а) р8 -f- айрв _ + ср8/Л (1 + у/р«) . £3-32) часто используется при расчете таких физико-химических свойств углеводородных смесей, как плотность, вязкость, теплоемкость и ДР- Рассмотрпм программу расчета плотности смеси ]с компонентов в паровой фазе при известном давяетшн и температуре, еспн коэф- фициенты уравнения определяются соотношениями £3- 33) 101
ки к s 5, ъ = [2 ] । 7. « = [2^°^] . i=l i=“l к а Л _з 6. с = [ 2 «iC1/’ ] , 8. г = [ S дчту*] , i-1 i=x где jBQi(t Coj, ff{, CjCti, Tt — коэффициенты, определяемые по экспериментальным данным и относящиеся к чистым компонен- там (12). Для того чтобы определить плотность, необходимо найти ко- рень уравнения (3—32). Очевидно, ото уравнение имеет несколько решений, однако известно, что плотности паровой фазы соответ- ствует наименьший из положительных корней. Поэтому решение задачи заключается в определении наименьшего положительного корня одним на методов, приведенных в главе 8, в частности путем отделения корпя с точностью 6 (при движении по осн аргумента от О с шагом Др пока расчетное значение давления ие превысит экс- периментально заданной величины) с последующим уточнением корня методом деления отрезка в некотором отношении Алгоритм расчета заключается в следующем: 1. Вычисляются коэффициенты уравнения (3—32) ио приведен- ным соотношениям. 2. Задается начальное значение р = Др, и вычисляется давле- ние по формуло (3—32). 3 Плотность р изменяется на величину шага Др до тех пор, пока Ррасч с Лжив Как только это условие нарушается, произ- водится проверка иа окончание расчета 4. Если разность между расчетным и опытным значениями давления превышает заданную точность, то из последнего значе- ния плотпостн вычитается величина, равная шагу Др, после чего шаг уменьшается в 10 (или любое другое число) раз и расчет по- вторяется с пункта 2, по с мепъшнм шагом. Если же разность мень- ше заданной точности вычислений, то расчет закапчивается. Программа begin integer ввод (Jf), begin integer i, у. г, real al, я2, яЗ, я4, f, p, tk, peal, den, dslf array X [1: ft], _4 [1: 8], KOEF [1 : ft. 1 : 8], ввод (p, t, X, XOEF)'t for I. = 1 atop 1 until I do A [»] ; = 0.0, for I; = 1, 3. S do for z : = 1 step 1 anti] I do A [I] ; Л It] 4- X [s] X sgrl (KOEF [», 1]); 102
for / • = 4, 5( 6, 7 do for s : — 1 step 1 until A do A [i] ; =* A [I] 4-.X [z] X KOEF [з, I] ? (1/3); _ ’ if for ; : — 1 step 1 until к do .. ’• A [2] : « A [2] + X [«] X KOEF [3, 2j. ,‘V for I: =“ 1, 3( S do Л [t]: <= Л [i] j 2; for i 1 ™ 4, 5. 6( 7 do A [(]> ~ A [I] f 3; ik 1 ™ i 4“ 273.16-1 i H : = 03205 X tt. o2 : = A [21 X 01 — A [1] - А [31/Щ 2; e3 t = Л [5] X el — A [4]; , e4 ; = A [4] X A [7]. ' deltn г = 20; : del 1 = den * « 0.1; . /1 Л1 1 if delm .0001 then for peal ; = el X den 4- «2 X den [2 " л 4* оЗ X dan f 3 + X dan f 6 4* А [б! X den f 3 X (1 + A [8] X den 12) X exp (-Л [S] X dtn f 2)/ffc f 2 while p > peal do begin ’ dsn : den 4" del, * , debn i “* abs (peal — p} end; u if dsl >>« 0001 then begin dal: = 0 1 X de/. goto />1 end; 1 ffbiwd (den) end end Программа состоит из двух частей. В первой части исходные данные и вспомогательные выражения приводятся к виду, удобно- му для дальнейшего использования, а во второй — производится собственно расчет плотности смеси Уравнение (3—32) содержит 8 коэффициентов, зависящих от состава смеси л физико-химических свойств отдельных компонен- тов. В программе для их обозначения введен массив Л [f : 8]. Каж- дый элемент массива А вычисляется по соотношениям (3—33), при- чем коэффициенты, относящиеся к отдельным компонентам и ис- пользуемые в этих соотношениях, записаны в виде двумерного массива t к, 1 1 8] — матрицы, число строк которой рав- но числу компонентов смеси, а число столбцов — числу коэффи- циентов. Первая часть программы до оператора с меткой D 1 обеспечи- вает расчет коэффициентов по соотношениям (3—33) вычисление арифметических выражений д 1, а 2, и т. д , пвнвмонпых в ите- рационной схеме определения плотности. Поскольку в формуле 103
(3 — 32) используется температура в ° К» то исходная температура, вводимая в ° С, увеличивается на 273,16. При расчете коэффициентов уравнения (3—33) используются операторы цикла с элементами списка первых двух типов, причем цифры 4, 5, 6, 7 соответствуют порядковым поморам соот- ношений в записи (3—33). Расчет плотности по формуле (3—32) производится с помощью оператора цикла с элементом списка итерационного типа. for 4 св Е while Г do <оператор> Здесь арифметическим выражением является выражение (3—32), логическим — р peal, а управляемым оператором — состав- ной оператор begin dsn = den + del, dedm', = {peat—p} end, обеспечивающий при истинности логического выражения измене- ние плотности на величину шага н определение разности по абсо- лютной величине между расчетным н заданным значениями дав- ления смесн. При повторном входе в цикл с метки D 1 ага вели- чина используется для сравнения с заданной точностью (и данном случае с 0,0001). Оператор цикла выполняется следующим образом Задается начальное значение плотности den и шаг оа изменения del. Ве- личина разности между расчетным я заданным значениями дав- ления delm вначале задается произвольно лишь с тем, чтобы выпол- нился условный оператор о моткой Ш и можно было войти в опера- тор цикла. При заданном значении плотности вычисляется давле- ние и сравнивается с исходным значением. Если опо меньше, то выполняется управляемый оператор, т е увеличивается плот- ность, вычисляется delm и вновь вычисляется peal при новом значе- нии плотности Как только расчетное значение данленпп превысит заданное, управляемый оператор не выполняется, а проверяется условие сле- дующего за пни оператора If del > ООС1 thee Если шаг del меньше 0,0001, то расчет закапчивается, иначе дела- ется шаг назад по плотности н управление передается на повтор- ное выполнение оператора цикла с уменьшенным в 10 раз шагом. Повторный расчет производится аналогично, лишь только с новы- ми значениями den м del. Таким образом, при каждом повторном выполнении оператора цикла уточнение корпя производится в ин- тервале предыдущего шага с шагом в 10 раз меньшим. 104
8* Процеди pa При записи алгоритмов средствами Алгола часто возникает необходимость многократного использования стандартных вы- числительных методов как отдельных частей общей программы. В этом случае последовательность операторов, реализующая такой стандартный метод, оформляется в впде процедуры, Использование процедуры базируется иа том, что вводятся два понятия: описание процедуры п оператор процедуры. Описание процедуры синтаксически определяется следующим образом: <опясавке процедура = procedure <вагоаопок процедуру удержание процедуры > Заголовок процедуры является описанием используемых эле- ментов языка в процедуре. Оп состоит из идентификаторе про- цедуры, списка идентификаторов переменных, зпачолня и наиме- нования которых могут изменяться при многократных обращениях к процедуре. Сюда же включается информация о типе этих пере- менных • (совокупность спецификаций). Выбор идентификатора процедуры производится аналогично выбору наименований пере- менных. Например, заголовок процедуры умножения двух квадратных матриц может иметь следующий вид (см стр 95): procedure MULF (», Л, В, С), integer п; array А, Вт с, Здесь MULT — идентификатор процедуры, п — порядок матрицы, А, В — массивы элементов исходных матриц, С — матрица ре- зультата. Содержание процедуры представляет вычислительную часть процедуры и состоит ий операторов Алгола, реализующих алго- ритмы расчета Например, содержание процедуры умножения матриц можно представить следующим образом: hegiu integer Zt / real s; for 4: 1 step i until n do for k : = i step 1 until л do begin = 0 0, for / : = 1 step 1 until n do s: = «4- A [t. j] X В [i. fcl; c M) ~ « end A ead 105
Если теперь объединить заголовок и содержание? процедуры, то полное описание процедуры умножения матриц запитается в виде procedure MULT (п, А, В, С), Integer п, array А, В, С, begin Integer it }, к; rfeal г; for t: » 1 step t until л do _ for ft: «= 1 step 1 until n do begin s: ™ o.o, for / 1 = 1 step 1 unhl n do s: = s А В, y] x в [/, AJ, C [t, Л]; = я end end Сравнивая последнюю запись с программой на стр 95, не- трудно заметить, что она отличается только внешним оформлением и отсутствием операторов ввода и вывода. Оператор процедуры является средством обращения к описа- нию процедуры й состоит из идентификатора процедуры и списка наименований, переменных, совпадающих по типу с переменными, -указанными и заголовке. Описание процедуры встречается в программе однажды, обыч- но средн описаний остальных элементов, а оператор процедуры может использоваться произвольное число раз, при этом могут изменяться лишь наименования переменных. Каждое ив обращений с помощью оператора процедуры как бы вызывает на место опера- тора процедуры его описание н обеспечивает выполнение операто- ров содержания. Например, оператор процедуры для вычисления произведения двух квадратных матриц 41 и 51 порядка от запишется п виде MULT (ЛГ, 41, 51, С1), где С 1 — идентификатор массива результата. Формальные н фактические параметры. Параметры, включен- ные в список заголовка процедуры, носят название формальных параметров, а параметры в операторе процедуры — фактических параметров. Различие между этими параметрами заключается в следующем. Формальные параметры являются «пустыми» переменными, но принимающими значений. Они попользуются в процедуре лишь для указания типа и класса переменных алгоритма и задания по- следовательности вычислений. Фактические параметры являются теми объектами, с которыми должна выполняться процедура. При выполнении оператора процедуры формальные параметры заме-
няются фактическими, и операторы описания процедуры уже вы- полняются с идентификаторами, соответствующими фактическим параметрам. Формальные параметры не имеют числовых значений* и поэтому они нигде не описываются, кроме как в совокупности специфика- ций в заголовке процедуры. Наоборот, фактические параметры — есть переменные иля другие элементы языка, используемые в программе, где описана процедура, Отсюда следует, что факти- ческие параметры должны быть обязательно описаны в начале блока, где используется данная процедура. Для обозначения фор- мальных параметров можно использовать любые идентификаторы, Б частности, ио пвимепованию они могут совпадать с наименова- ниями фактических параметров Спецификация Список формальных параметров должен ука- зываться в заголовке процедуры (специфнроваться), причем спе- цификация формальных параметров включает в себя только описа- ние типа или класса. Это значит, что если формальным парамет- ром является идентификатор массива, то границы размерности его в спецификации пе указываются, а указывается только тип идентификатора массива Например procedure MULT (п, Л, JE?, С), tntoger п, array At Bt С, Спецификация в какой-то степени является описанием формаль ных параметров процедуры н в значительной степени об легчает чтение программы и ее трансляцию. Синтаксически спецификация определяется следующей мета- формулой: <специфвкацпя> = <цш> | array | wuh> array | label [ switch | procedure ] <thii> procedure Эта формула пе толъьо определяет способ специфицирования, по и объекты языка, которые могут использоваться в качестве формальных параметров Отсюда следует, что формальным пара- метром процедуры может быть: простая переменная любого типа, идентификатор массива, при- чем для массива действительного типа описатель типа можно опу- скать; метка; идентификатор перекшочателя; идентификатор про- цедуры; идентификатор процедуры-функции. Например procedure ЛВС 04, В, С, Р, Г, procedure Л; real В, Integer array С, 107
label P; switch Г, real procedure M, Спецификация label указывает, что факт ячее ей и пара метр ом мо- жет быть именующей выражение, в частности метка, а специфи- кация real procedure соответствует тому, что фактическим парамет- ром может быть идентификатор процедуры, причем выходное зна- чение процедуры есть скалярная воли чипа (процедура-функция, см стр. Ц4) Объекты языка, которые могут выступать s качестве факти- ческих параметров процедуры, определяются следующей форму- лой; <фактичесютй параметр) = <сгрокд> | <выражение) | < идентификатор иассппа) | <«дйнтифак,гор переключателя) | <ндк1ттфпнатор процедуры) Поскольку под термином «выражение» понимается его опреде- ление (стр. 55), следовательно фактическим параметром может быть число, переменная п т. д Объект «строка» позволяет пере- дать'процедуре алфавитно-цифровую информацию. Замена формальных параметров по наименованию. Для того чтобы процедура могла выполняться, формальным параметрам необходимопередатьсоотиетствующие числовые значения. Одним нз способов передачи значений является замена формальных парамет- ров на фактические по наименованию. Процесс замены проиавоцит- ся перед выполнением операторов описания процедуры я заключа- ется в том, что наименования формальных параметров s операто- рах будут заменены соответствующими наименованиями фактиче- ских параметров Из того, что формальные параметры заменяются прп обращении к процедуре фактическими, следует несколько важных замеча- ний, а именно во-первых, фактический параметры в операторе процедуры должны следовать в том же порядке, что и соответствую- щие им формальные в заголовке процедуры; во-вторых, класс п тпп фактического параметра должен нахо- диться в соответствии с классом и типом формального параметра .Первое замечание означает, что если некоторый формальный параметр используется в описании процедуры в качестве левой части оператора присваивания, то соответствующий ему факти- ческий параметр ие может быть ничем, кроме переменной. Это огра- ничение обусловлено тем, что левая часть оператора присваива- ния может быть по определению только идентификатором простой переменной или переменной с индексом. Ив второго замечания следует, что если, например, формальный параметр используется в качестве идентификатора массива, то соответствующий ему фактический параметр должен быть также идентификатором массива того же типа и размерности. Несоот- ветствие фактических п формальных параметров допускается для переменных типа real и integer. 103
В качестве примера рассмотрим алгоритм вычисления квад- ратного корня по итерационной формуле ^iti " ~i/' (^i A/X^r Чтобы записать программу в виде процедуры, необходимо выт брать формальные параметры п написать заголовок процедуры. В список формальных параметров целесообразно включить пере- менные, которые будут определять подкоренное выражение и ско- рость сходимости решений Пусть а — подкоренное выражение, в простейшем случав число, zf — начальное приближение корпя, ер$ — точность вычислений, х — пыхедпой параметр процедуры. Тогда процедура ROOT запишется п виде procedure JfOOl (я, х/т я), real я, х/, ejos, т, begin fur х : =. 5 X (х/ 4- я/г/} while аЬч (х — х/} едя do г/ : = х; х: = х/ end Пусть теперь с помощью процедуры ROOT необходимо вычис- лить корень нз выражения + 1п (#)/2 при у^> 1. Это можно сделать, если записать обращение к процедуре в виде ROOT (у f 2 + ln (#)/2, yf, del а); где jf/ — начальное приближение,^/ — точность вычислений, а — выходной параметр процедуры Переменные.#, yft del, а должны быть описапы в начале про- граммы, где находится п описание процедуры.' Обращение обеспечит замену формальных параметров па фак- тические, так что содержание процедуры примет вид begin for а , = ,5 X (у/ -f- (у 1 2 +• Ь (у) / 2) / у/} while ahs (а — у/) > def do У/: = й. я: = у/ end Если теперь нужно вычислить корень на числа 17 с точностью 0,0} при печальном приближении р н результат присвоить пере- менной в, то обращение к процедуре запишется: ROOT (17, р, 01, й). Снова содвргкапие процедуры будет преобразовано в соответствии с фактическими параметрами и результат будет присвоен пере- менной в Одндко в операторе процедуры нельзя ставить числен- ное значение начального приближения, поскольку этот идентифи- катор используется в левой части оператора присваивания к со- держании процедуры 109
Vi" f-’/ ' J ‘З’Лч ..г1-"/ -l < л.й }'* i * 1 " ' , ' • b' » ‘ I ' 1 * - b » J /S ’ , -‘‘—’ll л'./ ‘ П ркм о p 10, При течении жидкости между днумя концентрическими трубами в иаотермпчеоком режиме радиус, соответствующий максимальной скорости движения, определяется по формуле rmux-]/ ’ (3-34) где г, — радиус мвутреняей трубы, льи; гя — радиус внешней трубы, мм. Запишем программу расчета зависимости радиуса максимальной споро- сти от радиуса внутренней трубы Для расчета необходимо задаться мшшмальпым п максимальным значе- ниями радиуса внутренней трубы, а также'параметрами, необходимыми для работы процедуры извлечения корил- Процедура пойдет в описание про- грамм неизмеяаой Программе begin real rl, г2, г, гО, ера, delr, procedure ROOT (в, а», ера, в), ; real а, хе, ера, х; begin > '• for я : = 5 X (хо + а/хо) while aba (х — хе) 2> ера do хо . — х, х 1 — хо end; ,• ' stfp3 (rl, r2, deir, ера), for г : = rl, г -f- delr wmle r — r2 < 0 do ; begin Ю ; = rl, ROOT ((r2 t 2 - rl J 2} I (2 X In (r2/rl). r 0, ape, rl), вкгоЭ (г, rl) end end Следует обратить янтганпе, что в данной программа фактический пара- метр ера совпадает по н в имев она в ню с формальным. Это не противоречит Л' правилам записи процедур, поскольку формальные параметры нужны только для определения действий, а объввды втлк действий задаются фактическими параметрами В программе для ускорения сходимости решения очередное начальное приближение корпя (налипая со второго епачепня параметра цикла) полагает- ся равным предыдущему значению корпя. Это достигается за счет того, что выходным параметром процедуры после замены формальных параметров аа фактические будет переменная rl, аинчепме которой присводьаетсл пере- менной Ю при очередном выполнения цикла. Если переменные описаны л процедуре, то они, как это следует лэ блочной структуры программы, локализованы внутри- Следова- тельно, при выходе па процедуры их значения не сохраняются. Содержание процедуры всегда действует подобно блоку, независи- 110
мо от того, являете н ли оно блоком нли пет. Следовательно, иден- тификаторы, которые не являются нм формальными Параметрами, пи локальными для данной процедуры, будут для нее глобальны- ми и должны быть описаны в блоке, охватывающем процедуру., Прн выходе из процедуры эти параметры сохраняют свое значе- ние. То, что содержание процедуры всегда является блоком, оз- начает, что область действии метон, помечающих операторы внутри содержания, не распространяется за пределы процедуры: оли ло- кализованы внутри. Процедура может вообще не иметь формальных параметров. Тогда переменные, ио описанные в процедуре, будут для нее гло- бальными. Процедуры без параметров обычно используются в тех случаях, когда фактические параметры ие изменяются прн Пов- торных обращениях. Присваивание значений формальным параметрам Замена фор- мальных параметров процедуры фактическими по наименованию прп использовании процедуры в программе пе всегда удобна. Во- первых, накладываются ограничения на фактические параметры процедуры Параметры, используемые в качестве левой части оператора присваивания, могут быть только переменными. Во-вторых, если фактический параметр является сложным выражением, значение которого не зависит от переменных, из- меняющихся в содержании процедуры, по вычисляется многократ- но, то время выполнения оператора процедуры увеличивается. Для таких параметров целесообразнее заранее вычислять значения и передавать.их в процедуру, поскольку для выполнения опера- торов описания процедуры важно иметь численное значение пара- метра В-третьих, фактический параметр после выполнения операторов описания процедуры может изменить свое первоначально о значе- ние, если ему присваивается значение внутри процедуры В Алголе можно избежать указанные недостатки путем замены формальных параметров по значению, С этой целью используется список значений в заголовке процедуры. Список значении состоит из опецифнкатора value и идентифи- каторов формальных параметров, которым будут присваиваться значения соответствующих фактических параметров. Например, procedure А (Ь, с), value &, й, real &, с, Формальные параметры, перечисленные в списке значений, при обращении к процедуре пе заменяются по наименованию. В про- цедуру передаются только значения фактических параметров. Сле- довательно, формальные параметры как бы приобретают силу ак- тивных элементов процедуры и уже пе являются «пустыми» пе- ременными.
В список вначепий включаются не все формальные параметры, поскольку они ие все могут принимать конкретные числовые зна- чения. Например, фактический параметр, соответствующий иден- тификатору процедуры, может принять числовое значение лишь после выполнения данной процедуры. Аналогично не можеа пмегь значения указатель переключателя В список значений включаются только идентификаторы, соот- ветствующие переменным н массивам. Фактическими пара метрами переменных, включенных в список значений, могут быть и ариф- метические выражения. Существенно то, что если идентификатор включен в список значений, то он должен обязательно специфи роваться. Список значений изменяет правила выполнения оператора про- цедуры. Взтом случае процедура как бы охватывается внешним блоком, в котором описываются идентификаторы формальных параметров, включенные и список значений, и происходит при- сваивание нм значений фактических параметров Такое присваи- вание производится однажды перед входом в описание процеду- ры. Справедливо допущение о вовможном несоответствии типа фактического и формального параметров для велнчин тина real п integer. Но если идентификатор специфицирован как церемонная булевского тшга, то и соответствующий ему фактический параметр должен быть типа boolean При замене формальных параметрон по зпачепию для всех пе- ремеппых, включенных в список значений, отводятся транслято- ром ячейки запоминающего устройства, состояние которых сохра- няется только при выполнении операторов описания процедуры. Таким образом, в процессе выполнения оператора процедуры появляется локализованная переменная, соответствующая данному фактическому параметру. Значение этой переменной не сохра- няется прп выходе из процедуры, поэтому фактически параметры не изменяют своего значения. Аналогично, если идентификатор массива включен в список значений, то соответствующий ему фор- мальный параметр становится идентификатором реального мас- сива, которому присваиваются те ;ке границы и та же размерность, какими обладает массив, являющийся фактическим параметром. Перед входом в описание процедуры зпачонпя оиемонтов массива передаются поэлементно Рассмотрим порядок выполнения процедуры со списком зна- чений иа примере вычисления квадратного корня из выражения у2 + 11пу| -f- 1 по ранее рассмотренной программе (стр. 109). Кпхяе идоптифпкаторы целесообразно включить е список зна- чений? Очевидно, это — идентификатор а, соответствующий под- коренному выражению, поскольку его значение не зависит от параметров описания процедуры, но будет многократно исполь- зоваться в цикле; хо — начальное значение корпя; eps — точность вычисления корня, если значение этой переменной ие изменяется в процесса выполнения операторов содержания процедуры, напрн- 112
мер 0.0’1/fl. Однако -если для оценки точности воспользоваться вы- ражением 0.01/|жо|, то идентификатор eps нельзя включить в список значений, так как в данном случае необходимо передать не значение выражения, а порядок его вычисления. Если epsбудет включено в список значений, то вычисления будут производиться с точностью, ие зависящей от абсолютной величины корня. Выход- ной параметр z не следуют включать в список значений, так как он получает значение после выполнения процедуры Программа begin real у, 0, b, procedure HOOT (a, xo, eps, x), value a, xo; real a, xt», eps, r, begin for j : = .5 X (xo 4- д/xo) while abs (x — xo) 2> do xo : =- x; x: — xo. end; dtfaS (y, yl); BOOT (y 1 2 J (y))-T 1, yi, OOl/ibstyl), b), вывод (b) end Прп обращении к процедуре содержание трансформируется следующим образом: hegiu real а, хо, а: Ь abs{ln(y)) + 1, хо: = yi, begin * (or b „ = 1/2 X (xo — o/xo) while abs (b — xo) > 0 01/ abs (xo) do xo ; = b; b i = xo end ent] Список значений позволяет использовать формальные парамет- ры процедуры в качестве дубликатов соответствующих факти- ческих параметров, обеспечивая том самым сохранение значения фактического параметра поело выхода иа процедуры, и ускорить выполнение операторов содержания процедуры в том случае, когда соответствующие фактические параметры являются сложными вы- ражениями Если в синеок значений включен формальный пара- метр, соответствующий именующему выражению и специфицирован- пый как label, то значением его будет метка, причем в отличие от остальных параметров метки по считается локализованной в вооб- ражаемом блоке. В этом случае перед входом в процедуру также ИЗ
. < происходит однократное вычисление зпаченид именующего выра- жения. Процедура-функция. Если выходным значением процедуры является скалярная величина, то алгоритм можно записать в виде процедуры-функции- Описание процедуры-функции не отличает- ся от описания процедуры: оно также состоит ип заголовка н со- держания, Различие в том, что выходное значение присваивается г . идентификатору процедуры функции одним из операторов содер- жания. Обращение к процедуре*функции производится с помощью указателя функции Но написанию указатель фулкции не отлича- ется от оператора процедуры: аа идентификатором следуют в круг- лых скобках фактические параметры—аргументы функции, рааде- ленные запятыми Так же как и оператор процедуры, указатель функции обеспечивает замену формальных параметров на факти- ческие и выполнение операторов содержания процедуры-функции- Указатель процедуры-функции в программе может быть ис-' пользован наравне с любым указателем элементарной фулкции; в тексте программы он может употребляться так жо, как, напри- мер, число пли переменная, т- е- может быть составной частью вы- f ражения- Оператор процедуры, напротив, пе может быть элемен- том выражений- Элементами выражений могут быть только его - выходные фактические параметры. В качестве примера рассмотрим процедуру функцию вычисле- ния скалярного произведения двух векторов А н В размерности п. Формальными параметрами можно взять идентификаторы мас- сивов (векторы А и В) и размерность векторов — п- Для записи процедуры-функции вычисления скалярного про- изведения двух векторов достаточно перед описателем procedure поставить описание типа результата, а результат присвоит?? ука- зателю функции. Б зависимости от типа результата перед описа- телем procedure может стоять real, integer или boolean Значением процедуры функции является скалярная величина (а, в). Этот результат будет присвоен идентификатору процеду- ры-функции real procedure 52С (Д, В, п); value А, В, п, integer п, array А, В, begin integer t, real ji; P : = -0, for I = 1 step 1 until n do p *. = p 4- A l<] x В [1], 5 If : = b end 114
В блок содержания процедуры-функции введена переменная р, конечное значение которой присваивается идентификатору про- цедуры-функции Вместо этой переменной нельзя использовать идентификатор SK: в процедуре-функции наименование функции не может стоять п правой части оператора присваивания. Итак, основные правила написания и выполнения процедуры в процедуры-функции сводятся к следующему. 1 . Формально описание процедуры и оператор процедуры оп- ределяются так СописЕшае процедуры) ; , = procedure <заголовок процедуры) .(содержание процедуры) | <тип> procedure (заголовок процедуры) (содер- жание процедуры) (загоиоэок процедура) : 1 « (идентификатор процедуры) (совокупность формальных параметров); (список значений) (совокупность спецификаций) (оператор процедуры) :: = (идентификатор процедуры) (совокупность фактических параметров) 2 Для того чтобы оформить алгоритм в виде процедуры- (процедуры-фулкцаи), необходимо сопроводить его заголовком и при необходимости указать в заголовке формальные параметры, которые должны быть специфицированы 3 Обращение к процедуре осуществляется с помощью операто- ра процедуры Аналогично обращение к процедуре-функции про- изводится с помощью указателя функции. Обязательно то, чтобы оператор процедуры (указатель пр оде дуры-функции) находился в области действия описания. 4 Замена формальных параметров на фактические производит- ся в порядке их следования в списке параметров. Существенно, что- бы класс и тип фактических параметров совпадали со специфика- циями формальных параметров. Например, если формальный па- раметр специфицирован как идентификатор процедуры, то соот- ветствующий ему фактический параметр должен быть также иден- тификатором процедуры, описание которой находится в этой же программе. 5 Прп замене параметров по наименованию на место формаль- ных параметров в описании процедуры или процедуры-функции ставятся фактические параметры, которые в общем случае могут быть как идентификаторами, так и выражениями. Следует иметь и виду, что если формальный параметр используется как левая часть оператора присваивания, то соответствующий ему фактиче- ский параметр может быть только идентификатором переменной 6 , Выходное значение процедуры-функции присваивается ее идентификатору. Поэтому последний должен появиться в содержа- нии хотя бы однажды в левой части оператора присваивания. Иден- тификатор процедуры-функции в операторах содержания пе может стоять нигде, кроме как в левой части оператора присваивания. 7 , При написании процедуры формальные параметры можно в заголовке сопровождать пояснениями Для этого запятая, раэде-
ляющая два рядом стоящих формальных параметра, может быть заменена закрывающей скобкой, за которой слвдуот строка букв, поясняющая назначение идентификаторов; за строкой следует двоеточие и открывающая скобка. Например, procedure Я00Т (а) начальное значение корпя: (xf), точность вычислений: (ер$), значе- ние корня. (х)« Нельзя попользовать такую возможность только для первого формального параметре, а также я процедуре, которая имеет только один формальный параметр 8 . Идентификаторы, пе локализованные я процедуре, но явля- ющиеся по отношению ь пей глобальными, могут изменять свои аиачення в результате выполнения процедуры. Это относится так- же к идентификаторам, соответствующим фактичеспим парамет- рам процедуры 9 . В содержании процедуры могут быть как описания других процедур и обращения к ним, так и операторы процедур, описа- ния которых находятся среди оипсапий программы. Обращение процедуры к самой себе называется рекурсивным использованием процедуры Рекурсивность здесь не рассматривается, поскольку в большинстве конкретных представлений ^Алгола это свойство исключается [1, 15, 16] Расчет двухступенчатою реактора идеального смешения Пусть в двухступенчатом реакторе идеального смешения про- текает реакция (3—35) (3-36) (3-37) Составим программу расчета максимальной концентрации проме- жуточного продукта В как функции времени пребывания Расчетные соотношения для определения копцэптращш реа- гента Ъ непосредственно слодутот из уравнения материального ба- ланса i-й ступени в стационарном состоянии [131: С, -|- = Сг-\, Если принять во внимание, что скорости реакций Гд = Л^Сд, г# = Z-jCb —* /с^Сд, то получим _ ьсАое В1 — А10) (1 — Лаб) * р ___ЬСдрО (2 + + fa) в) D* - ' £1 + W“ Ллюритм расчета заключается в следующем: 1 При фиксированном значении времени пребывания 0 оп- ределяются концентрации Сщ и Св^ 116
2 . Если вповь полученное значение Св% больше предыдущего значения, то поменяется 0, и расчет повторяется с пункта 1. Программа begin real t>a, fclT А2, er teta, diet, стах, integer i; switch P : = At, A2, procedure TANK (t, m, K, c)r real b, m, c, switch J<; hegiu а I *= Al X и X &/ ((1 + Ai X teta) X (1 —|- Ac2 X tela)) | i»X goto [1] end; $a, A2t diet), teta J = 0Л; cmar : = 0,0, л : i: = 1; TANK (1, 1, P, t), вывод (о); At ',a = 2't TANK(2+ (M + Л2) X Ida. 2, P, C), вывод I; A2 : if (c — emci) > 0 then begin стах ; = e; teta 1 = teta 4- diet, goto A end; вк«и> (c) end В данной программе расчет копцептрацпн оформлен в нидо процедуры, причем расчет как первой, так п второй ступени осу- ществляется по одной и той же формуле. Здесь следует обратить внимание на выбор фактических параметров. Заголовок процеду- ры содержит четыре идентификатора, один нз (которых с является выходным параметром и совпадает по наименованию с фактическим, а остальные как раз и являются средством модификации содержа- ния процедуры для расчета различных ступеней. При первом обра- щения и процедуре TANK формальные параметры вит полага- ются равными единице, чем обеспечивается расчет первой ступени реактора. При втором — в заменяется на выражение 2 + (А1 Ц- -г к2) X teta, а л? полагается равным диум, и, следовательно, производится расчет второй ступени. Очередность обращений для расчета первой иля вторая ступеней устанавливается с помощью переключателя. С этой целью в список формальных параметров 117
) ч>. * I включен идентификатор Я, который является идентификатором переключателя. В операторе процедуры он заменяется фактиче- ский идентификатором переключателя Р. Переменная t является глобальной для процедуры, и значение ее устанавливается непосредственно перед обращением При пер- вом обращении к процедуре I — 1. После вычисления концентрации оператор перехода с указателем переключателя goto К [г] пе- редаст управление метке Ait т. е. на второе обращение к проце- дуре, после чего будет выполняться оператор с меткой Л 2 (I = 2) Если вновь цолучонная концентрация будет больше предыдущей, то расчет повторяется при новом значении tela, В программе к1,к2, ея также являются глобальными для про- цедуры, и их значения сохраняются во всей программе Нет смысла включать зги переменные в список формальных параметров, поскольку для данной реакции они неизменны. Из приведенного примера следует, что оператор перехода в со- держании процедуры может прерывать выполнение процедуры п передавать управление в любую часть про- граммы. 1/ Определение параметров ячеечной модели реактора Обычно при расчетах реакторов смеше- ния предполагается, что реагенты, посту- пающие на вход, мгновенно перемеши- ваются. Это дозволяет рассматривать реак- торы с мешалкой как идеальные, теория расчета которых л достаточной степени разработала В действительности условия идеального перемешивания не всегда мо- 1 гут быть обеспечены. Установить степень приближения перемешивания в реакторе к идеальным условиям можно путем сравнения теоретического и экспериментального поведения индикатора в реакторе, В установившемся состоянии на вход реактора в момент вре- мени £0 подается импульс индикатора в количестве $rt. Начиная с этого же момента концентрация индикатора замеряется иа выходе реактора (рпс 21). Теоретически установлено, что доли индикато- ра, проскочившего с выходящим потоком за время t — 10, как функ- ция числа аппаратов идеального смешения, выражается формулой [14] с (0 = 1 - {1J -Г + (т-)Ч- + • + (т-Г^г^г} (3-38) где п — число ячеек полного перемешивания; t — текущий момент времени; 7 = v/u — сроднее время пребывания индикатора. 118
Сравнивая расчетное значение С (/) с экспериментальио опре- деленной величиной С для момента £, можно оценить число ячеек полного смешения, соответствующее реальным условиям пере- мешивания. - Блок-схема алгоритма определения числа ячеек представлена на рис. 22. Рис. М Вдокниама влгпрптяо опрслелвпкл чпс; й ячми по. иого пвренспгивапмя Запишем программу для определения числа ячеек полного перемешивания для простейшего случая, когда расчет произ- водится для одной экспериментальной точки. Алгоритм вычисле- нии оформлен в виде процедуры, обращение н которой производит- ся нэ основной программы. В отличие от рацее рассмотренных программ, процедура 7\4jV£ в качестве одного ие формальных па- раметров содержит идентификатор другой процедуры — процедуры для вычисления факториала Как и в случае других формальных параметров, идентификатор процедуры может пе совпадать по наименованию с фактическим параметром Для первого приближения число ячеек задается равным еди- нице Если расчетное значение С пе превосходит величину, полу- ченную экспериментально, т. е если < СвЯсп» то число яче- ек увеличивается на единицу и расчет повторяется. Программа может быть дополнена усреднением оценки числа ячеек полного перемешивания по ряду экспериментальных точек. Условием окон- чания расчета в этом случае можно использовать, например, оцен- ку суммы квадратов отклонений расчетной и экспериментальной привой в точках измерения. Исходные данные: и — объем реактора, и — скорость подачи питания, /ВКСц — экспериментальное значение доли проскока индикатора, t — время проведения эксперимента. Программа begin real n, », (, tl, /, /«p, Integer n, procedure J’ZCI* m), real m, integer k", begin integer y, lie
nt: = 1; l«r j; в I step 1 until k do m , mX/ end, procedure TANK (A, i, AB, /), real I, /, integer k, procedure AB, begin integer I, real p, b\ & . => 1, for I: — 1 step I until к do begin xb (i, p), ъ . = b + (* x t) f ead; / ; = 4 — етр (—к X i) X b end; ввод (jexp, u, u, tl), t: = u/u\ t: * ti/t, n ; «’ 1; Al i TANK (n, t, FACT, /). if f^-jexp then goto 27W else begin n ; = л -f" I# goto Al end; F1N\ вывод (и, ft fap) end В данной программе используется еще одно обстоятельство, связанное с понятием локальных и глобальных величин, а имоин» фактические параметры процедуры факториала являются локали- зованными переменными в процедуре TANK (переменные р и t) В том месте, где производится вызов процедуры TANK, этих пе- ременных не существует. Тем но мепее такие обращения в Алголе иез аире щены, Программа выполняется следующим образом После ввода ис- ходных данных определяется отношение 1/1, п задается равным еди- нице и производится обращение к процедуре TANK Процедура обеспечивает подсчет суммы ряда, число членов которого определя- ется величиной п Поэтому содержание процедуры ГЛ/УАпредставля- ет собой оператор цикла, и при каждом значении параметра цикла г вычисляется один член ряда. Поскольку каждый член ряда одним на сомножителей содержит факториал, то в цикло же производит- ся обращение к процедуре вычисления факториала При п = 1 цикл выполняется однажды, п полученное значение / сравниваете 120
ся в основной программе с экспериментальной величиной Если их разность меньше пуля, то п увеличивается па единицу и произво- дится повторное обращение к процедуре TANK. В противном случае осуществляется выход на окончание программы. Расчет вязкости многокомпонентной смеси Зависимость вязкости газовой смеси от состава обычно нелиней- ная, и использование правила аддитивности для ее определения может привести к существенным погрешностям. Более точные ре- зультаты получаются при использовании соотношений, выведен- ных исходя из кинетической теоряп газов. Для смеси, состоящей иэ к компонентов, при низких давлениях, вязкость можно рассчитать по соотношению к а ^ом — 3 R/ (Ь 3 , (3 39) J-L 1=1 Mi где [1( — вязкость чистого компонента, лгкнз! х — состав смеси; Ф<; = 11 + ЦнМ*-IW1]’/! К8(1 + (ВДВД'Л)); (3—40) М — молекулярный вес. В литературе отмечается [17], что для газовых смесей при атмосферном давлении погрешность в определении вязкости не превышает 1—3% Запишем программу расчета вязкости по соотношениям (3— 39) и (3—40). Программа begin integer к, m, ееод (Яг, т); begin вггау X, MW [1 ; &J, Т.Р. VISMLX [1 : М, [1 п, 1 Л], procedure VISCOSITY (А, л, t, р, VISMIX. MW), integer A, n, array г, P, VISMIX, MW. begin real «ы/л; integer (, jt m, ап-ay P [1 : fc], fur I e 1 stop 1 until n de begin for / ; = 1 step I until Л* do for nt: = 1 step 1 until it da begin if ftp »i then P t?, m] ; = (1.0 + sqrt (VIS [j , /] / VIS Li, m]) X X M ТУ [mJ / A/IF [/] t 25) f 2/ (sqrt (8) X ttjri (1.0 h MW [}]/M W [«])} 421
end, VISMIX [i] : =“ 0.0; for / ; — 1 step 1 until Л do begin sum { = 00, for w : = 1 step 1 Until / — 1, / + 4 step 1 until Л do sum ! — sum + Г I/, те] X X [m]/ X (Л-, VISMIX 111: = VISMIX 10 -h vis li,/]/ (1 0 «и») end end end, ввод (X, MW, T, P, TO); VISCOSITY (й, n, T, P, VISMIX, MW), вывод (JT, I, P, VISMIX) end cud Поскольку вязкость отдельных компонентов зависит от тем- пературы и давления системы, программа позволяет рассчитывать вязкость смеси при различных значениях этих параметров Ис- ходной информацией для заданного состава смеси х помимо числа компоиоптов к, молекулярного леса MW и вязкости отдельных ком- понентов VIS, являются массивы температур Т, давлений Р и ко- личество точек п, отличающихся значениями Т и Р, Расчет вязкости смеси для заданного числа точек, отличаю- шихся давлением или температурой, оформлен в виде процедуры VISCOSITY. Она обеспечивает расчет по формулам (3—39) и (3—40) для различных значений Т и Р. Выбор соответствующей точки определяется оператором цикла по i, который при фикси- рованном составе смеси позволяет выбрать нужные значения вяз- кости компонентов сначала для расчета по формуле (3—40), а затем но формуле (3—39). Следует заметить, что исключение диагональных элементов матрицы <t>jj при расчете по формуле (3—40) производится с по- мощью условного оператора, а при расчете по формуле (3—39) — с помощью оператора цикла с двумя элементами списка цикла Вычислительная часть программы состоит из трех операторов: оператора пвода исходных данных, обращения к процедуре и опе- ратора вывода результатов. Результатом решения является мас- сив значений вязкостей смеси VISMIX при различных Т и Р,
Глава IV ФОРТРАН-ГУ Фортрап — машинно-ориенгироьакный язык описания алгорит- мов разработан в I 957 г. на американской фирме ИВМ, Слово Фортран (FORMULA TRANSLATION) используется не только цак незнание входного языке, но и системы автоматического программирования, включающей в себя запись исходной програм- мы, ее трансляцию (компиляцию) на язык данной машины или лю- бой другой и организацию вычисяопии. Как входной язык он используется для записи алгоритмов решения математических и других вадач^ связанных с численными расчетами научного и прикладного характера. По мерс расширения круга потребителей он претерпел сущест- венные изменения, появились различные варианты языка — его диалекты. Изменения относятся к усовершенствованию отдельных его элементов, введению новых операторов и изменению структуры исходной программы Например, Фортрап-1 пе допускал подпро- грамм, и вся программа должна была интерпретироваться целиком. Фортран-!! ввел подпрограммы, по отделял компиляцию исход- ной программы от ее исполнения. Фортран-ГУ уже рассматривается как единая система алгоритмического программирования с разви- той логической структурой Из всех диалектов наибольшее распространение получили Форт- ран-! I- и Фортрап-ГУ. Между ними существует тесная связь, так как основные конструкции повторяются с незначительными изме- нениями, но последний имеет и дополнения. Ниже рассматривает- ся Фортран IV, а отдельные отличия от Фортрана-П упоминаются по ходу изложения, [18, 19] Основными символами входного языка Фортран являются: — цифры 0, 1, 9; — заглавные буквы латинского алфавита, — знаки арифметических операций Н (сложение), — (вычита- ние), / (деление), ф (умножение), ** (возведение в степень); — специальные символы « «,», <к(», «)», «-», «$», Все остальные элементы языка и конструкции записываются с помощью основных символов 1. Структура программы Общая программа, написанная на Фортране, состоит ив от- дельных программ, пе связанных между собой Каждая из про- грамм, начинающаяся оператором PROGRAM^ FUNT1ON или 123
SUBPROGRAM и заканчивающаяся оператором END, носит название сегмента программы. Сегменты программы переводятся на язык малыши с помощью компилятора (транслято- ра) независимо и затем с помощью специальной программы (про граммы-загрузчика) объединяются в исполняемую программу. Программа может состоять из любого количества сегментов, по среди них должен находиться сегмент, называемый «основная про- грамма». Признаком основной программы является первый опе- ратор вида PGROGRAM '/.на именованием, где ш-аименованиеь— идентификатор программы. Остальные программы обязательно со- держат оператор RETURN, который после однократного выпол- нения обеспечивает расчеты по осповпой программе Сегмент программы состоит иа опораторов. записанных построч- но один за другим, выполняемых в порядке записи. Любой оператор можно пометить меткой, которая используется операторами пере- хода для изменения последовательности их выполнения. Метка представляет собой десятичное число целого типа и отделяется от оператора пробелом. Если оператор занимает несколько строк, то отдельные строки нумеруются десятичными цифрами начиная с пуля Все операторы программы разделяются на пополняемые п пеисполняемые. Исполняемые операторы используются для аа писн последовательности действий, заданной алгоритмом Непс- полнябмые операторы предназначены для описания свойств ис- пользуемых переменных, а также задания информации о порядке размещения переменных в памяти машины, о порядке взаимосвязи отдельных программ. Неисполяяемые операторы обычно размеща- ются в начале программы. Помимо операторов программа может содержать комментарии и пояснения Они могут размещаться произвольно Если строка символов является комментарием, то в пенале со ставится символ С Выпопвепио программы начинается с первого исполняемого оператора осповпой программы Последняя может содержать об- ращения к другим сегментам программы и функциям, а также опи- сания Других функции среди неисполняемых операторов и обра- щения к ним. Идентификаторы переменных, массивов л функций-операторов, а также метки н формальные параметры функции локализованы в гом сегменте, где они появляются. Для того чтобы расширить область действия переменных, в Фортране используется специ- альный оператор COMMON, который размещается в пачале сег- мента программы (см. стр 142). 124
2. Элементы входного языка Элементами входного языка Фортран иьляются числа, пере- менные выражения, функции и операторы Числа Фортран-1 V допускает использование пяти типов чисел (констант), каждый из которых определяется и. записывается следующим образом. Целые числа (типа INTEGER) записываются десятичными цифрами, причем количество разрядов в зависимости от типа машин может доходить до 11. Ограничение на абсолютную вели- чину максимального целого числа определяется типом ЦВМ, На- пример, для IBM 7090/7094 целые числа не доласпы превосходить величину 2!Ш, а индексы п параметр цикла — величины 21&. Перед целым числом может стоять знак *| или — Например, 3 +12 - 234 123456789 Действительные числа (типа REAL) могут записываться в виде последовательности десятичных цифр, в конце которой ста- вится точка; последовательности десятичных цифр, в пачале кото- рой или меищу ее любыми разрядами ставится точка; последова- тельности десятичных цифр с точкой вначале или между любыми цифрами, за которой следует десятичный по рядок числа (основание десятичной системы обычно обозначается буквой Е). Примеры записи действительных чисел. 35. >321 12.567 — 5 0032 3.1E3 (3,1.10s) Диапазон действительных чисел для машины IBM 7090/7094— — 10»в __ 1СГза. Числа с удвоенной точностью (типа DOUBLE-PRECISION) есть действительные числа, для представления которых отводится вдвое большее число разрядов. С двойной точностью в машине I ВМ 7090/7094 представляются числа, находящиеся в диапазоне 10зв-н 10~51>. числа (тина COMPLEX) записываются парами действительных чпсея, разделяемых запятой и заключенных в круглые скобки. Первое число в скобках соответствует действи- тельной части комплексного числа, второе — мпилой Например, (1 6, — 2.4) означает 1,6—s 2,4. Логические числа (типа LOGICAL) имеют два значения, и □вписываются следующим образом TRUE (истина) и FALSE (ложь). Переменные и массивы. Любая переменная или массив имеет наименование и характеризуется типом. Наименование (иденти- фикатор) переменной или массива состоит из последовательности 125
; ; букв и цифр, начиивющейся с буквы. Количество символов ная- ненов ан ня не должно превышать шести Аналогично представлению чисел различают пять типов пе- ременных, Тип переменной в программе указывается описанием типа Например, INTEGER А, С \t REAL В, м ". ' DOUBLE-PRECISION ВЕТА, К COMPLEX А12. ОНИ LOGICAL СОР, В32 (нти списание отсутствует в Фортране II) Переменные целого и действительного типов могут описываться и другим способом. Если наименование переменной начинается с одной из букв I, I, К, L, М и N, то эта перемеппая может припи- мать только целые значения. Переменная, название которой начи- нается с любой другой буквы, может принимать только действи- тельные значения. Последний способ определения тина перемен- ных является единственным при написании программы на языке Фортран-! L Фортрап-1 V допускает использование массивов с размерно- стью, не превышающей семи (максимальная размерность массива в Фортране-П равна трем). Соответственно переменная с индексом можот иметь от одного до семи индексов, которые ааключаются в нруглые скобки и разделяются запятыми, Индексом может быть положительное число, неравное нулю, и заданное в виде либо константы целого типа, либо простой переменной, принимающей целые значения, либо констант и переменных целого тина, соеди- ненных знаками сложения, вычитания и умножения, Например, А (2, 2*К—Р, К + Р), . Описание типа массива, а счедоватепьдо, и переменных с ин- дексами аналогично описанию простых переменных. В Фортране отсутствует динамическое распределение памяти, поэтому в программе обязательно указываются максимальные раз- меры используемых массивов Индексы переметших с индексами не должны выходить за эти границы; Размерности массивов уста- навливаются с помощью оператора DIMENSION Любая перемен- ная ,с индексом должна быть описана этим оператором. В одном операторе DIMENSION можно описывать произвольное число массивов. Например, DIMENSION А (20, 20), В (100), С (15, 20, 30. 2). Арифметическое выражение может состоять из. констант; перемеппых, функции (стр, 128); последовательности копстапт, переменных, функций, объединенных скобками и знаками арифме- тических операций 4* (сложения), -- (вычитания)/(деления), * (умножения), * * (возведения в степень) Термин «арифметическое выражение» используетоя в том ясе смысле, что и ы обычной математической записи. 126
В арифметических выражениях могут использоваться конс^аЦ' . ты, переменные и функции всех типов, за исключением типа LOGICAL. Прн записи арифметических выражений необходимо, чтобы тип операндов отдельных операций находился в соответст- вии, иначе выражение будет недопустимым, В табл. 5 указываются допустимые арифметические выражения в тип результата в опера- циях ' сложения, вычитания, умножения, деления и возведения в степень при использовании операндов различных типов. Таблица 5 первый операнд Тип ПЕЛЬ INTEGER COMPLEX DOUBLE— PRECISION 'll REAL Да* Нет** Да Да go INTEGER Нет Да Нет Пет £ g COMPLEX Да Нет Да Нет DOUBLF-PREGISIQN Да Нет Нет Да Показатель степени Ф REAL Да Да Нет Да § INTEGER Нет Да Нет Пет № COMPLEX Нет Да Нот Нот i DOUBLE-PRECISION Да Да Нет Дв о ’ Соотгетсгруе? допустимому сочетвлию спцуршцоп. ** Соответствует цедопустшнзиу сочианпю оаврдидои При выполнении арифметической операции тип результата опре- деляется типом его операндов. Если операнды не совпадают по типу я если один из них типа REAL, а другой типа COMPLEX или DOUBLE-PRECISION, то результат совпадает по типу со вто- рым операндом К другим правилам написания арифметических выражений па Фортране относятся следующие: — любое выражение можно заключить в круглые скобки; — два знака операций не могут следовать друг за другом, — знак операции умножения нельзя опускать; — если очередность выполнения операций ио полностью опреде- лена скобками, то операции выполняются в обычном порядке их старшинства; — выражение вида А ** В ** С недопустимо, Оно должно записы- ваться в зависимости от смысла в виде А (В ♦* С) или А ** В) ♦♦ С Логическое выражение всегда имеет значение ,Т RUE или .FALSE, и может состоять из 1) логической константы (TRUE 127
или FALSE); 2) логической переменной (переменной, принимаю- щей значение TRUE, пли .FALSE.}; 3) логической функции (стр. 129), 4) последовательности логических выражений, соеди- ненных знаками следующих логических операций: .NOT. — знак операции отрицания; .AND — знак логического умножения; .OR. — знак логического слоячвиия, 5) арифметических выраже- ний (за исключением комплексных и логических), соединенных знаками операций отношения =/= — .NE. (по радио); — — EQ (ровно); — GT. (больше); — GE. (больше пли равно), < — .LT. (меньше); .LE. (меньше или равно). Допустимые комбинации тилов арифметических выражений, образующих логические выражения с помощно знаков операций отношения, указаны в табл. 6. Таблица 6 ПориыК операнд тян RKAL INTEGER попвьк — PRECISION EJ &S, 8 а REAL Да Пот Да INTEGER Пот Да Нет Я) § DOUBLE PRECISION Да Нот Да При вычислении значения логического выражения порядок вы- полнения отдельных операций задается круглыми скобками, Если скобки не полностью определяют очередность операций, то они выполняются в такой последовательности: арифметические опера- ции с учетом старшинства; операции отношения LT, LEt EQ, NE, GT, GE; операция NOT; операция AND; операция OR. 3. Функции л подпрограммы Функции и подпрограммы являются основными элементами при записи программы и используются для записи многократно ис- пользуемых алгоритмов и выражений. В Фортране различают четыре типа функций’ арифметический оператор-функция, встро- енная функция, нодпрограяша-функция, подпрограмма. Первые три типа функций имеют результатом скалярные вели- чины и могут попользоваться в программе ьаравне с перемевны- ми в выражениях. Результат такой функции присваивается ее наименованию, поэтому в выражениях указываются тонько со наименование п фактические параметры. После ныполпепля подпрограммы выходными величинами обыч по являются вначеыия нескольких переменных, однако ин одно из этих яначешш не присваивается наименованию подпрограммы, и 128
последнее пе может использоваться в качество операнда в выраже- нии. Обращение к подпрограмме производится с помощью опера тора CALL. Наименования функции и подпрограммы записывают- ся аналогично наимсповашпо пор смен в их. Арифметический оператор-функция состоит па левой я Дравой частей, соединенных а па к ем =. В левой части содержится наимено- вание оператора, за которым в круглых скобках следуют аргу- менты, разделяемые запятыми Аргументом может быть любая переменная, по ие переменная с индексом. В правой части стоит выражение, ио содержащее переменных с индексом. Например, PHI (ТР) - (0.67335015/ТР — 3 07ЕЭДТР -f- 5 60)/ТР — 3 50. Аргументы оператора-функции являются фиктивными пере- менными и определяют лишь способ задания функции, а сами ие принимают значений. О пн задают ыш переменных, которые будут использоваться в качестве фактических переменных прн после- дующем испоньзовании оператора-функции. В правой части ариф- метического one ритора-функции могут использоваться также пере- менные, ке являющиеся ее аргументами. Тип результата арифметического олератора-фупкцип задает- ся описанием типа, которое ставится перед наименованием. Нап- ример, COMPLEX АВС (А, В) = Если результат имеет тип REAL или INTEGER, то можно ис- пользовать неявную форму описания первой буквой наименова- ния, как это определено для наименования переменных (см. стр, 126). Арифметический оператор-функция в программе размещается до первого исполняемого оператора программы, а обращением к ному является наименование со списком фактических аргумен- тов. Фактическими аргументами могут быть как переменные с ин- дексами, так и арифметические выражения. Встроенные функции являются стандартными подпрограммами компилятора и при переводе исходной программы на язык машины вставляются в рабочую программу всякий раз, когда к ним про- изводится обращение. Список встроенных функций содержит обыч- но функции, связанные с преобразованием чисел одного типа в другой, взятием модуля числа, присваиванием знака одпого аргу- мента другому и т. д. В различных вариантах Фортрана имеются различные наборы встроенных функций Иногда сюда относятся н подпрограммы, реализующие логические операции. Тип результата встроенной функции задается па именованием соответствующей функции Первая буква наименования опреде- лнет тип результата. Для функций, результатом которых является целое число, используются буквы 1, J, К, L, М, N, комплекс- ное число — буква G, число (^двойной точностью — буква D. Ре- зультат действительного типа указывается наименованием, пер- 5 В Л Квфароч и др 129
4ywV*, (I - . Lr . ‘г i Таблица 7 / Г| Операции, выполняемые фукицаой Кодичвд- Тип во логу- Наименований ментов Аргумент Функция - ’ Абсолютная величина | а | 1 ABS REAL REAL IABS INTEGER INTEGER У ' Пооевол чпеед REAL в INTEGER 1 IFIX REAL INTEGER 7 INTEGER в REAL Получение части комплекс- 1 FLOAT INTEGER REAL REAL кого числа i REAL COMPLEX " действительной 1 AJMAG COMPLEX REAL МНИМОЙ Выбор аргумента * REAL| максимального 2 AM АХО INTEGER AM AX I REAL REAL MAXO INTEGER integer *г MAXI REAL INTEGER минимального 2 AMINO INTEGER REAL AMINI REAL REAL MINO INTEGER INTEGER ч* • MINI REAL INTEGER Присваивание знаки 2 SIGN REAL REAL SIGN да | ai | 2 JSTGN INTEGER INTFGER вая буква которого отлична от перечисленных выше. Например, функция для определения среди группы аргументов максимального значения имеет следующие наименования ъ зависимости от типа аргумента н функции: Наяквнсванив ТПП аргумента Tan Фулищш AMAXO INTEGER REAL AMAXI REAL REAL MAXO INTEGER integer MAXI REAL INTEGER Наиболее распространенные встроенные функции приводятся в табл. 7. Некоторые ив указанные в таблице функций ловторяютСн для комплексных н с двойной точностью аргументов (например, выбор максимального и минимального аргументов, присваивание знака и г. д,), Подпрограмма-функция используется для записи алгоритмов, выходным значением которых является скалярная величина, ког- 130
- ’ ,>. \ , 'ar / '.Pj '-1 •>. - ip- -'- -л- .Д ;чь ;- Да расчет нё может быть реализован одной формулой Подпрограм- ма-функция является сегментом программы н отличается от основ- пой программы тем, что всегда начинается с оператора FUNCTION . ' или «тип» FUNCTION, за которым следуют наименование и сгш- сок аргументов (не менее одного), а среди исполняемых операто- ров должен находиться хотя бы один оператор RETURN, обеспе- / чивающий после однократного выполнения продолжение расчетов по основной программе. Правила написания наименования подпрограммы-функции апа- логичны соответствующимправилам записи наименований перемеи- дых Например, FUNCTION АВС (А, В), где АВС — наименова- ние, А, В ^формальные параметры. Наименование подпрограммы функции вместе со списком ее , > аргументов может использоваться в программе при записи выражв- .!/ ний наравне с идентификаторами переменных Для этого конечный результат присваивается наименованию одним из операторов вдут- г" ри подпрограммы При обращении к поднрограмме-функции из < основной программы указываются только ее наименование и фак- тические переменные, папример Y = Л/АВС (Е, Т) В обращении необходимо соблюдать соответствие расположения и типа факт и- ’ ческих аргументов формальным. При этом наименования формоль- 2 пых и фактических параметров могут и совпадать. Если фор- мальным аргументом является массив, то наименование послед- . ; него должно быть описано оператором DIMENSION в подпрограм- ме-функции. Аналогично соответствующий фактический аргумент не должен быть описанным. Фактическими аргументами подпрограммы функции могут быть арифметические и логические выражения, константы, пере- менные, массивы* наименования подпрограмм-функций (но только не данной), наименования подпрограмм. Однако подпрограмма должна содержать внутри операторов PROGRAM и SUBROUTINE. Тип результата подпрограммы-фушщин указывается первой буквой наименования или описанием типа, Которое предшествует оператору FUNCTION. Например, МАВС (А, В) — результат типа INTEGER или INTEGER, FUNCTION АВС (А, В). Если же тип подпрограммы функции де совпадает стоном, ука- занным первой буквой наименования, то в основной программе должно иметься соответствующее описание наименования. Часто подпрограммы-функции включаются в библиотеку стан- дартных программ компилятора В частности, библиотека содер- жит стандартные программы ранних вариантов Фортрана. Для библиотечных ноднроГрамм-функций тип результата устанавли- вается первой буквой наименования. Естественно, такие под- программы не записываются в Фортране, а используются только их наименования (их описание содержится в компиляторе) К библиотечным подпрограммам-функциям обычно относятся алгоритмы вычисления элементарных функций типа тригономет- рических и др 131 5*
Подпрограмма отличается от ранее перечисленных функций тем, что имеет несколько выходных величин Подпрограмма начинается с оператора SUBROUTINE, за которым следуют ее наименование и список формальных аргументов; последние могут н отсутствовать. Обращение к подпрограмме из основной программы произво- дится с помощью оператора CALL В содержательной части этого оператора указываются наименование подпрограммы и список фактических параметров (если опп имеются). Оператор GALL за- ставляет выполниться операторы подпрограммы до тех пор, пока не встретится оператор RETURN, который осуществляет переда- чу управления оператору основной программы, следующему за обращением. Подпрограммы могут использоваться как основной программой, так и другими подпрограммами. Однако ни одна подпрограмма не может обращаться к вызвавшей ее программе и к себе. После выполнения некоторой функции управление всегда пе- редается с помощью оператора RETURN оператору, из которого произошло обращение, а после выполнения подпрограммы управ- ление передается оператору, непосредственно следующему за об- ращением. Для подпрограмм существует и другой способ возврата в основ- ную программу, позволяющий передать управление любому дру- гому оператору программы, в том числе и следующему за обраще- нием. При этом метки операторов основной программы, которым предполагается передача управления, являются дополнительными аргументами и включаются в список аргументов подпрограммы, а в операторе RETURN указывается порядковый помер этой метки при счете дополнительных аргументов слева направо Очевидно, подпрограмма будет содержать несколько операторов RETURN, каждый ив которых отличается номером метки. Таким образом, при выполнении подпрограммы в зависимости от условия может выбираться любой из операторов RETURN, гем самым будет обеспечена передача управления различным операторам основной программы. Например, пусть оператор обращения к подпрограмме имеет вид. CALL ЛВС (Л, Е, 8 10,3 210) 8 — признак того, что метка являйся аргументом подпрограммы, 10, 20— мотки операторов оснонпойг программы Если подпрограмма SUBROUTINE АВС (Л, В. *, ♦) • *»** 100 RETURN 1 200 RETURN 2 RETURN END 132
накапчивает работу оператором RETURN 1 или RETURN 2, то управление передается оператору основной программы с меткой 10 лип 20 соответственно* Выполнение операторе» RETURN обеспечит вормальпыя выход из иодпрсЬ граммы. * Подпрограмма-функция и подпрограмма могут иметь несколько входов, каждый из которых обеспечит выполнение только частп операторов Дополнительные входы в подпрограммы задаются с помощью специального оператора ENTRY Оператор ENTRY состоит из наименования входа н списка фиктивных аргументов, причем если он использует си в подпро- грамме функции, то иаимеповшше согласуетск по типу с наимено- ванием самой функции. Дополнительные входы размещаются в соответствующей подпрограмме, и обращение к ним производится обычный образом либо по паимоповапяю, либо с помощью опера- тора CALL Например, пусть подпрограмма имоот вид; SUBROUTINE АВС (А, В) k » к к ENTRY ВАС (С, В) ENTRY CAB (Р, А) END тогда обращения, записанные п основной программе, CALE АВС(А; В) CALL ВАС (С,. В) CALL CAB (А, В) обеспечат передачу управления началу подпрограммы п соответствующим ' входам, заданным операторами ENTRY. В последнем обращении к подпро- грамме йАимсиоваввн формальных я фактических параметров по совпадают. Среди стандартных подпрограмм компилятора Фортрана име- ются подпрограммы, обеспечивающие прорывание вычислений на любом этапе расчетов, а также выход в программу-затрузчик для подготовки к решению следующей задачи. К таким подпрограм- мам относятся: подпрограмма EXIT, которая после окончания расчетов передает управление монитору; подпрограмма DUMP, обеспечивающая запоминание массива данных и прерывание вычис- лений; подпрограмма PDUMP, позволяющая запомнить промежу- точные результаты, после чего вычисления продолжаются в обыч- ном норядке Объем информации, который подлежи*! запоминанию, указы- вается в качестве фактических аргументов подпрограммы (адреса 133
начала и иопца массива). Обращение к таким подпрограммам за- писывается обычным способом Например, CALL DUMP (Alt Blt Fj, ... Ant Bn, F„), где A, В — наименования переменных» указы- вающих границы массивов^*1 — констапта целого типа, определяю- щая формат запоминаемой информации Различия в записи функций и подпрограмм в диалектах Фор- тран-11 и Фортран-1 V в том, что в Фортране-II отсутствует опера- тор ENTRY, а также отсутствует описание типа функций в явпом виде Тин результата функции указывается первой буквой на- именования. Количество букв в наименовании от четырех до семи;’ последней буквой должна быть обязательно' буква F. В Фортраяе- IV наименование может содержать от одной до шести букв, при- чем буква F на Конде не обязательна 4. Операторы Оператор представляет собой конструкцию вида nab где п — номер оператора (мотка), а — наименование оператора, Ъ — содержательная часть В зависимости от содержательной час- ти все операторы Фортрана можно классифицировать следующим образом: описательные операторы, предназначенные для описания свойств объектов программы; арифметические операторы, предназначенные для описания рифметическпх действий; операторы передачи управления, изменяющве последователь ность выполнения отдельных операторов программы; операторы, определяющие порядок включения стандартных программ и функций в основную программу; операторы ввода н вывода. , Первая группа операторов относится к неисполнЯеыым, а ос- тальные являются исполняемыми операторами алгоритмического языка. Арифметический оператор записывается в виде А — В, где А — простая переменная или переменная с индексом, В — ариф- метическое выражение. Значит, арифметический оператор ость присваивание значения выражения справа переменной слева. Например, Р <== EXP (Al (I) + А2 (1)/(АЗ(1) -Ь Т) т А4 (1)*Т) X (I) = Y (I)/K (I) В правой части арифметического оператора может стоять допу- стимое арифметическое выражение любого тина, а в левой части — переменная также любого типа При заниси арифметического опе- ратора необходимо, чтобы тип левой части находился в cootrbtct- 134
Таблица ’<? Прлпап чйсшъ Тип RJ3AL INTEO er COMPLEX DOUBLB- -PRECISrON £ REAL Да Да Нет Да F INTEGER Да Да Нет Да к COMPLEX Да Нм Да Нет ф DOUBI E-PRECISION Да Да Нет Да вии с типом арифметического выражения правой части Б табл. 8 указали допустимые сочетания типа левой н правой частей ариф- метического оператора Примеры записи арифметического оператора А = I — значение переменной I преобразуется в тип REAL И присваивается переменной А; I = А — значение переменной А преобразуется в тип INTEGER и присваивается переменной I; А = B*D — значение В умножается на величину с двойной точ- ностью D, выделяется чнсло разрядов, допустимое для переменных типа REAL, и црисваивается пере- менной А; С = В*(2 1, 3.4) — значение В умножается па комплексное чис- ло, и результат присваивается комплексной перемен- ной G В рассмотренных примерах неременные А, В —величины ти- па REAL, I —типа INTEGER, D —типа DOUBLE-PRECISION, С-типа COMPLEX. Логический оператор присваивания записывается аналогично, только левая часть — есть переменная типа LOGICAL, а правая — логическое ныраженне. Например, С — .TRUE.— логическая коистанта .TRUE, присваивается пере- менной С; С = 3 GT.A — переменнойGприсваивается значение .TRUE., если 3 больше, чем А, и значение .FALSE в любом Другом случае. Здесь G — переменная типа LOGICAL. Операторы перехода используются для передачи управления исполняемым операторам программы. В зависимости от содержа- тельной части в Фортране различают несколько типов операторов перехода. Оператор безусловного перехода имеет вид GOTO п, где п — простая переменная целого типа
После его выполнения будет пополняться оператор, метка которого равна значению п Вычисляемый оператор перехода записывается в виде goto (П1, длг . , />7п) I, где н1т я2, „ —метни операторов; I — переменная целого типа. Например, GOTO (10, 20, 30) I Если I принимает значения 1, 2, 3, то управление передается соответственно операторам с метками 10, 20, 30. Значение перемен- ной I должно быть вычислено илп определено до ее использования в операторе GOTO. Оператор передачи управления по предписанию имеет вид GOTO I (/4, пъ , пП|), где I — переменная целого типа, значение которой вычисляется предварительно в операторе ASSIGN; метки операторов. При выполнении этого оператора управление передается опе- ратору, значение метки которого н списке совпадает со значением L Так, при 1 — 2 будет выполняться оператор, метка которого 10 ASSIGN, 10 TOI GOTOI (5, 7, 10) Если целая переменная была определена в операторе ASSIGN, то она не должна упоминаться ни в каких других операторах, кро- ме GOTO, до тех пор,' пока не будет переопределена в онераторе ввода, арифметическом онераторе илп операторе DATA (см стр. 143). Арифметический оператор перехода имеет вид 1Г (А) Л1, да, Да, где А — арифметическое выражение; их, 71 а — метки операто- ров. Арифметический оператор выполняется следующим образом. Если значение арифметического выражения меньше нуля, то управление передается оператору с меткой %, если же равно или больше нуля, то соответственно операторам с метками тг2 или Мд. Например, IF (А (I, К) - В (I)) 2, 2, 5 IF (А - 2) 10, 20, 100 Логический оператор перехода аанисывается в виде 1F (С) Р, где С — логическое выражение; Р — исполняемый онераюр, за исключением оператора цикла или другого логического оператора. 136
ЛогичбСьий оператор выполняется следующим образом Если значение логического выражения TRUE, то выполняется опера- тор Р, в противном случае, следующий по порядку оператор Например, IF (Л.AND.В) GALL SUB. Оператор циъла имеет вид DO п I = ntj, mfi( mD, где I — параметр цикла — переменная целого типа, п — метка последнего оператора, выполняемого в цикле; mi — начальное зна- чение параметра цикла; лга — конечное значение параметра цикла, т3 — шаг изменения параметра цикла. Оператор цикла позволяет многократно выполнять группу опе- раторов, следующую за ним до оператора с меткой Ft, причем прй повторяем выполнении нараметр цикла увеличивается от своего начального зпачепця тг с шагом т3 до конечного з паче пил тй Если в записи оператора цикла отсутствует ms, то шаг автомати- чески принимается ранным единице Вход в оператор цикла возможен лишь сначала Нельзя пере- дать операторам, расположенным в цикле, управление нзвпе В пределах действия одного оператора цикла могут находиться и другие онераторы цикла, Если один оператор цикла вложен в другой, то область действия последнего полностью входит в область действия первого. В операторе цикла пе допускаются онераторы, изменяющие параметр цикла I, шаг ого изменения т3 или граничные значения Гоч и т%. Последним оператором в цикле не могут быть операторы перехода, за исключением логического. При этом если логическое выражение истинно, то выполняется оператор, управляемый этим условием, и цикл повторяется, а если лоясло, то просто повторяет- ся цикл Закончить выполнение оператора цикла оператором перехода моясно в том случае, если воспользоваться «пустым» оператором CONTINUE Оператор CONTINUE не приводит ни к каким вычислениям и обычно используется в качестве последнего оператора в цикле. Например, DO 200 I = 1, К А — В GOTO 300 200 CONTINUE Оператор PAUSE используется для прекращения вычислений после выполнения некоторого оператора, Имеются два впда этого оператора PAUSE и PAUSE п, где п — восьмеричная константа, После прекращения вычислений константапоявлнется в одном иа регистров машины. Выполнение программы можно продолжить нажатием кнопки «нуек» 137
Оператор END является приенаком окончания программы, и любая программа закапчивается этим оператором. Операторы STOP и STOP п прекращают выполнение програм- мы и передают управление программе «Монитор», организующей вычисления на машине. Операторы ввода и вывода моншо разделить на две группы! операторы, обеспечивающие передачу информации по каналу «внеш- нее устройство — запоминающее устройство», и операторы управле- ния устройствами ввода — вывода. Каждый на операторов первой группы обязательно связан с одним из неисяолняемых операторов FORMAT или NAMELIST, которые задают, соответствующие спецификации переменных и форму их расположения при вводе или выводе. Оператор FORMAT предназначен для указания способа пре- образования информации при переходе с внутреннего языка ма- шины (обычно двоичный ход) к ее внешнему представлению на выходных устройствах. В его содержательной частп с помощью спецификаций указывается форма записи машинного слова, его максимальные размеры, порядок расположения отдельных слов или групп при вводе пли выводе. Этот оператор записывается в виде л FORMAT (ft 5lt S2, <Sm), где n — метка, по которой оператор ввода или вывода'Ссылаете я па -соответствующий формат, 5 — спецификация,/ — признак пере- хода к новой строке, перфокарте или другой едннице записи; k — число повторений спецификации (при необходимости любая спецификация может повторяться многократно, для чего перед ней ставится целое число, определяющее количество повторений). Оператор FORMAT используется совместно с оператором ввода ’ или вывода, поэтому количество спецификаций должно находиться в соответствии о количеством объектов в списке оператора ввода или вывода. Формы представления информации в машине ина внешних уст- ройствах различны. Поэтому для перехода от однойформык другой необходимо воспользоваться соответствующим преобразованием. Сведения о способе преобразования отдельных единиц нвформации содержатся в спецификациях и задаются с помощью букв. Для цифровой информации существует пять способов преобра- зования, смысл каждого из пих поясняется в табл. 9. Спецификации способов преобразования имеют вид Du?.d, Eu>.d, Fw d, Iw, Oze, где w — константа целого типа, указывающая количество символов в записи числа, т. а ширину ноля; d — коп- станта целого типа, указывающая количество десятичных цифр в дробной части числа (может быть равна нулю) Например, оператор FORMAT (13, Е5.4) может означать, чго на печать необходимо вывести число целого типа с тремя цифрами 138
Таблице О Внттренвм представление числа Код Прюбра зо валки Внешнее цредстарлеяло числа С двойной точностью, с плаваю- D Десятнчное с двойкой точностью щей запятой с порядком С плавающей запятой Е Деиятнчиое с порядком То же F Досятняное без порядка С фнкспрозанаой запятой I Десятичное целое То же 0 Восъморлчпое целое и число, занимающее в строке пять позиций, из иях четыре — для представления дробной части. Поскольку комплексное число содержит два действительных числа, то действительная и мнимая части могут определяться от- дельными спецификациями или одной спецификацией, повторяю- щейся дважды Например, при передаче одного комплексного числа формат будет- п FORMAT (ЕЮ.З, ЕЮ 3) или n FORMAT (2Е1О.З). Для преобразования алфавитно-цифровой информации исполь- зуются спецификации Aw и пН. Спецификация Лю используется для ввода пли вывода набо- ра алфавитно-цифровых символов, соответствующих названиям переменных или массивов С помощью этой спецификации не ре да- ются шесть символов. Если w б, то свободные позиции справа заполняются пробелами; если же ю}>6, то выводятся только ле- вые шесть символов. Например, чтобы передать наименование MICT, необходимо записать спецификацию А4. Спецификация нН используется для ввода или вывода алфавит- ных символов. При вводе эта спецификация заносит п считываемых символов в поде соответствующего формата, т. е. за спецификацией геН размещает п символов. При выводе п символов, следующих за спецификацией, будут выведены на печать в строке выводимой ин- формации. Эта спецификация используется для ввода и вывода заголовков, комментариев или названий переменных Например, пусть X = 3, 23 Тогда формат FORMAT (2Н_Х = =, F 5.2) прп выводе обеспечит печать строки X — ^3.23. В спецификациях А и И пробел считается как отдельный сим- вол, поэтому его можно предусматривать для разделения отдель- ных слов в многосложных названиях. Оператор NAMELIST записывается -в виде NAMELIST/X/A, В, C/Y/xC, Р, где X, Y —наименование отдельных бло- ков списка; А, В — наименования переменных илн массивов. Прн использовании оператора NAMELIST в списке объектов ввода п вывода пет необходимости в операторах FORMAT. Все, 138
что необходимо указывать в операторах ввода — вывода, это наименование оператора NAMELIST. Например, DIMENSION А (10), В (5) NAMELIST/BAC/A, I, K/ABC/R, М Для того чтобы ввести или вывести значения переменных I, К, М или массивов А, В, достаточно в соответствующих операторах указать наименования блоков ВАС и АВС Наименования списков оператора NAMELIST записываются по общепринятым правилам выбора наименований переменных, функ- ций нли массивов. Они пе должны совпадать пи с какими наимено- ваниями других переменных н могут поянлятьсп только в опера- торах ввода или вывода. В качестве объектов списка этого опера- тора пе могут использоваться фиктивные аргументы функций, подпрограмм и оператора ENTRY, Операторы FORMAT и NAMELIST в программе могут разме- щаться произвольно, по последний должен предшествовать исполь- зованию лапмеиоваыий его блоков списка Операторы ввода различаются по типу в зависимости от их содержательной части, способа представления вводимой информа- ции н устройства ввода. В содержательной части оператора ввода указываются тип устройства ввода н форма представления вводи- мой информации, метка оператора FORMAT или пзимеповапие блока оператора NAMELIST, список объектов ввода (если ввод производится с помощью оператора FORMAT). При использован ни оператора FORMAT в операторе ввода ука- зываются все объекты, подлежащие вводу в списке объектов ввода. Количество объектов ввода, вообще говоря, должно быть равно числу спецификаций в операторе FORMAT, одвако это правило может нарушаться Так, если одна спецификация используется ври вводе значений пескояьких переменных, то их количество можно указать цифрой в соответсгпующей спецификации Кроме того, если количество спецификаций меньше числа объектов вво- да, то после выбора последней спецификация снова будет выбирать- ся первая, вторая и т, д., поскольку спецификации выбираются на формата слева направо в порядке их панисания Оператор NAMELIST по л в остью он редел дет объекты ввода, по- этому в соответствующем операторе ввода список объектов ие при- водится. Оператор READ л, S {S список объектов ввода — наимено- вания перемеипых, разделяемые запятыми) используется для ввода информации с перфокарт Оператор READ (7, «) 5 предназначен для ввода двоично-де- сятичной информация с устройства с символическим номером Z. Спецификации объектов ввода списка 5 приведены в операторе FORMAT с маткой п Ввод может производиться со всех устройств, еа исключением перфокартного. 140
Оператор READ (I) S предназначен для ввода двоичной нл- формации со всех устройств,, в я исключен пои перфокартяого. Спецификации объектов списка 5 указаны в операторе FORMAT с меткой п. Оператор READ (7, АВС) предназначен для ввода двопчпо-де- сятпчной информации со всех устройств ввода, кроме перфокарт- лого Список объектов ввода указывается в операторе NAMELIST, наименование блока которого АВС, Операторы вывода различаются по типу выходных устройств н способу представ леи ня информации Так же как и операторы ввода, они используются совместно с одним на операторов FORMAT или NAMELIST. Оператор PUNCH nt 5 используется для вывода информации иа перфокарты в соответствии со спецификацией, заданной в операто- ре FORMAT, метка которого к, Оператор PRINT п, 5 используется дли печати информации, указанной в списке 6’, спецификации которой приведены в операто- ре FORMAT с меткой п Оператор WRITE (/, п) S предназначен для вывода двоично- десятичной информации на устройство с символическим номером I, Спецификация объектов вывода списка 5 задана в операторе FORMAT с меткой п Оператор WRITE (Z, ABC) используется для вывода всех наименований переменных и массивов (и пх значений), принад- лежащих блоку списка оператора NAMELIST с наименованием АВС, на устройство с символическим номером I Оператор WRITE (/) 5 предназначен для вывода двоичной, ин- формации на устройство с номером Л Операторы управления устройствами внода — вывода К этой группе операторов относятся: Оператор END FILE Д предназначенный для за ввей признака конца магнитной лепты, отведенной дл я некоторого массива данных. Оператор REWIND /, обеспечивающий переметку магнитной ленты иа начало. Оператор BACKSPACE /, предназначенный для возврата маг- нитной лепты па одну единицу записи (еднпвца заппсп — опре- деленное количество символов передаваемой информации). В приведенных операторах I — номер лепты Отличия в записи операторон ввода и вывода в диплонтах Фортран-П и Фортрая-IV: а) Фортран-П не нмевт оператора NAMELIST, (б ) между операторами ввода — вывода^устанавливаетсн сле- дующее соответствие: Фортпап-11 Фортран-! V READ ТАРЕ I, 5* READ (Z) S READ INPUT ТАРЕ Z, лт Л READ (Z, n) S WRITE OUTPUT TAPE 7, nr S WRITE (/, n) 8 WRITE TAPE Z, S WRITE (Z), J 141
Описательные операторы. Отдельные операторы описательного характера уже приведены выше по мере наложения операторов для задания функций, операторов ввода и вывода Оператор COMMON используется для передачи информации (переменных, массивов), указанной в начале сегмента программы, между различными подпрограммами и записывается в виде п COMMON А; В,.../л/С, Р., ЛЛ„ . где п — метка; А, В, С, Р, Т, ... — наименования переменных и массивов; а, Ъ .. —наименования отдельных блоков переменных. С помощью оператора COMMON резервируются ячейки запо- минающего устройства для общих переменных программы, запи- санной на Фортране.*Резервирование производится в порядке, со- ответствующем их следованию в списке, причем отдельные блоки переменных могут помечаться своими наименованиями (например, блоку а принадлежат переменные С, Р, .,.). Для определения местоположения переменной важен порядок их написания. Если, например, оператор COMMON повторяется в какой-либо подпрограмме, то не обязатольпо совпадение наимено- ваний его переменных с основным описанием, но количество их должно быть тем же самым, В противном случае может нарушиться соответствие отдельных переменных в разных подпрограммах. Наименования блоков (они записываются в соответствии с об- щими правил зми написания наименований переменных и заключа- ются в косые скобки) определяют местоположение отдельных групп переменных Блоки с одинаковыми наименованиями располага- ются в одном и том же месте Оператор COMMON может пе со- держать наименований блоков, тогда вся закись воспринимается как непомеченный блок &£ Наименования блоков используются только при трансляции программы,и могут использоваться л программе как наименования других объектов (за исключением названий подпрограмм). Они обладают свойством накопления, т. е, если о дао и то же наимено- вание встречается несколько раз. но с различными наборами пере- менных, то блок с этим наименованием содержит все переменные, Например, запись COMMON А, В/«/С, Р COMMON М, Т/о/Н равносильна записи COMMON А, В, М, Т/а/С, Р, Н Если переменная, указанная в операторе COMMON, является наименованием масспва, то его размерности определяются непо- средственно здесь либо в операторе DIMENSION, но обязательно только однажды* Например, ааписи COMMON А (10), В, С л DIMENSION А (10) COMMON А, В, С эквивалентны 142
Соответствие блок ой с одинаковыми' вазваниями в различных подпрограммах устанавливается по их длине, т, е, по количеству аанятых ячеек. В пределах блока подпрограмма может для себя переименовывать ячейки памяти* Например, блок COMMON /АВС/ А (10), В (5, 10) в подпрограмме может быть использован для хранения одного массива, если записать COMMON /АВС/ С (60). В программе или подпрограммах оператор COMMON предшест- вует любому исполняемому оператору, а также операторам NAME- LIST и DATA. Оператор DATA попользуется для задания начальных апаче- кий переменных и массивов в программе. Заноситься могут кон- станты любого типа, используемые в Фортрале-IV, буквы латин- ского алфавита, восьмеричные коды и логические значения. При занесении букв и восьмеричных кодов используются обычные спе- цификации пре образов алия кН и Ою Оператор DATA запнсывается в виде DATA Sj/^j, аз, , йз, ЛдЛ где^г,^ — список переменных, значения которых определяются; йц я, — константы, Например, присвоить переменным А, В, С значения 2,0,36,2; 1,55 DATA А, В, С/2,0, 30 2, 1.5/ Принапйсании оператор a DATA необходимо, чтобы число пере- менных списка было равно числу констант. Это и равной степени отпеситсн и к массивам Для того чтобы присвоить одпо значение нескольким переменным иди элементам массива, перед этим зна- чением ставится целое число, соответствующей количеству пере- менных или элементов массива. Задание значений элементов массива может производиться Двумя способами, В обоих случаях размерность массива должна согласовываться с количеством сим- волов или коистапт, В первом случае используется неявный цикл, когда в операто- ре DATA указываются переменпые с индексами, начальное и конечное значения индекса н шаг его изменения. Например, что- бы присвоить элементам массива А (20) значения А (1) —2*5 А (2) = 0*& А (3) -i- Л (20) = 5.0, 'необходимо записать DIMENSION А (20) DATA (А (1), 1 = 1,20)/2,5, 0.5, 18 * 5 О/ Здесь 18* означает, что значение 5,0 присваивается 18 раз эле- ментам массива начиная с А (3). По второму способу наименование массива включается п спи- сок переменных, причем опускаются индекс л границы его изме- нения. Присваивание значений производится посдедовательпо в 143
порядке следования переменных я массивов. Например, запись вида DIMENSION Л (10) DATA С, В. А/2.0, 0 * 1 0, 3 0, 4.0/ означает, что переменным С н В присваиваются значения 2,0 и d,0, а элементы массива А принимают авлчения А (1) — А (8) = 1,0 А (9) = 3,0 А (10) = 4,0 Восьмеричные числа, присваиваемые переменным, пе должны содержать более чем 12 разрядов, а алфавитно-цифровая информа- ция группируется по 6 символов. Например ' DATA А, В/15 4, 4 НСОМР/С, 012345676543/ Оператор DATA отсутствует в фортране-! I Оператор EQUIVALENCE используется для размещения не- скольких переменных в одних и тех лсо местах памяти машипы. Этот оператор пеисполяяемын и в программе предшествует любо- му исполняемому! оператору, в том числе NAMELIST п DATA Оператор EQUIVALENCE записывается в виде EQUIVALENCE (А, В, С, ), (Е. Т ), где А, В, С, Е, Т, ... — наименования переменных, массивов илп переменных с индексами Число индексов у переменных должно быть равно числу измерений массива или равно единице Например, EQUIVALENCE (А. В (1), С (4,5)), (Р (1,2,3), Е) Эта запись означает, что значения переменных А, В (1), С (4,5) будут при вычислениях располагаться в одной ячейке запоминаю- щего устройства, так же как значения переменных Р (1, 2, 3) п Е, Чаще всего оператор EQUIVALENCE используется в програм- мах в тех случаях, когда два или более массивов (в общем случае различной длины) занимают одной то же место в памяти машины Эти массивы представляют собой промежуточные результаты, причем значения элементов вычисляются раздельно по времени. Например DIMENSION А (100), В (2,50) EQUIVALENCE (А. В) READ п. А READ m, В 144
В этой программе элементы массива Ак моменту ввода массива В должны быть использованы, так как массив В записывается на место А. Оператор EQUIVALENCE может удлинить общий блок COM- MON, одп а ко при этом начало последнего не должао меняться. Например, если записать COMMON/A/B, С, Р DIMENSION АВ (4) EQUIVALENCE (С, АВ (1)), то первый элемент массива АВ разместится па месте С, а остальные элементы в последующих ячейках, т. е. оператор EQUIVALENCE увеличит блок па два адреса вер АВ (1) АВ (2) АВ (3) АВ (4) Эквивалентпость с помощью оператора EQUIVALENCE не может устанавливаться между переменными, принадлежащими оператору COMMON. Переменные с несколькими индексами в операторе EQUIVA- LENCE должны представляться как переменные е одним индексом, т, о. в операторе указывается не нндокс переменной, а ее порядко- вый номер в массиве начиная с первого элемента. Оператор EXTERNAL используется для описания перемен- ных, являющихся наименованиями подпрограмм-функций или подпрограмм Если этн наименования совпадают с папмопованиями встроенных функций или являются аргументами других подпро- грамм п подпрограмм-функций, то спи должны указываться в операторе EXTERNAL, который размещается в вызывающей программе поред первым исполняемым оператором Другие отличия Форт ран а-II и Фортран a-IV: а) в Фортране-П операторы COMMON н EQUIVALENCE мо- гут располагаться в программе произвольно; б) оператор EQUIVALENCE в Фортране-lV пе изменяет по- рядка расположения переменных в операторе COMMON, а только может увеличить его размеры; в) ряд подпрограмм библиотеки Фортрапа-lV ньпользуотся по улучшенным алгоритмам, обеспечивающим более высокую точность и область их применения (например, вычисление логарифма), г) порядок выполнения последовательности операций умноже- ния и деления, по определенный но л п остью скобками, может от- личаться, так как Фортран-IV на стадии компйлтгции предпола- гает оптимизацию арифметических выражений, д) в Фортране-!! элементы массивов располагаются в порядке уменьшение адресов намята, а в Фортрапе-IV — наоборот.
Глава V АВТОКОД «ИНЖЕНЕР» (АКЙ) Автокод «Ипжепер» является машинно-ориентированным язы- ком (20]. В качестве основных символов, используемых для опре- деления состава и структуры его элементов, выбран международ- ный телеграфный код М-2 (см, ниже стр, 476), представленный на клавиатуре аппарата типа СТА-2М. Отдельные группы символов нода М-2 используются следующим образом; латнпскпе и русские буквы (кроме Е и *Ь) — для эанисн назва- ний операторов, пояснений в авгокодовой программе и наименова- ний переменных; цифры 0, 1, ,,,, 9 — для записи числовой информации, обозна- чения меток и наименования (идентификаторов) переменных; знаки *-[-», «—», « », «;>, «Г» (апостроф) — для обозначения знаков арифметических операций; знаки «=», «,», «/», «?», «х», «(», «)», (пробел) — для обозна- чения ограничителей и разделителей при записи операторов и про- граммы. При записи алгоритмов, кроме указанных символов, могут ис- пользоваться некоторые их комбинации, папример — —- больше или равно п др, 1. Структура программы в автокоде Программа в автокоде состоит из заглавия и вычислительной части, реализующей алгоритм решения. Наличие заглавия в про- грамме обязательно. Оно представляет собой наймов о шшие задачи (например,-РЕШЕНИЕ УРАВНЕНИЯ С ОДНИМ НЕИЗВЕСТ- НЫМ) В вычислительной части программы записываются опера- торы, состоящие из названия и отделяемой пробелом содержа- тельной части. В содержательной части оператора указываются объекты про- граммы (числа, массивы, переменные, метки) н характер их обра- ботки (знаки операций). Оператор может занимать одну и более строк п помечаться мет- кой. В качестве меток используются числа от 1 до 127. Если оператор занимает более чем одну строку, то при переходе на Другую ставится знак s (перевод строки). Переменные я массивы, участвующие в вычислениях, пе описы- ваются типом и классом вначале программы, как это осуществляет- ся в Алголе. Описание перемени ых п массивов нронвводнтся опе- раторами, такими как ВВОД, МАССИВ, НАЗВАТЬ, ВЫ ЧИС- 146
ЛИТЬ. По информации, заданной в этих операторах, производится распределение памяти при трансляции Описанием переменной является и присваивание ей числового значения, Программа заканчивается словом НАЧАЛО, после пего ука- зывается метка оператора, с которого начинаются вычисления Часть программы может оформляться в виде подпрограммы. Для этого она снабжается словом ПОДПРОГРАММА, а за по- следним ее оператором ставится слово ВЫХОД Подпрограмма раз- мещается вслед за последним оператором основной программы я Рис SO. Cvpvrryptt программы в модиде может сопровождаться пояснительным текстом, который размеща- ется менщу словом ПОДПРОГРАММА и внакомХ или между сло- вом ВЫХОД и знакомХ. Например, ПОДПРОГРАММА^КОе>Ф- Ф1ЩИЕНТ_ АКТИВЕ ОСТИ X. Блок-схема программа в автоко- де приведена на рис. 23. Независимо от содержания каждая за- конченная строка программы завершается знаком X 2. Элементы входного языка Элементами входного языка АКИ являются числа, перемен- ные, функции и операторы Числа в автокоде могут быть записаны в следующей форма: 1, Б форме десятичного числа, когда целая часть от дробной отделяется запятой, а для отрицательных чисел впереди ставится знак «—» Знак положительного числа обязательно опускается. Например, 79,15 5 ОД 234 — 13G - 0,9876 1SM56789 2. В полулогарифмической форме с основанием 10, причем вместо символа 10 используется б ква Ю Например, 0,276-102 3 запишется 0,276102 10“» » Ю—1 12,345 » 0,12345102 147
3. В виде обыкновенной дроби, заключенной в круглые скоб- ки, когда числитель и знаменатель разделяются знаком г». Например, 5/6 запишется (5 16) 7/2 » (7’2) Форма записи целык чисел в памяти машины иавп- сит от положения их в шггокодовой программе Число будет записано с фиксированной запятой, если оно будет присваиваться переменной целого типа, или является индексом переменной Все остальные виды записи чисел хранятся в памяти машины о плаваю- щей запятой При записи чисел с фиксированной запятой можно пспользо- вать от 1 до 9 разрядов, а с плавающей — до 24 разрядов. Числи- тель и знаменатель обыкновенном дроби могут представляться де- вятью разрядами. Переменные н массивы в АКИ обозначаются буквами латин- ского алфавита и цифрами. Идентификатор пвромепной или массива может состоять из любой последовательности.буквицнфр, начинающейся с буквы. Одпако транслятор различает наименова- ния переменных только по первым шести символам. Запрещается использовать для обозначения переменных иден- тификаторы стандартных функций SIN, COS, TG, ARCSIN, ARCCOS, ABCTG, LN, EXP, MOD и буквы I, J, К, L. В автокоДоноп программе могут употребляться одномерные и двумерные массивы. Элементами массивов являются переменные с индексами, которые нумеруются начиная с единицы по каждому из измерений. В про1рамые переменная с индексом обозначается как идентификатор массива, за которым в косых скобках указы- вается наимонованне индекса. Если массив двумерный, то индексы разделяются запятой Например, АРЩ К/г A/к/, СИ5/. В качестве индексов в АКИ могут использоваться только бук- вы Z, J, К, £ и выражения вида й £{>, где а — одна из указан- ных букв, b — положительное число. Индексы могут быть как буквенными, так и цифровыми Ин- дексы не могут принимать отрицательные и нулевое значения, т. е они есть числа натурального ряда 1, 2,..., п, п -т- 1,.-. Переменные могут быть целого и действительного типа Если идентификатор обозначает перемогшую целого типа, которая будет записала в памяти машины с фиксированной запятой, то перед идентификатором ставится двоеточие. Например, . А, : В2С. Такая форма записи переменных целого типа используется в со- держательной части отдельных операторов. Напримор, ВЫЧИС- ЛИТЬ : X -= X 4* 1 > что означает — к целому числу X прибавить единицу. Арн^лиглгичеекне действия В АКИ определены следующие арифметические действия; для действительных чисел — сло- жение, вычитание, умножение, деление, возведение в степень 148
(корень рассматривается как возведение в дробную степень); для целых, чисел — сложение, вычитание и умножение* G переменными, обозначенными буквами I, J, К, L, никакие арифметические действия не допускаются* Для обозначения арифметических операций используются следующие символы: J- (сложение), — (вычитание), ; (деление), * (умножение), * (возведение в степень). Порядок выполнения отдельных операций определяется круг- лыми скобками пли обычным старшинством выполнения арнфые- тнчоскнх операций Примеры записи выражений в АКИ: Опытная щшпоъ Эппиоь к АКИ rf-ЗЬ/в Г2 — ЗЛ'.С УТ? — 1 В‘$ 2) — 1 + + 0 (Л.Х-гВ У)(ВЧ-С) Элементарные функции В АК.И могут использоваться следу- ющие элементарные функции* тригонометрические SIN, COS, TG, обратные тригонометрические ARCSIN, ARCCOS, AHCTG; ло- гарифм натуральный LN; экспонента EXP; модуль числа MOD Аргументом элементарной функции может быть число действи- тельного типа, арифметическое выражение, заключенное в круг- лые скобки, или другая элементарная функции Например, SIN (А.Х + В); LN (LN (X))* В тригонометрических функциях принято радианное измере- ние угла 3, Операторы Как уже отмечалось, каждый оператор АКИ состоит ив назва- ния и содержательной части, разделенных пробелом* Названия операторов при записи программы можно сокращать до трех букв, так как транслятор различает отдельные слова только по первым трем буквам, т в вместо НАЗВАТЬ можно записать НАЗ^, ВЫЧИСЛИТЬ— ВЫЧ^пт, д В многосложных названиях операто- ров между отдельными словами обязательно нужно ставить пробел* При переводе авто кодов ой программы на язык машины исполь- зуется операторный способ трансляции, когда каждому оператору соответствует отдельный блок переводящей программы. Этим достигается высокая скорость трансляции, по, к сожалению, за счет гибкости структуры языка* Для записи алгоритма в АКИ используются следующие наиме- нования операторов ВВОД ПЕРЕЙТИ МАССИВ КОНЕЦ НАЗВАТЬ НАПЕЧАТАТЬ НА БПМ ВЫЧИСЛИТЬ НАПЕЧАТАТЬ ИА ТЕЛЕТАЙПЕ 149
ИНТЕГРАЛ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ СИСТЕМА ВЫПОЛНИТЬ ЕСЛИ ПОВТОРИТЬ НАПЕЧАТАТЬ ТАБЛИЦУ НАПЕЧАТАТЬ ТЕКСТ БИБЛИОТЕЧНАЯ ПРОГРАММА код Нижо приводятся краткие характеристики каждого ив опера- торов. Оператор ВВОД используется для задания числовых значений исходным переменным, В содержательной части оператора пере- числяются щшмеаовапня переменных и массивов, которые будут впоследствии введены при выполнении рабочей программы. Объекты в операторе ввода перечисляются в следующем по- рядке; сначала указываются наименования простых переменных и массивов действительного типа, а затем наименования перемен- ных и массивов целого типа Отдельные наименования отделяются запятыми, а целые от действительных — знаком «:» Например, ВВОДИЛ, А, В..М, Р X где A t В — переменные действительного типа, Af, Р — пере- менные целого типа При вводе массивов действительного и целого типов ва иаиме- нованием в круглых скобках указываются его характеристики: максимальное число элементов, а для двумерных массивов — размерность в виде произведения числа строк за число столбцов. Максимальное количество элементов массива задаете и всегда це- лым числом, т. е. массивы в АКИ фиксированные, а размерность может указываться в виде чисел или наименований Например, ВВОД . А (100 _ М- Р) X- Здесь М и Р к моменту использования элементов массива должны получить численные значения в каком- либо операторе программы (ВВОД или ВЫЧИСЛИТЬ). L Размерность массива может вводиться в том же операторе ВВОД, где описывается сам массив. В этом случае среди перемен- ных целого типа в списке объектов ввода первыми указываются размерности двумерных массивов. Например, ВВОД,„А, В, с (<0_М Р). м, г, Е, AI (100^10 Е)Х Оператор МАССИВ используется для описания и размещения в памяти машины величин, не входящих в состав исходных данных, а также для описания массивов промежуточных л конечных ре- зультатов. Информация о массиве в этом случае задается так же, как и в операторе ВВОД. Например, МАССИВ. . А (400 „ 20.20) X. Если границы массива заданы наименованиями, например МАССИВ . В (100 , , М. Р), то МиР, как и н операторе ВВОД, должны получить числовые задания раньше, чем будут исполь- зоваться елементы этого масснва.
В программе оператор МАССИВ должен предшествовать тем операторам, которые формируют числовые значения его элементов, Оператор НАЗВАТЬ используется для формирования действи- тыльных одномерных массивов, число элементов которых ие менее двух. Например НАЗВАТЬСЯ = 0,0 1 0 0,5. (3 1 4). 2,75Ю — 2Х Для описания новых массивов, элементы которых будут разме- щаться в памяти машины на месте ранее описанных массивов опе- раторами ВООД или МАССИВ, например, .НАЗВАТЬСЯ (70) = АХ НАЗВАТЬ_С (100^5 М) = А/71/Х , где В, С — новые массивы, А — массив, описанный ранее. После выполнения этих операторов массив В будет размещаться на месте массива А начинал с АЛ/, а массив С — па месте массива А начинал с элемента А/71А Оператор НАЗВАТЬ может выполнять одновременно обе функции, например ПА ЗВАТЬ „А (10) =* Е_С = 1,5 (2 3) 0,7 4Д„В (10) = В1Х Здесь первый и последний элементы производят перепрнсваива- цие массивов, а второй — задает действительные значения эле- ментам массива G : С/1/ — 1,5; С/2/ = 2 ? 3; С/3/ — 0,7; С/4/ = 4,1. Оператор НАЗВАТЬ выполняется при трансляции автокодовой программы, поэтому сформированный им массив нельзя переиме- новать в процессе выполнения программы. Оператор НАПЕЧАТАТЬ „ НА . . НИМ используется для вывода числовой информации В операторе указываются наимено- вания переменных и их тип Если выводимое число целого типа, то перед его наименованием ставится знак При выводе масси- вов в круглых скобках указываются размерности Например, чтобы вывести на печать значения переменных X, Y, А — действительного типа, М, В, С — целого типа, мас- сив С1 размерностью 5 X 10, необходимо записать оператор НАПЕЧАТАТЬ„НА_БПМ„Х, У, А, С1 (5 10),; SUB, ,СХ При выводе одномерных массивов за наименованием массива в круглых скобках указывается количество выводимых эле- ментов Для печати массива с произвольного элемента в операторе указывается соответствующая переменная с индексами, а аа ней к круглых скобках количество выводимых символов (для двумер- ных массивов произведение числа строк на число столбцов) Напрнмер, вывести на печать 2 строки и 5 столбцов массива А начиная с элемента ПАПЕЧАТАТЬ_НА_ВГ1М^А/3 1/ (2 5) X
Оператор НАПЕЧАТАТЬ . . НА. ТЕЛЕТАЙПЕ служит для вывода наимеповапнй псрсмоппых и irx значений с заданным числом знаков после занятой* Например, оператор НЛПЕЧАТАТЪ_НЛ_ТЕ.ПГ,ТАЙПЕ_3_ЗНАКА А/5/,;М, С1Х позволяет вывести информацию п следующем виде* А/5/ = 3, 654 М =- 5 С = 1234, 987 Если необходимо вывести только целые части чисел, то точность в операторе пе указывается Оператор НАПЕЧАТАТЬ * . ТАБЛИЦУ используется для пе- чати числовой информации в виде .таблицы. В содержательной части оператора указывается число выводимых знаков, наимено- вания печатаемых величин и перед каждым наименованием — число позиций между соседними колонками цифр При этом общая сумма позиций одного оператора не должна превышать 68 Ин- формаций, о переменных в остальном задается так же, как и в опе- раторе НАПЕЧАТАТЬ _ НА _ Б1Ш, Оператор НАПЕЧАТАТЬ _ ТЕКСТ предназначен для пе- чати заголовков и примечаний к информации, выводимой на телетайп, На печать выводится вся информация, указанная в со- держательной части оператора Например, НАПЕЧАТАТЬ _ ТЕКСТ _ ТАБЛИЦА _ ЛОГАРИФМОВ X В тексте запрещается использовать знаки ? л X, а также буквы латинского алфавита Оператор ВЫЧИСЛИТЬ используется для записи формул, поэтому в его содержатсяьпой части в соответствии с правилами описания арифметических действия записываются арифметические выражения Например, ВЫЧИСЛИТЬ^? = EXP (А1 -ы Д2 (АЗ + Т)> При выполнении операций с целыми числами перед переменной в левой части формулы ставится знак «;». Например, ВЫЧИСЛИТЬ^ М^Мт IX В оператор ВЫЧИСЛИТЬ моЖпо объединять несколько фор- мул с одинаковыми типами левых частей. При этом отдельные формулы разделяются иробелом, Нанример, ВЫЧИСЛИТЬ^,.? = А/i/ |- С_- М = В БХ По формуле, записанной в операторе ВЫЧИСЛИТЬ, строится программа для вычислений значении левой части, Поэтому к Моменту выполнения этого оператора все используемые перемен- ные должны иметь числовые значения. Сам оператор ВЫЧИСЛИТЬ 152
может использоваться для задания Начальных значении нере- шенным Опсратари ИНТЕГРАЛ И АЛГЕБРАИЧЕСКИХ_УРАВНЕНИЙ_СИСТЕ МА являются обращениями к стандартным программам, находящимся в библиотеке транслятора Они используются наравне с подпро- граммами элементарных функций, и соответствующие мм операторы могут располагаться в любой части автокодовой программы. Оператор ИНТЕГРАЛ используется для вычисления определен- ного интеграла ио методу Симпсона. В его содержательной части указываются пределы интегрирования, начальный шаг интегри- рования, точность и подынтегральная функция Пределы инте- грирования, шаг и точность могут быть выражены как числами, тан и переменными. Например, вычислить теплоемкость твердого вещества по уравнению Дебая где х = hvfkT] N — число Авогадро, fi,023’10аз,.Л — постоянная Планка, б^ЙбЛО’147 эре/сек; к — константа Больцмана, 3,299* »10‘4 кал Л С; 0Й — температура Дебая, ха — Од/?', v— часто- та собственных колебаний. Следует заметить, что такие величины, как АГ, Л и к, не могут быть представлены, например, в машине Шипск-22», Поэтому при вводе отпх величин необходимо учесть, что они входят в фор- мулу в качестве сомножителей, и сократить степени соответствую- щим образом Если обозначить А * 9Nk(Vxo), EPS — точность, DEL — шаг, то вычислительная часть программы с использованием опе- ратора ИНТЕГРАЛ запишется в виде ПН1ЕГРАЛ -С(ОТ_0_ДО_ХО_тЛГ_ОЕЬ_г1ОИПОСТЬ_ЕГ8) FX«=X4,EXP(X):(EXP(X}—1) 2Х ВЫЧИСЛИТЬ _С=С.АХ Оператор ИНТЕГРАЛ присваивает вычисленное значение интеграла переменной С Оператор АЛГЕБРАИЧЕСКИХ _ УРАВНЕНИЙ _ СИСТЕ- МА используется для решения систем уравнений но выше 55-го порядка. Вся информация о системе задается в круглых скобках вслед за наименованием оператора, Она содержит порядок систе- мы, наименовании матрицы системы и столбца свободных членов, Решение размещается на месте столбца свободных членов и полу* чает его наименование. Величины, задаваемые в содержательной части оператора, разделяются запятыми 153
' „ ; ' . . ./' - . <* - Оператор ВЫПОЛНИТЬ является средством обращения и частям автокодовых программ^ выделенных и качестве подпрограмм а. н размещенных в конце основной программы. j* feO Каждая подпрограмма должна начинаться заголовком ПОД- ’ ПРОГРАММА, перед которым обязательно проставляется метка, ’’ и заканчивается служебным словом ВЫХОД Оператор ВРЯ ПО JI- НИТЬ в содержательной части имеет метку, которая является - меткой заголовка соответствующей подпрограммы, Он обеспечивает не{только переход к подпрограмме, поивозврат в основную програм- му к оператору, следующему непосредственно за оператором ВЫПОЛНИТЬ Оператор ЕСЛИ используетсп для реализации условной пере- дачи управления в авто к о довой программе, В его содержательной ; части указывается условие и метки операторов, которым будет пе- редаваться управление после проверки условия, , ' Условие состоит хщ левой и правой частей, разделенных ана- ’ ком операции отношения, В левой части условия может стоять арифметическое^ выражение или функция, а в правой — число или переменная. ‘•’j Знаки операций отношения в АШ1 записываются следующими комбинациями символов кода М-2* > 'Чвак операции cntOUiCinOt Зитикя. ъ АКН < —( Различают два вида условного оператора Первый определяет оператор-преемник только в случае выполнения условия, а прн невыполнении — переход -осуществляется к следующему по по- рядку оператору Например, ЕСЛИ^А— В_ТО„7Х где 7 — метка оператора, которому передается управление при А = В. Второй тип оператора ЕСЛИ позволяет передавать управление прн невыполнении условия некоторому другому помеченному опе- ратору программы, Например, ЕСЛИ_Л_^В_ТО_7_ИНАЧЕ 10Х В этом случае при А В управление передается оператору с меткой 10. Оператор ПЕРЕЙТИ является оператором безусловной пере- дачи управления В его содержательной части указывается метка оператора, который должен выполниться следующим Например ПЕРЕЙТИ _ 6 X 154
Оператор ПОВТОРИТЬ исНсльауется, Как й операторы 13СЛИ и ПЕРЕЙТИ, для организации циклических вычислений. В содер- жательной части етого оператора указывается вся необходимая информация для организации управления циклом (число повторе- ний цивла, шаг изменения параметра цикла, начальные значения отдельных параметров) Оператор ПОВТОРИТЬ всегда ставится в конце циклической части программы В отличие от других опе- раторов здесь не требуется описания параметра цикла (присвое- ния ему численного значения) ранее в программе. Численное зна- чение параметру цикла присваивается в содержательной части оператора ПОВТОРИТЬ. В зависимости от содержательной части различают два типа оператора ПОВТОРИТЬ. Если число повторений цикла известно заранее, то в содержательной части оператора указываются метка оператора, с которого повторяются вычисления и число повторе- ний цикла Например, запись 11ОВТОРИТЬ_2_20Х означает, что группу операторов начиная с метки 2 и до данного опе- ратора необходимо повторить 20 раз. В этом случае параметр цикла либо вообще отсутствует, либо изменяется другими операторами внутри цикла. В общем случае функции изменения параметра цикла могут выполняться самим оператором ПОВТОРИТЬ В нем можно указать также и начальное значение параметра цикла, шаги его изменения и конечное значение. Например, запись вида ПОВТО РИТ Ь_1 _Х= 1 _(0,1 )_10Х означает, что группа операторов с метки 1 повторяется при X = 1 с шагом ОД до X — 10. Если в цикле изменяются сразу несколько величин, то они могут объединяться в один оператор, при этом для каждой величи- ны задается Значение начальное и шаг изменения параметров, а конечное значение можно задавать только для одного ие парамет- ров Например IlOBTOPHTb_4^X=0_(i) Y-l_(2)_iOX Если известно начальное значение параметра цикла, шаг его изменения и число повторений, то ие обязательно указывать ко- нечное значение, а достаточно записать norsTOPMTb—4—X-l—(0,l).10X В отличие от общей запаси здесь шаг изменения параметра отделяется ие пробелом, а точкой. Выход из цикла возможен ие только при достижении парамет- ром конечного значения, по и е помощью любого оператора пере- хода или другого оператора ПОВТОРИТЬ. Отсюда следует, что допускается возможность цикла в цикле. В этом случае если 155
1 один цикл входит в другой л параметрами цикла являются индек- сы, то выход внутреннего с помощью оператора ЕСЛИ не разре- шается* Следует запомнить, что параметрами цикла могут быть либо индексы, либо переменные действительного типа. Оператор КОНЕЦ обычно используется для окончания вы- числений. после выполнения некоторого оператора антокодовой программы * В программе а а вим могут следовать подпрограммы и служебное слово НАЧАЛО N X Оператор БИБЛИОТЕЧНАЯ ПРОГРАММА используется для расширения возможностей языка с помощью библиотеки стандарт- ных программ* Любая подпрограмма, составленная в машинном ко- де, может включаться в библиотеку п использоваться наравне с подпрограммами вычисления элементарных функций Для итого достаточно написать обращение к ней, где указывается порядко- вый номер в впде восьмеричного кода в круглых скобках, н наи- менования параметров, вынесенных в качестве входных для дан- ной подпрограммы Оператор КОД используется для включения программ пли отдельных ее честей, записанных в командах'машины В содержа- тельной частп оператора КОД записываются команды, реалпзую- пщй необходимые вычисления* При этом допускается возможность использования истинных и условных адресов, а также наименова- ний переменных, описанных в автокодовой программе При записи команд машины в операторе КОД адреса н код опе- рации с индекс-адрес ом разделяются пробелами, а в концо каж- дой команды ставится точка. Пример. Составить программу расчета критических свойств пар ком- понентов мвогокомопнннтнпй смеси по формулам Агрм“ (^крн _ t^Kptл 4~ -Рцрj j^Kpjf.J^Kpj j AcpiJ — 2Л ’ / v*/«. j_ у’Л t, \з И.1Ч., - “P1- a ‘.<=‘.г. .W<10 Программа„>расчета„41фитп,1ес«их^,с1юйств X 1 вводив, T (10), P(iO),:MX MACCHB_TCR (100Л M}( PCR (100_M M)t VCR (100_M M), ZCR (W0_M.M)X ВЫЧИСЛИТЬ^ P=l_Q=iX 6 ССЛИ^: P^Q^TO_2 ИНАЧБ_ЗХ 2 BbI4HCJIHTb^.TCR/T,I/=T/V„ PCR/1,1/—P/L/^ VCR/l(I/=V/I/_ ZCR/I,V=PCR/I,I/,VCR/Itl/;TCR/l,I/;RX 158
ПЕРЕЙТИ_4 X ВЫЧИСЛИТЬ_ТСВ/и/«ТСПД,1-|-ТСЙ/1(3/л(1:2)Х ВЫЧИСЛН’ГЬ_УСН/1,1/ == ((VCR/I,I/'(1:3) + VCR/J.!/'(! : 3)): 2)'3 X BbI4IICnMTb_ZCB/IJ/=(PCR/I,IAVCR/ItI/:TCP/l,I/-VPCR/J,3/. VCR/J,TATCR/J,J/:(2.R)X BbI4HCj4HTb„PCR/I,J/=ZCR/IfJAR.TCR/IfJ/.VCR/I,J/X вычислить_;о=(Ж х 4 повторить_6_з-1_(1)_мх ВЫЧИСЛИТЬ^-P-|-1_Q=I X иОВТОРИТЬ_Б^1=±>1^(1)_М X НАПЕЧАТА.ТЬ_ТАБЛИЦУ_3_ЗНАКА^.9„ТСВ (10.10),9^ РСВ(КМО), 9_VCR(10,10),9_ZCR (10.10) X КОНЕЦ_Х ПАЧАЛ0_1 X Внесение исправлений в программу. Для исправления ошибок в автокодовой программе в процессе отладки можно использовать специальные корректировочные операторы ВСТАВИТЬ^ УДАЛИТЬ^ ЗАМЕНИТЬ^ Оператор ВСТАВИТЬ попользуется для включении в програм- му дополнительных строк, для этого в его содержательной части указываются'помер страницы и строки, после которой производится вставка. Например, вставить операторы ЕСЛИ_А=в_ТО„аХ ПЕРЕЙТИ 4 X в программу на норвой странице после 15-й строки. Для этого необходимо написать ВСТАВИТЬ_О115Х ВСЛИ_Л=В^.ТО_6 ПЕРЕЙТИ_4Х Оператор УДАЛИТЬ позволяет выбросить иа автокодовой про- граммы одну или несколько следующих подряд строк, для чего в его содержательной части указывается соответствующая информа- ция Например, удалить стропи 12 — 15 па странице 2: УДАЛИТЬ _0212—0215 X Оператор ЗАМЕНИТЬ используется для изменения содержа- ния отдельных строк автопрограммы Этот оператор вместо ука- занных в содержательной части строк ставит строки, следующие за ним 157
4. СрАвнейие бГрукТуры Алгоритмических языКАв Алгбл-60, Фортран4У и АКИ При решении задач на вычислительных машинах обычно ис- пользуется в качестве основного один из алгоритмических языков программирования- Для него разрабатываются аффективные транс- ляторы, алгоритмы решения типовых задач составляются с ис пользованием этого языка. Языком, принятым для решения мате- матических и инженерных задач в пашей стране, является Алгол-60. Он также является универсальным языком, получившим между- народное признание. Тем не менее при эксплуатации ЦВМ часто приходится стал- киваться с необходимостью использования алгоритмов, записан- ных иа других алгоритмических языках, в частности да Фортране, АКИ, Коболе и др. Системы автоматического программирования машин высокого класса допускают свободное использование любою алгоритмического языка — они содержат трансляторы отдельных языков, позволяющих переводить алгоритм иа язык машины Дли машин малого и среднего классов использование таких систем сопряжено с рядом трудностей технического порядка (ог- раничения по быстродействию и объему запоминающего устрой- ства) и вряд ли целесообразно. Однако, чтобы, воспользоваться алгоритмом, записанным на другом языке, его необходимо пере- вести па язык, принятый для данной машины Ниже приводится сравнение АКИ, Фортрана с Алголом и воз- можности записи отдельных конструкций в терминах Алгола. Описания переменных it операторы. Программа, записанная на АКИ или Фортране, по структуре отличается от программы на Алголе тем, что может не содержать описания переменных в яв- ном виде. Она состоит нз заголовка, операторов п подпрограмм (для АКИ) или из сегментов программы, объединяемых в единое целое основной программой (для Фортрана) Поэтому для перехода к записи в Алголе необходимо: выявить верхние границы массивов по каждому из измерений и описать их в заголовках блоков, в которых используются эле- менты этих массивов; выявить наименования неременных, используемых в данной программе, и я зависимости от области их действия описать в за- головках соответствующих блоков (локальные и глобальные пере- менные); подпрограммы, выходными значениями которых являются ска- лярные величины, описать в виде процедур-функций, все осталь- ные подпрограммы записать в виде процедур; проверить наличие используемых стандартных подпрограмм в библиотеке транслятора; недостающие подпрограммы составить и внести в программу на Алголе; операторы ввода — вывода заменить соответствующими опера- торами используемого транслятора.
В Алголе идентификатор переменной ие определяет ее тип, поэтому выбор наименований произвольный. Запись программы иа Алголе может существенно отливаться от соответствующей записи на АКИ или Фортране. Это вызвано тем, что в Алголе пе определены действия с комплексными числа- ми, числами, записанными с двойной точностью, а также тем, что некоторые операторы вообще отсутствуют или предназначены для выполнения ряда действий. Например, отсутствуют операторы НАЗВАТЬ, ДАТА, EQUIVALENCE, EXTERNAL, а операторы ввода информации могут использоваться и для описания перемен- ных. В Алголе же ие допускается использование неописанных идентификаторов При написании программы операторы НАЗ- ВАТЬ и ДАТА заменяются операторами присваивания или опера- торами ввода, а действие оператора EQUIVALENCE равносильно использованию независимых блоков в программе Аналогом операторов МАССИВ и DIMENSION в Алголе яв- ляется описатель array с той разницей, что динамическое распре- деление памяти позволяет не указывать максимальное число элементов массива в описании. Например, операторы МАССИВ А(100 , N. N) и DIMENSION А(10,10) в Алголе описываются как begin integer N, begin array A Ji .Mr i NJ; Переменные, входящие в содержательную часть оператора COMMON, в Алголе являются глобальными и описываются в заго- ловке самого внешнего блока Соответствие отдельных операторов АКИ, Фортрана н Алгола представлено в табл 10. Соответствие между операторами ввода — вывода устанавли- вается на уровне конкретного представления Алгола различными способами Ниже даны примеры перехода от записи вычислений на Форт- ране к записи на Алголе. Оператор перехода. Давление, используемое в расчетах, долж- но быть представлено в атмосферах. Составить программу, обес- печивающую пересчет давления (атм) независимо от единиц из- мерения давления в исходных данных. Исходные дацныеУЦк апм*, если 1=0 дОунш/ЭмЙ.н2, [ ? ~ кГ/с.ч3, I ='2 мм pm. ст, 7=3 где I — призвав, указываемый в исходной информации
Таб.шч-а IQ Операторы АНИ Фортран АЛГОЛ Й) О диез пне воременпых н мдашюш Неявпая форма описания переменных вутвм соот- ветствующего выбора йапмевовоппя Неявная форма описания переменных путем со- ответствующего набора наименовавШЕ Отсутствует Операторы описания типа Парод неремепвой цело- го тина ставится знак г» Массив АВ (IDO^M X) INTEGER REAL iogigal COMPLEX DOUBLE — PRECISION DIMENSION AB (10, Ю) COMMON AB, A EQUIVALENCE (A, D) EXTERNAL Операторы присваивания integer real Iwoloan Отсутствует Отсутствует яггау АВ 1I -10, 1.10J Глобальные церемонные Независимый блоки про гршмы Отсутствует Вычислить А =В X А = В Назвать А = 7 5,4 0,2 X Дата (А (1), I =1,3) /7.0,5 40,2/ А: = В Отсутствует Перейти . . в X Если = Если —□ А = В ТОп — Иначе — гн Оператор перехода GOTO п lF(A = B)frtt «ч т 1Р(С)А = Л НВ GOTO (ni, GOTOI (ш, ля( »тл) Повюрпть —. л — М Повт—л —। X = 1 (I) _ М Элементарные функции например SIN(X) Подпрограмма Оператор цикла DO«X=± М Поди рограмма Встроенные функции и библиотека стандартных дао дп рограшг-фувкщш, ноцрпмер SIN(X) Арлфмотдчоскцй опора- тор-фупкцяя продеду рп>фуньцпп Подпрограмма goto и If А = В then gate л gold If А = В then я else тп иди if А = В then goto n ehe goto ni if C IbeiLa. = а Ц-& switch P: =/и( л»-.., «пи goto P П] for I: = 1 step I onlil m do (ajjopOTopy Элементарные функции, например sin(X) Процедура функция Процедура 160
Ta&mtfa 10 (окончание) - --- 1 Операторы АКИ Фортран Алгол 60 Конец Выход Оператор остенона С ND STOP PAUSE end stop Программа на Алголе Программа но Фортране HEAD 20, I ,Р 20 FORMAT (12 Т8 4) GO ТО (15,1,5,10),1 iP^P* 0.0 6803 GOTO 15 5Р—Р+0.96784 GOTO 15 10 Р—Р+0 00131570 15 (I вариант) begin itltogcr i real p\ switoh Ki—Al 5,Al,A5,A10( seed (lfpYt й=«-Ь1; goto A [tl: Al; _p:=px 06806, goto jla; A5i p\=pX 90784, goto Ala; Л101р:=рХ 00131579, Ai5; Программа на Алголе (2 вариант) begin ген! р; Integer t; моЗ (t^p); p:=/fX (If (=0 then 1 eke If then 06800 else if 1=2 then 90784 eke-00131579); Оператор цикла Коэффициент относительной летучести каж- дого ио компонентов многокомпонентной смесн вычисляется по формуле п = р----[3 ] —lnZM!K (» = 1.2, . ( п), где В — второй вяриалышй коэффициент; у —состав паровой фа- р вы; Р — давление; Ямгх = об; j — фактор сжимае- мости; Vmix = #шх + — молярный объем смеси, п п ^мтх — 3 У13 ~ вяриальный коэффициент смеси i=i i=i fr В В Кофиоов и др iei
Программа на Фортране PRPOGRAM РН1 > DIMENSION В(Ю,Ю)1 РНЦ10}, Y(10) DMIX^Q.O : • READ 4O,N,P,T,((B(I.J)r I=;1.N)rYU)J=1»N) Dd 151₽4tN Л DO 10 J«1,N BMIX=BMIX+Y(I) • Y(J) * B(IU) 10 CONTINUE 15 CONTINUE ... PR^P/(82.057* T) ‘ VMIX»BMIX-M/PR ZMIX=FR»VM1X DO 30 l₽ltN ’ . fie=(bO DO 20 J=I,N S^S+Y(J) * B(I, 3) 20 CONTINUE PHI(I)^EXP(2 0 * S/VM1X)/2M1X 30 CONTINUE WRITE 5<MPHI(]),I~ItN) 40 FORMAT (13.2F10.5, I10F10.5) 50 FORMAT (lOFIO.fl) END * Программа на Ал юле begin Integer h; effoO (n), begin Integer it Д rea pr, t, vmix, imiv, Ewtta, я, p, array PHZ.yliinL M.!:»,!:»]; WD0 V* У B)i lwntar’,= 0.0; for l’,~ 1 step 1 until h do lor i step 1 until n do bmix;» fej?tfx-rY[t]X YlflXBliJli pr.^p/ (82.057 X<); итйг: ₽ bmix-V 1/j?rR imte:c=»rX tmia:5 for t:*=l step 1 ontn n do begin j;=0,0; for )>! atep 1 until n do r.₽4Ff/l (2.0Хв'/г7п(т)/ят!-с end; амвоЭ (РЯ2) end end 162
РЕАЛИЗАЦИЯ АЛГОЛА Алгоритмический язык программирования значительно отли- чаете и от языка вычислительной машины Поэтому, чтобы исполь- зовать его в качестве входного языка машины, необходимо прео- долеть эти различив. Необходимо, чтобы машина могла воспринять символическую запись алгоритма и обеспечить выполнение ука- занных действий Преобразование записи алгоритма на Алголе в последователь- ность машинных команд осуществляется с помощью транслятора, а полученная программа л машинных командах называется рабо- чей программой L Общая характеристика трансляторов Многообразие трансляторов по структуре не позволяет уста- новить четкую границу между функциями, выполняемыми самим транслятором и рабочей программой В различных трансляторах их функции могут пересекаться. Например, динамическое распре- деление памяти может выполняться как транслятором, так и ра- бочей программой. Все трансляторы по способу переработка исходной программы разделяются на однопроходные и многопроходные В совершен- ных многопроходных трансляторах иногда используются допол- нительные просмотры исходной программы с целью оптимизации отдельных частей рабочей программы. Например, при составле- нии программы для вычисления значений арифметических вы- ражений можно исходить из паилучшей последовательности выпол- нения арифметических операций. Независимо от структуры транслятора его работа включает следующие этапы [21г распознавание в закодированном представлении исходной про- граммы различных составляющих входного языка, анализ структуры программы на Алголе (например, определение соответствующих друг другу операторных скобок, нахожде- ние условных операторов и т, д.), установление связи между используемыми идентификаторами и их описаниями, преобразование арифметических выражений с учетом обычных правил старшинства и расположения скобок в некоторую после- довательность простых арифметических операций
По сущему каждый из эТ&ДбВ ЬреДсТайляёт Преобрйздйаийё исходной программы. В однопроходных трансляторах все эти этапы применяются по очереди к отдельным небольшим частям программы, и рабочая программа получается в результате одно- нратнсго просмотра. Многопроходные трансляторы просматри- вают программу в целом несколько pas. Как правило, многопро- ходные трансляторы расходуют больше машинного времени на составление рабочей программы, чем однопроходные, однако первые позволяют получить более эффективные рабочие програм- мы. Многопроходный транслятор может выявить больше синтак сических ошибок в транслируемой программе, в то время как однопроходный прекращает трансляцию после выявления одной или нескольких ошибок. Одпой иа наиболее важных характеристик трансляторов яв- ляется метод, с помощью которого анализируется структура текста программы. Все методы можно разделить иа две группы — прямые и синтаксические Прямые методы трансляции базируются на понятии основного символа языка Алгол. Символы языка по мере просмотра програм- мы заносятся в так называемый «магазин», где хранятся до тех пор, пока не будет закончен их перевод. Этот метод особенно эф- фективен при анализе скобочной структуры программы. Открыва- ющая скобка хранится в магазине до тех пор, пока транслятор не выявит парную ей закрывающую скобку. Трансляция осуще- ствляется так, что внешние скобки помещаются а глубь магазина, а внутренние — снаружи, и переработка исходной программы бу- дет выполняться с вложенных синтаксических конструкции. Синтаксические методы трансляция основаны на переработке отдельных синтаксических конструкций Алгола Транслятор в этом случае представляет набор подпрограмм, соответствующих отдельным операторам Каждый оператор в исходной программе транслируется своей подпрограммой. В некоторых случаях в ос- нову составления отдельных подпрограмм берется принцип син- таксических единиц языка, например выражение Достоинством таких трансляторов является то, что исходная программа может задаваться в виде закодированных синтаксических правил пере- вода. 2. Алгамс — конкретное представление языка Алгол-60* При использования языка Алгол в качестве входного для опре- деленного класса машин приходится заменять одни символы дру- гими пз-за различия клавиатуры печатающих устройств. Напрн- • Алгоритмический язык Алтамс разработан группой ГАМС (группа йнтоматяэнции программирования для машин среднего класса) н с учетом поправок был принят ц 1066 г. Трудна ГАМС создана в 1863 г. по впицпатипо польской Академии наук Комиссией многостороннего сотрудничества ека демий паук социалистических стран 164
кер, стандартное печатающее устройство «СТА-2М» не имеет строчного буквенного регистра, поэтому во входном языке пре- дусмотрены только прописные буквы латинского алфавита Так- же отсутствуют квадратные скобки или подчеркивание — их при- ходится заменять другими символами или наборами символов. Для машин серии «Минск» разработано несколько транслято- ров, отличающихся как быстродействием рабочих программ, так н временем трансляции Одним на распространенных трансля- торов является транслятор «МЭИ-3», в основе которого лежит конкретное представление Алгола — Алгамс [22, 23 J Транслятор разработан в ВЦ Московского энергетического института. Алгамс имев! следующие отличия or Алгола. Исключены строчные буквы латинского алфавита. Буквы рус- ского алфавита могут йспольаоваться только в строке, Идентификаторы различаются только по первым шести симво- лам (если у двух идентификаторов эти символы совпадают, то они считают с в одинаковыми) Исключены понятие own н операция целочисленного деления. Исключены рекурсивные процедуры и рекурсивные обраще- ния и процедурам. Исключены побочные эффекты процедур-функций Допускаются только безусловные и не заключенные в скобки именующие выражения. Не допускается использование целых чисел в качестве меток. Переключательный список должен состоять только из моток Переход при неопределенном указателе переключателя по»опреде- лен Все формальные параметры процедуры должны иметь специ- фикации. Параметр цикла в заголовке цинла может быть только иденти- фикатором простой переменной Идентификаторы в программе не должны появляться рапыпе своих описаний Идентификатор не может встретиться в списке формальных параметров более чем один раз. Вели основание и показатель степени имеют целый тип, то результат будет типа integer в том случае, если показатель степе- ни есть целое без зпака, в ином случае — типа real Тип арифметического выражения if F then El else E2 есть integer, если выражения Ei я Е2 integer, н real — в любом другом случае. При вызове по наименованию класс и иш фактического пара- метра должны совпадать с классом и типом соответствующего фор- мального параметра. Однако если при выполнении процедуры не происходит присваивания значения этому параметру, то фактиче- ский параметр типа integer может соответствовать формальному параметру типа real. Идентификаторы стандартных функций не могут быть фактическими параметрами процедур 185
Список стандартных процедур и функций в Алгамсе расширен. Включены стандартные функции поиска минимального и макси- мального значений средн совокупности арифметических выраже- ний, а тапже синтакснчески определены процедурыввода и вывода, процедуры обмана между накопителями и ряд других процедур. 3. Стандартные процедуры транслятора <<М311-3» Во входном языке транслятора «МЭИ-3» стандартные процедуры Алгамса реализованы исходя иа конструктивных особенностей ЦВМ «Мияск-22^ (см. стр 46G). Каждой процедуре соответствует стандартная программа в машинном коде, поэтому, чтобы восполь- воваться такой процедурой, достаточно написать ее оператор со списком фактических параметров. Транслятор по списку факти- ческих параметров составит группу команд в машинном коде для обращения к соответствующей процедуре в вставит ее иа место оператора процедуры Фактическими параметрами стандартной процедуры могут быть выражения, идентификаторы, оплсашплй в исходной программе. функция KEY. Указатель функции KEY (целое беа знака) используется для оргапиаацви разветвлений в программе, а также в процессе отладки. Ее аргументом может быть восьмеричный под от 0 до 177 Этот же код может набираться на пульте управления машины тумблерами «Переход по ключу» Если код, набранный тум- блерами, совпадает с кодом, соответствующим аргументу функции KEY, to функция принимает значение trne, в противном случае — false Процедура ТАРЕ Оператор процедуры ТАРЕ предназначен для обмена информацией между ОЗУ и накопителем на магнитной ленте (НМЛ) Он используется в том случае, если объем обрабаты- ваемой информации велик и ие может одновременно храниться в ОЗУ, а также для передачи информации отдельным не- зависимым блокам программы. Список параметров оператора ТАРЕ состоит из трех арифме- тических выражений, которые обозначают соответственно следу- ющее: номер шкафа (НМЛ)' номер лентопротяжного механизма (ЛПМ) и номер слова на ленте в десятичной системе счисления, на- чиная с которого производится запись пли чтение информации (см. стр. 470). В список фактических параметров включается и идентификатор массиве, значения которого передаются. Если идентификатор массива в списке параметров стоит на первом месте, то производится запись информации на НМЛ, если на послед- нем— то чтение в ОЗУ. Пример!. Записать ыасснп .3 из ОЗУ на первой ЛИМ иторою шкафа НМЛ пачивая с 0100 слона Оператор процедуры имеет ипд ТАРЕ (Л,2,1, 0100)
Здесь количество слов, Которое будет записано, определяется раямерностыо массива А Пример 2 Записать в ОЗУ на место массива Р с пулевого ЛПМ первого шкафа НМЛ информацию, начинай со слова Ьх 100 Оператор процедуры имеет вид, ТАРЕ (1,0, АХ ЮО, /*) Процедура ввода. Оператор ввода предназначен для ввода циф- ровой, логичесвой л алфавитно-цифровой информации В транс- ляторе «МЭИ-3» предусмотрен только один канал ввода — фото- считывающее устройство, т. е носителем информации может быть перфолента. Согласно определению оператор ввода есть < одарите р ввода) , = INPUT ((канал), (список объектов ввода)) Для обозначения канала ввода используется цифра 1. Список объектов ввода представляет собой перечень идентификаторов переменных, которые необходимо ввести. Идентификаторы в спис- ке объектов ввода разделяются запятыми. Порядок следования идентификаторов массивов н простых переменных в списке объек- тов произвольный, однако для перфорирования простые перемен- ные удобнее размещать последовательно друг аа другом. Пример 8 Составптэ программу ввода еиаченвц переменных «, &, с, ft, р я массива АА [1*6] Программа begin real a,Ei,с , array АА ]1:вЬ integer ft, INPUT (1 ,в,Ь,сАр, 44) end Перфорирование значений объектов ввода должно произвол даться в том же порядке, в каком они указаны в операторе ввода. При выполнении оператора ввода производится одновременно и перевод исходной информации в двоичную систему счисления. В зависимости от описания объекта ввода в основной программе (real, integer или boolean) последний будет представлен в машине в соответствующей форме (с фиксированной или с плавающей запятой). Ввод текстовой информации производится как ввод массива целого типа В втом случае текстовая информация кодируется целыми числами согласно табл 11 Процедура вывода. Оператор' вывода задает порядок и формат вывода числовых, логических или текстовых данных. Сиптакспческп он определяется следующей метаформулой: (оцератор вщвода)v.=OUTPUT ((капал) ,(формат>, (синеок обт^ктор нывода)) 167
Ta6iw^a 11 Соответствие между сямволамм страви и целыми числами GHXCO1 Цеюе CUM№j( Целое СШВДЮТ Целое Сим- мол цмое Сик- НОЛ Целое А 1 Q 17 Л 33 3 83 ) 222 В 2 R 18 л 34 4 84 4 225 С 3 6' 19 п 35 5 85 226 D 4 T 20 ф 37 6 86 X 134 Е 5 u 21 Ц 38 7 87 1 136 Ь 6 V 22 ч 39 8 88 137 G 7 ж * 2d ш 40 9 89 143 И в -V 24 ц 41 + 132 144 I 0 У 25 ы 43 — 133 214 J 10 z 26 ь 44 / 135 I 223 11 в 27 9 45 = 141 I 224 L 13 г 23 ю 46 J 210 М Id л 29 я 47 211 N 14 ж 30 0 80 10 212 О IS 3 31 1 81 213 р lb и 32 2 82 4-^4 216 ( 221 Во входном языке используются три навала вывода, каждый на которых задастся цифрой: канал 2 — вывод буквенно-цифровой информации ^перфоратор № 2 для последующего расшифровыва- ния на телетайпе, канал 3 — цифровой вывод на «узкую печать» (МП-16), канал 4 — буквенно-цифровой вывод па АЦПУ (см. стр. 472) В зависимости от канала, т. е. от выходного устройства, из- меняются формат и список объектов вывода Вся числовая информация выводится в десятичной системе счисления При выводе числовой информации формат может быть числовым или логическим, а объектами вывода — выражения или иденти- фикаторы массивов. При выводе текстовой информации объектами вывода являются текст или последовательность целых чисел со- гласно табл 11 Числовой формат при выводе по каналам 2 и 4 (на перфора- тор № 2 и АЦПУ) позволяет записать число в различной форме: с десятичным порядком или в виде десятичной дроби с различным числом разрядов для записи целой части и дробиой. Примеры чис- лового формата представлены в табл 12, Для вывода числовой информации по каналу 3 (МП-16) ис- пользуются два формата: формат vid — для вывода чисел целого зев
Таб iwifti /3 Чцслоййй формат ЧвслояоД формат PwjntiysT От —29,38 Розультзт лт М Каналы 2 ц 4 (телетайп и АЦПУ) 'Y3D' Не определен 004 'Z3D1 Не определен ^4 64 'У -1- 3D1 -029 ^0114 'Z4 3D _-29 V-4-64 lZ - - 3D' — —29 ^-64 'FJ 3jy. - 020. -МЖ. 'Z+3D D* 29 1 — 4-(И,0 *Y + 3D. 3D' -029,380 J-064.000 T4- 3DB. 3D1 —029— .380 -064000 ‘ЯЧ- 3D. 3Did2D' _^~2.938jd01 4-. 6401(4)2 'Я-г 3Dw2Zy - 293rX)2 4- 6401й02 29 ,— — — — — 64 'Yf —000000020 380000000 000000004.000000000 'Z' •£* -Лэ’зюойшГ .29380000011) 4-02 — _. 040000000и)4-02 Капал 3 (МП-16) ~ Т^Гооммодо- -^^29 т ^-^64 Все прочие число вые форматы —29380004-02 4-6400000—02 типа иди с округлением до целого, формат. —для вывода чисел в нормализованном виде с десятичным порядком- Пример 4 Напечатать зпачешля ниременяых <7=12,29, К = 14 в виде целых и действительных чпеоя Оператор Вывода для печати целых чисел имеет вид: OUTPUT (3/ (Г), С, К) формат печати на МП 161 T_u—л-—u- 52 ~j-, . „ , . . 14 Оператор вывода для печати действительных чисел имен ицд OUTPUT (3,'(£,), С, К) формат печати на МП 19. 4* 1229000 4- 02 4- 14000(10 4- 02 169
Логическая информация по копалу 3 выводится в падй едшшцы для значе- ний trno и нуля для false Примеры логического формата по каналам 2 п J представлены п табл, 13. 7’аблШ{а 13 Логическая формат Логический форми Pajyjtbiai от true Результат or false Каналы 2 и 4 (телетайп и АЦПУ) '£5F' TRUE — FALSE w Т F — тлия^ ~ ~ FALSE Канал 3 (МП-16) Любой яогичв- свий формат । + ! Вывод текста осуществляется по каналам 3 л 4, При этом тексто- вым объектом вывода может быть либо строка букв латинского * алфавита, заключенная в кавычки, либо переменная с индексами. В последнем случае переменная указывает на элемент массива, начиная с которого располагаются целые числа, соответствующие символам выводимой строки согласно табл. 11 Выводимая строка может содержать и прописные буквы русского алфавнта Русский текст внутри строки заключается в комбинации, символов -Ь) и —). Например, OUTPUT (4’, (Т), ’(-г) Иванов—)’ ), Длина выводимой строки и интервалы между отдельными словами уста- навливаются с помощью специальных комбинаций <;:/» — перевод строки л «:В» — пропуск. Пример 5. Напечатать строку символов «КОЕГ OF FUGACITY#. Оператор вывода имеет вид: OUTPUT^ ’(T,)’,(:/KOEF.B OF: в FUGACITY')) Процедура TEXT. Оператор TEXT имеет два фактических параметра: первый фактический параметр — строка символов, второй — переменная с индексом: TEXT (<строка>( (переменная с цидексоиу) При выполнении этого оператора происходит присваивание целых чисел, соответствующих влемептам строки согласно табл. II, элементам массива начиная с элемента, указанного в качестве второго фактического параметра. Например, оператор TEXT (-УуПРОГРАММА —), А [1]) означает, что массиву А, начиная с элемента XJ/j, необходимо присвоить целые числа, соответствующие буквам”!} слове «ПРО- ГРАММА^. Этот оператор может быть попользован также и для за- дания числового формата. 170
Процедура в .машинном коде. Отдельные подпрограммы могут быть составлены с учетом специальных правил в машинном кодам '/£ записаны в БОН транслятора. Обращение к таким подпрограммам производится с помощью оператора LIBRARY «помер под- программы >). Номер подпрограмме присваивается программистом ;. 7^ при составлении последней п должен находиться в диапазоне от . 100а До 224в. Подпрограмма в машинном коде является только’ . / содержанием процедуры, Поэтому, как и при составлении любой процедуры, необходимо дать ее описание, т, е- заголовок со сие-’; ’fxF цификацией всех формальных параметров, п содержание. Только в качестве содержания этой процедуры будет использоваться под*. программа со своим номером. Обращение к процедуре в машин- ном Коде производится, как обычно, с помощью оператора проце- 4 Дури. Пример В Записать программу с пспоаиованайм процедуры в машинном коде , 7н "$• Программа begin real procedure ЛВС (I, А), real f, А, ‘"и LIBRARY (’320’). < а: = Ь: - 1,0; ЛВС (а,Ъ) . 7 end Процедура останова Выполнение процедуры останова пркво- дит к останову машины и высвечиванию в сумматоре значения вы- ражения, указанного в качестве фактического параметра. Напри- мер, STOP (Р), где Р — выражение. Обычно машина останавли- ; вается после выполнения последнего оператора программы, если й? ие является оператором перехода. Если же нужно прекратись вычисления после выполнения некоторого оператора в середине \ программы, то за ним следует: поставить оператор остановам При нажатии кнопки «пуск» вычисления будут продолжены. Процедуры, линейной алгебры. В транслятор включены в ка- “ честве стандартных следующие процедуры дли выполнения опера- ций, линейной алгебры обращение матрицы методом Ершова СП1 [24]; вычисление определителя СП2; улшожение матриц СПЗ. Аргументами этих процедур являются двумерные действи- тельные массивы. Обращение к с.гаядартным процедурам осуществляется как обычно, т. с. при помощи идентификатора процедуры и [списка фактических параметров Первым фактическим параметром всех процедур является но- мер соответствующей стандартной подпрограммы, остальные пара- метры определяются характером выполняемой матричной опера- 171
дни. Оператор процодуры обращения матрицы в качестве осталь- ных кара метров содержит порядок и идентификатор массива. Прсмср 7. Составить программу обращения матрицы Л 10 го поряд- ка с выводом результата па МП-10 Программа begin array Л [1:10, 1110], INPUT (М).; (1 ДО, Л): : OUTPUT (3/ IE’) >1) end После вы полиен пи программы обратная матрица будет иа мес- те исходной, Таким образом, первоначал ьпая матраца не сохра- няется. Процедура вычисления определителя также не сохраняет пер- воначальную матрицу. В список фактических параметров опера- тора вносится еще один параметр, которому присваивается значе- ние определителя Пример 8 Составить программу вычисления определителя матрицы А 10-го лорядка с вводом походной матрицы сфотоннода и выводом розуль- тате на МП-16 Программа / begin real р array Я [1.10,1:10]. INPUT (1,Л); ST (2,40, Л, р). OUTPUT (ЗГ (2з”). р) end Оператор процедуры умножения матриц в качестве фактических параметров содержит количество строк, столбцов натрнцы-мио- жпмого, количество столбцов матрпцы-м но жителя, идентификато- ры исходных матриц и идентификатор матрицы результата Пример 9 Составить программу умножения матриц Я размерности 10X5 П В реамерпости 5X4 Программа heg<n array Я |1:10,1:5], В [1 5, 1 4], С [1 10. М], INPUT (1, Л, В),- SP (3. 10, 5, 4, Л, Б, С); output (з; (/?,'), с) end
ЧАСТЬ ТРЕТЬЯ ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ Глава VII ОБЩИЕ ЗАМЕЧАНИЯ О ТОЧНОСТИ ВЫЧИСЛЕНИИ Большинство практических июкеаериых и научных задач не имеет аналитического решения, т е Конечные результаты реше- ния задачи нельзя получить н виде формулы или набора формул, В таких случаях применяются методы вычислительной математи- ки — численные методы, позволяющие найтп решение в виде числа или набора чисел. Реализация численных методов требует выполнения больших объемов вычислений, поэтому применение этих методов возможно лишь нри использования цифровых вычислительных машин. Одной из основных проблем) с которыми приходится сталки- ваться при решении задач численными методами, является проб- лема оцеики' точности получаемого решения. Численное решение любой, задачи пе может быть выполнено абсолютно точно, посколь- ку в процессе действий над числами могут возникать и накапли- ваться ошибки вычислений Эти ошибки, с одной стороны, свя- заны с конечной точностью представления чисел в вычислительном устройстве, а с другой стороны — могут накапливаться в резуль- тате выполнения последовательности арифметических операций, В качестве примера рассмотрим следующую систему уравнений ^2 = «А — Ь, А = ахъ — 6, (7—1) ч ч О!„ — ДЖ»-! — Ь, которая определяет значение величины в зависимости от xt. Пусть разрядная сетка ЦВМ позволяет представлять числа ие более чем с восемью десятичными разрядами, м пусть требуется пайти аначенпе з:1С для а = Ь ~ 10 и = 10/9, Для ладанной точ- ности представления чвеел значение г, запишется так;= = 1,1111111. 173
Дальнейшие вычислении с учетом конечной точности представ- ления промежуточных результатов вычислений иллюстрируются ниже (10) (1,1111111) - 10 => 1,1111110 ха (Ю) (1, 1111110)— 10 » 1,1111100 х4 = (10) (1,1111100) — 10 =1 1,1111000 r6 = (10) (1,1111000) — 10 «= 1,1110000 х0 (10) (1,1110000) - 10 «= 1,1100000 Х1 = (10) (1,1100000) — 10 1,1000000 х9 ® (10) (1,1000000) — 10 = 1,0000000 Хд = (10) (1,0000000) — 10 = 0,0000000 №о = (10) (0,0000000) - 10 = - 10tOMOOO Нетрудно показать, что при другой точности представления чисел в ЦВМ результат проведенных вычислений оказался бы другим. Например, если числа в ЦВМ ^представляются нитью десятичными разрядами, то приведенная выше последовательность вычислении выглядела бы следующим образом ‘•‘•'J' ' ^ — 10/9 = 1,1111 1”' лз = (10) (1,1111) — 10 = 1,1110 = (10) (1 j 110) — 10 = 1,1100 х4=* (10) (1,1100) - 10 = 1,1000 хв = (10) (1,10ОО) - 10 « 1,0000 Хв = (10) (1,0000) — 10 — 0,0000 X, = (10) (0,М0О) — 10 — —10,000 Хй = (Ю) (— 10,000) -Ю= -110,0 хв = (10) (- 110,00) — 10 = -1110,0 х10 = (10) (-1110,0) — 10 = — 1Ц10 Правильный ответ для приведенной выше задачи будет xi0 = = 10/9 = 1,1111111, и получить его по указанной схеме вычисле ний можно только при достаточной точности представления чисел в ЦВМ. В рассмотренном случае нетрудно получить решение задачи в аналитическом виде а”*1 — 1 хп = а"*1#! — Ъ (7—2) Посмотрим, к каким результатам приведет использование этой формулы вместо прямого расчета по уравнениям, если числа по-прежнему представляются восемью десятичными разрядами.Под- ставляя в формулу заданные численные значении величин, получим ж1в = (10)’ (1,1111111) - (10) ((10)’ - 1)/(10-1). Посконьку числа представляются только восемью разрядами, в результате вычисления выражения (10)й — 1 будет прлучоко (10)’- 1.0000000- (10)’, т. е. вычитаемая единица будет потеряна, 174
Дайсе будет получено: х10 = (10)«(1(1111Ш) - 10)10/(9,0000000) = (10)« (1,1111111) - - (10)° (1,1111111) - 0,0000000. ' Таким образом, получен еще один результат решения, теките . отличающийся от правильного- Теперь путем несложных преобразований приведем формулу : аналитического решения а виду тп = (ап-1 — 1) (я?1 — bl (а — 1)) + хА. (7—3) Выполняя по этой формуле вычисления также с ограниченным восемью десятичными знаками представлением чисел, найдем = ((10)» - 1) (1,1111111) — (10)7(10—1)) -Ь 1,1111111 = « (10)» (1,1111111 - 1,1111111) + 1,1111111 = 1,1111111. Итак, в последнем случае в результате вычислений получено правильное значение величины х10. Из приведенного выше примера видно, что сам вычислитель- ный процесс может привести к появлению существенных погреш- ностей в конечных результатах. Но ошибки также могут возник- г путь и при использовании точных аналитических выражений, веди последние представлены в неудачной форме. Нетрудно заметить различие двух приведенных выше формул аналитического решения системы уравнений Оно заключается в том, что если в первой из них окончательный результат находится как разность болыпцх чисел, то во второй — решение определяется как результат сум- ' мпроваиия относительно малых величин. Таким образом, при использовании численных методов всегда необходимо иметь четкое представление о возможных ошибках в вычислительных процессах и иметь возможность их оценки, т. з> уметь провести аналие ошибок. Для анализа ошибок в вычислениях наиболее часто используются два способа, Первый ив них называется способ оценки чувствитель- ности результатов, второй — способ вычисления ошибки. Способ оценки чувствительности результатов используется для сложных расчетов и пе требует специальных вычислительных алгоритмов. Сущность его состоит в том, что решение задачи по- вторяется с несколько измененными значениями числовых парамет- ров, и получаемые решения сравниваются между собой. Изменения числовых параметров задаются, как правило, н днаиаэопо возможных ошибок их определения-Например, если од- ним из параметров исходных уравнений является температура t и ее измерение производится с точностью до 0,5° С, то решение задачи может быть повторено для температур i-j-0,5 и (—0,5, Часто достаточно повторить решение только для одностороннего изменения параметра, например для t-j-0,5 или t—0,5. ' 175
Способ оценки чувствительности результатов наряду с до- стоинствами (пе требуется специальных: программ) обладает рядом недостатков Одним из них является необходимость многократного повторения решения, т. е. время решения задачи существенно увеличивается, в особенности если количество числовых парамет- ров вадачи велико. Другим недостатком является то, что етот способ позволяет только установить возможность ошибки, по не указывает путей к ее уменьшению Способ вычисления ошибки позволяет определить возможную ошибку конечных результатов расчета, причем в процессе вычис- ления ошибки обнаруживаются этапы вычислительного процесса, реализация которых дает наибольшие погрешности. В основа этого способа лежит анализ распространения ошибок, т. е< анализ того, как ошибка, возникающая иа определенном этапе вычислений, распространяется дальше, становится ли ее длианне больше пли меньше на точность результатов последую- щих операций Однако основным недостатком этого способа яв- ляется необходимость составлении специальных алгоритмов и Программ для определения ошибок на каждом этапе вычислений, что для сложных задач может представить определенный трудности. Поэтому способ вычисления ошибки попользуется в основном для более простых расчетов. При анализе распространения ошибок используются понятия абсолютных и относительных ошибок, которые определяются сле- дующим образом Абсолютная ошибка Ат есть разность между истинным значе- нием келнчины 2, которое считается известным, и ее приближен- ным значением х Ах = Я — х, (7—4) Относительная ошибка определяется как отношение абсолют- ной ошибки в определении величины я: к ее точному значению Поскольку в практических расчетах абсолютная ошибка не может быть велика по сравнению со значением величины г, отно- сительную ошибку часто определяют как отношение абсолютной ошибки к приближенному значению Ж, т о (7—5) С использованием понятий абсолютных в относительных оши- бок можпо получить основные соотношения, позволяющие опреде- лять ошпбкн резупьтатов выполнения различных вычислитель- ных действий, т в производить анализ распрострапапия ошибок. В табл. 14 приведены формулы для вычисления абсолютных и относительных ошибок резупьтатов арифметических действий с двумя величинами zx п 176
Та(>лигра 14 Операции Ошибки р&зулыатв пОсолкггалл откоедтелънац Сложение у = Xi Ч* \ = Ч- д* хх , *а еи=sx( Вцчптаипа у == Xi — хй Д V “ ~ XI ХЯ SW — У 8Л1- у *Х, Ум вожен не у = a-j.j4 Ду = -|г хз Дх, " % + Деление у = Xi/a-з % = При использовании формул, приведенных я табл 14, необхо- димо иметь в виду, что знак ошибки известен лишь в очень редних случаях. Поэтому лй следует считать, что при сложения и умно- жении ошибка обязательно увеличивается, а при вычитании, де- лении — уменьшается, н наоборот, если ошибки имеют разные апаки» В практических расчетах обычно принимается паихудшиЙ на- риант (оценивается максимально возможная ошибка для каждого из результатов вычислений). При этом предполагается, что все ошибки всегда положительны, т. е. берутся ио абсолютной ве- личине, а в формулах, приведенных в табл. 14. знак минус заме- няется па нлгос. Поскольку любые вычисления на ЦВМ сводятся к последова- тельности четырех элементарных арифметических действий, при- веденные выше формулы могут служить основой для расчета конечной ошибки любого результата вычислений но заданным ошиб- кам исходных параметров задачи и ошибкам, обусловленным ко- нечной точностью представления чисел в машине Однако при- анализе распространения ошибок не всегда целесообразно исполь- зовать столь детальную схему расчета ошибки, основанную на вычислении ошибок элементарных арифметических действий. Иногда целесообразно на некоторых этапах расчета использовать способ оценки чувствительности результатов, который при опре- деленных условиях поаволяет получить количественную оценну ошибки целого этапа. Предположим, что в процессе вычисления величины у исполь- зуется выражение У f («ь а?8) (7-Ь) Тогда, если известны абсолютные ошибки л задании значений величин $1 и х2, возможную абсолютную ошибку в расчете зна- чения у можно вычислить по формуле д»=й?д’.+^д- р-’) 177
Для вычисления черва относительные ошибки йрннбдйнпбя формула может быть представлена так: Ev = _^"(^®^‘ (7~8) Нетрудно проверить, что иа соотношений (7—7) н (7—8) непосредственно следуют все формулы, приведенные в табл. 114. Например, для операции деления имеем выражения у = дЦд.т^ = 17а?3, 6//fo2 = — а:4/х|» подстановкой которых в формулы (7—7) и (7—8) помучим значе- ния ошибок Ди « АХ1/ла — А**х/а& eu “ <xi — е*. (7“9) Для выведения ошибок по формулам (7—7) и (7—8) необ- ходимо аиать значения производных с?//^ п djtdx^ Практически ати п роие в одиые также определяются численными методами, т. е. вычислением приращения величины у при достаточно малом из- менении величин и Обычно приращения х{ еадают равными их абсолютной ошибке, что позволяет предоставить формулу для оценки абсолютной ошибки прн вычислении величины у в виде Aw == | AWl#l| -|- | Ay,jJ, где Ay Ду, — приращения величины у при иаменении ана- чепиЙ ад л я2 па величины их абсолютных ошибок. Приведенные выше формулы для оценки ошибок вычисления сложных выражений могут быть также распространены и иа слу- чай произвольного числа аргументов функциональной зависимости. Например, ирн вычислении выражения у — / (жр гц,) макси- мальная абсолютная ошибка может быть оцекепа как Л Д,= 2#Ч|. Р-Ю) ъ=1 1 I а относительная как е" ” V 3 | Д zie^i (7—11) В заключение рассмотрим порядок оценки ошибки в случае системы уравнений (7—4). Очевидно, что для представления чисел в машике восьмью десятичными разрядами, значение л?А = 10/9, записанное как xt = 1,111111, имеет абсолютную ошибку, ве- личина которой не превышает двух единиц первого отбрасываемого разряда, т. е. можно принять, что Дх, = 2-10’*. Допустим, что значения А и В в уравнениях заданы абсолютно точно, тогда рас- пространение ошибки в процессе вычислений можно будет пр осле- 178
дить с применением формул оценки ошибки при умпошеняи еле* ' дующим образом: Д*, = Дх, = -А^Ддп л„, = Л"^ДЛ. Для принятых численных значений тогда можно найти: ДЧ1* = 10s* 2* 10“8 = 20,0. Поскольку в результате вычислений -было найдено z10 = —10,000000, «точное» значение следует определить как лг1е = х10 -г Д<м = —Ю>0± 20.0, т, е. искомый результат заключен в интервале —ЗО,О^л:1О 10,0. Ясно, что □ результате оценки ошибки вычислений сразу оп- ределяется, что рассчитанное значение Т|0 = —10,000000 с боль- шой долей вероятности является ошибочным. Таким образом, анализ ошибок прн использовании численных методов должен являться обяэательпойсоставяой частью решения любой задачи. Результаты этого анализа иногда могут оказать су- щестненное влияние па интерпретацию получаемых решений, как это было,нокаэаИо иа приведенном выше примере,, Поэтому зна- ние способов оценки ошибок в различных вычислительных алго- ритмах, как простых, так и сложных, является непременным усло- вием успешного выполнения расчетов иа вычислительных машинах. Пример 1 Для последовательной реакции А Р — В, протекающей в даотермическом реакторе идеального вытеснения, изменение концентрации продукта Р по длине реактора ари ki т= fa определяется уравнением (7-12) Найти зависимость относительной ошибки в определении х? как функцию ошибки в определении константы скорости реакции к в н ре манн пребывании т Решение Поскольку известно точно, обозначим / <*, т)вЯр/я^в /ггГЧ В соответствии с уравнением (7—10) можно записать Д, « Д< + Д* = Дт 4- (те’ь — тРке^) Д* = = ке~^ (1 — Н) Дт — (1 — JSrr) Д^. Умножим и разделим последнее равенство па къ Тогда получим ' » гЬ <* или д/ e/ = 'T"(i"^tei—Ег) 179
Пример 2 Выаисяигь относательиую погрешность в определении равновесной концентрации пара многокомпонентной смеси кок функцию по. грешности в задании состава жидкой фазы, если известно, что (7—14) Решение В соответствии с ураэненлем (7—11) отпоепгельвая ошиб ка выражается как Дифференцируй (7—14) ногу, для частных производных ду^Х/ можно аа писать У< ^-(i-yf) (М, я (7-16) Подставляя выражения (7—16) в (7—15), после соответствующих преоб- разований окоячательво можно зависать II 8vi= % 2 y/8jf (7-17) ^-1
Глава VIII УРАВНЕНИЯ G ОДНИМ НЕИЗВЕСТНЫМ Решение уравнении о одним неизвестным является весьма распространенной задачей в практике инженерных химико-техно- логических расчетов. Задачи такого рода возникают в расчетах При использовании од'нопарамегрических функциональных зави- симостей (определение плотности по уравнению Бенедикта—Веб- ба—Рубина), при расчетах стационарных условий иротекаякя процесса (определение времени пребывания реагентов прн заданной степени превращения), при расчетах ларо-жидкостного равнове- сия (расчет температуры кипения смеси заданного состава) и т. д. Уравнения с одним неизвестным часто возникают н при нахожде- нии решения систем уравнений с многими неизвестными (напри- мер, при расчете бинарной ректификации), при решении дифферен- циальных уравнений с граничными условиями (глава 12) и т. д Любое уравнение с одним неизвестным может быть записано в виде / (г) = 0. (8-1) где / (я;) — некоторая функция аргумента х Решение уравнения (8—1) заключается в том, чтобы найти та- кие значения аргумента г, прн подстановка которых оно обраща- лось бы в тождество. Эти значения независимой переменной на- зываются корнями уравнения Уравнения с одним неизвестным подразделяются иа два клас- са. алгебраические уравнения вида / (г) = дог" 4- 4-.. 4- 4- «к (8—2) и трансцендентные уравнения (тригонометрические, показатель- ные, логарифмические я др.). В общем случае задача отыскания норпей уравнения с одним неизвестным в аналитическом виде неразрешима. Поэтому прн ре- шении подобных уравнений численными методами речь может идти лишь о приближенном определении значений корней. При отыскания корней уравнения (8—1) численными методами приходится решать две задачи: отделение корпей, т. е. отыскание интервалов изменения аргу- мента, 8 каждом из которых заключен только один корень; уточнение (вычисление) корней с заданной точностью 181
1. Отделение корпей Трансцендентные уравнения. Отделение корней трансцендент- ных уравнений производится либо путем анализа функции / (я) и ее производных, либо путем графического построения зависи- мости у = / (я) В основе первого способа используется следующее положение. Если на концах некоторого интервала изменения аргумента х < Непрерывная и монотонная функция / (я) принимает различные знаки, то на рассматриваемом питервале существует действитель- ный корень уравнения (8—1) Таким образом, чтобы отделить все действительные корни уравнения (8—1), необходимо определить все интервалы моио- * трнностя функции / (ж). При этом в качестве признака мойотоп- цости функции можно пользоваться условием знакопостояяства производной Например, функция / (ж) = In (Аж) 4- ж, к 0 оп- : ределена только для положительных значений аргумента Ее производная f (ж) = 1/х Ч- 1 всюду положительная и, следов а- ' тельНо, / (ж) монотонная Кроме того, при ж -»• 0 / (ж) —> — со, а при ж = ilk, /(ж),— (1/Лг) 3> 0. Поэтому можно утверждать, что : » рассматриваемом случае уравнение /(ж) = In (Аж) Ч- ж = О имеет только один положительный корень, заключенный в интер- вале (0, 1//с). Другой способ отделений корней уравнения (8—1) заключается в том, что строится график функции и определяются точки его пересечения с осью абсцисс, которые с точностью построении графика соответствуют корням уравнения / (ж) =± 0. Иногда удобнее исходное уравнение (8—1) представить в лиде - <р (ж) = ф (ж) и затем, построив графики функций- у — <р (ж) и у —(ж), найти абсциссы их точек пересечения, которые и бу- дут приближенными значениями корней уравнения (8—1). г При решении инженерных задач' отделение корней и оценка . , начального приближения часто производятся исходя из фивиче- п оких соображений Например, прн определении плотности по урав- нению Бенедикта—Вебба—Рубила (см. стр 397) известно, что наименьший корень соответствует плотности паровой фазы, а иа- ' ибольпшй — плотности жидкости. у Задача отделения корней иногда облегчается тем, что коэф- фициенты аналитических зависимостей, используемых для опи- сания некоторых физических величин, определяются исходя из заранее фиксированного интервала изменения аргументов. По- < этому число корней и границы их расположения обычно известны. Например, зависимость давления лара чистого компонента от температуры часто описывается уравнением - Р = eC«-Vtc+f))t а коэффициенты и, Ь, с справедлипылншь для определенного пи тервала температур fam i блях, за пределами которого 182
вычисления по формуле приведут к неверным результатам. По- .. этому для вычисления температуры, соответствующей заданному . значению давления Р, в качества начального приближения нужно использовать значение температуры только из указанного интер- вала. Более точное начальное значение можно получить, если по- строить графики функций у = Р, у = и определить точку их пересечения (рис. 24). Рло 24 Отделение, корней 1ф[|ф11ШС1С1ВГ способом Алгебраические уравнение Методы, используемые для отделе- ния корней трансцендентных уравнений, могут применяться и длп алгебраических уравнений. Однако их эффективность можно повысить, если воспользоваться некоторыми свойствами много- членов, рассмотренными ниже. Многочлен с произвольными поэ{рфициентами. Одна из основных теорем алгебры (теорема Рйусса) гласит, что всякий многочлен, степень которого не меньше единицы, имеет хотя бы один корень (в общем случае комплексный) Это позволяет представить уравнение (8—2) в следующем виде: /(а?) = (я —.тО Tn-i(x)t где Фг._! (я) — многочлен степени п — 1 с действительными или комплексными коэффициентами, который в свою очередь может иметь корень х2. Следовательно, уравнение (8—2) можно пред- ставить как / (*) = (г — *1) (г — % -S (я), где фп_2 (лг) — многочлен степени на единицу меньше, чем Фп_! (г). Таким образом, после конечного числа шагов можно получить разложение уравнения (8—-2) в произведение к сомножителей, т. е. / (л) = (я — zj) (я — %)... (г - тп) - (8—3) Среди корней уравнения (8—2) могут быть и одинаковые. Например, уравнение х3 = 0 имеет корень х = 0 Однако, рас- сматривая процедуру разложения уравнения на произведения линейных сомножителей, можно утверждать, что уравнение z3 = 0 имеет три одинаковых корня, т. е. z2 — яа — 0.
Число ±; называется А-кратиым корнем уравнения (8—2), если это уравнение деются иа (дг — z;)* и не делится на (ж— х,)*+1- Следовательно, всякий многочлен / (z) степени ть (л 1) с любыми числовыми коэффициентами имеет п корней, если каждый ив них считать столько раз, какова его кратность Кратные корни определяют некоторые свойства многочлена / (z). Например, если xj является А-кратным корнем многочлена / (z), то при fc 1 xf будет (Дг — 1)-кратным корнем первой производной f\x); если же к = 1, го Z; не будет корлемр (z). Действительно, если — /д-кратный ьорепь, то /(«) — {х-х^(х). Тогда для производной имеем /' (z) = к (х — Zj)*-1 ср (х) 4- (х — (z) = (X — [&р (z) + (z — Xi) ср' (z)]. Отсюда следует, что/ (х) делится иа (z — Z;)^1, но не делится на (ж — я.’;)1*, так как xj пе является корнем полинома ф (х). Мкояочлгн с действительными коэффициентами в общем, с я у- чае может иметь как действительные, так и комплексные корни. Например, уравнение / (х) = z3— г4 4-х - 1 (х— 1) (ха 4-1) = О имеет один действительный корень rx 1 и два комплексных, тан как X3 4- 1 — (z — i)*(z 4, f). Для таких многочленов справедливы следующие утверждения, 1. Всякий многочлен с действительными коэффициентами может быть представлен в виде произведения линейных и квадра- тичных сомножителей, соответствующих действительным и комп- лексным корням. Многочлен разлагается на линейные множители тогда и только тогда, если все его корпи действительные, 2 Если — А-кратный комплексный корепь многочлена, то сопряженное с ним число такжо будет корнем этого уравнения той же кратности, поскольку квадратичные множители разрешимы в комплексных числах, 3 Всякий мпогодлон о действительными коэффициентами не- четной степени имеет хотя бы одни действительный корень. Дей- ствительно, если / (х) = Дц1п 4- djz""14- 4- а^х 4* дп Нечетный и afl > 0, то lira / (z) = 4- °°i Um / (г) = — oa, 4—«-j-On JC-*— 00 и, следовательно, в некоторой точке многочлен должен иметь ну- левое значение. В частности, если / (ж) на концах интервала (в, 5) 184
принимает значении разных знаков,то на этом интервале располо- жен но крайней мере один корень или в общем случае нечетное число корней (рис 25, а, 25, б) Если же па концах интервала (a, b) f (ж) принимает одинако- вые знаки, то на этом интервале либо вовсе пет действительных корней, либо имеется четное число корней, при этом кратный ко- рень считается столько раа( какова ого кратность (рис. 26,а, 26,6). 4. Между двумя корнями многочлена расположен по меныпей море один корень его производной. Это свойство следует непосред- ственно из теоремы Ролля для непрерывных функций [25]. 5 Число действительных корней уравнения с действительными коэффициентами имеет ту же четность, что и степень уравнения Например, уравнение четвертой степени может иметь четыре, два пли ни одного действительного корня, а уравнение пятой стенепи— пять, три или один корепь Число действительных корней алгебраического уравнения мож- но определить на основе теоремы Декарта, согласно которой число положительных корней уравнения f (л) с учетом краткости равно числу перемен знака в системе коэффициентов этого уравнения или меньше его на четное число (равные нулю коэффициенты не учитываются) [26]. Для оценки числа отрицательных корпей достаточно прице- пить теорему к уравнению / (—х) П р н не р 1 Определить число действитсиьшлх коршзй у ранне ни» f (я) «= - 9л -I- 1 = 0- (8—4) 185
f’-'.t'rty“?'• J'' X V'sft ’irfti •’ftЙ Lf,/ v*;;.‘L* W .:rX 1 ., -.- ' . 4r; 1 >’ ' ’ ’ . ’ '.' । -ft >' г ;S-: ’/: ft ft ,* ,: ‘ ь P .1 ' - - - / .. 1 • . ., * -p* Система коэффициентов уравнения имеет четыре шрвивяы ввака -М *—Л Ч"1, следовательно, возможное число цоложитоденьи корней мо- жет быть равным, четырем, двум илп нулю Парная производная J’ty = iar1 — Сх1 + бх — 0 = О содержит три . даремепы знака и может иметь трп или одры корень, прнчом один обязательно .!_' ' ' действительный, Поскольку число корней производной на единицу меньше ft. ^нсла корней исходного многочлена, то возможное число корней многочлена *"' может быть четыре или два. ft. Вторая производная /*(«) 12ж* — 12ж 4“ 0 = 0 пе имеет ни одного дай- - бтяктельного корня, поэтому нарвал производная пе может иметь три дей- ствительных корня, а походный многочлен не может иметь четыре корпя Таким образом, многочлен (8—4) имеет два положительных корня Для определения числа отрицательных кор ной пронанодем замену у —в / / М - И + V + Зр* + + 1 = 0 (8-5) j‘ Многочлен (8—5) не имеет ни одной перемены знака в системе коэффициентов V, -< и, следовательно, пе имеет отрицательных корней- Значит, многочлен (8—4) ft'“ цмеет два дсЙствнтсльиых кория п оба яоложнтелъвые t Для определения границ расположения корней можно восполь- зеваться методом Пыоюна (2J. Этот метод заключается в следую* £ “ \ щем, Если при х > а (« > 0) многочлен / (г) и все его производные ' - ноложителыш, то за верхнюю границу положительных корней Можно принять число а. Донааательство этого утверждения непосредственно следует ив разложения многочлена по степеням (ж — а) -ft /(«)-/,’W + Cx-aJ/'W+^^rw-l - + ft. При х^>а правая часть этого выражения положительна и не / 1 равна нулю. Поэтому а есть верхняя граница положительных кор- 'ft ней многочлена х. Если в исходном многочлене : /(я) = Оо»"Ч-й1Я”г1 Ч-- Ч-«п-1ЯЧ-дп = 0 (8—6) произвести замену х = 1/у^ то можно записать / (х) =9 (у), (8—7) где Ф(р) = адпЧ- <й-.1У"‘1Ч- * Ч-адЧ-во Пусть верхняя граница положительных корней многочлена (8—7) равпа величине Ъ. Тогда можно записать у = (1/х) <5. Следовательно, нижняя граница положительных корней исход- ного многочлена равна величине i/b. ]\ля определения грячиц расположения отрицательных корней ц исходном многочлене необходимо произвести вамепу у = —и у ~1/а; соответственно. 186
Разложение многочлена С действйтёЛьНймп Коэффициентами йй линейные сомножители вида (х — о) удобно производить по схеме Горнера Схема Горнера. В общем случае мноючлен (8—6) мощно пред- ставить в виде / (я) — (я — агх) ф (х) |- г, где ф (х) — частное от деления многочлена на лилейный даучлен, г — остаток, от де- лении Частное от деления, очевидно, будет многочленом (п — 1)-й степени* Тогда можно записать <р (г) == (х — ъД (b^i + + -г 6дЧ) -I- г или после раскрытия скобок и приведения подобных членов / (ж) + (i>j — x-fa) г11"14- (fc2 — btxx) атп~г + * т + (Vi — frn-axj x 4- г — (8—8) Сравнивая коэффициенты прп одинаковых степенях неизвестной в уравнениях (8—6) п (8—8), получим &Q — Од, bi = e, Ь (8—9) г - ап 4* Ьл-^i (t = 1, 2, **., — 1). Вычисление коэффициентов частного удобно располагать в виде следующей схемы (схемы Горнера) а» 01 at а£ % Si &i r-> «a-Ffri1! r "= an "b Схема Горнера может также использоваться для вычисления производных любого порядка от многочлена / (х). Действитель- но, разложение многочлена (8—6) в ряд Тейлора ио степеням (х я\) f&-t W + (г - «1) /' W + -Цг^.№) + • + можно переписать в виде /(т)^^-х1)ф1(х)4 /(я-i), где Ф1 W = /' (®1) + (F - 21)//’ М + • + -'"„l0- /^ (®1>- Отсюда следует, что /(^i) есть остаток от деления /(ж) на(аг —Xj), а Ф1(а:) — частное. В свою очередь Ф1 («) (х - xj) <р3 (х) 4- f (ил), 1S7
Гд6 tk i Ф2 w=i" w ь f" w + w- Танин образом, /'(^i) Gcrb остаток от делений фх(х) на (х — хг) На г-н шаге последовательного деления частного на (ж — Xj) получим (arj/fi — 1)! Применение схемы Горнера для оценки границ расположения корней многочленов имеет то достоинством, что если в процессе по- следовательного деления все коэффициенты некоторой строки бу- дут положительными., то деление можно прекратить, поскольку все последующие строки (т. е. производные более высокого поряд- ке) будут также положительными Пример 2, Для ^раввеаия (8—4) отделить положительные корни Р в ш о в п в. Разделим многочлен (8—4) на линейный двучлен (х—*1). Со- ставим псвму Горнера для = 3 1 -~2 3 -9 1 3 1 16 9 28 Следовательно, для многочлена (8—4) f (3) — 28 > 0 Посноаьку все коэф- фициенты строив положительные, то и вес производные также больше пуля Поэтому в качестве верхней границы положительных корней можно взять число’ 8. Для определения нижней границы положительных корней ироизведом замену х = 1/у: ср (у) = у* — 9р° 4-ЗУ1 — 2у 4-1 = О Разделим это уравнение па (у — 10) 1—9 3—2 1 10 1 1 13 128 1281 СлЕдоЬатольпо, в качестве ншкпен границы положительных норной мо- жет быть принята величина 0,1 1'дкпы образом, корни многочлена (8—4) расположены на лпторваио (0.1: 3) Для отыскания интервалов расположения каждого корня можно восполь- зоваться анализом эпока многочлена. Найдем знак многочлена (8—4) дня нескольких значащей а х = 0, j (х) > 0, х = 1, / (х) <Х 0; т = 2, / (х) < 0, х = 3, / (х) > 0. Поскольку выше было установлено, что многочлен (8—4) имеет только два положительных корня, из подученных результатов следует, что эти корни расположены на интервалах (0,1) л (2,3). 2 . Уточнение корней После того как найдено приближенное значение корпя иля определены границт»: его расположения, численными методами можно вычислить корень с любой степенью приближения к точ- ному значению Чпслеппые методы уточнения корней являются 188
йёТбДаМй ЗоСлбдйййтольных приближений, и рёШёНнем' буДе! значение, полученное как предел этой последовательности, В свя- зи с этим их эффективность характеризуется требованиями, на- кладываемыми на функцию (непрерывность, монотонность) и коли- чеством приближений, которое необходимо выполнить для полу- чения корпя с заданной точностью, Метпод деления отрезка пополам. Пусть непрорывная аа интер- вале (а, 6) функция / (ж) имеет на этом интервале одна действи- тельный корень х0 Очевидно, что при этом выполняется условие /(«)/(б)<0 (8—10) Разделим интервал (к, Ь) пополам и вычислим значение функ- ции в средней точке с ~ (д + Ь)/2. Если / (с) 0, т, е. точка с не является корнем уравнения, то в сплу непрерывности функция1 для одной из половиц интервала (к, Ь) будет выполняться условие (8—10) Обозначим этот интервал через (an 6t) (рис. 27) п найдем Ряс. £7. ^и^йчсаия нпгериретшдоя метода делиНпи отрезка полозах его среднюю точку, Анализ знака функции в этой точке позволяет выделить интервал- (о^, М, на концах которого функция прини- мает разные знаки, и т. д. Продолжая этот процесс, получим систему вложенных интер- валов (й[, &() (i == 1,2,л), обладающих тем свойством, что на концах каждого па них функция принимает разные знаки, а длина отрезка ] 6^ — ап | стремится к нулю при п -* оо, 'Поскольку левые концы, интервалов aL, а±, , образуют монотонную неубывающую последовательность, а правые-—^, &г, — монотонную невозрастающую последовательность н длина | Ьп — ап | стремится к пулю при п -> со, имеется предель- ная точка #й, которая и является корнем уравнения на интервале (о, Ь) Точность определения корня при этом определяется неравен- ством ОО.-МС1—-- (8—11) Метод деления отрезка пополам прост для реализации его на вычислительных машинах, однако обладает относительно невысо- кой скоростью сходимости и при вычислений корпя с высокой точ- ностью требует значительного объема вычислений Поэтому он 189
»?аЩв fleer й, йойрлАзуоТся для оНрвдйленкя Корией, т. 6. грубого поиска; для уточнении применяются более аффективные методы, Блок-схема алгоритма .уточнения корня уравнения у = / (^) 3 = 0 на интервале (а, Ь) методом деления отренка пополам приве- дена на рис 28 I Рио. 2Й. Вдицщхек» uropirraa уточпепна карие методом доле* инк отрезка ппподвм Метод секущих. Пусть уравнение / (я:) = О на интерна ле (о, Ь) имеет один корень Допустим, что / (а) 0, / (Ь) 0 (рпс^ 29). Запишем уравнение прямой, проходящей через точки (л, / (л)) ’ и (1>, / (Ь)) д _ _/(»)—/(«) i —д /(*) —/(а) Полагая у — 0, найдем точку пересечения этой прямой с осью абсцисс: А=«-------»)• (8—12) Вычисляя значение /(д^), можно принять точку эа новую левую нлн правую (в эависимости от знака / (х2)) границу сокра- щенного интервала, после чего но формуле (8—12) повторить вы- числения для ^2- Для фуинции, представленной на рне. 29, х2 pso 29 Грвфм'мекея жтлюотрацпя И ст од секущих будет соответствовать точке пересечения прямой, проходящей черев точки (.т1( / fo)) и (Ь, / (&)) Процедура вычислений аналогич- ным образом повторяется для х8) з:* и т. д. 100
Кав следует из геометрического построения, последователь- ность получаемых значений имеет своим продолом величину л0, т. е. значение корпя уравнения / (а) = О При реализации метода секущих на ЦВМ степень приближения последовательных значений к значению корня х0 обычно оце- нивается выражением |яЧн —»d<e. если в — заданная точность вычислений. Метод секущих обладает достаточно быстрой сходимостью в особенности для функций, имеющих небольшую кривизну. Блок-схема метода секущих для уточнения корня уравнения у (я) = 0 приведена на рис 30. Метод касательных {метод Ньютона) Пусть / (я) иа интер- вале (л, Ь) имеет простой корень, a f {х) и. f {х) б» т. 0- в ин- тервале (а, Ь) первая и вторая производные функции / (г) сохра- няют постоянные знаки. P”e. 3f. Графическая иитерпрвта цнл метода касательных Обозначим через х1 ту из граничных точек интервала, для ко- торой знак / (з) совпадает со вилком f (ж) (рнс. 31), н запишем уравнение касательной, проходящей через эту точку у — / (Xj) = = f (xi) — #i)< Полагая у — 0, а х = жг, для абсциссы точки пересечения касательной с осью % можно записать = Oi). (8-13) 191
Используя Zq в качестве следующего приближении, для х, будем иметь zn *= т2 — / (яа)//' (я?я) и т. д Последовательность точек ®t, яа, является монотонной ограниченной йосле- довательностью, сходящейся при оо ь точке гс — 'корню уравнения / (г) = 0. Таким образом, расчетное уравнение метода Ньютона имеет вид Я4+х = (с{ - / (x()/f fa). (8-14) Если за начальное приближение выбрать точку = Ь, для которой знак функции ие совпадает со знаком второй произ- водной, то, проведя касательную через эту точку fa, / fa)), можно получить в качестве следующего приближения значение аргумента, расположенное за пределами интервала (a, 6), и может случиться, что процесс не будет сходящимся. Для оценки скорости сходимости решения по методу Ньютона рассмотрим итеративный .метод вычисления квадратного корня х У~А Составим функцию / (ж) — а? — 4, график которой представ- лен на рис. 32 Функция / (ж) определена па интервале (— оо, Рпс 31 Спон-схем а алгоритма утСчМсЛПн корня методом касательных -Ь оо) Поскольку / Сет») = — А, f fa) = 2rft, с учетом (8—14) получим Хп« “ Хп 2Г~ или хл-г1= 4* (8—15) ** \ 47 л / Для оценки скорости сходимости итерационного процесса пред- положим, что значение корня известно с точностью еМ1 т. е г„ = Л'л[Ч е„] 102
Тогда следующее приближение, полученное по формуле (8— 15), будет равно (fl \ 1 + "2“14?е у ' откуда погрешность для aft+1 определится как в,.*,=4- £ t1+е^л ~ -М (8~16) Таким образом, метод обладает квадратичной сходимостью. Блок- схема алгоритма расчета по методу Ньютона представлена на рис. 33. Если функция / (я) не имеет аналитического выражения для производной, то с использованием консчпо-разностпого представ- ления проиаводной метод касательных сводится по существу к методу секущих Действительно, для производной моишо записать (®i — хи) Тогда уравнение (8—13) запишется в виде t (л \ (3 t — Ж^). (8-17) Метод простой итерации,. Одним из распространенных ыето1- дов уточнения корней уравнений при решении задач химической технологии является итерационный метод, или метод последователь- ных приближений. Пусть / (г) на отрезке (д( й) непрерывна, диф- ференцируема н имеет единственный корень. Задаваясь некоторым начальным приближением корня (й хх 5), с помощью рекуррентного соотношения хп = <р(дсп_|) (8—18) построим поел едона тел ьпооть точек Жц ..., сходящуюся к корню уравнения х Сходимость этой последовательности обеспечивается соответствующим выбором функции ф (ж) и началь- ного приближения Функция ф (г) обычно выбирается так, что корень уравнения / (а:) является корпем уравнения х =* (р (г), В общем случае уравнение /(«)== 0 может быть представлено в виде = (х) —О (8—19) или в видо системы уравнений У = g ty, Очевидно, решением уравнения f (х) — Q будет точка пересечения графиков функции g (х) и II (а:). (8-20) 7 в В КЛфОДОВ п др 193
Puc. as Пуеть згх — начальное приближение корня / (ж). Тогда после- дующее приближения йъ, xs, .., ха могут быть определены следую- щим образом (рис. 34). Из уравнения у == g (ж) при х » art рас- считывается значение уг (ордината точки пересечения прямой я с и графика функции у = g (ж)) Далее, решая второе урав- нение системы (8—20) относительно х, х = hly) для у — ух, оп- ределим значение (абсциссу точки пересечения прямой у = уг с.графиком функции у = Я (д;)), т в. новое приближение корня уравнения, которое, как-следует нз рис, 34, расположено блпжо к точному значению корня j = а.о Принимая за новое значение корня, аналогичным образом вычислим а:а и т. д. Рассмотренный процесс вычислений продолжается до тех пор, пока приближения аг„ и яп-х не будут отличаться на величи- ну &Се, где е— задапнан точность определения корня. Можно показать, что условно сходимости вычислительного процесса заключается в том, что абсолютное значение тангенса угла наклона касательной кривой у = g (г) должно быть меньше абсолютного значения тангенса угла наклона касательной к кри- вой у — JS (х), т, с. ig'WI^ < |Я' (*)U=o, (8-21) При [ g* (a?) I ^> | Н‘ (г) [ процесс решения будет расходящимся (рис 35). Если тангенс угла наклона касательной, к g (ж) намного 191
меньше, чем к Е (л:), вычислительный процесс будет обладать высокой скоростью сходимости, На рис 34 представлен случай, когда производные g* (а;) п Н1 (ж) имеют одинаковые знаки. В этом случае решение полу- чается в виде лестницы, отупеют которой фиксируют очередное приближение. В том случав, если производные имеют противопо- ложные знаки, то точки пересечения сближаются по прямоуголъ ной спирали и последующие приближения, чередуясь, становятся то больше, то меньше корня х = х9 (рис 36), Общим правилом при выборе функции у — II (аг) является следующее: из двух функций, разность которых определяет ис- ходную функцию / (ж), согласно уравнению (8—21) в функции Н (я) следует брать ту, которая н точке л = панболыную производную Если уравнение (8—18) можно представить в виде двух, уравнений ’ Л*Ч>(4 , И ®, качестве лг0 имеет системы (8-22) то условие сходимости вычислительного процесса (8—21) прн этом записывается так |ф'И1<1 (8—23) При 0< гр' (^) < 1 итерационный процесс имеет вид лестни- цы (рис 37, а), а прн —1 ф' (а:) < 0 — вид спирали (рис. 37,6) Слсдуе! заметит!,, что метод итерации при выполнении условия (8—21) сходится при любом выборе начального приближения из интервала определенности функции. Благодаря этому он яв- ляется самоисправляющимся, т, е отдельные ошибки нрн вычис- лениях, не выводящие за пределы определения функции, не при- водят к искажению конечных результатов, так как этн ошибки будут восприниматься как новые начальные приближения Это свойство метода итерации делает его одним из пэдежпвйших мето дон решения. Рив. 37 195 7*
Условие окончания вычислйтельнбго прбцесба, ДсУгдрбй йаЮйб- чаетсй в том, чтобы два последующих приближения не отличались по-абсолютной величине более чем на в (е — точность вычислений), является только необходимым, то ие всегда достаточным, в осо- бенности, если ф* (ж) близко к единице, В атом случае величина | — Яц| может быть большой, хотя величина — жп_а | весьма мала (рис 38). Расчет температурного режима реактора Пусть в реакторе идеального смешения протенает реакция типа скорости стадии реакции определяются уравнениями ri = /ч’^л — а-МЙГ) хА, га — кл л'р — к2са e~E*KR<T* хр, где Л» — частотный фактор реакции; Е — энергия активации реакции; х — концентрация реагентов. Определим температуру, при которой концентрация продуктаР на выходе реактора в стадионе рвом режиме работы имеет макси- мальное значение, если среднее время пребывания реагентов в аппарате т известно Концентрация продукта Р на выходе реактора определяется выражением о с R — Xp—xA , где зга —> концентрация реагента А иа входе реактора. Вычис- ляя производную dzr/dT и приравнивай ее к пулю, можно полу- чить уравнение / (Г) = (1 -} т&5) - Е2хк, (1 -J- т/С1) = 0, (8-24) определяющее температуру, максимизирующую концентра- цию X}. 193
к Sl —, к» к »» ,*' ‘ ' * . Т , 'Ч* J il • , /?' J I I ,' J , 4 1» 1 * X к (/' „ , ’ > 1. > <м. : - j - - ( ' - г ’ 1 • . - J Рассмотрим программу решения уравнения (8—24) методой деления отрезка пополам. Программа состоит из процедуры-функции для вычисления правой части уравнения (8—24) (real procedure F (Х)) и процедуры метода деления отрезка пополам -(procedure HALF EPSt X)), Формальным параметром процедуры-функции является текущее значение аргумента X, Формальными параметрами про- цедуры HALF явлщотся: нижняя А и верхняя границы располо- жения корня, идентификатор процедуры-функции F для вычисле- ния правой частп уравнения (8—24), EPS — точность определения корня, X — выходной, параметр процедуры — решение. При обращении к процедуре HALF сначала вычисляются зна- чения функции в граничных точках и если они совпадают до знаку, то корня на данном отрезке иет и управление передается •BEGIN’ •REAL»K1 ,К2»В1 .Ea.TAV.B.T.A.BtEPS.* ’HEAL» ‘PfiOOEIXJRB’FCX)., •KBAL’X.» F:«1/(TAUJ»K2xEn>(-E2/(KxX)))+1.0-E2/Blx(1.0frTAWKlXJXp(-]rt /(RxX)))., •PROOEDTO’rtALF(AlB,F»BPSlX)., 'ШШВ'А'В'ДОЬ.' • NEAL’A,В,EPStX. t • REAL.' ‘PROCEDURE1?., •BEGIN» •REAL*Y.( Y:=F(A)XkF(B).( •IF»SIGN(Y)=SIGN(EPS)’THEN’'GOTO'OUT-, REPEAT:X:=(A+B)/2.0., Yt=F(X)., »IF»SIGJrC Y) =SIGN (F С A) )»ЮТ* A :=X< ELSE'»IF»SIGN (Y)=0 ’ THE K' 'GOTO*FIN»ELSE»B:«XM 'IF'ABS(A-B) 'GT'EPS'THEN* * GOTO* REPEAT., FIN l •END'., INPOTd.KI.Ka^.EadAU.R.A^^EPS)., HAUCA.B.F.EPS,®)., OUTFUT(3|’(E< ),T)M OUTt • END* 167
пустому оператору OUT, Циклическая часть алгоритма метода половинного деления начинается с метки REPEAT, где вычис- ляются среднее значение аргумента, соответствующее ему зна- чение функции, определяется знак фушеции и изменяется отрезок расположения корня, Эта часть программы повторяется до тех пор, пока длила отрезка превышает заданную точность вычис- лений Для реакции, кинетические параметры которой (Т) » __ 2--5DR &>Г11> = 820 е г , лмнГ1: fc2 (Г) — 672-Юпе т , ленк**1; т = 1 лин, оптимальное значение температуры, найденное с использованием описанной программы, составляет величину Т =• 236,1589’' К, Расчет аппарата однократного испарения Жидкость, состоящая из п компонентов с концентрациями ...» жп, поступает в количестве Е в теплообменник, где час- тично испаряется, н результате чего получается паровой поток Vjr соотевА и поток жидкости LF состава (рис, 39). Рис, Схема потоков в реитифпкаццопвой колшнгс Требуется для заданного количества пара Рр определить тем- пературу Т, до которой необходимо пагреть жидкость, я составы пара у, я жидкости z,. Пусть смесь компонентов удовлетворяет закопай идеальных см&сой. Для стационарного состояния справедливы следующие покомпонентные уравнения материального баланса* «= VFy, -\'-LFxl (i = 1,2, , n)t (8—25) где p, = Ki = Ki (T) — константа фазового равновесия Уравнение (8—12) можпо также записать в виде PxFl = Vlfyi \-Lr(yjKi) (1М,2,. ,л). (8—20) Отсюда 198
Суммируя обо части уравнения (8—26) по всем компонентам, можно также получить n Fip I = 3-----к &-2Т1 (-1 ??+-?- Л{ илп Л ^F. /m-i-з—Z7- г?+х Для решения уравнения (8—27) необходимо знать вависн- мость констант фазового равновесия от температуры, дпвлепия и состава, В общем случае эта зависимость определяется с исполь- зованием коэффициентов активности компонентов в растворе 18], Еслп исходить из предположении, что смесь удовлетворяет законам идеальных смесей, то можно использовать более простое выражение К = (рЦТ))/Р, (8-28) где Р — давление в системе, атм; Р° — давление паров чистого компонента, зависимость которого от теХшературьт может быть выражена уравнением Р° СП = ехр (4ц ( A2i!T Н 43iT + A4i In (Г)), amu (8—29) При задании величин потоков в уравшмшп (8—27) необходимо также принимать во внимание уравнение общего баланса F = “= Ер -|- Vf. В программе расчета аппарата однократного испарения для решения уравнения (8—27) используется формула (8—17) Расчет температуры подогрева жидкости Т и состава равповес- пых фаз х п у оформлен в виде процедуры FEED. Формальными параметрами процедуры являются; N — число компонентов си- стемы; F и ХЕ — количество и состав исходной смеси; VF — ко*ти- чество паровой фазы; X, У, Т — выходные параметры — состав пара, состав жидкости и температура; значения величин F\ VF п массива XF задаются в исходной информации, В процедуре ис- пользуются также глобальные переменные, которые необходимо задавать 41, 42, 43, 4.4 — массивы ковффициентон уравнения для расчета констант фазового равновесия, EPS — точность расчета температуры, Т — начальное значение температуры Коэффициенты 41, 42, 4.3, 44 для каждого компонента опреде- ляются по экспериментальным данным Р — Г с по пользованием программы метода наименьших квадратов (стр. 338), Программа выполняется следующим образом Вводятся исход- ные данные и производится обращение к процедуре 1&3
ii,.. - При обращении п процедуре переменлап Z полагается ранной :f“. единице, определяется количество жидкой, фазы LF и с метки lf. . START начинается цикл по уточнению температуры и расчету составов, }При начальном значении температуры Т по уравнению (8—26) !' . определяется количество каждого из номпопептов смеси в паровой 'ГУ'' фазе, по уравнению (8—25) вычисляются концентрации жидкости ।" и подсчитываются суммы концентраций компонентов для каждой из фаз,' | Бели суммы концентрации не отличаются от единицы с задан- V ион точностью EPS, то расчет закончен и управление передастся л - оператору с меткой FINISH, а в противном случае Производится I) ' уточнение температуры. » Для того чтобы воспользоваться методом секущих, необхо- £ димо иметь значения функции прп двух температурах. Расчет ч первой точки выполняется с Z = 0. При этом, значения функции • /(Ли температуры присваиваются переменным SUMYO и •I TOLD, а следующее значение температуры задается в виде Т 4- ДТ. Третье и последующие приближения температуры вычисляют- J? ся по формуле л rrt __ Г» f ffj, m i •j и повторяются о метки START, । В качестве численного примера приняты следующие исходные ;/ ’ данные: f-5 лаль/ч«с; VF = 2 моль/час; Т — 65° С; е = 0,001, ! х$ Хд == Xf ==; 0,25. Л1 Л2 ЛЗ Л4 1 359,037 —13150,6 0,09117 -59,909 ‘V 2 126,215 —9104,27 0,00329 —17,180 ,? 3 825,354 —27400,54 0,20945 —139,999 Т 4 2563,107 —78450,40 0,64937 —439,090 11 Результаты расчета приведены в конце программы. Расчет колонны ректификации бинарной смеси Составим программу расчета профиля концентраций пара и жидкости по высоте тарельчатой колонны бинарной ректификации, если известно (рис 40): ^ — количество питания, лолъ/час, xf — концентрация легко летучего ком поп епт а в питании, моль! !молъ\ D — количество дистиллята, молъ!час\ L— количество оро- шения, Молъ!час\ сь — коэффициент 1 относительной летучести; Е — эффективность работы тарелки, 7V — число тарелок; N? — тарелка ввода питания. 200
’BEGIN1 'INTEGER 'N., INPUT(1 tH)«t ’BEGIN» ’INTEGER’I., ’BEAL’r.VPjLF.EPS.To ’ARRAY’XF,X,Y,Л1,A2,A3t А4(/ПН/) ,, 'PROCEDURB'FEEDOMSXF^Y.T, VF.LP). ( *INTEGER *N,, 'REAL'VP1EFtT>l‘,.( > 'ARRAY’XF.XtY., ’BEGIN’ •INTEGER’I,Z•, 'REAL'SUMXfSUMYtTHrTA,SUMYO,TOLD. ( ’ARRAY'VY, 1X(/T (N/)., Zxs1.f LFi=y-VF.f START:SUMX:sSUMYt=.0M 'FOR’Ii=1’STEP»1’UNTIL'N’DO» ’BEGIN' ' П(/1/) :sF*X?(/I/)/(I.F/VPZDXP(A1 (/!/)+A2(/I/)/ (T+273.16)+A3(/I/)x(T+273.'16)+A4-(/I/)xLN(T+273 e*! 6))+T »0)«> x</i/) 1*стр(/1/)-т/1/))/ьрм SWIXi-SUMXfrXC/I/)., Y(A/):=VY(/I/)AF.» SOMY:=SUMY+Y(/I/) 'END’., ,1F,ABS(SUMX-'1.0)’Li'j’EPS* AND1 ABS(SDMY-1,0)’ЫЗ» EPS'TH EH”G0T0»?INIbHM Z :^Z-q. f JIF’ZiO'THEN* I 'BEGIN' SUttYOxsSUJ’Y., 201
TOLD:-?., TtsTHO.O.» *GOTO*8^ART * END1., ТИВФА«а(8ЦМУ“*»иЧ1С0^ /(T-TOLD)., TOLDisT., BUMYO:=SUMY.f 'I1 i=O .O-SUMf УТИЕТА+Т. > ’GOTO’STARР», FINISH* ’END*,, INPUTS, Р» VP, T, BPS,XF,A1,A2,AJ, Am),, PEEDC»>F,XFlXlY1T,Vt'lI.1?}., Otfl’Pu'TO, »(T’),’(:?<’??> :?1^«3KO+) ЛИЧ-)ЕСТВО,К<^)ЛЬ-)’)).. 0UT?UTO1’(T’)f*(«/x/:2:5tB+)TM.)TA’Ji-)lVU^Fs3»)).. outputs , • (e^do^db1),?}., OUTPUT^», ,(Т»),*(:/:В!3:В+)П-)А?Л:3:ТгХ:5:В,;/.> OUTPUT О ,• t* . 6DKh2Dl! ’ ) r V F)., OUTPUTS (*(T*)I*(:/:B:H:B+)WHKOCT+)K-):B’)).I OUT? UT ('♦,'( E+ , b D)>2 03 ’), LP )., OHPUTO(T»).'(:/ j /13! / ;BTEM+ )Ц-) EFATOA !B+ ) Г-)Р.С:В’))О 0UTPUTC4,*(E*.6DW*2D»«),T)., OUTPUT^,’;?*}, f; J/ :3:H?3tB:hiS?BiB:BtB*BibCMAB» D., OUTPUTS»(T*), * 11/:/:B iB :BsBxB+) ПИ-)ТАН+ЛЫ-) Ш КОСТ+)И-)*))м ' FOR»11»1»S?EP,J1'UKTIIAN * DO' ’BEGIN ’ OUTPUTGb’CT’), 1 OUTPUT^, »(Я2ИВ’ OUI2PUT(4/(E*.6DWI.2DB* OUTPUTS (»(E* .6DMDB *), Y(/I/) ). f 0UTPUT(4, ’ (E+.6DKh-2DB4,X(/I/)) 202
*1243* ' END' । END' КОЛИЧЕСТВО,МОЛЬ ПИТАНИЯ +,50000010+01 ПАРА i +.200000^0+01 ЖИДКОСТИ. +.30000010+01 ТЕМПЕРАТУРА ГР.С +.59437^1О+О2 СОСТАМОЛИЛОЛЬ ПИТАНИЯ ПАРА ЖИДКОСТИ 1 +<25000010+00 +Л578051о+00 +(1114б210+00 2 +.25000010+00 +.26752в10+00 +.2?831410+00 3 +.25000010+00 +.20309510+сю +.28126910+00 4 +.250000^ 0+00 +.7163931О-О1 +.ЗбВ9071а+оо 10 Схсл1д потопов и рвктнфгаищнон ной колонке Примем следующие допущения, коэффициент относительной летучести не наиеняется ио высоте колонны; потоки пара и жид- кости постоянны по высоте секций колонны; тарелки имеют пос- тоянную эффективность; разделительная способность куба колон- ны эквивалентна теоретической тарелка; используется полный конденсатор. Математическое оппеншю колонны для разделения бинар- ной смеси состоит из уравнений общего материального баланса колонны, уравнений материаль- ного баланса для произвольного сечения колонны по легколету- чему компоненту и уравнения, описывающего парожидкостнее равновесно Для решения системы урав- нений. математического описа- ния можно воспользоваться сле- дующим алгоритмом. 1 По уравнениям общего материального баланса, рассчиты- ваются количество кубового продукта IF = F — D и количество пара в колонне V — L Ц- Я 203
<Г* v » »•»'/. Г-l,’ А . -:4л,- 2. Задается начальное значение концентрации легколетучего компонента в кубе колонны, ранное, да пример, его концентрации в питании. 3. По уравнению Ctr. y;°i+-(a21)j; (‘ = 0,1.2.. ..N) (8-30) рассчитывается равновесное значение концентрации легколету- чего компонента в паровой фазе, 4. По уравнениям р* (£=0) (1-5)^+^; (1-1,2,. Л) (8-31) определяется состав пара, покидающего l-ю тарелку. 5 По уравнениям материального баланса для произвольного сечения колонны определяется концентрация легколетучего ком- понента на вышерасположенной тарелке _ | (7у< + Wxw)/(L 4- F) (i< Л/р), + (Л/гС/СЛ/). 1 } Пункты 3—5 повторяются для тарелок с номерами от 0 до IV. 6, Для i ~ 7V проверяется уравнение материального баланса колонны f (a^v) = Луо -г — Exp =i 0. (8—33) 7. Бели | / (д?иг) ] < з (е- точность вычислений), то расчет заканчивается, в противном случае концентрация легколетучего компонента в кубе колонны уточняется с использованием метода простой итерации по уравнению ziv = (Fxf — Ztyo)/IF, (8—34) и расчет повторяется с пункта 3 при новом значении ачу. Программа расчета концентраций но высоте колонны, пред- ставленная ниже, составлена в полном соответствии о указанным алгоритмом, Результаты расчета печатаются в виде таблицы со- ставов паран жидкости. В качестве примера представлены резуль- таты расчета ректификационной колонны со следующими исход- ными данными: количество тарелок 7V = 15; номер тарелки пита- ния NF = 7; количество питания F = 10 молъ/час' концент- рация легколетучего компонента в питании = 0,7 ммъ!моль^ количество дистиллята D = 7 лииъ/час; ' количество оро- шения L 10 жолъ/час, эффективность тарелон Е = 0,4; новффициедт относительной летучести AL =5; точность расчета EPS = 0,001. 204
* BEGIN1 ’INTEGSR'N,N?,, INPUT (1 , •BEGIN1 •INTEGER»!., •REAb’PjXF.D^.Wjb.V^jAb^Ta.EFSM 'ARRAY’X,Y(/0tN+1/) ., INPUT(1 ,l\XF,DtL,E,AL,EPS) ., X(/O/):=XF., V i=L+D., START:’FOR1! t*0» 31 J^M'UHTIb'N’DO’ / •BEGIN’ YR:cALrX(/I/)/(l,O+(AL-1,О)*Х(/1/))., X</!/) j3*IF’I=O,THEN,YR'EL3E'Y(/I-1/)x(1,O-E)+ExYR., X( /1+1/) !=*IF'I,LE,NF»THI«'(m(/I/)+W*X(/O/))/(L*F) ’ELSE’‘IF’I=N'THEN’Y(/N/)'ELSE’(VxY(/I/)+M(/O/)~Fx XF)/L •E2»D*.» Y(/N+1/):=Y(/N/)., XWSs(F*XF-D*r(/N/))/W., ' IF * ABS( Xft-X(/0/) ) 1 GT' EPS ’ ТИШ* * BEGIN• X(/C/):=XW., •GOTO’START ' END’., OUTPUT^,* (T' ) ,»(!/:/!В:'В!ВК0+)Ж-)ЕСТВ01В+)П-)АРА, 1В1/ ООЛЬ-)’))., OUTPUT* (XJ+.5DR>2DB' ) ,V) . , 0UTfUT(4 , ’ (T *), ’ c : /!в 13 XBKO+) ЛИЧ-)ECTBO:B+) ПИ-)'fAH* )ИЯ -),:ВМ0+)ЛЬ-)'))м OUTPUTS, 5 Й^2ПВ»),У)М OUTPUTS,’(»•),• ( ;/>BiBrBKO+) ДИЧ")ВСТВ0 :В0Р0+)Ш-)Ж1-)И Я-),хВМО+)ЛЬ)')).1 OUTPUTS, * (Е+.5ВЮ*2ОВ* ),!.)., 205
OUTPUT(4,»(г*) , ‘ :BCOCTAB:B+)H-)APA:B;Sx ВОССТАВ x 3+ ) ад-)КОСТ+ )Ц- ) ! / ‘ » ' FOR * I x=O* STEP * 1 * TOIL1 H+1 * DO ♦ 1 BEGIN’ OUTPUT^, Ц2')/(!/')). I оитто/ (z2db’)»i)h OUTPUTS ,' (Er. 5IW2DB* ), <(/!/) )., OUTPUT <4. 51Ш 2DB *), X( /I/) ) *END* ‘END1 ’END1 КОЛИЧЕСТВО ПАРА, МОЛЬ +.17000^02 КОЛИЧЕСТВО ПИТАНИЯ, ПОЛЬ 4-.1000010+02 КОЮ'ЧЕСТВО ОР011ЕНИЯ, МОЛЬ +JOD00I0+02 СОСТАВ ПАРА СОСТАВ ЖИДКОСТИ О +.1442410+00 +.326121O-Q1 1 +.255421о+оо +,12750^0+00 2 +.ЗВВ421О+ОО +,2219910+00 3 +.5193910+00 + ,33505-э 0+ОЭ 4 +.-632131О+ОО +.Н4бз?10+00 5 +.721491Q+00 +.У»22010+00 6 +,788911о+ОО +.618161о+00 7 +itUH2810+00 +.675ч71О+00 S +.873?б1О+ОО +.71?4310+00 9 +.0М6б1О+0О +,79517.10+00 10 +,9289210+00 +.В477010+00 11 +.9ч7б010+00 +.В88951О+00 12 +.9б1?а1а+00 +.9207010+00 13 +,972451О+00 +.9М8210+00 14 +,9S04110+00 +*962951О+0О 15 +*9863310+00 +,97649.1О+ОО 16 +.9863310+00 +.986331Q+00
Глава IX ВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ Аналитические мм оды вычисления определенного интеграла, основанные на представлении подынтегральной функции в виде алгебраической суммы производных известных функций, имеют ограниченное применение в практике инженерных расчетов, так как число интегралов, которые можно свести к табличным, весьма ограниченно. Иногда используется прием разложения подынтег- ральной функции в ряд, интеграл которого легко вычислить ана- литически Если точность интегрирования задана, то по пей мож- но определить число членов разложения, необходимых для обес- печения этой точности. Используется также прием аппроксимации подынтегральной функции полиномиальным рядом Однако объем вычислений при разложении подынтегральной функции в ряд нли аппроксимации ее полиномом может оказаться весьма значи- тельным, К тему же точность вычисления интеграла будет зави- сеть от точности аппроксимации, Поэтому наряду с аналитическими методами широкое распро- странепие получили методы численпого интегрирования, Развитие этих методов иолучйло распространение особенно с внедрением ЦВМ в практику расчетов. 1, Формулы численного интегрирования Пусть на интервале («, Ь) определена н ограничена функция / (т) (рйе, 41) * Выберем на осн х точки Такой набор точек называется рзабиепнем интервала (а, Ь), а интервалы (,rk-i, = 1,2,.,., и,— интервалами разбиения, длина каждого из которых определяется 'Д'7\ = — 207
Выберем внутри каждого из интервалов разбиения произвольные точки 6*(^в и составим интегральную сумму Л 2 t (£*) А3* fr—i. Функция / (х) называется интегрируемой на интервале (а, Ь), если существует предел интегральной суммы при стремлении длины максимального интервала разбиения н нулю и соответст- венно — числа интервалов разбиения к бесконечности п bin (9-1) ЯШХ -£^1 Величина предела I называется определенным интегралом от функции / (г) на интервале (я, Ь) н обозначается ь I = ^j(x)dx. (9-2) U Если / (ж) на (я, &) неотрицательная, то интеграл (9—2) определяет площадь, ограниченную кривой / (аг), двумя прямыми х == а и ® => b и осью абсцисс, Если функция / (дг) отрицательная, то интеграл выражает площадь, взятую с обратным знаком. Для знакопеременных функций интеграл выражает алгебраическую сумму площадей, соответствующих интервалам знакопостояиства функции. Для того чтобы функция / (я) была инчегрируема на интервале («, Ь), достаточно, чтобы она была ограниченна и непрерывна на данном интервале. Условие непрерывности функции ие является абсолютным. Если функция имеет конечное число точек раерыва, то она также интегрируема, поскольку эти точки могут быть опу- щены при составлении интегральной суммы. Интеграл функция, имеющей конечное число тонок разрыва, может быть получен как сум^а интегралов на отдельных отрезнах между соответствующими точками разрыва Для- вычисления определенного интеграла численным методом необходимо его представить в виде суммы площадей Чем меньше интервалы разбиения, тем точнее будет вычислена интегральная сумма. Однако при этом значительно увеличивается объем вы- числений. Максимальная точность получается при бесконечном числе отрезков разбиения. Однако ня практике приходится ограни- чиваться конечным разбиением интервала интегрирования функ- ции, заранее допуская некоторую погрешность Разнообразие методов численного интегрирования обусловлено стратегией выбора точек разбиения, обеспечивающей в каждом конкретном случае минимально возможную ошибку Возможны два способа выбора точек разбиения исходного интервала. Первый способ заключается в том, что число интервалов фиксируется зара- 203
;.<г* 'Л. в ,.• - .< /|Г1 / .-ч, “- - “ , I * _ нее, а во второй — число и величины интервалов определяются в процессе вычисления интеграла исходя иа требования веданной точности. В обоих случаях исходная функция на каждом интерва- ле аппроксимируется соответствующей зависимостью, например линейной дли квадратичной. Метод прямоугольников основан непосредственно на определе- нии интеграла ь л Г/(я:)йаг~ Um 2/(&)Да:1» 4 (9—3) д ЛХ|—0 п где 2/(г0 Аж( — интегральная сумма, соответствующая данному £<•1 разбиению, а сЛ, £а,...,£п — некоторые точки на интервалах раз- бнепиЯ, в которых вычисляются значения функции (назы- ваемые в дальнейшем узловыми). Если интервал (а, Ь) разбить на достаточно большое число малых частей, то получаемая при этом интегральная сумма будет мало отличаться от точного зна- чения интеграла, одиако при этом равенство (9—3) выполняется лишь приближенно: ь $/(г)ЛС^/(?1)Дг1+/&)Л*3 + -- + Г<&№„ (9-4) а Существенно заметить, что н равенстве (9—3) предел не зависит ни от способа разбиения интервала (a, ft), ни от способа выбора узловых точек Однако па практике интервал (a, ft) обычно де- лится иа равные частя, а в качестве узловых точек выбираются границы интервалов разбиения. Равенство (9—4) длн равных ин- тервалов разбиения запишется в вйде ь 5 / (*) <*» = (/ И V / (*i) -I- -Г / (2М)) (9-5) а или h j/(«) & ® (/ (xi) + /(ж3) 4- „. + / W). (9—6) а Правые частя формул (9—5) и (9—6) представляют собой пло- щади ступенчатых фигур, состоящих из прямоугольников, по- этому эти формулы ноент название формул прямоугольников. Для функции, представленном ня рис. 42, интегральная сумма, подсчи- танная по формуле (9—5), меньше истинного значения интеграла, а сумма, подсчитанная по формуле (9—6), дает завышенное 'Зна- чение интеграла. Эти суммы называются нижпей н верхней ин- тегральными суммами соответственно Очевидно, при п -> оо предел как верхней, так я нижней интегральной сумм будет ра- 2ое
вея истинному значению интеграла. Равенство пределов нижней и верхней интегральных сумм является одним из основных крите- риев интегрируемости функции, и од достаточно просто прове- ряется при вычислении интеграла от сложной функции. Рио &2 Р1ГО 43 Формулы прямоугольников на практике редко используются для вычисления интегралов с помощью ЦВМ, поскольку при опре- делении интйграл а с высокой точностью число интегралов равбпения должно быть весьма большим, что может потребовать значитель- ных затрат машинного времени. Метод трапеций основан па том, что график подынтегральной функции иа отрезке разбиения (рис. 43) заменяется стягивающей его хордой и площадь, ограниченная интервалом разбиения, за- меняется площадью трапеции Тогда для интеграла (9—3) при фиксированном отрезке (r^lt ягд) можно записать $ 4-1) , (9-7) Xk-i где правая часть является площадью трапеции Аналогичные по- строения можно произвести и для соседних отрезков равбиення, папример для отрезка (жд_8, ггд-i): *?г-1 С I / \ Л /л , / (a\-l) f ^гГ-й) J /(Г)^^^ —----------------2-L-g---IUL-. »Л_а Если обозначить (^ — ^it-1) — (^<t-l — Тд„3) — . = (Ж3 — X]) = A-JJ. = то площадь, ограниченная графиком функции / (z) иа отрезке (атд_а, zft), приближенно будет равна / (х) dx h + / (a^-j) + 210
н соответственно Ъ ри-" (г)dxsjh(2®. h/(^->) + /(^J+ •+/(»,)-Ь-^-). (Э-8) а Формула (9—8) называется формулой трапеций для числен- ного интегрирования Заметим, что зта же формула может быть получена как среднее арифметическое нравых частой формул (9-5) и (9-6) - ъ S^)+f/(sft) , /(х)Ч-/(з ) \ ц„\д___о—а к-о k^,L . о —л vi ' Л l la&+V J / W -------g------~ з ------------g-----. а к=0 (9-9) Метод Симпсона является одним на наиболее распространен- ных и часто применяемых методов численного интегрирования, В отличие от метода трапеций подынтегральная функция аппрок- симируется в пределах двух прилежащих интервалов разбиения квадратичной зависимостью, поскольку для вычисления коэффициен- тов параболы необходимо располагать тремя значениями функции Общее число интервалов разбиения при этом должно быть четным Пусть функция / (ж) интегрируема на интервале (о, 5). Разобьем интервал (а, Ь) на 2п равных частей н рассмотрим два прилежа- щих интервала разбиения (^J_1, z,) и (жо я^41), кождый из которых имеет длину h = (Ь — а)/2п (рис. 44). Точки ж(„л п отстоят иа величину h от точки поэтому, вводя обозначения (А А-i) — k, f (if) — р, (Ж| Х|ц) = Л, 7(х{_1) = п> /(^1) = т, запишем координаты точек, через которые проходит функция / (ж) соответственно как (—7г, а), (0, 0), (Zt, у) (рис. 45). Интер- поляционный полином Ла граня; а с узлами —ht 0, ht согласно 211
формуле (И—21), (ctp, 302), имеет вид «=-р w =-«-1-? +г = = ^5(<и(г — 71) — 2Р(а*— Л“) + г® (я + й)). (9—10) Соотношение (9—10) определяет уравнение параболы. Для того чтобы пойти площадь, ограниченную параболой, необходимо вычислить интеграл л t Р (®) & = (а - 23^ -|- 4₽Л» + 2г ^) = •£ ('• + 43 + Т). Переходя к исходным обозначениям для площади, ограничен- ной параболой на интервале 3^+1), можно окончательно записать /(^)йг =7-(/(^1) + 4/(^)4-/(аги1)) (9—11) 4-1 Аналогично, интерполируя подынтегральную функцию для ин- тервала (#<+!, х1+э) с узлами а^+1, Xi^t a?i+.a, получим Kits /(x)di =-|*(^^1)т4/^и)+/Ы (9—12) Если подобную операцию произвести для каждой тройки точек, начиная с (хй1 xlt Xq) и кончая (xsn_s, а:^), и затем сложить почленно полученные формулы, то окончательно можно записать ь ^/(x)dx~^^|/(a) + 4/(±1) + 2/(z5) + + 4Ш + ...-‘-4/(йм) + /(&)] (9-13) Заметим, что в полученной сумме элементы с коэффициентом 4 соответствуют нечетным точкам, а элементы с коэффициентом 2 — четным точкам. При вычислении интеграла по Симпсону число точек обычно задается заранее, ио может быть и изменено в процессе вычисле- ний, если пе обеспечивается заданная точность. Программы, в ко- торых число точек изменяется в зависимости от точности вычисле- ний, носят название программ с автоматическим выбором шага. Метод трапеций и метод Симпсона используют множестве равноотстоящих узловых точек для построения некоторого интер- поляционного выражения, интегрирование которого и обеспечи- вает вычисление интеграла. Так, в формуле трапеций подынтег- 212
ральная функция заменяется в пределах каждого отрезка линей- ной, а иа всем интервале — кусочно-линейной функцией. Формула Симпсона использует квадратичное приближение, когда площадь криволинейной трапеция заменяется суммой площадей парабо- лических трапеций. Очевидно, имея в распоряжении набор точек, можно построить полином болае высокой степени. Но при этом возрастает число требуемых узловых точек, и формулы становится громоздкими, Вообще же выбор формулы для интегрирования определяется классом функций, Может оказаться, что формула более высокого порядка приведет к большим ошибкам, Напри- мер, при интегрировании линейных функций максимальная точ- ность будет достигнута прн использовании формулы трапеций. Формулы для построения многочленов произвольной стацени прн наличия равноотстоящих узлов известны в литературе как форму- лы Ньютона—Котеса [27, 231 Представленные выше формулы являются частным случаем формул Ньютона—Котеса. Метод Гаусса, основан на том, что вычисление интеграла как площади, ‘ограниченной подынтегральной функцией, может быть выполнено с более высокой точностью, если выбор местоположе- ния узловых точек производить исходя из минимума отклонений между интегралом и площадью, ограниченной аппроксимирующей зависимостью В отличие от методов трапеций и Симпсона здесь ири выводе формул полагается, что определению подлежат как коэффициенты аппроксимирующей зависимости, так и положение узловых точек Заранее фиксируется, например, только степень полинома, для которого формула будет давать точное решение. Рассмотрим порядок вывода формулы Гаусса на примере двух узловых точек [27]. .При наличии двух точек формула трапеций дает точное решение для подынтегральных функции, представляю- щих собой многочлены первой степени Однако формула Гаусса при соответствующем выборе этих точек позволяет получить точ- ный. результат и для многочлена третьего порядка, поскольку ап- проксимирующая зависимость имеет четыре независимых пара- метра. Пусть функция / (ж) интегрируется иа интервале (—1,1). Интервал (“14) выбран исходя из удобства рассуждений и не ограничивает общности формул, поскольку для перехода от произ- вольного интервала (с; ty к интервалу (—1,1) достаточно восполь- зоваться заменой переменных у — Ч2 (Ь — а) х -Ь 1/2 (& -|- а), где х — новая переменная. Для двух узловых точек можно записать 1 J f (х) dz = AJ (Xj) 4- AJ (Xe), (9—14) -i где Я2, X5, Xj — неизвестные величины Поскольку формула (9—14) имеет четыре параметра, то наи- высшая степень полинома, для которого можно вычислить точное 213
значение интеграла, будет, равие 2п— 1 (и — число узловых то- чек). В рассматриваемом случае х^оаффицпенты As и положение узловых точек определяются решением системы уравнений, которая получается при подстановке / (z) — 1, х, а?, z3 в правую и левую части уравнения (9—14) 2 — Aj + -*4-2» О *= -1 Адг2, (9—15) х/з = Ард Ц- Ар?, О — Ар? + Ар?, Система (9—15) может быть решена аналитически, в результате чего получим Дя — As *= 1 и хг — —3“’^; Зг'А. Таким образом, уравнение (9—14) запишется в виде j/W* = /(-^g) + /(^) (0-16) Аяалохпчпо можно полечить формулу Гаусса для трех узло- вых точек (л = 3) = I-8/(0) + 5/(]/^)] (9-17) -1 В зависимости от числа узловых точек изменяется степень поли- нома, для которого формула дает точное значение интеграла, тек как при добавлении одной точки его степень увеличивается на два. формулы Гаусса для произвольного числа т узловых точек имеют вид $j(t)(Zz= 2 А^/(^). (9—18) -1 A.=l Как и ранее, неизвестные Att xti могут быть определены реше- нием системы нелинейных уравнений аналитически пли числен- ными методами [21. Однако коэффициенты могут быть вычислены исходя на других соображений значительно проще Оказывается, что местоположения узловых точек, т. е значения х^ являются корнями полиномов Лежандра р-19» В атом случае решение сисюмы лилейных уравнений для опре- деления коэффициентов Ай выполняется проще, поскольку значе- ния корней полиномов Л еж ап др а могут быть заранее иротабули- 214
рованы для различных значений д. Например, при наличии четы- рех узловых точек корни полинома Лежандра Pt (х) •-= *= L/6 [35ж* — ЗОа:* + 3] 0 равны 4 = + 0,8611363116, гая — = ± 0,3399810430 Коэффициенты At можно также наши из соотношения (1 - Рп (х£)з для каждого и, т. е. могут быть также протабу лир ованы. Формулы Гаусса весьма эффективны прн вычислении интеграла по немногим узловым точкам при условии, что функция может быть хорошо аппроксимирована многочленом. Их недостатком является то, что прн изменении числа узловых точек изменяются коэффициенты аппроксимирующей зависимости, т. е. изменяется все уравнение и решение пе может быть продолжено простым до- бавлением точек, Вычисление кратного интеграла связано с интегрированием функции нескольких переменных, заданной: в некоторой области, ограниченной в общем случае криволинейными поверхностями Существует большое число методов вычисления кратных интегра- лов, которые обычно аналогичны методам вычисления однократ- ных интегралов. Так же как и для однократного интеграла, крат- ный интеграл заменяется линейной комбинацией значений интег- рируемой функции в конечном числе точек, Отличие заключается в том, что область интегрирований является совокупностью точек ^-мерного пространства, где п — кратность интеграла Например, при вычислении двойного интеграла областью интегрирования будет часть плоскости, ограниченной проделамп интегрирования по двум измерениям Прн вычислении кратных интегралов нс- польеутотся те же формулы, что были рассмотрены для однократ* пых интегралов, только примененные по каждой из переменных подынтегральной функции Разнообразие методов объясняется тем, что по тем или иным соображениям по разным переменным мо- гут быгь использованы различные формулы [29] Простейшими формулами вычисления кратных интегралов яв- ляются формулы интегрирования в прямоугольной области, т. е. при фиксированных значениях пределов интегрирования по каждой, из перемеидых. Однако эти формулы могут быть использованы и для интегрирования в произвольной области, если вписать область в прямоугольник, а при суммировании точек не учитывать точки, пе принадлежащие допустимой области. Другим способом приме- нения таких формул является способ, при котором криволинейная область интегрирования делится на ряд прямоугольников, наи- лучшим образом вписываемых в исходную область, а интеграл подсчитывается как сумма интегралов по отдельным прямоуголъ- пикам Следует заметить, что оценка точности фор.иул вычисления ьратных интегралов еще более затруднительна и чаще всего прн 215
иашшшом интегрировании производится путем вычисления ин- теграла по различным формулам с последующим сравнением полученных значений. В качестве примера рассмотрим порядок получения формулы вычисления двойного интеграла в прямоугольные области, дважды используя формулу трапеций. (9-20) Пусть функция / (х, у) определенна и непрерывна в некоторой прямоугольной области Р [а х bt с у d] (рис. 46). Положим, что каждый нз отрезков («, Ь) и (с, d) делится на п отрезков меныпей длины, так что k = (Ь — а)1п я к = (с — d)/n. Воспользовавшись формулой трапеций (9—8), вычислим интеграл Г* К* J J / (*. У) = J J / (*, У) ty- (Р) *4 Vi Для этого дважды применим формулу трапеций по каждой из переменных. Для внутреннего интеграла можно записать $ f(p,y)dy = J йхА[/(ат,у0) + /(z, yj] « is iw Xf «X = + $ /(X< y^ Xt Xt К каждому из интегралов применим слова формулу трапеций Л VI р (я, У) dzdy = ~ [f (г0, у0) + / (arlt у0) 4. / (х0, ух) / (хъ ft)] x*Vi Формула для вычисления двойного интеграла во всей области интегрирования может быть записана соответственно ?? ЛЬ т1-1п-1 ЭД / (г. У) dx dy 2 2 1/ Уд + f ^ж) + + / (гьи Уз) + / (^i+ii Jfj+i)]* (9—21) 21Q
Аналогично могут быть получены и любые другие формулы для вычисления как двойного интеграла, так и интегралов более высо- кого порядка 2, Оценка точности формул численного интегрирования Любая формула интегрирования позволяет вычислить лишь приближенное значение интеграла Поэтому можно записать, что b m $f (х) Ле = S 4/ (X,) + Я, (9-22) а <--1 где R *— погрешность используемой формулы интегрирования Очевидно, ошибка формулы зависит от величины шага интегриро- вания (от числа узловых точек), а также от класса подынтеграль- ной функции. Чем меньше шаг интегрирования, тем меньше ошибка. Погрешность формулы целесообразно оценивать, исполь- зуя следующую более высокую степень подынтегральной функции, чем та, для которой она дает точпоо значение интеграла. Напри- мер, для формул прямоугольников и трапеций это будет функция видя у 1= аг*, для формул Симпсона и Гаусса — у — а?*. При вы- числении интеграла на отрезке (0,1) от указанных функций ошиб- ка формул будет соответственно формула прямоугольников с выбором узловой точки в середи- не интервала х9 rfjc — 4- /?, 2? = 1/12, формула трапеции ^*dI = 4- = -r</W + /(1)l+J?’ Я-1/6, п формула Симпсон я I 5 х* dx = 4- = и (0) + if (4-) + f (1)1 + л. Я=,50 ’ о формула Гаусса с двумя узловыми точками fa = 4- = [/ (0,2113) + / (0*7887)1 + Я, Я = 0,000546. о Эта приближенная оценка позволяет сделать заключение о сравнительно высокой точности формул с оптимальным выбором узловых точек — формул гауссовского типа Несмотря на то, что 217
формула Симпсона фашически использоваиа с тремя узловыми точками, ее погрешность псе же существенно вышо Методы, представленные выше, являются наиболее распростра- ненными в практике как ручных, так и машинных вычислений. При расчетах вручную предпочтение, как правило, отдается наи- более простым методам, а именно методу трапеций и методу Симп- сона. 11ри машинных расчетах чаще всего используются методы Симпсона и Гаусса. Точность нычислепия интеграла обычно задается заранее, поэтому в программах предусматриваются меры по ее обеснечо- иию. Например, вычисление интеграла при различием числе уз- ловых точек или различных шагах интегрирования, т е шаг ин- тегрирования уменьшается до тех пор, пока два последующих решения отличаются на величину, превышающую изданную точ- ность. Изменение шага интегрирования обычно производится автоматически в программе Если подытегральпая функция имеет относительно простой вид и ие требует большого объема вычислений, то выбор того илн иного метода численного интегрирования не имеет принципиаль- ного значения, поскольку необходимая точность всегда может быть обеспечена увеличением числа узловых точек Если же вычисление подынтегральной функции трудоемко, то выбор метода интегрирования может оказать существенное влия- ние на общее быстродействие программы. Прн одинаковом числе уз- ловых точек одни и тот же интеграл по различным формулам будет вычислен с различной точностью. Например, если функция имеет непрерывные высшие производные, то анализ ошибок позволяет разместить формулы по точности в следующем порядке* метод Гуасса, метод Симпсона, метод прямоугольников, метод трапеций. Г При вычислении интеграла sin (я) метод Гаусса с шестью о узловыми точками обеспечивает точность порядка 10“ID, в то время как метод Симпсона при равных условиях — 10-4 [30]. Чтобы полу- чить точность 10-10 по формуле Симпсопа, необходимо проделать работу, в 80 раз бблыиую по сравнению с методом Гаусса. Указан- ная оценка точности не может быть принята абсолютно, тем по мс- нео в большинстве практических случаев оказывается, что при интегрировании аналитических функций формулы Гаусса обес- печивают более высокую точность. При выборе метода следует еще иметь в виду, что если функция задана таблично, то в редких случаях можно прямо вос- пользоваться гауссовскими формулами, поскольку узловые точки этих формул есть иррациональные числа Метод Симпсона при этом обычно более удобен, в особенности если функция табу- лировали в равноотстоящих узлах. Аппроксимация, исе табличных зависимостей для метода Гаусса может привести к дополнительным ошибкам. 218
3. Проверка термодинамической еонместимовти енсперпментлльпых данных ио па рояшд костному раэновеопю Опшвые данные по парожидкостяому равновесию могут со- держать различного рода погрешности: погрешности измеритель- ного прибора, погрешности вследствие некорректности методики и т, п Поэтому прежде чем использовать такие данные в дальней- ших расчетах! необходимо каким-либо образом убедиться в их достоверности, Одпим из способов проверки экспериментальных данных по па ро жидкостном у равновесию является проверка их па термоди- намическую совместимость, т. е. удовлетворение термодинами- ческим соотношениям равновесных систем. Состояние равновесной системы при постоянных давлениях и температуре описывается уравнениями Гиббса—Дюгема [8J: п 2 Тл = 0, 23) где п — число компонентов системы; аг — концентрация компонен- тов в жидкой фазе; у — коэффициент активности компонента. Коэффициенты активности отдельных компонентов вычисляют- ся по следующим соотношениям- где Р — давление системы, даплц у — концентрация компонентов в паровой фазе; PQ — давление мара чистых компонентов, атм. Можно показать [8], что при интегрировании уравнения (9—23),.записанного для бинарпой системы, по всему диапазону изменения концентраций жидкой фазы должно выполняться усло- вие 1 V'>-£= и (9'25> г Г* О илп для произвольного интервала изменения концентраций dIn Yi п- ,с.гг?1пт2 — с -= const (9—26) sco) Соотношение (9—26) является необходимым условием термоди панической совместимости экспериментальных данных по равно веспю в бинарных системах, Достаточное условие можно получить, если при вычисления интеграла (9—23) учесть погрешность в определении концентраций, давления и температуры. 210
«BEGIN* ’REAL* EX, ЕР» EM ‘, «INTEGl£i'I,J,N., v ЮТПТ(1,М)., S;‘ INPUT (1»EX, IP, EM» ’BEGIN» '' 'riEAL'F.TI., 'ARRAY*G1»G2,I1,I2,C,DC>X,Y,P'llP2lT,CC(/0;N/)lDLL»I7’AX( 4’’ /1|1Г/),АН('Ъ2,1хМ/)., 0№OT(3j'(I')i»).» •. OUTHJTCJ.’CB’J.SX,!!»»®?),, imiCl.X.Y.T.A»,!»)., »E0R»Zxs0»Sl'EP»1 'UHm'N'LO' 1 BEGIN’ Ф1х=Т(/1/)+273Лб., ; . Р1(/Г/)^ЕЯР(АИ(/1,1/)тАН(Л12/)/Т1+АМ(Л|3/>Т1+я1Г( /1,4/)Х1Я(Т1)).» . P2C/I/)x=JXP(AN(/2»1/)+AN(/2l2/)Al+AN(/2l3/)*!Fl+AK( /2,4/)* LN(T1)) «ИГО».» . . «FGR’IisO'SDJP'l'USTIVN'DD* ’BEGIN* G1 (/I/) :«Y(/I/)xi7(x(/l/)xp1 C/I/33.» G2(/I/):=(1-Y(/X/))xP/(O-X(/I/))*P2(/I/n «END'.', OUTPUT (4 ,* (T *),’(:/!/:/:/!/:/+ )Ц-) POBEPKA: В: ВТ ВРИО* )ДИ -) 1Ш/5+)И-)4ЕСКО+)Й-) |ВхВС0ВМЕСТ+)И-)К0СТ4-)И") sB;BPABHOB П)Н+)Ы-)Х!ахВ+)Д-)АНН+)Ы-)Х»Л/:/:В:В:ВгВхВ«В+)И-)СХО +)Д-)НА±)Я-) хв*в+)И“)Н+)Ф“)орма+)ЦИЯ“) )М ОиТЙад»*(Е*)Д|Т»Т*Р,АЮ.» OUTPUTS,» (Т> ) ,«(ХВРАТ=»))., OUTPUT (а,» (Ufr.5EKH2D’ ),У)., OUTPUT(S '(Т'Ь’С OUTPUT(4, * (Г *), * (:В ?В :В :В :В ,-В :В ?В :В ,-В :В :ВХгБ ,-В :В:В sB sB: 220
&:В:В:Е:В:ВГ;В:В:В:В:В:Н:В»В:!3:5:ВТ:/’))., •FGR»Ix=0*SW»1’UWTIL»j;*D0» •BEGIN' 0UTPDT(4,»(!•),*(:/«))., OU!EPUI(%’(23D2B»),!)., OUTPUTS, • (B*.6l»+2DB* ) ,X(/I/) ,¥(/!/) ,T(/I/)) •HMD» I., OUTPUTS,* (T*)»* (:/ i/KO+) ЭФВДИ-)ЕНТ+)и-) :B:BAHTYAHA:/: /xBxBiBxBxBxBxBAr!xBxBxDUsBxB»BxBsB»B«BxBAl2iBSBxBxBsB iBsB:B»B:BsB:BAI3sB:B:B»BsBxBsBiB»B:BiB»BAHi :/:/•))., •FOR*! :=1 l2,D0» •BEGIN' • FOB * J :=1,2,3 Л * DO* OUTPUT (4-,1 (E+ .8D1>2DB * ) t AJl( A, I/) ) • > OUTFUT(4t’(T’),»(:/’)) »EHD*I., 0UTPUT(4,»(T’),’( :/:/:В:В;В:3:БР1>)3-)лг+)ЛЬ~)ТЛТ+)Ы-) rB »BPh+ )Ш- Ш1+ )ИЯ-):/’))»» OUTPUT^,'(T1),»(1/:В;3:3:В;3:ЬКа+)ЭФФИ1(И-)™+)Ы*):В:В АКТ*)1к)ВИОСТ+)И-)5/|/б1?:БхВ:В|ВxBGi )).. •BOR’I xsO’ STEP* 1«VMUL’a • DO* *BE<mi* OUTPUTS, *(Z3D2B*)(I).. OUTPUT(41 r (E+ .6W2BB’ ) , G1 (/I/) »G2(/I/)) • i 0UTPUT(4f*(T*)»•(:/*)) *EHD* •FOR*lx=0‘STEP* 1 »UkTTIL* 11*20» • ’BEGIN* Gl(/I/)xuIiT(G1(/I/)).» G2(/I/)s=Ifi(G2(/I/)) •END*., IX/0/) :=I2(/0/) :=C(/o/) :^T1 x®0.0. t ’FOH’I j=d ’ STEP’1 ’UHTIL’N1 DO* * BEGIN* 221
11 (/X/) !«XC/X/)XG1 C/I/)-X(/0/)xG1 (/0/). f X2(/I/)«S:d-X(A/))XG2t/I/)-0*X</O/))xG2(/O/).l ’W4:=i’3:iHP4 4nmvi’D0’ *BEGIN’ (/J/)+G1(/J-V)> ЩЛГ/МСЛМ/ ))/2A, :=l2(/I/)+(G2(/J/)+G$(/JT-1 /))X<X(/jr/)-X(/W/ •ИГО»», ’m’issO’sWH’inmi/N'DO» »BhGIJP I2(/I/) »«I2(/I/)-I2(/N/)., C(A/):=X1(/I/)+j2(A/).t T1 :=НИ+С(Л/) •END’I., зп >!e-i/(h4i)M •JOH•I;=0»5?ЙР»1»UHTIL1N1 DO» «liHGIN» BC(/I/):SC(/r/j-TlM SC(/I/)i*DC(/I/)A1 ’HID»., »EOR»I sH • »1 ’ UKTZXi • H • J>01 »ВШ1Ч» "(X(/-I/)+X(A-1/)))4G2(/I/)-G2(/I-1/)).i DWAX(/I/):=((X(/I-1/)tX(/I/))x(1/X(/I-1/)+1//(/I/)+1 /Y(/I-1/)+'l/Y(/I/))+(2-X(/I-1/)-X(/I/))x(1/(1-X(/l-T /))+1/0-X(A/))^I/(1-Y(/I-1/))+1/(1-Y(/I/)))+2xAGS( 01(/1/>&1(/1-1/))+2ХАВ8(е2(/1/М2(/1-1/)))Х1«+(Х(/ I-1/)+X(/I/))X(»lF»ABH(T(/T/)-T(/I-1/))tLT»FT,THBN,0 ’ELSE^XABsCCLHCFlC/I/JJ-EWCPlC/I-l/JJJ/dC/J/J-TC/I -1/))))* LT-4XKF/P »E»D’м OUTPUT(4, ЦТ»),»(tB-BiB.-B 222
:3 .BiB iB'BiB tiJtBiSiBiBC ;В:? :!5;Н:В В’В*Э:В 'POPJI :sO'SIEP«'1 ’UNTIL’MW •dfcXHK’ OUWH^I' (г 3D2B' } Л)., OITTPUT^,'(Г/».5Г?>2иЗ'),П(Л/) ,12^/T/) ,C(/J/),K(/I /),ЗС(Д/))., оиингтс*, »<?’},»(»/’}) 1ENBrI. , OUTPUT(3»r(S’),11,12,0,DC,SC),, OUTPUT(4, (!A/:3tHlBr3:B:BsB!B:BiBDtL[B*B.B B1B. Ь.В:»йПВ1Н8Е1ЖЛХ:/|/»))о ’PDH ’ 11 s11 STEP ’ 1 f UNTIL' IP EC * ’BsflXN’ OUTPUTS,»(Z3DB*)»*)., DITJ PUT ( 4, »(3+, 6 г Do ’ ), DEL (/1 /), ЫА X (/1 / ) ) , t OUTPUT^,»(Т») J (a/*)) • can;*., OUTPUT ( з » 1 ( Ь»), DEL, 1ЖХ) . , OUTPUT (4,•(?),’( » END * ’ W’., ПРОВЕРКА ТЕНЛОЖНАГЛИЧЕСКОЙ СОВМЕСТИМОСТИ РАВНОВЕСНЫХ ДАННЫХ ИСХОДНАЯ ИНФ0Я1ЛНИЯ PATm-.IOOOOjq+OI X Y Т 0 + .?5ОО0О10-С1 +,20300010+00 + .?459991о+О2 1 + .156000,10+О0 +,37500010+00 +.7СДч991О+О2 2 +,20400010+00 + ,459СОО1О+С0 +,6aau991o+o2 3 + .23O0DO10+0D + ,4990Э030+03 +.6790О01О+02 4 +,2б500010+00 + ^329991О+ОЭ + .66899910+02 5 + ,295CW1O+0O + .5&89991О+Х +Л590О310+02 6 +.Зв19Э910+0О + .64499910+оо +.6359991О+О2 7 -+ ,50600010+00 + .?0699910+00 +.615ОЭЭ10+02 а +,6J300010<.00 +<75200010+00 4,&015ОО10+02 9 +,69300010+00 + .7S999910+oo +.59750010+02 10 + ,807000*| + ,322999^0*00 + .59250О1О*О2 и + ,631О0О1О+О0 +.83399910-оо +.592000,0*02 12 + .09499^0+00 + .872000^+00 +.595499,(О+02 13 + .980000,, 0+О0 +,9й99991О+от + »p05CK>D^q+02
КОЭШЦИЕНТЫ АНТУАНА AI1 +Л459*9бО10+О4 +,2345656010+О3 АТ? -Л532525О1О+О5 11974960^0+05 U3 + .3?20708СЦ0+00 +.40042200^-01 U4 ,2491900010+03 .3706169010+02 РЕЗУЛЬТАТЫ Р №iiiai;ni; КОЭФФИЦИЕНТЫ АКТИВНОСТИ G1 G2 0 + .178903^+01 + .997933^+00 1 +.1775891tf+O1 +.99582310+00 2 +.17733710+01 + .997612^+00 3 +.17611210+01 + .99404 510+00 4 + .1684Э«10+01 + .1СИ27510+О1 5 + .166664^q+O1 + .101695^+01 6 +.156S893Q+O1 ++Ю55331О+СН 7 +.1388421о+01 +.11947310*О1 6 +.1233Ю10+О1 + .14452010+01 9 + .1166381О+О1 +.1б31131О+О1 10 +.1OS999ia+CH + .204192^0+01 11 +.10744110+01 + .2191S91O+O1 12 + .Ю312110+О1 + .2677971(у+01 13 + .994847,^+00 +.52640^0+01 DEL ГИСАХ 1 2 3 4 5 б 7 В 9 10 11 12 13 -.5447О910"О2 + . 243Ю810"02 -.86169710-02 + .6СЮ30610-02 +.?17О6310-О4 +.ЭО77981О-О2 +.294478^-01 + .2В747910-О1 +.10080310-01 + .81393610-O2 + .207483^-02 -«1596О91О-О1 + .1716281О-О1 + .220805^-01 +.2298091О-01 +.238450^0—01 +,24б£0710-01 +.2528971О-О1 +.26871510-01 + .291402^0-01 +.309293^0-01 + .3141781О-01 +«326488^0-01 + .216492^0-01 +.330886^0-01 +.3792851О-О1
w/c S5SSS5S88SSS8S о *o ’о о о о <э о !о о о ’о *о *о V* Х~ Г'ГГ'ГГГГГ'^ГГГ' О ФО4‘^г-ФФ4‘г*Г'г-с000О Й С<ОС017'СГ'Ф^П^.гСрГ'ПС\1 tSuSOJlAlAUniAC^-UnkOkO Л СО £ч Г <3 И -? OX 41 СУ* г*Х 4- Ф ЦП 4-r-r’C\Jvv"t_r'r'r-CUCMr-<X/ I1II1II+ + + ++ + + 88888888888888 ^э"Ъ'$Э^5^э'Ъ'£>'Ъ'Ъ"Ъ^э'£> О О S’"" С5* oF егГcF uF CU tF(Л* СП nF OtF uF otF 3‘5~4'4F4-stl>.tnnjCUv-s~ir\ o ojt-o^rr^woom^ajcots Ф D4 ts I> Ф 1Л m П W Л] n Л1 । t Г i Г t* г г г г г г г г оооооооооооооо 03 — c-r-r-v'r-T'<_ Г г V _у Sun «Г ю IA ф ф со ипф со О ajQ §ОиПг’Сч'4'ОгвЭ'СОУ^Ф5УЙ [чфП-(Л?\^^С>-спЛ) (Т'Л) б с~ г- ОО Ф 4" О •••••••••• tlllttlltltrt* §оо8888Б3888§3 "о о *О О О *о *о *о "fe Is "fa о ^-Г~Г'$~ТГ'ГУ_Г'Г'^*ГГ'Г' Q О r (\J l^OcntnWr-QPJCO с- 6ФС'^Г-4ОФ<~Й5ФС'^1ЛСГ‘<Л H бт-Ос-ФФОО'ПСОЗ-ФООглС^ о un r- ф m ф о «- in 4 m on cu ОСОг'^гг^Фгг'(\1Л](\|гЧ + I 1 t i I 1 t I 1 I 1 t t Ог-смт^ипф C^-CO Cx о r Od fn 8 В В Кш&ирач и др <л<-
Интегрирование уравнения (9—26) при наличии эксперимен- тальных значений з1(Ь я^(| (i — 1( 2, 3f.„, п — число то- чек измерения) удобно производить по методу трапеций* Тогда для двух прилежащих точек можно записать 4н, i = (*| - »н)ьЛ1- + (2 - - »м) In , (9-27) где 61-1Д — функция ошибки эксперимента в гечках arw, arj. Выражение для максимально возможной ошибки эксперимен- та имеет вид _L _L —1—\ -L r % I'M / ‘ 1 . _1_— + -S|-1 J- J—1 р? ч р° 21n^i- Vi X 2 F (Г), (9—28) 1 1 — Хм’ ' 1 —Xj ! b^i- W) 2 'T’h'nT’j.t-» I) + (2 — a,( — IM) x I/1' Л-Л-. где F (у), F (p)t F (T) — погрешность эксперимента в определении составов, давления и температуры соответственно. Условием достоверности экспериментальных данных является выполнение для всех прилежащих пар точек соотношения |&-!.< |^| I (9-29) Программа, предназначенная для проверки термодинамиче- ской совместимости бинарных равновесных данных с использова- нием соотношений (9—26), (9—27), (9—28), представлена на стр. 221. Исходными данными для расчета являются: JV — число экспери- ментальных точек; г, у, Т — массивы составов жидкой и паровой фаз и температуры; AN— коэффициенты уравнения (11—67) для расчета давления пара чистого компонента при заданной тем- пературе; FP<t ЕТ — погрешность в определении концентра- ции, давления и температуры; Р — давление системы для заданных значений X и У. В процессе выполнения программы, рассчитываются активности компонентов по уравнениям (9—24) значения интегралов 1Х и /2 для каждой пары точек по формулам 4 — Ф 4- #1-1 In 1 *- » А 2-— Ф — д^-i In —2 , величина С но уравнению (9—26) а /?иих ио уравнению (9—28). 226
Полученные- значения для каждой пары точек йыйодятся па печать. В конце программы представлен пример расчета системы хло- роформ — этанол В качестве исходных использовались следующие данные 131] X Р = 1 ЕХ = 0,001 ЕР =0,001 ЕТ =0,1 ЛГ = 14 Хлороформ Этанол ЛЛ\ = 234,5656 4ЛГа = —11974,98 ЛАГ. = 0,04804228 ЛЛ\ = —37,08180 то > 4 J । 4| Г, yLV.= ЛЯя = ANi^ X 1459,496 -45325,25 0,3720708 -249,10 У V т»о Г* С X Y 0,075 0,203 74,0 0,382 0,645 63,6 0,807 0,823 59,25 0,150 0,375 70,95 0,506 0,707 61,5 0,831 0,834 0,872 59,2 0,204 0,459 60,85 0,633 0,752 60,15 0,895 59,55 - 0,23 0,235 0,205 0,499 0,533 0,509 67,9 66,0 65,9 0,693 0,77 50,75 0,98 0,95 60,5 t 8*
Глава X Системы линейных алгебраических уравнений Большинство задач химической технологии в математической формулировке представляется системами уравнений, определяю- щих взаимосвязь многих факторов, от которых эвансит течение процесса. В этой главе рассматривается решение таких задач. Они могут возникнуть при обработке экспериментальных дан- ных, когда устанавливается зависимость между отдельными пара- метрами (главаXI), при описании массообмениых процессов в ста- ционарных условиях (глава X), при решении обыкновенных дифференциальных уравнений конечно-разностными методами (глава XII) и т п 1. Основные определения Уравнение называется линейным, если неизвестные связали между собой соотношением а^хх + ед + . +ffin5sn=b, (10—1) где flj, «2»-- (Зя, & — постоянные коэффициенты, х^ аг2, * — неизвестные Совокупность уравнении айда (10—1) представляет собой систему линейных уравнений «М*1 + «1^2 + - - + дш®л = Ьи "Ь- 4“ * “I" ” ^2, (Ю—2) -j- ... -f- Дтп^п = bm, где (i= 1,2,. , ro, /= 1, n) —- постоянные коэффициенты; xi (I — 1. 2, n) — неизвестною величины; bj (/ = 1, 2,.,,,w) — свободные члены. Система линейных уравнений называется однородной' если сво- бодные члены во всех ее уравнениях равны пулю. Коэффициенты системы (10—2) характеризуются двумя индек- сами. Первый индекс i указывает, какому уравнению принадле- жит данный коэффициент, а второй индекс / указывает, п*ри каком неизвестном ол является коэффициентом. Таким образом, место- положение любого коэффициента однозначно определяется его индексами. Например, запись вида а,1а означает, что коэффициент стоит в четвертом уравнении прп х3, формально можно при- нять, что коэффициенты каждого уравнения системы образуют 228
отдельные строки, а коэффициенты при одинаковых неизвестных — соответственно столбцы матрицы. Тогда первый, индекс коэффи- циента а,; определяет номер строки, а второй — номер столбца. Такой способ индексации коэффициентов позволяет для записи системы уравнений воспользоваться матричной формой, Если матрицу коэффициентов системы (10—2) обозначить через (Ян «13 «1Э • • • ДП1 «31 flja fljg , «а» й г « * Й ОтИЗ «тиз • • • «пап (10—3) а неизвестные и свободные члены соответственно векторами то систему (10—2) можно записать в матричном виде как АХ = В, (10-5) Матрица коэффициентов системы (10—2) может содержать произ- вольное число строк т п столбцов п. В этом случае говорят, что матрица имеет размерность т X п Если т = л, то соответствую* щая матрица называется квадратной порядка п. Элементы квад- ратной матрицы, индексы которых равны между собой (т. е. i — /)( образуют главную диагональ матрпцй. Матрица, содержащая одну строку, т, е. размерности 1 X п, называется вектор строкой, а матрица размерности п X 1, т, е. состоящая из одного столбца, называется ‘вектор-етолбцам, Матрица, содержащая помимо коэффициентов при неизвестных столбец, свободных членов, называется расширенной аи да1 « Иггц д1й £Е(<( ff<sa Д23 « « flpts flfrtg (10-6) Квадратная матрица, нои элементы которой, за исключением элементов главной диагонали, равны нулю, называется диагональ- ной. В случае, если все элементы диагональной матрицы равны единице, соответствующая матрица называется единичной п обоз* 229
качается буквой 18 10 0 О' (10—7) ( оп йи йи А А = i Н А1 *= \ ®ai / Матрица, элементы которой выше или нише главной диагонали равны нулю, называется со ответственно ншкиеп или верхней треу- гольной матрицей. Матрица Лт, полученная из матрицы 4 путем замены строн соответствующими столбцами, называется транспонированной. На- пример, вц \ flis «м 1 • ai3 йав -f Квадратная матрица, совпадающая со своей тр ан с по ин ров ай- вой, называется симметрической} т. в. А — АТ. Важной характеристикой квадратных матриц является поня- тие определителя. Пусть дана матрица / Ди а1а А — \ ^21 ®sa Определителем (детерминантом) матрицы Л-является число, равное det А = аг1а^ — Если взять матрицу третьего по- рядка, то ее определитель запишется в виде det Л = UjjGjjGgj -|- 4“ ais flsi 4“ д18аи ttsa й1здидм — — йиааз а32- (10-8) Каждое слагаемое н определителе матрицы третьего порядка является произведением трех элементов матрицы, прячем элементы выбираются только по одному из каждой строки и каждого столб- ца. Столбцы, которым принадлежат элементы каждого слагаемого, образуют некоторую перестановку чисел 1, 2 и 3 Так, например, третьему слагаемому суммы (10—8) соответствует перестановка 312. Поскольку для матрицы порядке п число пересгаяовок равно nl, то определитель этой матрицы будет содержать rd слагаемых. Знак каждого из слагаемых определяется четностью перестановок', если перестановка чотпая, то знак положительный, если нечет- ная — отрицательный. Четность перестановки характеризуется числом нарушений возрастающего порядка записи номеров столб- цов. Например, ж записи 123 нет нарушений, в зап пси 312 два на- рушения — перестановка четная, в записи 132 одно нарушение — перестановка нечетная. 230
Таким образом, для определителя матрицы порядка п можно записать det 4 — 2 (— • • o?ian, (alr Oj, •.., сц), (10—9) где а<« — элемент иа i строки / столбца; у = 0, если перестановка четная, у — 1 — если нечетная Пусть А — прямоугольная матрица порядка т X п. (Если в ней выделять к строк в Л* столбцов, то элементы, находящиеся па пере- сечении этих строк н столбцов, образуют квадратную матрицу порядка к. Эта матрица называется подматрицей матрицы А, а ее определитель называется минорам к-го порядна матрицы А. (Рангом матрицы А называется порядок наибольшего отличного от нуля минора этой матрицы. f Основные свойства определителя Величина определителя в мат- рпчиом исчислении используется для установления существования и единственности решения систем линейных уравнений. Рассмот- рим основные его свойства, 1. При перестановке двух строк в матрице ео определитель ме- няет знак. Напримор, 2. Еслп матрица А содержит две одинаковых строив, то о е опре делитель равен нулю. Действительно, если в матрице А поменять местами две одина- ковые строки, то ее определитель должен пэмеинть знак. Но по- скольку строки одинаковые, то перемены знака пе произойдет, т. в определители будут также одинаковыми Это возможно лишь в том случае, если det А — 0. 3. При умножении любой строки матрицы А па произвольное число с ео определитель умножается на это же число. Доказательство утверждения следует непосредственно из опре- деления (10—9). Пусть первая строка матрицы А умножается на величину с. Каждое из слагаемых уравнения (10—9) обязательно содержит элемент нв первой строки, умноженной на с, а следова- тельно, и определитель умножается на эту величину. 4 Если матрица содержит пулевую строку, то ев определитель равен нулю (доказательство аналогично предыдущему), 5 Определитель треугольной матрицы равен произведению ее диагональных элементов Действительно, каждое из слагаемых определителя (10—9) со- держит элементы, расположенные выше и пнже диагонали. Отсюда, единственным, по равным пулю слагаемым будет слагаемое, со- держащее диагональные элементы. 6. При транспонировании матрицы ее определитель но меняется. 231
Доказательство этого утверждении основано на том, я го при транспонировании матрицы четность перестановки не меняется [32], а поскольку слагаемые определителей исходной и транспо- нированной матриц одни и те же, то н определитель остается без измен вштя. 7. Если к некоторой строке матрицы А прибавить другую, ум- ноженную па произвольное число, то определитель матрицы пе изменится. Такие операции, как перестановка строк или столбцов, умно- жение строки па число, отличное от нуля, прибавление к элемен- там одной стр о ни элементов другой, умноженной па произвольное число, отличное от нуля, носят название элементарных преобразо- ваний и широко используются при решении системы линейных уравнений. Две системы линейных уравнений называются эквивалентными, если множество лх решений совпадает, т. е каждое решение пер- вой является решением второй, и наоборот. При применении эле ментарных прообразов а пип сохраняется эквивалентность исход- ной п вновь полученной систем Это обстоятельство позволяет преобразовать систему к виду, удобному для решении. 2. Матричные операции Прежде чем переходить непосредственно к методам решения систем линейных уравнений, рассмотрим вкратце порядок выпол- нения элементарных операций над матрицами. По аналогии с действительными и комплексными числами над матрицами так те определены элементарные операции Сложение (вычитание) матриц. Две матрицы 4 и В можно сложить, если они имеют одинаковое число строк в столбцов. Сум- мой матриц А. и В размерности т X п является матрица С той же размерности, каждый элемент'которон равен сумме соответствую- щих элементов матрицы 4 и JB Например. ~ 4 I ТО / аЫ Й12 *\ / &11 ^11! \ / ДП 4" &П Д13 4" \ О = А г» — I I |- I , t, / — I ijl । , I, \ / \ °£1 °2Я / "Г fyu. ali "Г &211 / т. e дли произвольного элемента матрицы суммы имеет место соот- ношение = (10—10) Операция сложения матриц обладает темя же свойствами, что и операция сложения простых чисел, а именно' сложение матриц коммутативно 4 -|- В~ В + 4; сложение матриц ассоциативно (Л -В) Ц- С’ — 4 -|- (В + О). Ниже представлена процедура, реализующая операцию сло- жения двух матрнц произвольного порядка Формальные парамет- 232
рн процедуры: A, J3 — идентификаторы матриц слагаемых; С — матрпца результата; л, т — размерность procedure ADD (4, В, С. и, т), integer п, т, array А, В, С, begin integer i, j, for I, = 1 step i tin hl m do for j: = i step 1 until n do C U, /j: = A [f, /j h В Г/. /1 cud Аналогично каждый элемент матрицы разности есть разность соответствующих элементов матрнцы-умоныпаемого и матрицы- вычнтаемого 4^ — Bi}. Процедура вычитапия матриц ана- логична1 процедуре сложения. Умножение матрицы ид число. Произвольная матрица А мо- жет быть умножена на произвольное число, для чего каждый эле- мент матрицы умножается на это число, папрнмер , , / Axil Л ЛД = . . Процедура умножения матрицы на число выглядит так: procedure (MULT (Л, В А, п, ш), utegcr л, т; real ki array Л, В, begin integer t, /, for h => 1 step t until nt do for /: = i step i until л do В [i, /1: « A x 4 [i, /] end Формальные параметры процедуры: 4 — исходная матрица, В — матрица результата, к — постоянная величина, д, т — раз- мерность матрицы. При умножении квадратной матрицы порядка п на число к ее определитель увеличивается в кп раз Перемножение матриц Пусть имеются две квадратные мат- рицы / Дц а12 _ / &11 &13 \ А = , В = i . t, /. \ Пай / \ "м “22 / Матрица произведения С = Л В будет также квадратной матрицей н той же размерности Для того чтобы получить произвольный елемент матрицы произведения, панрпмер Ciit необходимо про- 233
суммировать произведения соответствующих Элементов j-й строки матрицы А и /-то столбца матрицы Вт ап^п -Ь aw^ai ап&и _Н а1й^зз ДахЬц Ч~ ®aa^ai #21^12 d- aia^2i 0 = АВ = Операция умножения матрицы ие обладает свойством комму- тативности. Это значит, что результат умножения матрицы Л на В слева или справа (т. ет С ~ АВ или С — ВА), вообще говоря, различем. Операция умножения определена не только для квадратных матриц» но также и для прямоугольных. Одпако при перемноже- нии прямоугольных матриц необходимо соблюдать следующее условие соответствия размерностей: число столбцов матрицы-мно- жимого должно быть равно числу строк матрнцы-множителя. Число столбцов матрицы-результата будет равно числу столбцов матрицы-множителя, а число строк — числу строк матрицы- множимого. Например / йц (ha fli8 \ ,1 | /ЛцЬх 4" + aisbs\ С = АВ =*= оа = . \ ®23 / \ , / \^21«1 “Г ^22^2 Т ^2И^З/ \ &8 / Однако произведение С *= В А в данном случае ие имеет смыс- ла Таким образом» чтобы найти элемент стоящий в г-й строке в /-м столбце, необходимо воспользоваться формулой И Сч = 2 (10-11) к»1 При соблюдении размерностей перемножаемых матриц опера- ция умножения обладает следующими свойствами умножение матриц ассоциативно (AJ?) С *=• А (ВО); умножение матриц дистрибутивно (А Ц- В) С == АС 4- ВС; единична!! матрица коммутативна (перестановочная) с любой квадратной матрицей того же порядка, т е. АВ ~ В А ~ Ai при перемножении квадратных матриц определитель матрицы произведения равен произведению определителей матриц сомно- жителей. Например, если Ди В- квадратные матрицы порядка п, то det АВ — det A dot В. Транспонирование матрицы. Операция транспонирования опре- делена для матриц произвольного порядка. Транспонированная матрица обладает следующими свойствами: дважды транспонированная матрица совпадает с исходной, т. в. (Ат)т - А; 234
1 транспонированная матрица суммы равна сумме транспониро- ванных матриц слагаемых (А + -®)т ~ + Вт; транспонированная матрица про наведения равна произведе- нию транс новированных матриц-сомножителей, ваятых в обратном порядке, т. е. (АВ)Т — ВТА?\ матрица А называется ортогональной, если для нее выполняет- ся условие ААТ — J3. Деление матриц. Операция деления в алгебраическом смысле для матриц пе определена. Однако формально эта операция пере- носится на них и ее следует понимать как операцию отыскания обратной матрицы Д’3 пр и решении матричного уравнения АХ = В, т. е А \В. В общем, случае обратной матрицей А'1 называется та, которая, будучи умноженной как слева, так в справа на данную матрицу А, даот единичную матрицу. Например, матрица А-1 является обратной по отношению к матрице А, если ДА’1 - АЪ1 « Я. (10—12) Вычисление обратной матрицы является одной из наиболее важных операций. Она, в частности, испольеуется при решении систем линейных уравнений. Дли вычислительных машин разработано большое число мето- дов обращения матриц [29, 32, 331, каждый не которых обладает определенными достоинствами. Меттгоо1 Гаусса—Жордана В основе етого метода нспольеует* ся соотношение А"1 А - JE, (10-13) где А — квадратная матрица порядка п, определитель которой отличен от дуля; Е — единична# матрица того же порядка. Вычислительный алгоритм метода использует то обстоятель- ство, что любое допустимое преобразование исходной матрицы, например умИожаяие строки на константу и сложение ее с дру- гими строками, эквивалентно умножению некоторой матрицы, вид которой определяется характером преобразования, на исходную. Например, если в матрица / Hji Оц \ А — I I \ ^22 / к последней строке прибавляется порван, умноженная на констан- ту, тт е. матрица приводится к лиду (Лц «м ffgi -J" ^11 (Хц -f* Cfljj 235
то это преобразование может рассматриваться также как резуль- тат умножения 1 с 0\ / ап а1Я \ / д11 \ 1 / \ Ojl (Z32 / \ (1-зх 4? ^дд1 ®аз I* ) (10-14) При этом матрица С определяется как результат необходимого преобразования, примененного к единичном матрице. Таким образом, если некоторые допустимые преобразования кад строками матрицы А приводят ее к единичной, то те же преобра- зования, примененные к единичной матрице, дают матрицу С', которая будет обратной для матрицы А, так как С А = Л и, сле- Довйтельио, С = Пример 1 Пусть задана матрица А, опраделнгель которой отличен от нуля, /5 4 d\ И «= I t 2 6 j \7 8 9/ Для вычисления обратной матрицы аапяшем расширенную матрицу 5 4 3 1 0 0\ 1 2 6 0 1 0 1 7 8 0 0 0 1 / н будем преобразовывать ее так, чтобы матрица Л превратилась в единичную. Процедура приведения матрицы Д к ед!Гнк'шой осуществляется в не- сколько станов 1 Разделим нее ьо^фпцнепты парной стропи на диагональный элемент °к / 1 0,8 0,610,2 0 0 \ | 1 2 ВО 1 0 | \7 8 90 01/ 2. Исключим па ж opoil строки элемент для чего из второй строки вы- чтем первую, умноженную па этот элемент 1 0,8 0,С 0,2 0 0\ 0 1,2 5,4 —0,2 1 0 j 7 8 0 0 0 1/ 3. Аналогичным образом исключим первый влемоат третьей строки» для чего ни этой строки вычтем первую строку, умноженную иа «щ «« 7 1 0,8 0,6 0,2 0 0\ 0 1,2 5,4 —0,2 0 0 I О 2,4 4,8 -1,4 0 1 ) 23В
’BEGIN’ 1 INTEGER»! t J,N. t *BEGIN* * ARRAY'A»B-, C(/1:H,11N/)., »phocedure»invsrsion(a,n) ., •INTEGER'S., •ARRAY'A., •BEGIN» »REAL»AtfAX»PR,DlA.» •lHTBGER»I»JfK,IC,IH,, •ARRAY* UW(/1:N,1:3/).. »F0R»J:=1»STSP»1»DMTIL»N»D0»IKV(/Jl3/)t=O.0M »F0R*I:=1 •3TEP*'l,UNTIL»N'D0* •BEGIN* AMAX:=O.O.t 'FOR' J:=1 *STEP"1 »USTILfN*50* •BEGIN* • IF*INV(/J,3/)=1»THEN*'GOTO1F1.. • FOR»К?=1»STEP111 UNTIL1N1 DO» •BEGIN* * IF * IM( /К13 / ) »THEN * * GOTO • F2., • IF • АМДХ- ABb (AC/J»К / )»LT ’ 0 * TH&I • •BEGIN* IR:=J.t ICt=KM AMAXJ=ABS(A(/J,K/)) • END1., F2: • EID».. • END*., тслс.з/^хтлс.з/)*!.. INV(/IC,2/)8«lC.t INVCIC/I/) :=IR., 237
•XF'IR-ICs/O'XHEll* ’BEGIN* * FOR ’ J t a11 STEP111 UNTIL । В• DO' ’BEGIN* PR:sAC/IR,J/)M A(/lR,J/)t=>A(/IC,J/)., A(/ICtJ/)^FR •END» W.,' DIAixA(/IC,TC/),, A(/ICfIC/)^1t0o * FOR»J * STEP * 1 • UNTIL *N»DO1 A( № i J/) t A(/1O a J/)/DlA., * FOR*Jt-1 *STEP*1’UNTIL'N*DO1 »BEGIN* - »ZP*Gr-IC)=yO*THE2I' ’BEGIN* DIAt±A(/J,IO/). । A(/J»IO/)t=.Ot> ’POR’K:=1»STEP*1’U№L’N’DO*A(/J,V)^A(/J»K/) -A(/IO,K/)xDIA •END* •END» •ИЮ'., »FOR*Ir=1’.STEP»'1»UNTlL*N,DO» ’BEGIN* Jt^N-I+n», ♦IF* (INV(/J ,1 /)-INV(/Jl2/))=/O’TH3BH* 'BEGIN* IR^TNVC/J.I/),, ICTilNVC/J.S/)., •FOR’Kisl'TOF’VUNTIL’S'DO* * Begin* РйгйА(Д,1Я/)м А(Л,1Н/)|аА(А»1С/)., 238
л(А,1й/)!вря •END* •EID1 •END1 •END1., IHPUT(1fA),, ’FOR»11x1’STEP’1’miTIL’N'DO’ »roi?*J:x1 >STEP»1 • UNTIL'N'DO »(/!,J/) :=A(/I.J/) INVEESION(AfN)., " *IF,KEYC1) ’THEN1 ’ВЕОДГ» 8Р(ЗДЛ,Н,А,В>0).| OUlPUTG^CSQ.^BjO) •EWD’.t оиттсзгСЕО.А.в) ‘END* 1Ш' 4 Разделим вторую строку па диагональный нламонт аи 1,2 1 0,8 О,С 0,2 0 0 0 1 4,5 —0,184 0,8В 0 0 2,4 4,8 —1,4 0 1 5- Умножим вторую Строну на елемент а» еа 2,4 к вычтем зд третьей строка' аналогично умножим се ка элемент оц = 0,8 к нытгем иа нервен строки Элементы второго столбца при атом обратятся в нуль 1 0 —3 0 1 4,5 0 О —С 0,331 —0,664 0\ — 0,184 0,83 0 ) — 0,92 —2,4 1/ 8- Разделим третью строну на диагональный элемент а» = — 6 1 0 — 31 0,331 —0,684 О О 1 4,5 - 0,164 0,83 О 0 0 1 0,153 0,4 — 0,166 7- Исключим ненулевые элементы третьего столбца, кроме диагонального элемента Для етого третью строку умножим на ли — — 3 и вычтем из первой, затем умножим кв a^s = 4,5 п вычтем на второй 10 0 0 1 О О 0 1 0,791 -0,854 0,153 0,536 — 0,07 0,4 ”0,5 \ 0,75 I. — 0,168/ Матрица в правой части п есть искомая обратная матрица, 239
• BEGIN* •INTEGER»».. INPUT0,N)., ’BEGIN' ’REAL*EPS.f • ARRAY * А, В ,ХР(Л iK» 1:»/) .» 'PROCBDURE’ITINVCNtAtXFtEPS),, ’INTEGER’»», ’REAL* EPS.» •ARRAY’AjXF., •BEGIN’ l 'REAL’S.» •INTEGER’I,J, K.» 'ARRAY’S,X1 ,Xa(/1 sNt1 ’ PROCEDURE ’ MULT (H, A, В, C ) M •INTEGER’»., •ARRAY'A,BIC», 'BJXilN' * 'HEAL’S.» ♦ INTEGER’I, J,X.» •TOR ’ I: ' STEP ’ 1 * UNTIL1N1 DO'’ГСЙ’ K*1 ’ STEP' 1 ’ UNTIL»N •DO' 'BEGIN» 3i=o.o., •FOR’J:=*1'STE?*'l’UNTIL'N1 DO'Sj=3+A(/I, J/)XB(/J,h/)., •END* •END',, •F0R’I:=1’£rEM »®TL’N’DO»’I'6h»J :=1 ’STj^’1 »WHL*N * DO' K( /I t J/) :=' IF' 1=J 'THEN ’ 2.0 ’ ILS*' 0., Ks^Q., ИйНЖИ.^.И),! Z i—С • О»» К • =K+*1. । •POR'Iial •STEP’I’UNTIL’N’DO’'FOR’ J:*1*STEP*I’UilftL»» 240
'DO* •BEGIN’ Z1-»IF’1=J *UHEN•Z1ELSE'Z+ABS(X1(/I,J/))., X1(/I,J/)S=E(/I, (/I,J/) •END'•, •IF'Z'LE'EPS'THEN1’GOTO’PIN., №T(N,XF,X1 ,X2)., ’FOR’I i=1 ’ STEPM •UNTrL'N’DO’ »FQR’Jia1'STBPH’UNTIL’N •DO’XFC/i.j/j^xaC/i,!/)., * IF• ЮСГ(1)1THENOUTPUT(3»1(E*)tX?).i •GOTO’LI.» FIN*0UTPUT(3i1(I1) |K)M ЯП)' ., INPUTd.A.XFjEPS)., I*DIWV(N| A»XF|EPS)., SP(3,N,N,K,Xr,A,B)., OUEPUT(3i,(E,)|XF,B) END1 • END* Метод Гаусса—Жордала удобен для реализации его па ЦВМ. Процедура, реализующая этот метод, представлена па сгр. 237. Ее формальными параметрами являются А — матрица коэф- * фкциевтов; N — порядок матрицы. Алгоритм процедуры INVERSION несколько отличен от пред- ставленной последовательности действий нрп вычислении обратной матрицы. Отличие заключается в том, что преобразования строк каждый раз выполняются после того, как будет найдыг максималь- ный по модулю элемент матрицы. Еслп этот элемент пе является диагональным, то производится соответствующая перестановка строк. Все перестановки строк 'фиксируются во вспомогательном массиве INV. После того как выявлен максимальный диагональ- ный элемент, например, Ar-го столбца, исключение элементов этого столбца, кроме диагонального, производится н следующем поряд- ке: fe-я строка делится на диагональный элемент; лз элементов всех строк вычитается А:-я строка, умноженная па исключаемый эле- мент Как только левая часть вспомогательной матрицы будет преоб- разована в единичную, производится перестановка отрок найден- ной обратной матрицы в соответствии со значениями массива INV Обратная матрица размещается па месте исходной. 241
Итерационный метод иснольэуе/гся для обращения матриц невысокого порядка н основан иа использовании итерационной формулы Х(й1> - да (2Ь’ — АХ»), (10—15) которая является обобщением на случай матриц итерационной формулы нахождения обратной величины числа. Здесь А — мат- рица, для которой необходимо найти обратную! JfiO— два последующих приближения обратной матрицы: J5 — единич- ная матрица такого же порядка, что и А. Для произвольной матрицы итерационный процесс, выполнен- ный по формуле (10—15),сходится к А~\ если начальное приближе- ние X») [321 XW) is® аДЗ\ где 0 <; а<2/Ьй (Ь — верхняя граница собственных значений (см. стр. 276). В отдельных случаях, если неизвестно лучшее приближение, в качестве начального можно брать единичную матрицу, При вычислении обратной матрицы по этой итерационной формуле сов- сем ие используются операции деления, Формула обладает квад- ратичной сходимостью. Для окончания процесса последоватолктпду приближении можно воспользоваться оценкой, суммы модулей эле- ментов матрицы АХ, не лежащих па главной диагонали, для чего в исходной информации необходимо ведать точность вычислений. П роцедура вычисления обратной матрицы но итерационной фор- муле приведена на стр. 240. После выполнения процедуры наряду о получением обратной матрицы сохраняется п исходная. Алгоритм составлен, с использованием дополнительной проце- дуры умножения квадратных матриц, которая локализована внут- ри основной процедуры, Ее формальными параметрами являются: 7V — порядок матрицы; XF — начальное приближение; А — ис- ходная матрица; eps — точность. Выходное значение присваива- ется XF- Фунпцнн от матрицы. По аналогии с функциями скалярного аргумента для матриц можно также определить целые и дробные рациональные функции Например, для матрицы А можно запи- сать полином Р (А) = «о Ап -Ь tzjAft-1 +... 4- dn-i А 4- (10—16) где о0, Ор..., Дп — скалярные величины нлн матрицы типа т X п. Если положить, что с0— 1, Oi= а3 = ...= 0, то из (10—16) получим Р (А) - Ал. (10—17) Прн п 0 выражение (10—17) означает, что Р(А)-= А А ... А. п рцн Если определитель матрицы А отличен от нуля и 0, то выражение (10—17) означает Р (А)== А“п « (А-1)". 242
Таком образом, чтобы вычислить значение выражения (10—10), необходимо определить соответствующие степени натриды А. и просуммировать полученные цроивведенвя. Для фуницни ел, так исе как для (10—10) и (10—17), с правей- ливы обычные правила функций скалярного аргумента, Например, если А и В — квадратные матрицы одного п того же порядка, то ел ев~ £В ел — 8^+-», (Ап)₽ = А’1*’ Аналогично ел е*“л — В. Дифференцирование и интегрирование матриц. Если элементы матрицы являются функциями некоторой пеэпвисиыой переменной, то матрица может быть интегрируема ня я дифференцируема по этой переменной. При дифференцировании матриц справедливы обычные правила дифференцирования функции скалярных аргументов- Например, если элементы матрицы А есть функции переменной т, то можно вапис ать А' dAlfah (10-18) Производная от экспоненты, показателем которой является матрица, вычисляется аналогично производной от скалярного аргу- мента fllrtr. (сЯк ) tn А Для производной от произведения матриц можно записать ^(4В)=^В+^4. (10-19) При интегрировании матрицы, элементы которой являются функцией независимой переменной, интегрируется каждый эле- мент этой матрицы, Например, A th = J J (z) th |, (10—20) Рйсчете коэффициентов эффективности, для ячеечной модели движения потока жидкости на тарелке ректификационной колонны. При расчете тарельчатых массообменных аппаратов использу- ется ячеечная гидродинамическая структура движения потока жидкости по тарелке 134]. Матрица коэффициентов эффективности тарелки при этом опре - делимся соотношением [В] -3 Т-{П 1-® + } (ЧЬ (10-21) »«•! где р — число ячеек полного перемешивания; L — нагрузка по 243
жидкости, кглюлъ/час\ — вектор распределения пара но от- дельным ячейкам, кгмолъ/чащ т] — матрица локальных коэффи- циентов эффективности; V — общее количество пара, поступающего на тарелку, кгмолъ/часг — единичная матрица; Здесь ЛГ — матрица аппроксимации равновесных зависимостей, элементы которой определяются по формулам » 11 i = У ^ = -^(^-¥0 +6fJ = L *,/ = 1,2, Л-1; (10-22) у, аз — векторы состава пара и жидкости, а — вектор коэффициен- тов относительной летучести; 3 ал i=i Примечание, Для того чтобы исключить линейную аа- нпсимость отдельных строк матриц -Е и ЛГ, последние определены для к — 1 компонента смеси, С этой целью концентрация компо- нента с номером к в жидкости исключается путем замены АГ—1 = 1 2 Аналогично для расчета концентрации к-та компонента в паровой фазе используется соотношение к-1 У а = 1 ~ 3 & f=i Программа расчета матрицы коэффициентов эффективности по уравнению (10—21) приведена ниже, Отдельные этаны расчета в программе оформлены в виде про- цедур. Процедура MULT предназначена для умножения квадратных матриц. Ее формальными параметрами являются Д, В — матрица- множимое и матрица-множитель соотвотствеппо, С — матрица- нроивведеняе, п — порядок. Процедура МЛ ГД предназначена для сложения матриц, умножения матрицы иа константу, сложения с единичной матрицей, присваивания значений элементов одной матрицы элементам другой. Выполнение этих функций обеспечи- вается соответствующими значениями фактических параметров. Выходным параметром процедуры является кассив Д, Назначение 244
’BEGIN* ’INTEGER'S,?., INPUTS,К,P).t ’BEGIN* UTOEl’I.J,, *REAL'AK,BK,CK,LtV., * ARRAY’*,Y,ALTA(/1 xK/)>VS(/1 :P/) ,MtETA,F,ZD, A,B,SXT(/1: ’PROCEDURE*VULT(AtB,C,N)., 'ARRAY*A,B,C., 'INTEGER'N., ’BEGIN' * INTEGER'I,J ,K., ’REAL'S., ’TOR'I:=1’aO‘EP,1,UNTlL,N,l)0’ ’E0R’K:=1' ЗРЕРИ' UNTIL’N ’DO' 'BEGIN’ Sl-O.O., ’FOR'J:=1'STEP’1’UKTIL,N'DO’S:-S+A(/I,J/)XB(/J,K/) CC/I,K/)!=S *BND’ ’END’., •PRDOEDURE* WA(A,B9AKfBK|CK9N)., 'XNTBGER'Nm 'ARRAY*A»B., ’REAL’AK,BK»CK,» *BEGIN’ ’INTDGER'I, J. t ’FOR'1^1 ’STEP”! ’UNTIL'N'DO* 'STEP* 1 ’UNTIL'N , *D0»A(^9J/)t»A№<AC/I9J/)+KC*B(/I9J/)+(’IF*I=J*THEN' CK*ELSE*0.0) *STD’., ’PROCEDURE ’ KOEFCA, В, C ,N). 9 ’ INTEGER *N., 'ARRAY’A,B,C., 245
’BEGIN» ’INTEGlffi’I.J.» «REAL’S.SI., ’FOR’11=1 ‘8И₽‘1»UNTIL’N» DO» ’BEGIN» SliaBC/I/)., *FOR•J1^1•STEP •1* UNTIL»N* DO• «BEGIN* Sl=«IF«I=J’THES4’1ELSa’.OM (0-S1)+B(/N+1/)/A(/N+1/)xS1 »№’ ’END» ’END»., INFUTC1 ,Z,m,ALFA,VS,L,V). , AKisO.O., »FOR»I1=1»STEP’1’UNTIL’K‘DO»AK:=AK+X(A/)xALFA(/I/)., ’FOR’11=1 »STEP»1’UNTIL’К» D0»X(/I/) :=X(A/)xALFA(/I/)/АК • Х0ЖХД9Ж,К-1)., MULTCETA^B.K-I)., MATA(F,F,0.0,0.0,0.0,K-1)M »F0R»It=O’STEP»1»UKTIL»P-1’D0» »BEGIN* MATACZDjZD,0,0,0.0,1.O,K-1).» *FOR' J 1=1 »STEP'1*UM!IL»I»DO» ’BEGIN» MATA(A,B,O,O,VS(ZP+1-J/)/Ir,1.O,K-1).( lWMJ(ZD,AtKXT(K-1)., MATACZD,EX'1',O.O,1.O,O.O,K-.1) ’END»., MULT(ZD,ETA,EXT,K-1)., MATACP, m?, 1.0, VS( ZP-I/) A, 0.0 ,K-1) «END»., 0UTPUT(3,,CE«),Y,M,F) »№» •Ж)' 246
остальных формальных параметров ЯСйо пЭ Содержания процеду- ры. Процедуру KOEF обеспечивает расчет по формуле (10—22), и ев выходным'параметром является массив С. Выполнение программы начинается с вычислении состава па- ровой фазы по уравнению (10—23), определения матрицы коэф- фициентов по уравнению (10—22) и элементов матрицы Ар Затеи формируется нулевая матрица суммы произведений и начинается цикл по вычислению отдельных произведений уравнения (10—21). При фиксированном значении индекса произведения вычисляются в операторе цикла по Л Для исходных данных /t = 3, я w (0,25t 0t25 0,5)1 Р = 5; се —(lk0 2,0 3,0); L = 3; VB = (2, 1, 4, 3t 5): /0,5 0,4\ И = 15; , »l«-^ot3 0,7/ получены следующие результаты расчета* __ /0,543 0,0493 \ /1,679 2,196\ М ^0,198 0,988 Л Е= V.81 3,2 3. Решение систем линейных алгебраических уравнений Решение системы линейных уравнений (10—2) означает на- хогцдение таких значений неизвестных, при подстановке которых в исходную систему каждое вэ уравнений обращается в тождество. Система уравнений называется совместной, если существует хотя бы одно решение. Однородные системы линейных уравнений всегда совместны, так как нулевые значения неизвестных для них являются решением. Совместность неоднородной системы линей- ных уравнений устанавливается теоремой Кронокера—Капелли [261. Для того чтобы система линейных неоднородных уравнений была совместной, необходимо и достаточно, чтобы ранг матрицы коэффициентов был равен рангу расширенной матрицы Например, для системы уравнений 1, (10—24) Ч' #я = 3) матрица имеет ранг, равный 2, так как det А =/= 0. Расширенная матрица _ / 1 1 1 \ 1 3/ также имеет ранг, равный 2, и, следовательно, система совместна 247
Однако система уравнений + т2 — 2 2a?j -|- 2а.в = 3 (10-25) несовместна, так как ранг матрицы /1 Ц А ” \ 2 2>/ равен 1, в то время как ранг расширенной матрицы - / 11 2\ Л~ \ 2 2 3/ равен 2. Совместная система линейных уравнении может иметь одно или бесконечное множество решений. Система, имеющая единственное решение, называется определенной, а в противном случае — неоп- ределенной, Например, если бы для системы (10—25) столбец сво- /2 \4 бодных членов был равен В = , то ранг расщпреннойматрицщ был бы также равен 1; и система была бы совместной, ио имела бы бесконечной множество решений Для того чтобы однородная система п уравнений с п неизвост- яымп имела только нулевое решение, необходимо и достаточно( чтобы ее определитель был не равен нулю, и наоборот, однородная система имеет ненулевое решение лишь в том случае, если ее опре- делитель равен нулю. Например, для однородной системы хг -j- — 0, г, -i- 2ra = 0 определитель матрицы коэффициентов /1 1\ det А = . = — 1 не равен пулю, и система имеет только нулевое (тривиальное) решение Для однородной системы jTj Хц — 0, + 2хй = 0 определитель матрицы коэффициентов /1 1\ ав‘4 = (2 г)“° равен кулю, и система имеет бесконечное множество решений, у дов л отворяющих соотношению Совместные системы, число уравнений которых меньше числа неизвестных, имеют бесконечное количество решений. Решение 248
таких систем возможно лишь после снедения к определенным систе- мам, т, е- виду, когда число уравнений, равно числу неизвестных. Для этого часть неизвестных необходимо зафиксировать Число фиксируемых неизвестных равно разности между общим числом неизвестных и рангом матрицы- Поскольку фиксируемые перемен- ные могут принимать бесконечное количество значений, система не будет иметь единственного решения- Единственность решения не- однородной системы линейных уравнений устанавливается теоре- мой Крамера [261 Для того чтобы неоднородная система п урав- нений с п неизвестными имела единственное решение, необходимо и достаточно, чтобы определитель матрицы коэффициентов был отличен, от нуля. Это решение может быть вычислено по формулам я\ — det -di/det А, (10—26) где Л —матрица коэффициентов системы; — матрица, полу- ченная из А путем замены г-го столбца столбцом свободных членов. При обработке экспериментальных данных иногда получается система уравнений, в которой число неизвестных меньше числа уравнений. Такая система называется пербобусловленной. Вопрос существования и единственности решения должен рассматриваться после приведения ее к нормальному виду, т. с. виду, Когда число уравнений равно числу неизвестных. Одним нз методов решения систем линейных уравнении явля- ются формулы Крамера (10—26). При решении системы п уравне- ний необходимо п + 1 раз вычислять определитель n-го порядка- Так как затраты машинного времени на вычисление определителей резко возрастают с повышением порядка системы, то метод Кра- мера существенно проигрывает в скорости но сравнению с дру- гими мотодамп- Все методы решения систем линейных уравнений подразделя- ются на две группы: точные и итерационные. Точные методы решения систем линейных уравнений основаны па том, что система уравнений с помощью элементарных преобра- зований сначала приводится к более простому виду, а затем уже решается. Точными они называются потому, что решение может быть получено в результате выно/шенил коночного объема вычис- лен вй. При этоле точность определяется лишь точностью пред- ставления числовой информации в матине Метод Гаусса Пусть задана система линейных уравнений п го порядка + h = 6i, 4“ ~ »• "г = 6jt (10—27) Ladd h f W1 4“ 4- • + — 6ni определитель которой отличен от пуля. 249
Предположим, что матрица яоэффидионтоп не имеет нулевых диагональных элементов. Если такие имеются, то соответствующей перестановкой строк их всегда можно сделать ненулевыми. Метод Гаусса заключается в следующем; 1. Из всех уравнений, кроме первого, исключаются члены, со- держащие^. Для этого из второго, третьего,,.., л-го уравнений сис- темы почленно, включая правые части, вычитается первое уравне- ние, деленное на ап и умноженное соответственно иа лй1т.anV В результате этой операции иорядок всех уравнений, за исключе- нием первого, понизится иа единицу. 2 Вновь полученное второе уравнение делится на «щ и анало- гичным образом начиная с третьего уравнения исключаются все элементы( содержащие 3. Повторяя ету процедуру п — 1 раз, т е. каждый раз исклю- чая неизвестные на нижерасположешшх уравнений, можно полу- чить в результате ступенчатую треугольную систему уравнений, эквивалентную первоначальной, последнее уравнение которой содержит только одну неизвестную. 4. Решение ступенчатой системы уравнений осуществляется путем последовательного вычисления неизвестных начиная с по- следнего уравнения. Поскольку определитель треугольной матрицы равен произве- дению его диагональных элементов, этот метод может быть ис- пользован и для вычисления определителя. Если в процессе сведе- ния системы к треугольной производилась перестановка уравнений системы, то окончательно знак определители будет определяться четностью или почетностью числа перестановок. Нечетное число перестановок меняет знак определителя на обратный, Хотя метод Гаусса является точным методом, неизбежное округ- ление результатов промежуточных вычислений приводит к воз- никновению и накоплению погрешностей. Наиболее благопрнят ным случаем для возникновения ошибки яиляется вычитание близ- ких друг к другу величин Тогда результат вычислений может иметь величину порядка погрешности представления чисел, что существенно искажает дальнейшие вычисления. Различные усо- вершенствования метода Гаусса вызваны именно стремлением по- высить точность решения. Одним из таких усовершенствований является уточнение реше- ния, полученного обычным методом Гаусса. Если для системы АХ = Л с некоторой ошибкой б найдено решение Хо, то точное решеине можно представить как X = Хл + 8 (10-28) Поправки 8 можно вычислить путем решения системы уравнений А + 8) -В (10-29) 350
или AZ^Z. где Z — В — АХ0 Процедура, реализующая метод Гаусса, представлена нижё. После выполнения процедуры матрица коэффициентов походной системы сохраняется В процедуре не производится перестановка строк, поэтому диагональные коэффициенты исходной матрицы должны быть отличны от нуля Формальными параметрами явля- ются: п — порядок системы, А — матрица коэффициентов систе- мы, Y — вектор решения, procedure GAUSS (я, Л, У), integer п, arraj Л, У, begin integer I, j, к, t: = o, Al : t+1; for /; *= л + 1 step — 1 uutil i di Л[(, /]. = W« for /: = 14-1 step! until л do for A: = 14-1 atop 1 until n + 1 do A M; = A U,ftJ - Я LM1 X A [i, A], if I #= n then goto Л1, for I. — 1 step — 1 until 1 do begin У Ш:=> A [i,n+ 1)/Л[м] for /: = < — 1 step — 1 until 1 do л I/, » + i): = л [/, «4- i) - л 1/jl x / U1 end ead Метод Гаусса—/Кардана. Как уже отмечалось (стр 235), в этом методе исключение элементов, кроме диагональных, произво- дится с помощью элементарных преобразований. Номер столбца матрицы, недиагональные элементы которого исключаются, каж- дый раз выбирается в зависимости от индексов максимального но модулю элемента строки — главного элемента. Если главный эле- мент нед наго нальни й, то соответствующим образом производится перестановка строк. Такой выбор главного элементаобеспечивает минимальную вычислительную погрешность, В методе Гаусса—Жордана столбцы, элементы которых исклю- чаются, в дальнейших преобразованиях пе участвуют. Все пре- образования осуществлнются с оставшимися столбцами Пусть дано матричное уравнение АХ = В (10-30) 251
Запишем ее расширенную матрицу в виде (Л | Л) или Ли ®1П ®21 Лщ йзз Л^п &1 &2 ,Лц1 Дня Лаз > Лнп Метод Гаусса—Жордана заключается в том, что матрица А приводится к единичной (путем последовательного исключения всех элементов кроме диагональных), причем над ввктор-столбцом В производятся те же операции. В результате расширеппан мат- рица приводится к виду (10—31) Если в процессе решения производились перестановки строк, то в результирующей матрице строки вновь расставляются на ис- ходные места. Вектор является решением системы. Программа решения системы линейных уравнений этим мето- дом приведена на стр, 253. При обращении к процедуре GORDAN число столбцов матрицы А задается на единицу больше числа строк, т, о. формируется расширенная матрица Матрица системы коэффициентов после выполнения процедуры не сохраняется. Вы- ходным параметром является вектор X, Метод обращения матрицы. Пусть имеется система линейных уравнений вкда Л X - В. (10-32) где А — матрица коэффициентов, X — вектор-столбец неизвесг ных; В — вектор-столбец свободных членов. Если матричное урав- нение умноягить слева на обратную матрицу А~г A~l АХ А *В, то, учитывая, что A~L А уравнение можно переписать в виде X -= ЛГ1 В (10-33) Таким образом, чтобы найти решение системы лицеииых урав- нений, нужно вычислить для матрицы А обратную матрицу Л.-* и умножить вектор-столбец правых частей на эту матрицу слева. Этот метод решения систем уравнений удобно применять в тех 252
»begin* •INTEGER’!?,!., INPUT(1,N),, • BIGIN ’ ’ARRAY’А(/1 :N,1 ;N+V) , X(/1:N/)M ’PROCEDURE'GORDAMN। A,X)., ’INTEGER*N., •AliHAY* A,X., 'BEGIN' ’REAL* AM AX, DI A., *INTEGfet11,J,К,IC,1R., 'INTEGER'’ARRAY’INV(/1:N/),, •FOR'I:=1’STEP’1'UNTIL’N'DO’INV(/I/)1=0,, 'FOR1IJ=1’STEP'1’UNTIL'N'DO' ’BEGIN’ AMAX :-O.O.» •FOR’’STEP’1’UNTIL’!?'DO' 'BEGIN' 'IP’INV(/J/W0’THEN’’GOTO•P2.» • FOR’К:=1'STEP’1’UNTIL'N'DO* •BEGIN' ' IP'INV(/K/)n/0* THEN" GOTO' F1., ’IP’AMAX’ IT •ABS(A(/J,K/))'THEN • •BEGIN* AVAX:oABS(A(/J,K/))., isixj., IC:=K •END'., F1: ’END’,, F2: •END’., ’IP’IS=/IC'THEN' ’BEGIN’ •F0R'J:=1*STEP’1'JNTIL'N+1’DO' 25.3
£'J ‘ - « t -ч ' ,<* 1 ;-/<> • . 1 ь 4 " 1 » . • • , _ . „ • ' ( « 1 ' 1 v Ши* ( DIAi-AC/IRjJ/)., V- 1 » A(/XR,ir/) :=A(/IC,J/) » i ‘ f 1 /- •w L- *END4, DIA:=A(/IC,IC/) ,b_ ' A(/XC|IC/)i=1.0., 1 • INV(/IC/) ide., »FOR' J:=1 'SUEP’ I’tfKm'N'DO' *1 f ’IF'IKVC/J/^O'THEK’AC/ICjJ/) izAC/IOjJ^/DIA 1 'EKD'.t T A(/10,N+1/)i=A(/IC,N+1/)/ОТA., *11 •» FOR' J :^1' STEP ’ 1 ’ UHTIL' N ♦ DO' •BESIN' 'IF'J=/IC'Tffi2P 'l ’BEGIN' • DIAj=A(/J,IC/)., A(/J,IC/):=O.O., 'FOR'KxxI'STEP'I'UNTIl'N'DOf - •BJfiUP ,IF’INV(/K/)=O,THSN’A(/J',K/) j=A(/J,K/)-A(/IC,K/)xDIA < ♦ею*.. A(/W/) J=A(/I,ii+1/)-A(/IC|N+1/)xDIA i * ♦WD' fEND» 'END'., »FOR» Iftnl »STEP‘1 'UHTIL'N*DO’XC/IWC/I/)/) :=a(/INV (/I/M+1/) •ЕЮ’м IKPUT(1ta)«, GORDAN(И,A,X)., OUTPUT^,'(E*), At X) 1W •END’ j 2&4
случаях, когда необходимо решить ряд систем уравнений с одина- ковыми матрицами коэффициентов, по с различными правыми частями. Обратную матрицу можно получить по одной из пред- ставленных ранее процедур. Точность решения системы будет определиться точностью вычисления обратной матрицы. Метод решения трехдиаганалыюй системы уравнений. При решении систем высокого порядка могут возникнуть трудности, связанные с размещением матрицы коэффициентов системы и памяти машины. Например, при решении дифференциального уравнения в частных производных (уравнения Лапласа) с числом узлов, равным 500, полная матрица коэффициентов имеет 250 000 элементов я обычно не может быть размещена в ОЗУ. Однако эта матрица слабо заполнена к лишь небольшое число ее элементов отлично от нуля. Другим примером таких систем линейных урав- нений специального вида с большим числом нулевых элементов в матрице коэффициентов являются системы, получаемые при опи- сании многоступенчатых процессов (многоступенчатая экстрак- ция, абсорбция и ректификация в тарельчатых аппаратах к т. п.). Решать такие системы обычными методами исключения нецеле- сообразно, так как в них используетен полная матрица системы, для которой объем вычислений пропорционален порядку системы в третьей степени. ’ Для решения подобных систем обычно используются специаль- ные методы, один нз которых применительно к трех диагональной системе рассмотрен пи/ке [35], Пусть имеется система уравнении + С1г3 = + с2л?а — £?2) ♦ ♦ Г***<гм*ы<«< 4“ Mt + (10—34) -J- &TWiZn._1 4” -J- = dn. Обозначим В — иекхор элементов матрицы, расположенных на главной диагонали; А, С — векторы элементов, расположенных ниже п выше главной диагонали соответственно; JD — вектор пра- вых частей системы. Если хранить только ненулевые элементы, т. е векторы А, В, С, JD, то матрица системы (10—34) будет занимать лишь 4-п ячеек ЗУ вместо п (я -J- 1). Алгоритм решения трехдиагоналыюн системы уравнений за- ключается в том, что последовательно исключаются поддиагопаль- ные элементы матрицы системы (10—34) (элементы вектора А), а диагональные (элементы вектора В) приводятся к единичным. Од- новременно вычисляются новые значения элементов векторов С и Х>. Как л в обычном методе Гаусса, прямым ходом матрица при* 355
водится к треугольному виду, а обратным — находится вектор решения Программа решения системы вида (10—3.4) приведена яа стр. 257. Алгоритм вычисления вектора решения оформлен в виде процеду- ры CODIA. Формальными параметрами процедуры являются: 7V — порядок системы; Л, Л, С, Л — векторы элементов пижней, главной, верхней диагоналей и столбца правых пастей системы соответственно. Программа составлена таким образом что при вычислениях новых, значений С и Л по формулам Ci-i -= Р\ — — А|_гС}_1т Я£ = (О, - A^D^PU I - 2, 3...................(10-35) расширенная матрица коэффициентов системы (10—35) приводится к диагональной вида 1 Cf 0 0... 0 0 i G 0 ... 0 А 0 0 1 0 ^3 (10—33) 0 0 0 0 . 1 T/L / Поэтому вычисления значений неизвестных производятся по фор- муле [^1 — Ci (10-37) Итерационные методы решения системы линейных уравнений относятся к приближенным методам В противоположность точ- ным методам итерационные используют относительно простые алгоритмы для похождения решения и обычно требуют меньших затрат машинного вреиепн при решении системы высокого но ряд ка. Для заданного начального приближения в этих методах вы- числяется последовательность векторов-столбцов, сходящаяся к решению системы. Для того чтобы применить итерационные методы, исходная система уравнений должна быть представлена з форме, называемой приведенной системой- Например, для системы уравнений 5a:i 4- х3 — Зху 4“ 4“ = -2, --1, 2х^ тГл 4х^ — -8 приведенная система будет иметь вид = —0,4 4- 0*#! — 0,2 4- 0,6’3^, = 0,25 4- 0,25#! -г 0*ха -{- 0,5-Хз, х3 = 2 |- 0,5xj -f- 0,25-х., 4~ 0 х,. (10-38) (10-39) 256
% . k- '.i. v 7г;.'-’' 'г- - ' .i*'-' .........’> ’ I,“ ". 1 _-.r й'ъ. ' j,' г, • , ‘ , - । i - <<?_ ’begin* * INTEGER‘П.» №MJ(1 ♦BEGIN1 'ARI?AY‘AtB,0(D(/1:N/)M 'JPaOCEDUHB'CODrAOhAjBtCjD)., IVAI.US,WIAIBICM ’ INTEGERS», ♦beg'ik’ ’BEAL'Pm •тк5ш«гм FlsB(/V)., D(/V)i*D(/1/)ZPM ’ FOR’I; x2»Slip * 11 UM®I JU' И ’ DO» ’BEGIN* Р:=В(/Т/)-А(/Т-И/)хВ(/1-1/)м ’EHD’m • РОВ ’ 11ЫМ * STEP ’-1 * UNTH 4 ’ DO ’ D( Л/) »«aD(/T/)-B (./I/) XD(/I+V).» »END’., INPUT(1|A*B«C»D)-» CODTACN.AtB.CtD)., 0TOin?(3»*(B,)»D) •Ш' ’END1 В общем виде уравнения приведенной системы определяются черев коэффициенты исходной как T"(&1 ~ S 0 = 1,2, ...,л) или в матричной форме х = р -|- ах, (10—40) где р — вектор-столбец с элементами р{ = &{/ah; а — матрица 9 в в Кафляои к др 257
(10-41) «1 i - Приведенной системы с элементами 0 (>->). м Условия сходимости итерационного процесса для конкретной приведенной системы устанавливаются следующей теоремой: если для приведенной системы линейных уравнений (10—40) выполнено хотя бы одпо из условий f Ь=11 п !l«k “ wax 2 |«и|<1. 1 j,jai / п 2 % 11 < ?-=! то ироцесс итерации X^zHp + аХ» (Ю-Л2) (10—43) сходится к единственному решению независимо от выбора началь- пого приближения В частности, процесс итерации заведомо сходится если элемен- ты матрицы а удовлетворяют условию l«ul<T' где н —число неизвестных систем. Доказательство теоремы приводятся в литературе ио вычисли- тельной математике [29, 321 Величины |] а |] Jf ]] а ||2, || а ||ж называются норжмиг матрицы приведенной системы уравнений и широко используются в вы- числительной математике для анализа условий сходимости ите- рационных процессов Для определения момента окончания итерация прн решении системы уравнекий обычно используется понятие нормы вектора приближения, под которым понимается величина И 71 24 i-L Иногда попользуются также и другие определения нормы вектора 1*= max | z J.
Момент окончания итерационного процесса устанавливается ио разности норм последующих приближений. Если абсолютная ве- личина этой разности не превосходит заданную точность, т. е |{ Л^Ц-Н'^ЦКе. то итерации прекращаются и вектор Лп^'+1) принимается за решение системы. Метод простой итерации. Итерационный метод, в котором по- следующее приближение вычисляется путем подстановки в пра- вую часть приведенной системы значений неизвестных, получен- ных на предыдущей итерации, называется методом простой ите- рации Формульная запись метода простой итерации имеет вид урав- нения (10—43). Рассмотрим порядок решения системы (10—38) методом прос- той итерации, для чего запишем ев в виде ~0.2 0,Ь\ 0 0,5 | 0,25 0 / (10-44) Легко заметить, что любая норма матрицы коэффициентов системы (10—44) меньше единицы, л, следовательно, итерацион- ный процесс будет сходящимся Выберем за начальное приближение решения столбец свобод- ных членов, т. с Xi = —0,4; = 0,25; тя = 2. Подставляй эти значения в правые части системы (10—39), получим первые при- ближения корней^ = 0,75, х^ — 1,15, = 1,8625. Подстав- ляя вновь найденные значения неизвестных в систему (10—39), подучим новые значения неизвестных и т д. Точным решением системы (10—38) являются значения неиз- вестных — 1, х, = 2, хэ = 3. Для того чтобы получить решение с точностью 10~s (точность по разности норм последующих приближений), в рассматриваемом случае требуется 22 итерации. Если и качестве начального при- ближения взять столбец свободных членов исходной системы (10— 38) зц — —2, = —1, х3 = —8, то для получения решения с той ясе точпостыо необходимо 27 итераций. В табл. 15 приведены последующие приближении, получаемые прп решении системы (10—38) методом простой итерации. Программа решения системы линейных уравнений методом простой итерации представлена ниже. Алгоритм вычисления по формулам (10—43) оформлен в виде процедуры ITER, Ее формаль- ными параметрами являются п — порядок системы, Л — расши- ренная матрица коэффициентов, X — вектор решения, eps — точ- ность, 9* 259
BEGIN' •IMTJD&ER’N-, / INPUT(1,N)M ( ’3J&HJ' - X ’REAL'EPS.* ’ARRAY•A(/1:N,1sN+1/)*X(/1 :N/).* 'INTIDGER'I*J.* ” 1 ’PROCEWRE’ITEHOMjXjEPS)., 1 »INTEGER’K.* ' »REAL’EPS.* 'ARRAY'A*X.* ’BEGIN' 'IBTESER'I.J.* 'REAL'S*!.. * 'ARRAY'XI(/I:N/).* AIxSs-O.O.* 'FOR'I t=1'STEP* 1'UNTIL'tT'DO' 'BEGIN' L;=0,0., 'FOR'J:=1'STEP'1'UNTIL‘1-1,1+1'STEP’1'UNTIL'N D0’L:«UACZM/) X1(/I/)^(A(/I,N+1/)-L)/A(A,I/h, SinS+ABS(X1 'END'.* 'POR'I :=1'STEP'1'UNTIL'N'DO’X(/I/) :=X1 'IF'KEY(1)'THS?'OUTPUTC3,'(E*)tA*X1).t 'IF'S'LE'EPS'THEN'’GOTO'Д2' ELSE''GOTO'Л1.* A2: 'END'. t INPUTC1*A*X*EFS).* ITERCHtA,XtEFS).t 0OTPUTO,'(E'),X)., . '1Р»к®гС1)'Фннг' 'BEGIN' 'FOR’Ifa!'STEP'1'UNTIL'H'DO''FOR'J:=11STEP'1'
tJNTlL/N'DO'A(/l,N4-l/):='A(/l,N4-l/)—A(/l,7/)XX(/J/),, 'fOR'l.=rSTEP'l'UNTIL'N*DO'X(/I/)'=A(/I,N4-l/), 0UT₽UT(3,'(E'),X) 'END' 'Eft D' 'END' Таблица 15 номер итерации Занчвипя напзмошых Номвр Итерации Зналеяян неизвестных »1 «1 *> х» 0 -2,0 -1,0 —8,0 6 1,044 1,883 2,377 1 -5,0 -4,25 -0,75 8 1,026 1,893 2,769 2 0,999 —0,925 —1,562 10 1,013 1,963 2,914 3 -1,212 —0,309 —2,293 15 0,0936 1,994 3,000 4 1,037 1,093 1,317 20 1,000 1,999 2,999 5 0,171 1,167 2,792 Метод Гаусса — Зейделя, Этот метод является модификацией метода простой итерации. Отличие эанлюча&тся в том, что урав- нения приведенной системы используются для расчете нового приближения по следовательно При вычислении (Л 1)-то при- ближения неизвестной х{ учитываются уже полученные (к -|- 1)-е приближения неизвестных х21. ., Формульная запись ме- тода имеет следующий вид: «Ги-0<+2адГ1> 1 S».^ /—I (£=1,2,.,„л; * = 1,2(( ) (10-45) При использовании метода Гаусса — Зеиделя условия сходи- мости, сформулированные теоремой сходимости простой итерации, остаются в силе. Применим метод Гаусса — Зейдоля к системе уравнений (10—38) В качестве начального приближения воспользуемся столбцом свободных членов системы Подставляя начальные значения неизвестных в первое урав- нение системы (10—39), а в последующие уравнения — наряду о начальными значениями и вновь вычисленные, получим первое 261
приближение! л£> = —0,4-04—0.2*0,254-0,6 2 = 0,75, , $ = 0,25 Ч- 0,25-0,75 4- 0-0,25 Ч- 0,5 2 = 1,437б( 4> = 2 4 0,5-0,75 Ч- 0,25 1,4375 Ч- 0-2 = 2,7343.\ Найденные значения неизвестных снова подставим в уравне- ния (10—39) и в таком же порядке получим второе приближение 43) = 0,9531, 43> « 1,355, 4’ = 2,94. ; В табл. 16 приведены последовательные приближения, полу- ченные ири решении системы уравнений (10—38) методом Гаусса — Зайделя с начальными значениями неизвестных, равными -*— — 2, “ — 1, Xj — —8. Таблица 76 Явмор итерации Значения пеизЕяотныХ Нокср птеридин Значения тюизвеотпых *1 Х1 X! Х1 г, 0 -2,0 -1,0 -8,0 4 0,949 1,815 2,928 1 -5,0 -5,0 -1,75 5 0,944 1,962 2,987 2 —0,45 -0,737 1,59 6 1,000 1,993 2,998 3 0,701 1,22 2,05» 8 1,000 2,000 3,000 Для того чтобы получить решение с точностью 10'5 но методу Гаусса — Зейделл, необходимо выполнить 8 итераций. Это свиде- тельствует о том, что метод Гаусса — Зайделя при прочих равных условиях обеспечивает более быструю, сходимость. Иногда этот метод может сходиться даже в тех случаях, когда простая итерация не сходится Однако возможны такие случаи, когда метод Гаусса — Зайделя сходится медленнее простой итерации. Программа решения системы уравнений методом Гаусса — Зейделяприведснаниже Вычисления по фррмулам (10—45) оформ- лены в виде процедуры ZA YDEL. Ее формальными параметрами являются: п — порядок системы, А — расширенная матрица коэффициентов системы, А — лектор решения, eps — точность. Общие замечания. Порядок решения системы линейных урав- нений методом итераций включает посчедовательпость следующих этапов 1 Проверка условий сходимости. Вычисляются нормы матрицы п проверяются условия сходимости (10—42). Если ни одпо из условий ие выполняется, го с помощью элементарных преобразо- ваний исходную систему нужно попытаться заменить эквивалент- ной, для которой условия сходимости выполняются. Эквивалент- 282
'BEGIN' 'INTEGER'*’ 1 1NPUT(1,N) 1 'BEGIN' 'REAI/EPS., 'ARRAY'A(/i:N,l N/) 'INTEGER'!,! , 'PROCEDURE'ZAYDEL(N,A,X,EPS) , 'INTEGER'N , 'REAL'EPS , 'ARRAY'A,X , 'BEGIN' 'INTEGER'I,!., 'REAL'S.L.Xi . Ai:S;-CLO , 'FOR'I:=i'STEP'l'IJNTIL'N'DO' 'BEGIN' L:=O.CL, 'FOR'J:=d'STEP'l'UNTIL'I~l,I-M'STEP'i'UNTlL'N'DO'L = L4’A(/I»J7)XX(/J/) , Х1МА(71.Я-Н/ЬЬУА(ВД.. S:=S~pABS(Xl—X(/I/)) t X(/I/):=X1 'END'., 'IF'KEY(l)"rHEN'0UTPUT(3,'(E').A,X)., 'IF'S'LE'EPS'THEN"GOTO'A2'ELSE"OOTO'A1 , A2- 'END' , INPUT(1,A.X,EPS) , ZAYDEL(N(AtXtEPS), 0UTPVT(3/(E'),X).r 'IF'KEY(i)'THEN' 'BEGIN' 'FOU'L=J'STEP'l'UNTIL'N'DO"FOR'J.~I'STEP'rUNTll 'N 'DO'A(71,N*|-lO;4-A(71,N+i/)-’A(/ItJ/)xX(7J/)-i 'rOH'Ir=rSTEP'i'UNTII'N'D0'X(/l/);=A(/ItN+l/) t 0UTPUT(3/(E'),X) 'END' 'END' 'END' 263
йай система может быть получена перестановкой отдельных строк исходной системы или заменой отдельных уравнений линейной комбинацией нескольких уравнений системы / 2. Выбирается начальное приближение» в каЦстве которого можно ваять произвольный вектор и, в частности, столбец свобод- ных членов. Решение не зависит от выбора начального приближе- ния, однако чем ближе начальное приближение к точному реше- нию, тем меньше итераций потребуется для! решения системы с заданной точностью. При решении системы методом итерации ошибка в промежуточных вычислениях не влияет на по печное решение. Итерационный процесс является самовыравнивающимся. Ошибка, вызванная, например, сбоем в работе машины, будет восприниматься как некоторое новое приближение и, возможно, приведет лишь к увеличению числа итераций. 3. По формулам метода определяется следующее ирпближеняе. 4. Вычисляется норма вектора промежуточного решения и сравнивается с нормой вектора-решения предыдущей итерации. Если разность норм по модулю нс превышает заданной точности, то расчет заманчивзется и решением системы будет вектор В противном случае выполняется следующая итерация. Модель тарельчатого абсорбера Абсорбция — процесс разделения газовой смесн-на составные части путем растворения одного пли нескольких компонентов этой смеси в специально подобранной жидкости, называемой аб- сорбентом. Этот процесс может проводиться в различных аппаратах, в частности в тарель- чатых абсорберах (рис. 47), представляющих собой аппараты колонного типа, в верхнюю часть которых нодаатся жидкий абсорбент, а в нижнюю — газ, содержащий извлекаемые компоненты. Контакт жидкости и газа, в про- цессе ноторого происходит растворение части газовой смеси в жидкости, производится иа специальных барботажных устройствах — тарелках Математическое описание тарельчатого абсорбера состоит иа системы уравнений» определяющей взаимосвязь концентрации, в газе и жидкости на каждой ступени контак- та Предположим, что 1) жидкость на тарелках идеально пере- мешпвается; 2) на каждой тарелке достигается равно- весие между концентрацией компонента в газе и в абсорбенте, которое описывается соотношением Pi = Рно. 47. потикла п адоорбцповпоаг аппарате (10-46) 264
ГДЙ — йойЦеЙТраЦЙИ йоМйоНбЙТа fi ЙЦЦКобТй п тазе соответственно, — константа растаоримости; 3) количество извлекаемого из газа компонента мало, вслед- ствие чего изменением величин потоков жидкости и газа ио высо- те абсорбера можно пренебречь; 4) из газовой смеси извлекается только одни компонент. Для каждой ступени можно записать балансовые уравнения Гя^1-2дЧ-7у. + 7уй1 = 0 (1 = 0Л, , Я), (10-47) которые с учетом равновесного соотношения (10—46) представля- ются в виде Izi-x — (I + V kt) zt 4- 7-Zt(+l^+i = 0. (10—43) Поскольку составы потоков, поступающих в абсорбер, предпо- лагаются известнымн, в системе уравнений (10—43) значения кон- центраций. х0 и j/y+i заданы Неизвестными являются величины xt (4 — lv..,4V), число которых равно числу уравнений системы (10—48). При заданных значениях констант равновесия для каждой ступени контакта и заданных величинах потоков газа V и жидкости L система уравнений (10—48) может быть решена едини из рассмотренных методов. В результате этого определяются зна- чения концентраций извлекаемого компонента в жидкости по всем ступеням, в том числе н на выходе жидкости из абсорбера (значе- ние £д'), а также концентрация компонента в газе, вычисляемые по соотношению (10—46) для всех ступеней, в том число и для выхода газа из абсорбера (значение у0). Рассмотренная математическая модель тарельчатого абсорбера позволяет при сделанных выше предположениях моделировать возможные режимы извлечения, например, при различных вели- чинах потоков жидкости н газа, подаваемых на абсорбер, а также различных температурных режимах извлечения (разные значении констант растворимости на тарелках). Система уравнений (10—48) может быть также записана в виде — (i -|“ Л>хР) 4- ZciV^s= “ Lxt- (14- 4- ЛзРх, = 0, (10-49) Т/Хд--! [L 4* ^wV) VУл+1- Такям образом, расчет профилен концентраций по высоте абсорбера сводятся к решению трехднагональной системы уравне- ний материального баланса по каждому из компонентов исходной смеси. В результате решения системы. (10—49) получается распре- деление концентраций компонента в жидкости (абсорбенте). Кон- центрации в газовой фазе вычисляются по соотношению (10—46). Программа и числовой пример приведены на стр. 267. 265
Программа выполняется следующим обраао/f. Вводятся исход- ные данные, фиксируется номер рассчптыважного компонента и вычисляется матрица коэффициентов системы (Д)—49) Затем про наводится обращение к процедуре решения сяе^емы (процедура COD ТА) и рассчитывается состав газовой фазы. Номер компонен- та задается в операторе цикла по / Исходные данные числового примера. А, = 1; V = 5; KR = 0,2, Л « 10; хв = 0,2, L = 5, yff+1 - 0,5. i Модель тарельчатой колонны реактификации многокомпонентных смесей Пусть колонна, предназначенная для разделения многокомпо- нентной смеси, имеет -V тарелок. Исходная смесь в количестве /’ молъ/час с концентрациями компонентов а>5,..., (где/г— число компонентов в исходной смеси) подается на тарелку с номе- ром N?. Известно количество одного на копенных продуктов (ко- личество дистиллата D молъ/час или количество кубового продукта W молъ/час) и орошение колонны £0 молъ/час. Математическое описание ректификационной колонны в общем случае включает следующие зависимости! уравнения материально то баланса иолонны и каждой тарелки по каждому из компонентов разделяемой смеси; уравнения теплового баланса колонны и каждой на тарелок; соотношения для расчета фазового равновесия; соотношении, описывающие кинетику массообмена на тарелках колонны; уравнения, описывающие куб и конденсатор Принимаются следующие допущения. 1. Известно распределение потоков пара и жидкости но высоте колонны, л потоки постоянны но высоте отдельных секций. Это допущение обычно используется в тех случаях, когда компоненты не сильно отличаются по температурам кипения, т. е. смесь состоит из близко кипящих компонентов 2. Питание поступает в колонну в жидкой фазе при температуре кдпопия. 3. Разделяемая смесь подчиняется законам идеальных раство- ров, и равновесие рассчитывается по относительным летучестям отдельных компонентов. 4. Пар, покидающий отдельные тарелки, находится в равнове- сии с жидкостью, т. е. рассматриваются теоретические тарелки. 5. Разделительная способность куба колонны эквивалентна теоретической тарелке. 6. Используется полный кондеисагор, т. е. весь пар, поступа- ющий с верхней тарелки, полностью конденсируется, и часть полу- чаемой жидкости поступает на орошение колонны Допустим, что тарелки пронумерованы снизу вверх, начиная от 0 для куба колонны и кончая N -}- 1 для дефлегматора. Уравне- нии материальных балансов в стационарном состоянии по всем 266
'BEGIN' 'INIEGER'N.K , [NPUT(1,N,K)., 'BEGIN' 'IKTEGER'I.J,, 'REAL'LTV-, 'ARRAY'AtBtCbD(H:N/)tKR,XL,Y\ (Z1 K/)bX,Y(/O N+M K/> , 4PR0CEDURE'C0DIA(NbA,BbC,D) , 'VALUE'fLArB.C , 'INTEGER'^ , 'ARRAY'AtB,C,D , 'BEGIN' 'REAL'P,, 'INTEGER'I , P,=B£/14b JFOR'r;=2'STEPTUNTIL'NT)0' 'BEGIN' В(/Г-1/).=С(/1-1/)/Р,, P^B(/I/)-A(/I-l/) xB(/I-l/),b D(/I/):=(D(/1/)—A(/I“I/)XD(/I—i/))/P 'END',, 'FOR'I:=N—I'STEP'-l'UNTIL't'DO'D(/I/);™D(/l/)—B(/l/) 'END't INPUT(l,L.V,KRtXUYV), 'FOR'l!=l'STEP'l'UNTIL'K'DO' 'BEGIN' X(/o;i/);=XL{/i/),f Y(/N+1,I/):=YV(/V), 'END' , 'FOR'J:=I'STEP'1'UNTIL'K'DO 'BEGIN' 'FOR'l:=rSTEP'l'UNTH/N'DQ' 'BEGIN' 267
В(Л/) :«-(WKR(/J/))., C(/I/)i™'IF*I=N*THEN*0*ELSE'7xKH(/J/)t D( Д/) ’ IF ’ 1=1' ТНИ< »-LxXL(/J/) * ELSE* * IF' W THEN * -V *YV(/J/)'ELSE'0.0 I '23ID'.( 'IF*KEI(1)'THEN'0UTPUT(3>*(E1)>A|B,C,D).t CODlA(N,AtB,C,D), *F0R*Ii±=1 'STEP'1 'UNTIL'If'DO* «BEGIN' ‘ X(/IrJ/);=D(/l/).r ’END’ ’END' >, OUTPUT(4,*(!'),'(:ЛЛВ1В;В:В СОСТАВ »В+)П~)АРА:ВsBCOCT ЛВ1В+)ВД-)КОСТ+)Й-) г/:/1))., •FOR*J;aO*STEP'1’UNTIL'N+1'DO' •BEGIN' 0UTPUT(4f'(Z2DB*),J)., 'FOR»It’STEP11'UNTIL’K'DO» ’BEGIN* 0UTPUT(4, ' (Si--5DR>2DB*) Д(/I, J/)) M OUTPUT(4(D+.5DJH2DB’) ,X(/I, J/)) . ( output(4,'(to ,'(«/»)) 'ЖО* »ИП>’ SND' СОСТАВ ПАРА СОСТАВ ЖИДКОСТИ О +.00000>|q+00 +»00030^ q+00 1 +.409б010-07 +.204В010-06 2 +.2457610-0б +.1228В1(Г05 3 +.126971О-О5 +.634В81О-О5 4 +.6J8971o-O5 +.3194&JQ-O4 5 +.31969^0^ +41599410-03 ?&8
\ б +.159ЭВ1О-ОЭ +.7999^0-03 \ 7 +.7999S1O“°3 +^9990,0-02 " В +.39999^2 +.l99991ty-O1 9 +И999910-01 +-9999910-0i 10 +.999991О-О1 +.*999910+00 11 +,5oooo10+oo +.ooooo10+oo компонентам для каждой ив тарелок колонны, за исключением тарелки питания (рис. 48 левый)! имеют вид + Vai’-O (1 = 1,.. , W), (/ = !,-.*). (10—50) где L и V — молыпае потоки жидкости и пара, аир— концентра- ции жидкости и пвра. Рас. 48 Pud 48 Уравнения материальных балансов для тарелки питания за- пишутся (рис. 48 правым) ) + Fxpt /4~ Vf i 3 V/ltyj з = 0 (/= 1, 2,..А). (10-51) Для куба колонны (рнс 49 левый) и дефлегматора (рис. 49 правый) соответственно можно записать 0^1,2... ,й), (10—52) j ш °’ (10—53) 260
/ I При использования постоянных коэффициентов относительной летучести для описания фазового равновесия связь составов па- ровой и жидкой фаз определяется уравнением (1 = 0,1, ,1V), (/= 1,2, ...Л). (10-54) 2ВЛ1 Уравнения (10—50) — (10—54) при известном стационарном распределении потоков, т. е. при известных L и V, представляют собой иелинейнуто систему уравнений порядка 2 (2V -j- 1) к 4* й относительно 2(jV 4- 1)/г 4- к кеизвестных Одним иа способов решения задали является метод независимо го определения концентраций, согласно которому система (10—50)— (10—54) приводится к линейному относительно xijf виду путем замены ytJ s= (/' = 1, Константы равновесия I = - Sr (10—55) У“Л,1 рассматриваются в процессе распета концентраций как по- стоянные величины. Тогда система уравнений (10—50) — (10—54), записанная от- носительно определяемых концентраций jt принимает вид И'+У0^и')г, ; + £1ж1..,-г0 + . -(-0 = 0, i f , - (r, + Vi -Ms, 1-ЫЛ /+•• =0, (10-56) 4 j \ *1 ji 0 + ^1 '7^' i — (^a + Vt 77) i + • “ = 0, *1 i 4 7 ' Vi~l ‘J 11 * 7 — (-£7 4- Vi 14* Az+i^z+i 2 4- • — — F%r j. Ул-i ; v 4- 7(v j Ь Ьл иi.vri / 0, Ил /-* (Ьл+i-l- = 0. Системы уравнений вида (10—56) могут быть записаны для каждого компонента исходной смеси 0 = 1,2, ...,&), них решение дает распределение концентраций по высоте колонны для всех 270
компоцёМой бмйсй. Б канале расчета для определения констант* равновесия необходимо задаться Некоторым распределением кон- центраций, например соответствующим концентрациям в пвта- пии. Для получения решения исходной нелинейной системы не- обходимо многократно повторять решение системы (10—56), каж- дый раз уточняя значения констант равновесия и проверяя вы- иолненле условий сходимости, в качестве которых используется критерий w I з «I,- 11<8 (ь 0, 1, , dV + 1) (10-57) J-i Если условие (10—57) выполняется, то решение заканчивается и сумма концентраций на всех тарелках в пределах заданной точ- ности равна единице. Блок-схема программы расчета одного стационарного распре- деления концентраций представлена на рнс 50, Сначала вводятся исходные данные, характеризующие свойства компонентов разделяемой смеси и режим работы колонны, За- тем принимается начальное распре- деление концентраций по высоте ко- лонны. равное составу питания, н вычисляются с пспользовапием урав- нений (10—55) константы фазового равновесия Полученные данные ис- пользуются для определения коэф- фициентов системы (10—56), которая может быть решена одним иа методов решения систем линейных уравнений, напрнмдр методом исключения. По- скольку начальное приближение за- дано произвольно, полученные зна- чения^ для каждого пз компонен- тов не будут удовлетворять условиям (10—57), т. е, сумма концентраций па каждой из тарелок не будет равна единице. Следующим этаном является нор- мирование составов на каждой из тарелок по уравнению Pits. бй. Блоп ct ем в программы paowra рьитлфикЕцпоицфВ позорны к ±1 j = £fi ? I gj j (i == 0r 1 2 , jy + l), (10-58) т e вычисление нового приближения для профиля концентраций п повторение расчетной процедуры, начиная с определения кон- стант фазового равновесия. Число итераций, необходимых для 271
BEGIN' ’IWTEGER'N,K,NF., IHPUT(1,N,K,NF)., ’BEGIN' ’REAL*EPS,DI ST,W,LOtSUM,F,7., 1 ARRAY’ALFA,XF(/1 :K/) A»X1 (/O:N+1 :K/), A, B,C, D </0:21+1/)., ’INTEGER'I,J.Z., 'PROCbDURE’CODIA(N, A, В, C, D),, ’VALUE’N,A,B,C., •INTEGSR'N.» *Айт’А,В,С,У. , ’BEGIN' •HEAL’P., Pi=B(/0/),, D(/0/):=D(/o/)/P., ’FOR’11 =1'STEP’11 UNTIL* N' DO» ’BEGIN' P:=B(/I/)-A(/I-1/)xB(/I-1/)., D(A/)^(D(^/)-A(/I-V)xB(/X-V))ZP •END*.». •FOR’I :яЯ-1'STEPH’UNTIL'0’DO'D(/I/):-D(/I/)- BI/I/M/M/)., ’IF' £EY(2)»THEN’OUTPUT(J,*(E’),D)., •END’., INPUT(1, F, DI ST ,IiO, BPS, XT, ALFA ) ♦, ff:=F-DTST.t V:=LO+DIST., ’POR’IsaO’STEPM’UNTIVIM’DO' 'FOR' J:=1 'STEP*1' UNTIL'K’DO'XC/I,J/)ssXF(/J/),, START:'FOR'J:=1*STKP'1*UNTII 'K'DO’ •BEGIN’
*^0R'I:=O'STEP'1'UNTIL'N+1'D0* 'BEGIN' SU&s=O,OM *FOR'Z:=1*STEP*'1'UNTIL,K'DO'SUM:=SUM+X(/I,Z/)»' ALFA(/Z/-). , A(/I/):=V*ALFA(/?/)/SUM., * B(/I/) :=»IF'I=N+1 »THW-V'ELSE’-ALFA(/J/)/SUbf * V-l'IF’IaO’THEN’W’ELSE'*IF'I'LE'NF'THEN'LO+F' ELSE'Lo)., CC/T/Jj^’IF'I'iZt’NF'THEN'LO+P'ELSE'LO,, D(/I/):x^IF*I=NF'THEN»-FjcXF(/J/)'ELSE'O,, •END»., \ 'IF'KEY(1 j^THEN'OUTPUT(3,'(E'), 1111111,A,B,C,D)., CODIA(N+SAlTB,CTD)., 'FOR 41 =0 * STEP• 1' UNTIL' N+1' DO' x*1 ( Л । J/) :^D(/I/) •END1., Zf=O.T 'FoR’I i=0'STE₽'/1'UNTlL'N+1‘DO’ 'BEGIN' SUMsts-1.0., 'FOR' J 'STEP' 1 ’UNTIL'К'DO’SUM ixbW+X1 (/I,J/) . ( Z:=£F'ABS(SUM)»LT'EPS'THEN'Z1ELSE’2+1 ’END'., 'IF'Z'GT'O'THEN' ’BEGIN» OUTPUTO/CI*)»^)., 'FOR•I;x 0'STEP'1'UNTIL'N+1* DO’ 'BEGIN' SUM:=0.0., 'FOR'J:-1'STEP'1'UNTIL'К»DO'SUM:xSUM+X1(/I,3/}., 4?0R'Jis I'STEP'1' UNTIL'K’DO'XC/I,,!/) :=X1(/I,J/) /SUM 'SND' ’IP’KEK^’THEN’OUTPUTCJ.’CEOjXI^).. ’GOTO*START 273
•END’., оитритСЗ/СьЧД-О 'END* ‘END’' к получения конечлогр результата, зависит как .от заданной точ- ности, тай и от моделируемого режима разделения. Программа расчета колонны приводится на стр, 272. Для решения трех диагональной системы уравнений (10—56) в программе использована процедура CODlA (стр. 257). Для рас- чета концентраций всех компонентов обращение к процедуре CODIA производится прп каждой итерация А раз (где к — чпело компонентов смеси). Формальными параметрами процедуры являются N — число тарелок; А — поддиагональный, вектор; D — вектор главной ди- агонали; С — падциагональный. вектор; D — вектор-столбец сво- бодных членов. В процессе выполнения процедуры всходпая матрица не сохраняется, а решение записывается в столбец свобод- ных членов. Программа работает следующим образом. Вводятся исходные данные: чпело тарелок —Л, число компонентов — помер тарелки питания — NF, количество питания — /', количество дистнллата — DIS2\ орошение — LO, точность вычисления суммы концентраций ца ‘отдельных тарелках — EPS. состав пи- тания — XF (массив), коэффициенты ..относительной летучести — ALFA (масенз). ,Затем но уравнениям общего материального баланса вычисляются независимые переменные: W — количество кубового продукта, V — нагрузка но пару. Следующие два опе- ратора цикла по I и J задают начальное распределение коиттоптра- ций ко высоте колонны. За начальный состав принимается состав питания. Начиная с метки SPART производится вычисление кол- стант^ фазового равновесия и матрицы коэффициентов системы уравнений (10—56). Далее производится обращение к процедуре CODIA, и вектор ретпеиия запоминается в массиве^. Обращение к процедуре производится в цикле по J. Теким образом, матрица коэффициентов формируется для каукдого из компонентов, и ре- шение для отдельных компонентов запоминается в массиве X. После выполнения цикла по J массив X будет содержать повое распределение концентраций по всем тарелкам п всем компонен- там. Затем подсчитываются суммы концентраций компонентов на каждой пэ тарелок и сравниваются с единицей Если сумма кон- центраций па некоторой тарелке отличается от единицы более чем па заданную величину, то переменная Z (счетчик тарелок, иа которых сумма концентраций отличается от единицы на величину, большую в), равная нулю в начальный момент, увеличивается на единицу, и проверяется следующая тарелка. 274
После того, как закончится цикл по I (т. е будут проверены суммы концентраций для всех тарелок, включая куб и дефлегма- тор), значение переменной Z будет равно числу тарелок, для кото- рых ие вы иол и ноте я условие окончания расчета Если Z пе равно нулю, то производится нормирование полученных па тарелках концентраций и управление передается метке 5 Г 4 Я Г, в против- ном случае выводится решение. Таблица IT Тиролиа Состав начальное пряйлнще* ПИЙ UtlfWfl итерация вторая шерацпи nrtTirt итерация ЙОСЬМйИ ИТ Of ИЦ ИЯ решение Куб 0,25 0,4590 0,4995 0,4995 0,4995 0,4995 0,25 0,4162 0,4275 0,4243 0,4231 0,4229 0г25 0,1064 0,0778 0.0717 0,0705 0,0703 0,25 0,0177 0,0091 0,0082 0,0080 0,0080 1,00 1,2392 1,0139 1,0037 1,0011 1,0007 1 0,25 0,2424 0,3298 0,3404 0,3409 0,3410 0,25 0,3448 0,5036 0,5177 0,5172 0,5172 0,25 0,1246 0,1320 0,1261 0,1242 0,1240 0,25 0 0269 th 0203 0,0187 0,0184 0,0184 1/50 0,7387 0,9357 1,0029 1,0006 1,0006 5 0,25 огноз 0,1192 0,1210 0,1213 0,1214 0,25 0,2235 0,3684 0,3989 0,4013 0,4016 0,25 0,2030 0,3221 0,3359 0,8342 0.3340 0,25 0,1124 0,1409 0,1439 0,1431 0,1430 1,00 0,6492 0,9506 0,9997 0?9999 цоШ 10 0,25 0,0024 0,0015 0,0015 0,0015 0,0015 0,25 0,1048 0,1180 0,1240 0,1260 0,1260 0,25 0,3280 0,4587 0,4681 0,4688 (1,4689 0,25 0,3014 0,4000 0,4031 0,4028 0,4027 1,00 0,7366 0,9782 0,9967 0,9991 0.9991 Де Jorenw 0,25 О,(ЯО07 0,00047 0,00046 0,00046 0,00046 тор 0,25 0,08388 0,07243 0,07561 0,07683 0,07692 0,25 0,30359 0,42211 0,42829 0,42949 0,43002 0,25 0,48225 0,49084 0,49184 0,49198 0,49259 1,00 0,96069 0,98585 О,Ш20 б,99Й56 0,99999 В табл. 17 представлен пример расчета тарельчатой ректифика- ци'вяной колонны по приведенной программе. Колонна имеет де- | енть^арелок. Исходная смесь в количестве 4 молъ/час состава = t =^0,25\^ = 0,25, ±=± 0,25, х* = 0,25 подается на пятую снизу ? 4 275
j, ' тарелку, Колнчестйо отбираемого дистяллата равно 2 Аолъ1час^ ? _ орошение — 10 мЬдь/час, Коэффициенты относительной летучести "' компонентов соответственно равны 1,2/4, 3, * ’ В приведенном примере решение с точностью 0,00i достига- ет Z - етсн после восьми итераций. Эта же задача решается за две ите- Г- -/Рации» если точность равна 0,01. Заметим, что расчет яосьми- ь--'' компонентной смеси при тех же условиях с коэффициентами отно- снтельиой летучести от 1 до 8 достигается за три итерации. 4. Собственные значения и собственные векторы матриц в задачах химической технологии При решении некоторых задач химии и химической техноло- гии, например, таких, которые сводятся к решению систем лпней- г ныл дифференциальных уравнений или к решению уравнений ста- ' тистичесной фиалки, используются понятия собственных чисел Г/, и собственных векторов матриц. Г‘? Собственным значением квадратной матрицы А называется чис- Н ло X, удовлетворяющее уравнению L, . det(A —Ж) = 0, (10—59) [ । иди в обычной форме записи матриц 013 Oia . • «и Ода — А> °8В • • • °ап ®П1 Нп5 . 0. (10-60) \ Если раскрыть определитель (10—59), называемый характэ- . - р истин еским, то уравнения (10—59) и (10—60) могут быть также записаны в форме алгебраического уравнения n-го порядка от- 1 носитально ?/ Ья + + • + + <4 = 0. (10-61) Уравнение (10—61) называется характеристическим уравнением матрицы Л. Уравнение (10—61) имеет в общем случае п комплексных кор- ней, и, таким образом, квадратная матрица n-го порядка имеет п собственных значений. Для собственного значения X/ матрицы А можно записать од- нородную систему уравнений АС® = Е^С® (Ю-^') ПЛИ (А — Ж;) 0^ = 0, ( ~63) Я?
которая живет ненулевое решение и в случае, когда det Л. =й О, поскольку в силу условия (10—62) определитель системы (10—60) равен нулю. Решение системы (10—63) определяет вектор называемый собственным вектором матрицы Д. Поскольку число собственных впачений матрицы равно ее порядку, для каждого собственного значения можно найти собственный вектор, и, таким образом, для каждой квадратной матрицы А порядка п можно найти п собственных векторов СО) (/= 1, 2,составляющих систему собственных векторов матрицы А. Так как собственные векторы удовлетворяют'однородной системе уравнений (10—63), то ком- поненты каждого ив них определяются с точностью до произволь- ного множителя. Многие теоретические и прикладные задачи, в которых ис- пользуются матричные представления, сводятся к вычислению - собственных значений и собственных векторов матриц. Несколько примеров таких задач приводится ниже, Пример 2 Прп выполнении матричных операций встреча- ется задача вычисления функции f (я) от матричного аргумента (/] = / ({А]). (Ю—64) Результат вычисления в свою очередь является матрицей Для функций, имеющих непрерывные высшие производные, о этой целью можно воспользоваться разложением функции в ряд по степеням матрицы А: СО (/] = (10-65) i»O Однако такой прием может потребовать большого объема расчетов из-за необходимости вычисления достаточного числа членов ряда (10—65), чтобы обеспечить необходимую точность представления функции / ([4])- Поэтому при вычислении функций от матриц обычно использу- ется теорема Сильвестра, согласно которой п П(Л-Ь,Е) /([А])= 3 f (Х,)Х^ (Ю-66) где Ai(i — 1,2, ,.,п) — собственные числа матрицы А. Формула (10—66) используется в тех случаях, когда все соб- ственные значения матрицы А различны. Если же среди собст- венных значений матрицы А имеются кратные, то для вычисления фуннций от матрицы А необходимо использовать более общие ме- тоды [361. 277
Пример 3, Для реакции fcj А-+В-+С, (10-67) проводимой в непрерывном реакторе идеального смешения, объем которого равен Й, определить изменение концентраций компо- нентов в пусковом процессе, если известно, кто в начальный мо- мент a*ij = #£ = 0 (10—68) и, начиная с момента времени t = 0, в реактор подается исходная смесь в количестве у с концентрациями компонентов 4*4, 4’ (4 + 4 + 4 =* *> Скорости [Стадий реакции (10—67) определяются как г, — Г* = кгхв, с учетом которых для скоростей образования компонентов можно записать следующие выражения1 Ид = юй = ^*1Гл ис ~ ^хв (Ю 69) Нестационарный режим работы реактора описывается системой уравнений dx. У “JF = и _ ХаУ ~~ Дх» У — = V (4 - гв) + Г ^ХА — Vb)’ (10-70) зг v (4 4) у\хв Система дифференциальных уравнений (10—70) является ди- нейно-аавпеимой, так как в результате суммирования всех урав- нений можно найти у <Ч*А + *Д + *С) = + ХО + _ Ie)s 0. (10-71) Поэтому уравнение для одного из реагентов, например С, может быть исключено, а изменение концентрации этого компонента определяется пз условия ха + Зв 4- *гс = 1 через изменения кон- центраций остальных реагентов Определив чарс» т — У/ц — среднее время пребывания реа- гентов в реакторе и обозначив (Жд\ / + А1 0 \ 1 . D ЕЯ I , | I J I 4 IT jjjj/ \ "V" 4" / 378
МоЖпо В матричной формб ЗапйсйтЬ ypainiaiife — = А-Xе - DX, (10—72) определяющее изменение концентраций и хд в реакторе при пусковом процессе. Решение неоднородного матричного уравне- ния (10—72) может быть представ ясно как сумма решения одно- родного уравнения dX/dt — — Dx, имеющего вид X « erst I* (jp — вектор-столбец постланных интегрирования) и частного ре шеи ня неоднородного уравнения, которое в данном случае может быть найдено из соотношения Х°/т - ПХ - 0 или X ^~П^Х° Общее решение неоднородного уравнения X = е-»{1> (10-73) Для определения вектор-столбца постоянных интегрирования J? необходимо воспользоваться начальными условиями Х[1=^ — 0, с учетом которых получим р = —L л-iyo. т Таким образом, решение исходной задачи определяется матрич- ным соотношением X (4) _ Л С® - «-*) О^Х”. (10-74) При расчете ио уравнению (10—74) необходимо вычислять экспоненциальную функцию от матрицы -D. Для этого можпо воспользоваться формулой Сильвестра (10—66), с учетом которой можно записать „ П(Л-м,) = 2 е-’.' 'Г! (/—1,2, , и), (10-75) 1=1 где ?.( — собственные числа матрицы-D, определяемые пв уравне- ния det {JD — JE?X) » 0. Таким образом, задача расчета изменения концентраций в реакторе сводится к задаче вычисления собственных значений матрицы с последующим использованием формулы (10—75) для расчета матричной функции Пример 4. В органической химии используется метод опре- деления энергетических уровней молекулярных орбит, в основа которого лежит решепне вол пои ого уравнения Шредпвгара [3711 =- .Еф, (10- 76) 279
Тде В — Гамильтониан (операторТамияьтоиа), который вклЮЧййТ в себя члены, описывающие взаимодействие электронов и ядер атомов; Л? — анергия молекулярной орбиты; — волновая функ- ция молекулярной орбиты. Решение уравнения Шредингера в случае многоэлектрониых о]рбит Крайне затруднено ив-ва сложности аналитического выраже- ния для волновой функции ф, поэтому применяются приближен- ные методы, одним из которых является метод линейной комбина- ции атомных орбит (ЛКАО) или метод молекулярных орбит Хюк- келя (37]. В этой методе волновая функция молекулярной орбиты предполагается равной линейной комбинации волновых функций атомных орбит п fc=SCj,4>„ (10—77) где ф_/ — молекулярная орбита; фг — атомная орбита для г-го атома; Су,г — весовой коэффициент r-Й атомной орбиты для 7~й молекулярной орбиты. Числе молекулярных орбит в наборе соответствует числу-атом- ных орбит, входящих в состав каждой молекулярной орбиты. Поскольку наиболее устойчивому состоянию молекулы соот- ветствует минимальное значение энергии орбиты, то в дальнейшем решение заключается в том, чтобы найти такие значения коэффи- циентов Сдг, которые отвечали бы этому условию Энергия молекулярной орбиты определяется выражением в = фН'ф dr) j ф4 с?т) . (10—78) Минимизация функции (10—78) но каждому ив коэффициентов Chr путем приравнивания нулю соответствующих частных произ- водных приводит к системе уравнений S с< (Яе. < - St, ,е) = 0 (10-79) (1=31 Допущения, принимаемые в методе Хюккеля, заключаются в следующем. 1. Члены 2£tJ, называемые кулоновскими интегралами, харак- теризуют энергию электрона на 2р-орбпте, Для систем на углерод- ных атомов они принимаются равными и обозначаются а. 2 Члены (7с с), называемые резонансными интегралами, характеризуют энергию взаимодействия двух атомных орбит. Так как энергия взаимодействия зависит от расстояния между орби- тами, то для несвязанных орбит она принимается равной нулю Для всех связанных атомов энергия взаимодействии Р принима- ется равной. 280
। , v' • j ' ."*>> .^л'<\ ’ । , .. j , u -'.«ci *“ S h S * "< n ’ ’ ‘ ' < Tt » * i - - J ' , м ......* *; » , . 1 •_ '.f?4, , , ’ Pi. ’ ' “ • I' & Члены называемые интегралами перекрывания, ха* ' растеризуют усиление связи за счет перекрывания орбит атомов. Для нормированных атомных орбит интеграл перекрывания при к ~ i принимается равным единице, а при к I — нулю. * / Учитывай перечисленные допущения, система уравнений (10—79) записывается в виде Ci (а — а) + СвЗьа 4-... 4* c„₽i, п — 0, 1 J С13з,1 4* Сл (л — е) 4* + cn?an — (10—80) • л. • Л • 4^4 4 4 Д Д 4 4 4 4 *4 4 4 с1Эп,14~ CjPnt а 4- • • • Ч- сп(о в) = 0 и представляет собой однородную систему линейных уравнений относительно неизвестных q (i — 1, 2, ...» n) Как уже отмечалось (стр 247), однородная система линейных уран пений имеет ненулевое решение лишь в случае, когда ее определитель равен нулю. Таким образом, ненулевое решение системы (10 — 80) возможно прп условии определяющем. возможный набор энергий молекулярных орбит е( {i = 1, 2,. .,п), соответствующих устойчивому состоянию мо- лекулы. .Уравнение (10—81) можно также записать в форме det | А — — ЗЁ?в] = 0, отсюда следует, что задача расчета энергий молекуляр- ных орбит эквивалентна задаче вычисления собственных значений матрицы а Pie * • ?1п А $ai 4 а ... 4 4 Зил 4 (10-82) Рш . й Для расчета весовых коэффициентов атомных орбит С пополь- зуются системы уравнений Q,l \г) 4“ J,^ig . 4~ — 0, 4“ (а М 4-»• 4- СлпРап — 0, (10—83) Cj,iPni 4- Cj,s?ni 4- • • • 4- (tt М "* 0 или в матричной форме (Л-^Л;)С,-0, (10-84) 281
т. е, решается задача отыскания собственных векторов матрицы А Cj — (CJ4, CJti, , Cjin) (/ = 1,2, . , н), Таким образом, расчет молекулярных орбпт сведен к вычисле- нию собственных значений и векторов матрицы А (10—82). Пример 5. При исследовании динамических свойств раз- личных объектов важное значение придается анализу их устойчи- вости. Если объект, выведенный из состояния равновесии малым возмущением, возвращается в это состояние, то он называется устойчивым, Для объектов, описываемых системами дифференциальных уравнений с постоянными коэффициентами = S аьЛ (/ =• 1. 2, , П), (10-85) которые в матричной форме записываются как dX/dt — АХ, зада- ча исследования устойчивости сводится ъ проверке условий одной из теорем Ляпунова [381: для того, чтобы система линейных диффе- ренциальных уравнений была устойчивой в точке (i ~ 1, 2.п), Необходимо и достаточно, чтобы собственные значения матрицы коэффициентов системы имели отрицательные вещеетвшшыс части, Следоцательво, устойчивость объекта, описываемого системой линейных дифференциальных уравнений с постоянными коэффи- циентами, может быть проверена, если известны собственные зна- чения матрицы коэффициентов системы 5. Вычисление собственных значений и собственных векторов матриц Вычисление этих характеристик матриц является одной из распространенных операций, вылепляемых над матрицами По сложности реализации определение собственных векторов явля- ется весьма трудоемким, поскольку прн известных значениях ха- рактеристических корней вычисление собственных векторов сво- дится к поиску ненулевых решений систем однородных уравне- ний. Методы отыскания собственных значении матриц, основанные иа вычислении корней характеристического полинома [29, 321, требуют прн реаякаацпп развертывания определителя Корни полинома определяются затем каким-либо методом решения алгеб- раических уравнений Пример Й Пусть дэва матрица _3 о \ 1 _ J (Ю-В6) Опредетпть собственные значения и собственные векторы 282
его Решение Запишем ларак-Торпстпческяй определитель и раскроем I —3 — X 2 I 1 -4-Х = ХЯ + U+ 10 =0 £10-87) Кориями характеристического полипоча или собственвымд апа Униями мат- рицы А будут Xi = — 2; Хэ — 5 Для того чтобы определить собственный пекюр для Хг = — 2, рассмотрим систему уревноэий — 3 4- 2 2 \ fxt\ _ X- i 2 \ /лх\ _ 1 —4 |-2/\г2/ \ 1 —2 /\га) (10-88) решение которой о точностью до постоянного множителя к запишется как ipW = 2й, = Л Естн положить к 1, то собственный вектор дчя X, = — — 2 будет ( * ) (Ю-89) Аналогично решая систему уравнений для X = — 5 Z—3 [-5 2 Va'1\ Р 2WX1^ 0 \ 1 — 4 4" о/ \йа/ \i 1 / найдем, что при X = — 5 собственным вектором будет лектор ч — “ / 1 3 (10—90) Метод отыскания собственных значений, основанный па реше- нии характеристического многочлена, хотя н позволяет опреде- лять все собственные значения, однако прямое его применение весьма сложно, особенно при развертывании определителя высо- кого порядка. Поэтому для вычислительных машин обычно ис- пользуются методы, осповяипые па предварительном преобразо- вании определителя к виду, ия которого уже относительно просто найти коэффициенты характеристического полинома [29]. Метод Крылова Этот метод основан на теореме Гамильтона — Коли, согласно которой каждая квадратная матрица удовлетворя- ет своему характеристическому уравнению, т е если del | ХЕ — А | = X” а. 4- + Лп характеристический многочлен матрицы Л, то Ап 4’ 14“ ' 4" — 0, (10-91) где к2, ...Дп — коэффициенты многочлена. Определение коэффициентов Xn ksi * ^кп производится следу- ющим образом. Пусть Л? — произвольныйневуле- 283
вой веКтор-СТолбец. Умножим обе час^н равенства (10—91) иа № справа АПХ° + ^А^Х» -Н. + EX® = 0. (10-92) Тогда, обозначая АПХ° = АП^Х° = .......„ EX* = Xм, (10-93) уравнение (10—92) можно записать в виде (V^~У^ . . . У^х /А1 \ / \ SJ-1’ t4°’].p L_[ № | (10-94) У^ У%~*} ... У^/ \к/ \У™ / J- 1 Следовательно, искомые коэффициенты можно получить в ре- зультате решения системы линейных уравнений (10—94), Пример 7 Вычислить коэффициенты характеристического полинома матрицы ^=(-4 (Ю—95) \ 1 — 4 / методом Крылова Решение Выберем начальный вектор Тогда, пользуясь соотношениями (10—93), вычислим координаты векторов yd). £10-9») Записав систему уравнений вида (10—94) /-3 i\Mi\ / Н\ \ 1 0 Д k J ~ 7 ) ’ в результата решения получим « 7, Ка — 10 Следовательно, характерис- тический многочлен матрнпы А вмеегг вид J,2 -j- 7Х 4- 10 *= О Мет^д Лаверье Для того чтобы вычислить коэффициенты ха- рактеристического многочлена матрицы А порядки п. методом Ла- верне, необходимо найти степени матрицы Art, А1*”1,.,., А1, Соот- ветствующие коэффициенты полинома могут быть вычислены по 284
уравнениям Ньютона [321 Aj. = — slt —-г (5г 4" Аз = —з(5а + Aj^i), (10—97) Ап = —~(^п Ч- * 4“ ^п—isi)* п Здесь 5дт s2, .. , — следы матриц Л1, Аа ,. , т. е, st« 2 дк> u—i где — диагональные елемепты матрицы Л*. При вычислении коэффициентов полинома по методу Лаверье отсутствуют операции деления, поэтому элементы матрицы могут быть любыми числами, в том числе и пулевыми П р s ме р 8, По методу Лаздрье вычислить коэффициента характери- стического нолвнома матрицы л JJrt fWX а ~ ( 4 .). (io—вв) \ 1 —4/ Р в ш е и а е Поскольку порядок матрицы А ровен двум, необходимо вычислить только А*. « /—У 2\/-3 2\ / Н — 14\ “V 1 — 4/\ 1 —4/ 7 18/ * Следовательно, At = — (-3-4) = 7, ^ = — Уа (29—49) = 10 п характеристическое уравнение имеет вид X»4-7Ji-j-10=xO. (10-09) Методы вычисления собственных значений матрицы бее раз- вертылания определителя чаще всего являются итерационными В любом итерационном методе объем вычислений определяется заданной точностью и скоростью сходимости, причем последняя в значительной степени зависит от свойства матрицы, В этих методах собственные значения и соответствующие им собственные векторы получаются как пределы некоторых числовых последо- вательностей [331, Метод Якоби. Пусть А — квадратная симметрическая матрица с действительными коэффициентами Матрица В, полученная в результате преобразования В == С'1 АС, (10-100) является подобной матрице А и имеет те же собственные значения (включая их кратности), что и матрица А, Если полученная таким 285
образом матрица В является диагональной, то ее диагональные элементы будут собственными вначениями матрицы J. Очевидно, собственными векторами диагональной матрицы Л будут единичные векторы С"1 АСе{ = Отсюда следует, что АСе, = Cet. т е собственные векторы матрицы Л являются столбцами матрицы С Се, (10-101) В методе Якоби для приведения матрицы А к диагональному виду с помощью преобразов ан пп подобия (10—100) используется ортогональная матрица С, для которой имеет место равенство Ст = (у-1, где Ст — транспонированная матрица. Ортогональная матрица С в этом методе определяется как предел последователь- ности элементарных преобразований, осуществляемых над эле- ментами матрицы А с помощью ортогональных матриц видя 1 . COS ф 1 * — sin ср sin ср СОЗф i I . (10—102) у которых лсо элементы главной диагонали, кроме элементов, располо- женных в г и ] строках, равна единице; диагональные элементы, расположенные в in /строках, равны cos (р; элементы, расположенные на пересечении I строки и j столбца, а также / строки и i столбца раины соответственно —sin <р и sin <р. Применение одного такого нреобравовапияк матрице А равносиль- но повороту на угол (р. Результатом однократного применения пре- образования с помощью матрицы С9 будет матрица = С^1 ACt, отличающаяся от матрицы .4 лишь элементами, расположен- ными в строках п столбцах с, номерами I и ], вычисляемых через елеменш матрицы А по формулам с^аисозф + а^втф, 1 1 . Г l~rh Щк = — fly sin tp -L tos q>, ) 288
аА = — ajj) Зт2ф J- 2а1к cos 2ф, (10—103) aft = ajjcos2 ф 4- aiK smap 4- atfc sin2 <p, 4t= akJt + ал - a}j Угол поворота ср выбирается таким образом, чтобы элемент а|у обращался в нуль, а поскольку преобразуемая матрица симметрич- на, одновременно обращается в нуль и элемент Таким образом, tg 2(р = 2а^/(ан — ал) (10—104) Применяя последовательно это преобразование к матрице Л, в пределе можно получить диагональную матрицу, элементы ього- род есть собственные значения На каждом шаге вращения в качестве элемента atj выбирается наибольший элемент матрицы, но лежащий на главной диагонали Поскольку процесс преобразования матрицы осуществляется итерационным способом, то яри каждом вращении производится проверка па окончание.. Для этого задается некоторая точность, с которой сравниваются по абсолютной величине псе недн агональ- ные элементы матрицы JBt Допустим, что заданная точное гь обеспечивается после выпол- нения н вращений Тогда диагональная матрица В будет представ- ляться как В = C?C*Ll. CfACbCi Cni (10-105) а матрица собственных векторов как С^С'ьС^ Сп (10-106) Программе, реализующая метод Якоби, представлена на стр 288. Она состоит из процедуры п обрящепил к пей. Формаль- ными параметрами процедур ы,явл лютей’ W — порядок матрицы; А — матрицы коэффициентов; LAM — вектор собственных зна- чении; 5 — матрица собственных векторов. Метод унитарных преобразований > Этот метод является обоб- щением метода Якоби для случая произвольных несимметриче- ских матрпц В нем также используется преобразование подобия (10—100), однако и отлично от метода Якоби исходная матрица _4 преобразуется ио к диагональной, а к треугольной форыо. Дпагоиаяыше элементы преобразованной матрицы J3 при этом совпадают с собственными значениями исходной матрицы А Дли преобразования матрицы А к треугольной форме исполь- зуется унитарная матрица С, т е такая матрица, для которой СТ = О'"1, где G? —есть комплексно сопряженная транспонированная мат- рица С, 287
> 4 * BEGIN* * INTEGER*NM INPUT Cl»N)*» ’BEGIN» • ARRAY*AfSC/l :N,1 :N/)jLAM(/1 :N/).f 1PROCEDURE*JACCBI(N,A,LAM,S)., 'INTEGER 'N.j 'JftRAY'AjLAMjS.j 'BEGIN' ‘REAL* NORMjNORialjPHIjSNiCSjHRjAlCjAIjti.t ’INTEGER,I(J.IR1rC,F.| NORKisO.O., F:xO., 'FOR* Г !=1 * STEP’11 UNTIL’N’DO* * FOR* J * SUSP и * UNTIL'H’DO» * BEGIN* d(/IjJ/)i«*ir»I=J»THIWM.O*EIiSB»O.O.t NORM: s’ IF' WTHEN ’NORM» ELSE»NORM+A(/I, J/)<*2 'END*., NORM:=S^RT(NORM)., NORM1 joN0W0H»lD-7« • J1:N0RM:=N0RM/N., J2 * * FOR* IC * =2’ STEP* 1 * UNTIL*N* DO* * FOR *IR «jrf• STEP 11»UNTIL» 10-1 * DpJ 'BEGIN* * IF' ABS(A(/IR, IC/) ) 'GE’NQRM'THENf * BEGIN* F:=1M L:s.5x(A(/IRfIR/)-A(/IC,IC/)>.f Al:=*IF’L*LT'O'THIN1A(/IR,IC/)*ELSE**A(/IR,IC/)•t PIH :=M/SQRT(AIx x 2+L xx 2)., SNxsPHI/SQRT(2.0t2.0xS5RT(1-PHIxx 2) ) M OS:-SQRT(1.0-SNXX2) ,, 288
TOR* 1»S£EP»1 ’UNTIL’N’ DO* ’BEGIN’ 1 ’IF’IR=/I*THEN’ ’BEGIN’ ’iF*is/ic*THap •BEGIN» AIR:=A(/XR»I/)XCS»A(/IC»I/)*S®r. j AIC:=A(/IR,I/)xSN+A(/IC,I/)xCB., A(/IRtI/>-‘=AlK.» A(/IC,I/):^AIC ’END» ’END*., AIRisS(A,IR/)*CS-S(A,IC/)xSN., AIC:-S(/I,TR/)xSN+S(/IIIC/)xCS., S(/I,IR/) i=rAIRM S(/I,IO/):=AIC •END»., AIR:=A(/IR,IR/)xCSxx2+A(/IC,TC/)xSNxx2-2.0xA C/IR»IC/)XSNXCS,» AIC:i=A(/lR,lR/)x^Txx2+A(/IC,IC/)xCSxx2+2.0XA (/JR,IC/)xSNxCS., Al(A(/IH,IR/)-A(/IC,IC/))XfiNxCS+A(/IR,IC/)X (CBXX2-SNXX2)., A(/IR|IR/)t=AIR., A(/IC,IC/):^AICM A(ZER,IC/):=A(/IC,IR/)s»AI., ♦TOR*I:=1»STEP*1»UNTIL’N* DO• ♦BEGIN» A(/I,IC/):=A(/IC,I/) ♦END' •STD» •END'., ♦IF'KEYCl) * THEN* OUTPUTO, • (E*), A,NORM).» ♦IT’Fa/O’THEIT* i(l В В Кйфцрон » др 280
’BEGIN’ F?=Ot> ’GOTO*J2 WM ’ХР’НОНи’ОЯ’НОВМ! ‘THSP ’GOTO*J1,I ‘FQH’I :=d ‘SWEP’1 ‘UHTIL’K*DQ.*LAM(/I/) :сД(/I,1/) INPUT(1,A)., JACOBI(NTA,IdM,S)., OUTPUT(.3» * св») ,ЪАМ,8)., ’end* ’ИГО’ Матрица С определяется как последовательность элементар- ных преобразований над матрицей Л, выполняемых с использова- нием унитарных метриц вида - 1 0 - (10-107) _ 0 * . I J где черта сверху означает переход к комплексно-сопряженному числу. Поскольку преобразование» определяемое матрицей (10—107), унитарно, для элементов матрицы дол лот с выполняться условие а« + |с|»«С (10-108) Число а в матрице (10—107) всегда действительное, а число с в общем случае комплексное- Как и в методе Якобиt в результате однократного преобразова- ния с использованием матрицы (10—107) в преобразованной ма- трице изменяются лишь элементы, расположенные в строках и столбцах с номерами J и А. Новые значения элементов при этом вычисляются по формулам йц = aatj -f- caw i =£ jt tiik — — cat, aat1c I k, afl aajf 4- 5aftf, — са.ц 4- aafc£, tty >= 4- | c |z a44 4- acaik 4 (10—109) 290
'ВЗйЙК* ’INTEGER’N., •HEAL’EPS., INP(JT(“J ,N) •, 0UTPUT(3,‘(I‘),N),, INPUT(1tEPS)., OUTPUTOi* (S’),EPS),, •BEGIN1 f ARJRAY’L(/1iN,1:2/) ,A(/1:N,1jN/)., ’PEOCSDUHB’WITItt(P,U,L,SPS)., ’INTEGS?’?,, •REAL’EPS., ’ARRAY’U,L., ( •BEGIN* * INTEGS?»I, J, К, Z, К, ITE8 . , •HEAL’M.S, A,CRvai,^tDl,MR,KI., •AmY’ARjAbBR.BljRRjRIjHTRtKrliCSC/l «РИ :P/)«» *PROCEMJHE’SUM(Z, A,B) ., •VALUE’Z., ’INTEGER’Z», •ARRAY’A,B., •BEGIN’ ’INTEGER’I, J., ’F0R‘I:s1 ’STEP’1 ’UNTIL’N’DO’ ’FOR’J:«1’BTjSP»11 UNTIL’N ’BO’ACZljJ/Jss’DtiZ’GT’O’THEN’AC/I.J/J+BC/IjJ/J’ELSE •END‘SUM., ’PROCEDin?S»COMP(Z,X,Y)., ’VALUB’Z., ’INTEGER•&., ’REAL’XiY., *BEGIN’ •REAL’R,!,, ‘IP’Z'GT’O’THIM* 291 10*
•BEGIN’ R:=SQRT(X*X+YxY)., ' I:=’IF’ ABS(X),LT’KM5,T11EJP1 5TO96xSIGN(Y)*ELSE»ARG T AN ('I/X)+1.570796 X(1-SIGN (X))., •IF*KEr(lbo)»THEN’I:SARC(X,l)'., ‘END1‘ELSE’ ’BEGIK» R:=X*COS(Y)t> I:=,IF,ABS(ABS(Y)-3l1^S93<),bT’Kb5’T^N’0.0’ELSE’XXS IH(Y) •END’», X:=R., Y:=I •END»COMP., MlaP., ’FOR’I:=1•STEP•1•UNTIL’N’DO’’FOR*Z:=1’STEP ‘1’UNTIL’N •DO1 ‘BEGIN’ AR(/I,Z/):=U(/I,S/),, AI(/I»Z/)»«O.O., RR(/I,Z/> i=RTR(I,Z/) 1=»1Р’ГгИ*ТЯЖ’1.0’ЕЬ5Е*0.0., Rl(/ItZ/) i=H!MC(/X,Z/) 1=0.0 •EMD'IZ., ITER:=1., x STtSixO.O., • FOR»I:=2*STRP‘1 ’UNTIL*N‘ DO’ ’FOR'Z 1=1’ЭТЕРИ’UNTIL’I -1»D0» ’BEGIN* tft.ARCn.Z/^xa+AK/I^/)*^., ’IF‘M’GT‘SW’ •BEGIN* S!=M., Kt=rM J:=Z •END’ 292
’WB.| •IF‘KKr(1)‘THEN» ’BEGIN» 0UTPWPO, * (I •) tITER.K, j).> OUTPUT(3,’(B’)»S) ‘END‘KEY(1)., ♦IF'BQRTCSpM’IPS’THE»1 ‘GOTO’FIN., DR1=.5*(AR(/K,K^-AR(/J,J/))., MRisDR*DR-DIXBr+AR(/K,J/)XAR(/JlK/>AX(AtJ/)*Al(/J> K/)M Ml!=a.OxDRxDr+AR(A,J/)xAI(/J(K/)+AR(/J,K/)XAI(/K>J/ COMP(1,MR MRi=3QRIl(MR)« । МХ:=.5*МГ,, COMPCOtMR.MI)., ORssDR+MR», CI :sDI+MI., MRjxDR-MR.t MIssBI-MI., ' IF* CRxCR+CIXCr * I/D *MRXMR+MI* HI* THEN • ’BEGIN1 UR:xCR., MIx=CI ’END1-, CR:=AR(/J,K/).t CIj=AI(/J,K/)., C0MP(1,CR,CI)., •lP‘CH’LT*]0-’l5’TaSf’ ’ВМЯН» MRI^SXARCA^J/)., MI:=-.5aAI(A,J/)m CR:=DR.t CI :=DI. I 293
COMPd^CR.Cr) 'W., coupdjMHjMi).» CRzsMR/CR.» OIi=Ml-OI.f A*u1/SQRT(1 .G+di*CR)., OH:^AXCR., C0MP(0,CR,Cl)., RR</J>J/) iKRRC/KtX/) :aRTR(/J\J/) ixRTR£/KtK/)-A-, RRC/J1K/^=HTRC/K»J/)ic-CH.I RR(/K,J/) 1=ЯЖЛГД/) j=CR. f I4RI(Д,J/)I«CI,, SP(3lNJW,N>Ra?R,ARlBR).l 8Р(3>Я>Я>Я»ИТХ|А1»СЗ).> SDM(0f3RtCS)M SPCJ^Wi^RTl^AI^Bl)., SPOiM.HiHTXiAR.OS)», SPOiN^^BRtRRtAR)., SP(3»N,N|N,BI,RI,CS)m ЗШ(0,АЙ,СЗ),, SP(3t*bK,N,3R,Rl,AI)M SPOiWjKjHjBItRR^CS)., y SEK(1,AI,CS)*» RR(/J,J/) ;=RR(/K,K/) i=l?TR(/J,J/) s4m(A,K/) .0*, RRC/J.K/J.^RRC/K^J/J^RTRC/J^K/) ^RTR(/K,J7) :=0.0., »IF»Klir(2)»THl2J’ »BEGIN’ ouTpirajQ/CiOiiTER)., OUTFUTOi’CUO^AHMI) ’END’,, ITER:-ITER+1.। ’GOTO’ST., 2M
>< .. FIN: * FOR»I »STEP ’ 1»ШТИЛИ ’ DO ’ ’BASIN’ ” r Ь(ДЛ/)^АН(/1,1/)м ‘ £ L(/I,2/)joAl(/I,I/) 'r:" end1 ;? < ЕГО ’UNITIM., INPUTd.A)., 0UTPUT(3,’(B»),A),, OTTIM(K,A»b,EPS)., Л OUTPUTU/(E»)fI,) < ’END* ’END’UNITAR = Л“ал — | c |2 aki + aS (a^ — a^), Г - aif = <raAJ — c2a^ + at (a^ — a}i)t ok — а9акк 4-1 с I8 a„ — acaJt[ — aSa^ Элементы матрицы преобразования (10“107) выбираются таким обрзаом, чтобы па каждом шаге в преобразуемой матрице обращал- ся в нуль един из элементов, расположенных ииясе главной диаго- нали, т.' е. элемент aiy. Условие равенства нулю дает два урав- нения, которые совместно с уравнением (10—109) позволяют оире- делить три неизвестных: а, действительную и мнимую части чис- ла с Воспользовавшись заменой неизвестных a = (1 -{- [ р l1)^** j? с = p (1 + |ц |а)~‘'1’ s= pa, можно принести уравнение ay = 0 к виду ад ця — (akJt — а;/)р — akJ = 0, откуда определяется ве- личина р Н = {яал — «jj± [(®п — + ^какз]^}/2^ В этой формуле знак выбирается так, чтобы получаемое значение ц было наименьшим по модулю. При практической реализации метода в качестве исключаемого элемента aKj преобразуемой матрицы обычно выбирается наи- больший по модулю элемент, расположенный ниже главкой диа- гонали. Программа на стр. 290 реализует метод унитарных преобра- зований для нахождения собственных значений действитель- ных несимметрических матриц Вычислительная часть про- граммы оформлена в виде процедуры UNiTIM, входными пара- метрами которой являются порядок матрицы Р, матрица £7, точ- ность расчета BPS. Выходным параметром процедуры является матрица L размерности Р X 2, строки которой содержат дейст- вительные и мнимые части найденных собственных значений ис- ходи ей матрицы В процедуре UNITIM используются две про- цедуры SDМ я COMPt первая ив которых реализует сложение и вычитание матриц, а вторая — преобразование комплексных чи- сел из алгебраической в тригонометрическую форму и обратно.
Глава XI ОБРАБОТКА ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ Экспериментальные данные, дол ученные в лабораторных или промышленных условиях, являются основой для проведения даль- нейших исследований. Эти данные обычно используются либр для определения констант известных теоретических соотношений, либо как исходный материал для установления аналитических зависимостей. Если в первом случае экспериментальные значения подставляются в соответствующие уравнения (например, коэф- фициенты диффузии, массонередачи, вязкости, плотности и др.)» которые применяются в последующих расчетах, то во втором — совокупность экспериментальных значений используется для уста- новления функциональной зависимости, которой опп подчиняются (например. зависимости констапты скорости реакция от темпера- туры, зависимости плотности смеси от состава и т. д.). В последнем случае в результате проведения эксперимента исследователь получает некоторую таблицу значений функции при фиксированных значениях аргумента. Например, при изуче- нии взаимосвязп между некоторыми величинами г и р может быть получена таблица значений, отражающая характер зависимости между ними: J II . Jn V Hi Vi Уг. Если аналитическое выражение наблюдаемой зависимости между ж и у неизвестно, то встает практически важная задача— найти эмпирическую зависимость У / (г), (Н-1) расчеты по которой либо совпадают, либо и некотором Смысле при- ближаются п аил учшнм образом к экспериментально наблюдаемым значениям Геометрически задача построения эмпирической зависимости (11—1) состоит в том, чтобы построить некоторую кривую, кото- рая была бы в определенном смысле близка к системе точек (аг(, yt) ь = 1 2,,Г,,л. Если впд зависимости эаралее известен, то зада- ча сводится I? отысканию паилучших значений параметров этой зависимости, в противном случае вид этой зависимости также подлежит определению. Но существу обе Э1и задачи решаются аналогично: если вид зависимости у — / (,с) заранее исизвестон, то исследователь по геи
ряду соображений (папрнмбр, исходя ив требований простоты эмпирической формулы или определенного физического смысла) указывает узкий класс функций, которому должна при падл сжать искомая функционал ьиап зависимость, и, таjсим образом, задача сводится к нахождению паилучших значений параметров В чпо ленном анализе наиболее часто применяются многочленные при- ближения, однако прн обработке экспериментальных данных ис- пользуются также показательная, логарифмическая п степенная зависимости Поело того ьаь выбран класс приближающих функций, необ- ходимо из пего выбрать одну определеппую функцию, воспользо- вавшись некоторым критерием оценки степени приближения. В качество оценок близости экспериментальных и расчетных значений могут использоваться различные критерии основанные па их сравнении для всех измеряемых точек. Одна из возможных оценок состоит в требовании равномерно- го приближения расчетной зависимости к наблюдаемой экспе- рпментадьно Математически требование равномерного прибли- жения состоит в выполнении условия mln {max|/(a;() — Л*(Аг ait , ак) ]}, (И—2) й,г...гов < которое означает, что выбором параметров aj, / — 1, 2,,,., j рас- четной зависимости F an...,as) минимизируется максимальное отклонение втой зависимости' от расчетной / fo). Очевидно, оценка близости по критерию равномерного прибли- жения ие всегда оправдана, поскольку если при эксперименте в некоторых измерениях имеются большое ошибки, то они в основ- ном и будут определять характер расчетной зависимости при ис- пользовании критерия ('11—2), Более удобной формой оценки является требование близости в среднем, которое может быть выражено различными способами, Например, в качестве критерия близости или, как его часто на- зывают, критерия адекватности, может использоваться соотноше- ние я 7?(alt . . , я*) = 2 — t fl«)l (И—3) i=j t Минимизация величияы R (a.,„.,a3), обеспечиваемая под- ходящим выбором параметров а; у = 1* 2,„r, j), позволяет полу- чить расчетную зависимость, для которой среднее отклонение но всем экспериментальным точкам будет мшшмальншь Другим выражением критерия близости (адекватности) может быть оценка п Л(йь л , а,) = 3 (/(xi) — F(Ji а1. • ’1 aj)2- (11—4) f=l 297
минимизация которой обеспечивав'! минимальное значение средне- х квадратичного отклонения для всех экспериментальных точек Критерий (11—4) наиболее часто используется в задачах обработки экспериментальных данных, поскольку зависимость R &ti является аналитической функцией параметров ai (/ = 1» 2,..., а), в то время как для критерия (И—3) аналитич- ность нарушается из-за использования в выражении суммы абсо- лютных величин отклонений Использование соотношений (11—3), (11—4) для оценки бли- зости расчетной и экспериментальной зависимостей дает хорошие результаты в том случае, если измеряемые значения неизвестной функциональной зависимости изменяются в относительно не- больших пределах. Если же исследуемая фуднциоиальиая зави- симость имеет значения, различающиеся существенно, например на один или несколько но рядков, то оценки типа соотношений (11—3), (11—4) становятся неудовлетворительными, поскольку относительный вклад каждой экспериментальной точки в общую оценку близости зависит от измеряемого значения. Поэтому в качество оценок близости для функциональных зависимостей, изменяющихся в широких пределах, применяются также выражения Я (я,,.... а,) = S I 1 (м-5) или R (а„ ..а.) = 2 Д.. °.)у (11-6) \ 1 (Si) / при использовании которых достигается минимум среднего отно- сительного отклонения илн минимум среднего квадрата относитель- ного отклонения. Однако н оценки (11—5) и (11 —6) ие всегда дают удовлетворительные результаты при аппроксимации зависимос- тей, изменяющихся в широком диапазоне изменения измеряемых значений с одинаковой относительной точностью. Очевидно, ио пользуемая оцеп к а близости расчетной и експериментальпой за- висимостей в этом случае должна учитывать значимость вклада отдельных Точек, что приводит к выражениям критериев адекват- ности, построенным с учетом весовых коэффициентов для каждого из слагаемых оценки п Я(П1, • • ., яв) = S М/(*<)“ ^(®й «х. • • да)! С11—7) ИЛИ п fl(fllt . ♦ й8) = S M/ta) ~ ^11 д1, (11—8) 1 298
Нетрудно заметить, что критерии (11—5), (11—6) являются частными случаями критериев (11—7), (11—8), если весовые коэф- фициенты соответственно принимаются равными в = 1/1№)| (11-9) или (И-Ю) Для учета различной точности намерений в широком диапазоне измеряемых величин весовые коэффициенты могут задаваться с учетом этой точности. Иногда весовой коэффициент определя- ется как ₽, = !/«<, (11-11) тде fii — относительная ошибка f-го намерения Величина относительной ошибки при атом может опреде- ляться статистически по результатам многократных намерений одного к того же экспериментального значения пли же рассчиты- ваться исходя нз известной погрешности исисль&уемых измери- тельных средств Важным этапом в решения задач обработки экспериментальных данных является выбор метода отыскания н ан лучших значений параметров искомой зависимости По существу задача определения нанлучших значений параметров зависимости, минимизирующих определенную оценку является задачей минимизации функции многих переменных. В тех случаях, когда искомая зависимость ищется в форме нелинейной функции, решение этой задачи может представить определенные трудности, поскольку приходится при- менять общие методы решения задач отыскания минимума функ- ции многих переменных — методы нелинейного программирования [1]. Лишь когда искомая зависимость F (xh at) является линейной функцией параметров а/ (/ = 1, 2,.,., s), папрпмар, при отысиапин аппроксимирующего полинома, иаилучшие значения параметров я у (j — 1, 2,,.,, s), в особенности при использовании критерия оценки среднеквадратичного отклонения (11—8), могут быть найдены относительно просто, для чего используется метод, называемый методом наименьших квадратов (см, стр, 319), 1. Интерполирование Пусть функция у — / (х) при значениях аргумента at, принимает значения у1л у..,..,уп, которые сведены в некоторую таблицу, И пусть необходимо определить значение у = / (#), (^ы < Я <Z #t)’ Значение т = £ попадает между двумя таблич- ными значениями, поэтому для вычисления значения функции необходимо предположить некоторый характер ее изменения меж- ду узловыми точками Если закон изменения функции между узловыми точками предположить линейным, то для нахождения
' - к ‘Л искомого значения можно воснользеваться уравнением прямой, проходящей через две точки g = y-l+ f11-12) ' * * Aw !— Такая замена функции / (х) на отрезке [х1-3г xj прямей линией называется линейной интерполяцией, а точки — узлами интерполяции Если для данных значений функции линейная зависимость дает значительную погрешность, то можно воспользоваться квад- ратичной (параболической) интерполяцией у =* ах1 4- &х 4- с, где я, Ь, с — коэффициенты, определяемые но трем прилежащим узло- вым точкам, В общем случае зависимость, которой подчиняется функция, заданная таблично, может быть аппроксимирована многочленом и более высокой степени И ЛДя) = У — «О -г aix -Г 4- • • + = S а^- (11—13) *=я Тогда для определения коэффициентов многочлена (11—13) пеоб- ходипо располагать п 4* 1-й узловой точкой. Геометрически задача построения многочлена jPt] (х) степени п прй интерполировании заключается в проведении кривой, про- ходящей через заданные точки. Уравнения вида (11—13) линейны относительно коэффициентов, поэтому аналитически определение коэффициентов интерполяционного многочлена для п -f- 1 точек сводится и решению системы липейпых уравнений п 4- 4-го по- J рядка, каждое нз которых представляет собой выражение (11—13), записанное для определенной узловой точки у( -= й0 -И ^а?! п вал?}- -| (i^l,2,. , «4-1) (11—14) Система уравнений (11—14) имеет единственное решение) если ее определитель 1 *1 $ . < 1 •Гз „5 ед =*=0 (11—15) 1 1 Зт>4-1 • • • 4-ц Выражение (11—15) называется определителем Вандермонда и его величина всегда отлична от нуля если =/« х^ для I / Доказать это можно с помощью следующих допусттпдл злемеп- тарных преобразований над определителем (11—15) Вычтем нз каждого столбца определителя, начиная со второго, предыду- щею
щий столбец, умноженный на ?,г Тогда D(zlt 1 О 1 Xj ... Jj. 1 t * ъ * « < Л.® 1 ^714-1 . . . о ... о 1 Zj Zj Zj ZjjZj ... — Zj 1 *^1 л 2 * #п+1 “ —1 Разлагая определитель в ряд по алиментам первой строки и вынося общие множители из каждой строки остающегося опреде- лителя, можно получить В ("^1 f t ^n) (^"2 ' #1) (^3 ' £].) ‘ • (z,l-| 1 ^1) X 1 z2 . . a£-1 1 z3 Ха-3 X , = J k 1 ajfi-jd , . , Zn4\i = П — Хд) D (x2, za, . xr,j_i) (» 4-1 > i > 1) Выполняя аналогичные операции над определителем D (xg, х3, .., гп-н), найдем В (zjt ^2? > Zn+1) s ’ ^1) ’ Zj) Z) (#з, #4,. . . , (п+1>ОП. (7i-4>;>£) Продолжая отот процесс, окончательно можно заннса1Ь Л(хпхъ . , хп.ч) = П cj) («•+ 1 > b i> U (11-IS) откуда счедуат, что при различных значениях определитель (11—15) не равен нулю Метод построения интерполяционного полинома Рп (х), изло- женный выше, ив является единственным. При наличии вычисли- тельных машин он весьма удобен, поскольку сводится к системам лииейыьпс уравнений, программы решения которых, как правило, имеются для каждой машины Однако прн ручных расчетах или с помощью клавишных машин его использование сопряжено со зна- чительными трудностями, особенно при высоких степенях доли- нома.
Интерполяционная формула Лагранжа* Другой подход к оты- снанию интерполяционного многочлена по п 4- 1-й узловой точке, известный как метод Лагранжа, заключается в следующем. Пусть в п + 1-й точке ат0, Zj., ,,.,жп определены значения у0> ..*,уп Требуется построить многочлен Рп (я) степени по выше п, принимающий в узловых точках заданные значения. Рассмотрим многочлен Pi (х) = С{ (х - т0) (х - . (2 — 2|-i) (х + х1+!) (х - *п) (11—17) (С< — некоторая константа), который в заданных точках удовлет- воряет условиям {у. i та f Полагал х — х^ иа условий (11—18) можно найти значение кон- станты Ci — xd) (я। — и), (Я[ — (xi. ) Теперь., подставляя полученное выражение в соотношение (11—17), будем иметь (г - я»)(я — яд) & - х^) (я — (а — z J {— (®i — *0 — «1) • • txi (xi — ri4-i) £x{ — xn> Vt (11-20) Таким образом, найден многочлен, принимающий в в-Й точке заданное значение У{ п равный нулю во всех остальных точках. Для того чтобы построить многочлен, принимающий значения у0, Pi, уп в соответствующих точках, можно взять сумму (я - zo) (д - Т1) .. (я - - г|+1) (ж - xn) (XJ—хо)(т{ —Я1). (Г — Я^£) (я{ - ^.н) (Х(-2П) (11—21) Многочлен (11—21) называется интерполяционной формулой Лагранжа. Поскольку каждое слагаемое в уравнении (11—21) имеет степень пе выше и, он удовлетворяет поставленным требова- ниям. Следует заметить, что при заданной соаокупности узловых точек построение многочлена Лаграпща возможно только единст- венным образом Действительно, если бы существовал другой мно- гочлен степени п, то он, как н первый, должен обращаться в нуль, во всех узловых точках Отсюда следует, что их разность была бы тодщественпо равна пулю, т е/ онц должны совпадать^ Рп(х)= S 303
1 ' , ’ I ‘ . . --- ‘ " -: ." j . , ,м jin* Многочлен ЛагранЖа может быть поС'ТРоёй йфй любом pafiild* • ложенпн узлов интерполяции Однако, если для повышения точ- ности интерполирования необходимо включить Дополнительные точки, то все коэффпциеаы многочлена необходимо определять <_ заново Пример 1. Построить тштерноаяциовнын многочлен Лвграпжа, сслМ вадавы значения функции у = / [ж); х 1 2 3 4 у 0 3 5 7 Решение. Здесь л — 3 Применяя формулу [11—21), получим Р -л fr-2)(x-g)(x-4) (x-i)(x-3)(r-4) “ С ' “ [1 - 2) [1 - 3)[1 — 4) ' U + $ — 1)(2 - 3) (2 — 4) 3 + , , (*-i)(x-2)(z-3) + (3 — 1) (3—2) (3 — 4' + (4—1) (4 —2) (4 — 3) {~ х» э „ за =- ~5-"ёГ Xs 4-"а” 2? — 5 Программа расчета коэффициентов многочлена Лагранжа для таблично заданных значений функции и аргумента приведена на стр* 304, Вычисления коэффициентов производятся в соответствии с формулой (11—21), причем произведения линейных двучленен числители определяются но схеме Горнера в процедуре MVLTP. Исходные данные: XX — массив значений аргументов; У — массив значений функции, 7V — верхняя граница массивов (число точек без единицы) Конечные разнести Пусть некоторая функция у = / (а;) в точ- ках а:0 A, ara + 2А и т д. принимает значения у0, у1п .,упг где h — шаг. Выражения Ay« = yi-»o = /(zo+ *)-/(*»). Дй = й-»1 = /(»о4-2а)-Д»|( + Л), < ’ называются первыми конечными разностями функции у = / (х). Символ А называется разностным оператором и означает, что функции у = f (х) ставится в соответствие функция Ду = / (а; 4- + А) — / (х) Поскольку разностный оператор может применяться многократно, можно получить разности второго, третьего и более высоких порядков Все разности порядка выше первого определя- ются через разности на единицу меньшего порядка, однако могут выражаться и черев разности и бопее низкого порядка нли через значения функции Например, для заданной функции { (х) раз- ности второго порядка есть Д’Уо = — дУо = Уа — 2^1 “И Уо, Д«уt Ду. — ДУ1 уз — 2ys -г ITit (11 - 23) Д2(/п—а — 1 ' дУп—5 — Ул 2у«—1 4* Уп—а 303
‘BEGIN' . * INTEGER 'NM INPUT(1,N)M »BEGIN»' 'INTEGER’I,J., ' ARRAY’ A, AA, X»XX, B, Y(/0 tJf/)., 'RJSAL’W., 'PROCEDURE'MJlflP(I, A,X1) ., ‘INTEGER*I., ‘REAL'Xl., 'ARRAY'A.» 'BEGIN' 'INTEGER* Z., A(/I+l/)t--A(/I/)xX'1M •F03’Z:=1•STEP*-1*UNTIL*1 * DO * A(/Z/):=A(/Z/)-A(/Z-1/) x X1 ‘END*., INPUT(1»XX,Y)., 'FOR'JisO'STEPH'UNTIL'N'DO* ‘BEGIN* A(/O/):=B(/J/):=1.O,, ' FOR • I t=O‘ STEP' 1' UNTIL'N‘ DO' ‘BEGIN1 ‘IF'I'LT* J'THEN*X(/I/) :=XX(/I/) ,ELSE”IF'I’GT‘J’THEN ‘Х(ДИ/)*«ХХ(/1/)'218Е’*:=Ш/1/) ‘END’.» А(Л/):^Х(/0/)., 'FOR'I;=0*STEP*1'UNTIL*N-1'DO' 'BEGIN' MULTP(I,A,X(/I/))., 'I^'KEY(1)'TW0UTPUT(3,*CE'),A,B) 'Ш'и ' Ilf »J=0'THEN' 'BEGIN' Ж
»ЮВ<1 :пО»STEPH *UST1Ii*»*D0*AA(A/) l=A(/I/)/B(/j/)*t ’GOTO'yitf ’Ж)’., »₽OR*I:=0*BT2?»1*lffiTIL*N'DO'AA(/I/)^AA(^/)+A(^/)/ m: ’EID’., OUTPUTO/CEOiAA) ’end» ’END’ > а разности третьего порядка — Да#г» — Уз ~ Зрд + Зрх — уб1 (11-24) | A3zfa—а = Дауп—л — =j У» — 3//Д-,] + — Уп-з ' Диалогично строятся конечные разности более высокого по рядка; Длр = Д (Дя~*у) Конечные разности первого, второго и т. д порядков удобно пред- ставлять в виде таблиц разностей. Для функции у = f (х) конечные разности приведены в табл. 18. Т’дб.не^й 1$ Л*1^ ЛЧ Sn 31 Я2 за 3=1 у» У! уа У» уп Ayi) Ajtl 4yi Л’/з Дул Д*ув Дйу] Afya Д*ул Двуп А®У1 А»уа АаУг> А*У1 Му» Таблицы разностей используются при обработке эксперимен- тальных данных и, в частности, при интерполирования тг экстра- полнрованпи фушщий II интерполяционные формулы Ньютона Пусть для функции У = / (т) заданы значения у\ — j (.rj при равноотстоящих значе- 305
’"'“J j ,1. v‘. - «.Jf, » • .’I • _^r< ‘ ' ,l' / •" ‘ 1 7 r‘ 111 ' / * 7l. ниях аргумента at = dS0 4- ih (i = 0, 1, 2, ..ji). Требуется по- строить многочлен Pn (x) степени не выше н, принимающий в точ- ках xt значения < (i = 0,1,2,. n). (11—25) При интерполировании по Ньютону многочлен (аг), уцовлет- »f-z - воряющнй условию (11 —25), может определяться двумя способами: ? Рп&) =Ло + ®1(«— *»«) + Ма! — ««)(*— ®1)+ / -* +ап(я — ж0) (аг—ж^), (11—26) (х) =- «е + <h (2 — *п) 4- «а (ж — х„) (® — ^>1-1) + “ • + On (« — xj (х — i) - . (г — жх) (11—27) > Если интерполяционный многочлен строится в виде (11—26), то получается формула Ньютона для интерполирования вперед, если же в виде (11—27), то формула Ньютона для интерполирова- ния назад Выбор формулы определяется топ частью табличных ; значений, которая будет интерполироваться впоследствии Форму- г да (11—26) болев удобна для интерполирования начальных зна- \ чейий функции, а формула (11—27) — наоборот, конечных ' . Формулы Ньютона позволяют легко изменять число узлов ин- терполироваяия, а следовательно, и степень многочлена, Действи- < тельно, при увеличении числа точек на единицу соответственно на f единицу увеличится число членов многочлена н его степень, прн- ч чем наивысшая степень будет соответствовать последнему члену многочлена, Определение коэффициентов формул (11—26), (11—27) произво- дится аналогично, поэтому ниже будет рассмотрен только порядок получения коэффициентов формулы (11—26). Задача построения многочлена вида (11—26) заключается в определении коэффициентов и может быть решена > следующим образом. Полагая х = х0 и подставляя это значение в (11—26), получим f*rt (^о) ~ ЯО = ^0 Отсюда, =i у0. Для определения коэффициента ал в уравнение (11—26) необ- ходимо подставить значение ж = х1 1 Рп (xj =* =* ае + (11 (ХХ — = у0 + at (зг: — х0), откуда аг = У1—Уо A*SAl = Л > где Д’уо — А1 / (ж) — / (^ + Дж) — / (аг0) — первая конечная разность, 306
'7-!х’7<'; »j - - 7 - -J. /а ‘ - ' ' •* [, н—- ‘ f • • / * * ' ’/ ' - > ' > ' . '“V; < - t' 1 i11 Для определения коэффициента ад в (11—26) подстцвим х — х#: Рп С^) = Уа = 4~ *ь) 4~ 4~ flj (2д — 20) ^1) == Уо “I 271 + ; , откуда “,;• Л _ ya —Syi —№ Atyo ; дй------- Продолжая подстановку влечений Х{ (i — 8, 4,..,), можно по- -< лучить соответственно Л _ A*fo Л _ A*lfo „ _ А”уь . -4 31Л» ’ а*~"4Г&~' 1 а” —7Гмг‘ . Подставляя найденные значения коэффициентов а0, .,ап в уравнение (11—26), получим (ж) = Уо 4—— ^о) 4- -~г (я “ хо) (2 — 21) 4- • • ’ - ’ ‘ 4—грг (<2—«о) •«»(2 — ^n—i) (11—28) - HJ л L Этот многочлен называется формулой Ньютона для интерполи- рования вперед, Формулу Ньютона для интерполирования назад можно полу- -4' чить, если последовательно в уравнение (11—27) подставить зна- чения xn, •f’n (2) * y,t 4-jt •* (2 2n) 4 21 ~~ ®n) (® — ®n—1) 4- ” ‘ j. -I' -тйг (® - »») (» - ®«-i) ' (« -»>). (11—29) n[ ft Таким образом, для построения многочлена Ньютона степени п необходимо вычислить конечные разности до п-го порядка* При зтом добавление узлов интерполирования не приводит к пересчету ранее вычисленных коэффициентов. Пример 2 Построить интерполяционный многочлен Ньютона для задалпых значений функции у = / (а) И234 у 0 3 5 7 Решений Здесь п = 3, Л “ 1 Составим таблицу1 коночных разностей функции у = / £») (см, стр 308) Воспользовавшись формулой £11—28), получим Ps £z) ™ 0 + 3 (х — 1) — - '4 (® - 1) (х - 2) ф- VB (т - 1 )> - 2) (х - 3) = Vo — Эг1 ф- 38 х - 30) t Тотгцй результат иощет быть подучен, воли воспользоваться формулой (11—39) 307
ДЛЯ пптсрполарсншния назад 7 4 2 (» —- 4) + Ve (я* —- 4) (л — J) X X (х — 2) = »/в — 9г* Ч- ЗВе — 30). Замотин, что многочлен Лагранжа) построенный пе этим же точкам, со впадает с многочленами Ньютона. Следондтольно, если дана л 4* I узлонвя точ ка, то пеадлнснмо от способа построения многочлена степени не нышо к, проходящего через заданные точки, последний он|юцолсн одношачао вкродо лах ошибок округления Программа расчета коэффициентов многочлена Ньютона по фор- муле (11—28) приведена на стр 309, Исходные данпые: X, У— мае сивы значений аргумента и функции, N — размерность массивов. Прибор 3 Пусть оадапа относительная плотность раствора карбо пата натрия при 30е С (по отпошепшо к плотности воды при 4” С) 1391' Состан, % 4 8 12 (6 20 24 28 Плотность, s/c.h« 1,0363 1 0775 1,12 1,1636 1 2Q86 1,2552 1 3031 Определить плотность 30%-го раствора карбопата патрпп По эти данным построим таблицу конечных разностей Тдбдцг^а 19 X d ля ДМ дм дм 4 8 12 16 20 24 28 1.0363 1,0775 1,12 1,1636 1,2086 1,2552 цзом 0,0412 0,0425 0,0636 0,0450 о;0460 0,0479 0,0013 0,0011 0,0014 0,0016 0,0013 —0,0002 0,0003 0,0002 -0,0003 0,0005 —0,0001 —0,0005 Из табл. 19 следует, что л) для анстрзполяцпи можно поспольаоватьсп полиномом третьей стаиешь тогда точность ла будет превосходить единицы четвертого разряда, б) последнее значовла разности А2<1 лол учено из 16, поэтому это значение аргумента слодуст выбрать в качестве z0 для формулы (11—28). 3®
•BEGIN’ * INTEGER *IJ.( INPUTCI,»)., ’BEGIN* ’INTEGER* 1,1., * SEAL* Я, FACT. ] >ARRAY’X,Y,B,A(/G:h/),, ’PROCEDURE*MUIZCF(I»A.B)., ’IBTfiGiB»!.» ’REAL’B.j ARRAY* A., ’BEGIN* •INTEGER’S., A(/I+V):=-a(/J7)xbm »F0R»Sj«I,Sl’a?»-1»L'FTlL’1»DO'A(/Z/)isA(A/)-A(/2-1/) x В INPUTS ,X,Y).r a(/OZ):=FACT!=1.O., ’FOR’IjsO'STEPH’miL'N'DO’bC/I/Jls.O., i=Y(/G/)., * FOR* J:=0* STEP ’ ’I ’ UH HL * N-1 ’ DO1 ’BEGIN’ rACT^rAC^CJ+l)., * FOR ♦ I :sO' STEP' 1 ’ UNTIL' N-J-1' DO* Y (/I/) t=Y(/l+1 />Y (/ !/)•. mudtpCj.a.xC/j/)).» »PQR’IjsN»STE?«-t 'UNTIL*M-J-1 ’псовел/) :-B(/I/)+Y(/O /)XA(/J+1-N+I/)/(FACTxHx*(j+1)) ’END' 0UTPUT(3»*(S,)|3) •2ND’ аш» 309
’г| у-"*. . г-. >' - ' "S/v*'. Применяя интврноанроваяио вперед, запишем <5|0 = / (да) =5 f (Хо -|- ‘, 30—19 4- АА). Пмкольву к0 = 18, Л = 4, да 30, то к = ——• =* 3,5. Тогда, вспадьауя формулу (11—28), можно ааписать \ A’do '* d» = / (*о Ч-№) = / to) 4- 4- "2^ (® — *о) («—®i) + г 4- («-Ж*-*!)(*•-**)-1.1836 4-3,5 0,045 Ь । 3,5 2,5 3,5 2,5 1,5 -------. u^Qib, —------------- 0,0003 = 1,3275 i (по справочнику [39] dSB « 1,3274) Оценка точности формул интерполирования, Интерполя- ционный многочлен независимо от способа его получения аппрок- симирует исходную функцию с некоторым приближением По- этому естественно поставить вопрос о степени его приближения к функции в точках, отличных от узловых, т, е. оценить остаточ- ный член интерполяции Xn(x) = f(x)-Pn(x) (11-30) Оценка остаточного члена интерполяции обычно производится аналогично оценке остаточного члена прн разложении функции в ряд Тейлора При использовании этого способа необходимо, чтобы Функция / (х) имела все производные до п + 1-го порядка вклю- чительно Поскольку выражение (11—30) обращается в нуль в «4-1 точках, можно записать, что / (я)- 7\(х) = (х —х0)(х-^(х-ха). (ж-х„)7Г(х) (11—31) Теперь выберем К (х) так, чтобы для произвольного г £ [х0, жп] вспомогательная функция U (х) обращалась в нуль Р (ж) = / (х) — (X) (х - Tq) (х хj) • • (х Хд) X (х) = О, откуда X (х) = -----(11 _ 32) ' ' (х — ffo) (а: — Х1) (г — Хп) 4 ' Очевидно, при таком выборе К (ж) функция U (х) будет иметь по крайней мере «4-2 корня иа интервале определения / (ж), включал концевые точки, и по теореме о среднем ее производная обращается в нуль, по крайней мере в п 4- 1-й точке. Выпол- няя дифференцирование функции U (х) «4-1 раз для произволь- ного х отрезка определения функции / (ж), получим СЛп‘н) (х) =- /,t+1) (ж) - (п 4- 1)1 К (х). Поскольку Z7 (ж) имеет п. + 2 корня, то ее п 4- 1-я производная з некоторой точке J G= [xD, хп) также обращается а пуль, т е. (7^+1) (й) 0. 310
Следов ательно, KW-/'*+” (*)/(«+1)’ и для остаточного члена интерполяции можно записать Я* (г) — f fa) (х) = _|_ fa “ го) fa “ *ft)‘ (11-33) Дня оценки возможной максимальной ошибки интерполирова- ния нместо /(п+1) (х) используется величина max /fn+1>(;r). Тогда максимальная ошибка интерполяции ня превосходит вели- чины |Я(«)| = |/(х)-Р„(г)|С (11—34) Как следует из выражения (11—34), ошибка определяется мак- симальной величиной производной /<п+1> (я), Если высшпе производ- ные функции малы, то мала и ошибка приближения Однако дли некоторых функций их высшие производные ведут себя как nt. Поэтому не всегда повышение степени интерполяционного много- члена может привести к уменьшению ошибки аппроксимации. Может далее оказаться, что ^меньшая степень обеспечивает более высокую точность представления функции [27], Ошибка, обусловленная большой величиной высших произ- водных, пе может быть изменена, она оиределяется характером' функциональной зависимости Для функция, заданных таблично и не имеющих аналитического представления, ее подчас невозмож- но оценить. Однако, как следует из выражения (11—34), ошибка, вызванная неудачным выбором узловых точек, также может быть существенной Если, яалример, узлы интерполяции будут вы- браны вблизи одного из концов интервала интерполирования, то для значении xf у второго конца интервала при (г„ — хй} > 1 раз- кости будут значительными, соответственно их произведение мо- жет быть сравнимо со значением производной Поетому при ин- терполировании с неравноотстоящими узлами яыбор узловых то- чек необходимо производить таким образом, чтобы значение поли- нома в правой части соотношения (11—34) для различных Значении аргумента было лозможпо малым по абсолютной величине. 311
Определение титра раетёорй Определение титра (Л^) раствора путем титров атгия его р а сбо- ром с известным титром (jV2) производится по формуле N2 = = (У»/У1)^2* где Nlt А72 — нормальные концентрации растворов, Уг— объем раствора, титр которого определяется, ли; У2 — объ- ем титрованного раствора, израсходованного на титрование У^ лел. Объем титрованного раствора Уг можно определить путем из- мерения зависимости pH раствора pH — / (Уй) пли Е (окисли- тельно-восстановительного потенциала) Е = /(У2) и вычисления значения У2, соответствующего точке перегиба этих зависимостей. Если зависимость Е = / (У2) имеет точку перегиба, то при пе- реходе через эту точку, соответствующую искомому значению У?, конечные разности второго порядка Да£ меняют знак. Поэтому удобным способом определения У2 является лмпойпоо интерполи- рование по разностям второго порядка [10] Ft = 7s(4 (И-35) Формула (41—35) справедлива для равноотстоящих значений аргумента У2Р В общем случае интерполирование возможно и для таблиц с переменным шагом, если воспользоваться разделенными разностями первого и второго порядков, которые определяются как ki+i — я,] *<+1 “ lzi+f xf+d “ 1*1’ xi+ll (11-36) xl+i xi Программа и пример расчета объема титрованного раствора по уравнению (11—35) приведены па стр 313 Исходными данными яилнются; JV — число точек измерения V и У — массив значений У2; & — массив значений потенциа- ла или pH. Расчет У2 заключается в следующем Цо известным значениям (Уп £j), (i == 1, 2, 3, п) строится таблица раз костей функции Й = / (У) до разностей второго порядка включительно (AYi — const) , ^4*1 ~ Д3-Е, _ L1 A/Jj W ’ "мТ “ " "AT Разности второго порядка последовательно анализируются на знак. Как только будет обнаружена перемена злака, дальнейшее вычисление разностей прекращается и объем титрованного рас- твора определяется ко уравнению (11—35) 312
BEG И?» ’INTEGER’I »N.t inputs, n).> ’ВЕСТ’ 1 ARRAY’V, B(/1 Ш/).> •HEAL’VT,, ‘ARRAY’DEL 1(/1 »N/) ,DEL2(/1 :N/)., * PROCEDURE’ PH(N, VT)., ‘INTEGER’N,f ‘HEAVY*., ’BEGIN’ •FOR’I ’ STEP И ’UNTHi'H-1 »DO» ’BEGIN* СКЬ1(Л/)^(Е(Л+1/)-Е(Л/))/(У(/1+1/)-7(Л/)). •XJ”I'GI4’3?HEtP ’BEGIN’ ЭЕЬ2(Л/) i=DEL1 (/I/)-DEL1 C/I-V).» ’IF’I'GT’R’THEN’ ‘BEGIN’ ‘ IF'DELaC Л/)ХПЕВ2(Л-1Л’LT» О’ТЯЖ» 'BEGIN' УТ1=У(Л-1/)+(У(/1/)-У(Л-1/Лх1>ЕЬ2(Л-/1/) /(АВ8(ПЕЬ2(Л/))+ВКЬ2(/Х-1/))м ’GOTO‘FIN ’END’ ‘END’ ’END’ •END’», FIN:DED1(ZN/):-DEL2(/N/)t»DKL2(/1/):=O ’END' INPUTStVtE)., PH(NtVT)*, OUTPUT (4, ;BtB;B:B:B;B:B:B;BE:BMB:B:B:B:B:B:B:B:BD1E/DV1 tB tB fBtB sB:BD2E/DV2»)).,
< v...< ’‘/с ;< .* . v. - . ' 1 ’ 11 'ь < ‘ , I \ - 1 * I • ь' ' < • F OR Ч: ’ SmEP • 1 > UKTIL * К * DO > вами» OUTPUTS, ‘ 0UTPUT(4, * (Z2D1B1) ,1) м 0ШРП'Г(4,»(E+,6D£+2DB’) , ( OWEPUT(4> ‘ (£> .6DKk-2DB’) )., OUTPUT (4, ‘ (£+'. 6DKH-2DB ’ ), ВЫЛ С /I/) ) ., OUTPUT(4f » (Eb.6D1^2DB») ,DEL2(/I/) ) ’END* 0UTPUT(4, • (T’),»( ‘J i / sB :B sB :B :B ;BVT= 1B ‘, 0UTRrT(4, * (L+.6D;>2DB’ ) ,VT) ’END’ >END’ V МЛ KM IHE/DV1 D2E/DV2 1 +Л500Э010+00 +,42000010+00 +»56000010+02 +.OOOOCX)10+O0 2 +Л5099910+00 <..47Й00010+00 +Л899991о+02 -.J7000010+02 Э +.1>200010+00 +.49499910+00 -.J95O611Q+30 -Л9395О1о+О2 4 +.7'1000010~0'1 +.52699910+00 +,100000^+0'1 +.13950610+01 5 +.1540001G+00 +,60999910+00 +.0000001q+00 +.00000010+00 6 +.15500010+00 +.62500010+00 +,4О625710+ОО +.00003010+00 7 +.15бооо10+оо +.640999^0+оо + .оооооо10+оо +.оэоооо^0+оо VTz+.647222l0-O1 2. Аплроысимация При обработке экспериментальны* данных интерполяционные формулы не всегда удобны. Во-первых, при большом числе точек аппроксимирующие полиномы имеют высокую степень, поэтому при вычислениях с ними из-за большой величины отдельных сла- гаемых полинома могут возникнуть ошибки округления, обуслов- ленные конечной точностью представления чисел в машине Во-вторых, экспериментальные данные, как правило, имеют значи- тельный разброс по точности измерения, особенно па концах от- резка определения функции. Поэтому вряд ли разумно всегда стро ить интерполяционный полином исходя из условия совпадения значений во всех узловых точках. Иногда целесообразнее вос- пользоваться некоторой функциональной зависимостью, вид ко- торой заранее известен. В таких случаях параметры этой зависи- мости определяются из условия минимума отклонений расчетных и экспериментальных значеиин. 314
Характерной особенностью задач спрбДбяйнИя коэффициентов эмпирических зависимостей является то, что число неизвестных обычно всегда меньше числа уравнений, т е система уравнений пе реобуслов лена Метод Средних, Пусть задана последоватетьяость точек (xif Pi) (i == 1, 2, . , п) и известна зависимость У = /(я,в1>..., «•)> (11—37) параметры которой ait аа (s<^n) подлежат определению. При подстановке ж1( у{ уравнение (If—37), вообще говоря, не бу- дет выполняться в силу неизбежных погрешностей при измере- нии значений и у(, а также из-за возможных неточностей в опре- делении Общего характера зависимости (11—37), Левая и правая части будут отличаться на некоторую величину равную Bi =» /(г1( а1( яа, .. , «,)— (I - 1, 2,-. п) (11—38) Разности называются отклонениями и при графической интерпретации в системе координат х~ у представляют собой расстояние по вертикали между експериментальным виачонием и значением, рассчитанным по эмпирической формуле. Метод средних заключается в следующем: еа наилучшую ем- пирическую зависимость принимается та, которая обеспечивает нулевое значение суммы отклонений по всем экспериментальным точкам п 2 в, = 0, (11-39) i=nl т, е. параметры зависимости (11—37) выбираются так, что откло- нения, имеющие различные знаки, в сумме компенсируются, Поскольку число точек п в общем случав больше числа неизве- стных параметров, задача расчета их значений ие может быть решена прямым методом. Одним иа способов ее решения является приведение системы (11—38) к нормальному виду (к виду, когда число уравнений в системе равно числу неизвестных). В методе средних системе В1 = /(гц(Х1, аа,. «»,। = • »«.) обычно разбивается на у групп, каждая из которых содержит при- мерно одинаковое число уравнений. Уравнения нормальной си- стемы при этом получаются суммированием исходных уравнении в каждой группе и приравниванием суммарного отклонения нулю. 315
‘BEGIN* ‘INTSG&t’M.lf., IKPUTChM.N)., ЯЫГ+1., ’BEGIN* ’REAL'P., ’INTEGER*!,J,K,Z.,K1,11., • ABRAY’X,Y(/1:M/),A(/1 iNf1:N+1 /) ,B(/1 iN/) •, * PROCEDURE* GORDAN(N,A,X)., * INTEGER*N.t ’ARRAY*A,X., * BEGIN’ ‘REAL*AMAX,DIA., •INTEGER*!,J,K,IO,IR., ‘INTEGER’*ARRAY*TNV(/1:N/),, * FOR*I :=1 ‘ВТЕРИ ‘UNTIL’ N»DO’IKV(/I/) :*O,, ’FOR’I:=1•STEP’1 *UNTIL»N’DO’ ‘BEGIN’ AMAX:=O.O., * PGR ’ J:=1 ’ STEP' 11UNTIL * N ’ DO ’ •BEGIN* • IP ’ INVC/!/)=/O ’ THEN” GOTO * 1Г2., *F0R’K (=1 * STEP* 1 ’ UNTIL* N* DO* ‘BEGIN* ’ IP ’ INV С /К/) ^/0 ’ ТНЖ ’ ’ GOTO ’ П ., ’IF* AUAX’LT’ABSCAC/J, K/) ) ’THEN* ’BEGIN* AltAXsaABSCACAW)).» !Ri=J., lOt^K ’END»., PI: *END’M F2l •END* 316
'IP'IfU/lC’TOI1 ’BEGIN1 • FOR1 J:=1 ’ STEPM ’UNTIL’N+1 ’ DO* •BEGIN’ DlAx=A(/IR, J/) ♦, AC/IR.J/) ^AC/IG,J/)M A(/XC,J/)|sDXA ‘END’ •END’., KtAx=A(/IC,IC/)M A(/IC,IC/)s®1.0., INVC/IC/);=IC,, •yOR’Jxa1’8SEP’1’0№ttL’N’DO’ •BEGIN’ •IF’IW(/J/)=OiTHEN'A(/ICiJ/) uA(/IG,J/)/DIA ’END’., AC/XC.N+l/ix.AC/IU.N+l/i/DIA., * FOR’ J :-1 • STEP ’1 ’UNTIL’ N’ DO ’ ’BEGIN* •IF’Ja/lC’UHEK’ •BEGIN’ DIAI-aC/J.IC/)., A(/J,IO/):sO.O., • FOR *K 1 =1 • SjTEP’ 1 ’ UNTIL* N’ DO* •BEGIN* •iP’INVC/K/JsO’THSN’AC/J.K/i^Af/JtK/i-ACAC.K/JxDlA •END’ м A(/JiN+1/):=A(/JiN+1/)-A(/ICiN+1/)xdIA ’3ND’ •aro* •END*,, •FOR’Ii=1’STEP*I’UNTIL’N’DO’XC/INVCZI/)/):=A(/INV(/I /) »N+V) •J3TD’., INPUPCi.X.Y)., 317
K:=EttTlER(M/N). * K1:»0., ’FQH’I:=1’STEP’1 ‘UNTIL*КГ*DO* ’BEGIN1 '[ •IF’1=1’THEN’11:=1’ELSE’11:=I1+K., 7 1 IF'IaN ’ T HEN ’ K1 ?=’!?’M~K1=K’THIH*K1 ’ELSE’KI+1., K1:=K1+K,, ‘ ’FGR’J:=1‘STEP’1’UNTIL'N’DO* ’BEGIN’ A(/I,J/):=.O.t •FOH’Z|=I1’STE₽’1’UKM1’K1’DO‘A(/I»J/) :=A(/I, J/)+X(/ ’END’., aC/i.n+i/^.o., ’FOR’Z:=I1‘STEF,1’UNTIL’K1’DO’A(/IiN+1/)s=A(/IiN+1/) +Y(/Z/) ’END’., •FOB’U=1’STEP’1’UNTIL’»’DO’BC/I/) i=A(/I,N+1/)., GORDAN(li, A, B)., OUTPUT (3/(3’ ’FOR»I:=1»STEP’1’UNTIL’M* DO’ ’BEGIN’ FsaYCA/i-BC/X/)., ’FOR* J:=N*STEP*-1 ’UNTIL’ 2’D0‘P:=F-B(/J/)x X(/I/)xx(J- j 1) •» OUTPUTG/CE’hP) ’END’ ’ИГО’ ’END’ Таким образом, коэффициенты аа определяются реше- нием системы уравнений w S (/ (xh <X1, , <X,) —!/,) “ o (11 -40) <=H-i 2 (f (z<- ai. «2- . ffs) — v,) = o. i=r>-in—Пр 318
Результаты решения по методу средних, вообще говори, зави- сят от способа группирования исходных уравнений. Практика по- казывает, что наилучшие результаты получаются в том случае, когда уравнения сгруппированы в порядке монотонного изме- нения одной из переменных • Аппроксимирующие функции, используемые в методе средних, могут быть самыми разнообразными. Наиболее просто задача расчета параметров решается, когда аппроксимирующая функция либо линейна относительно коэффициентов, либо приводится к ли- нейному виду Наиболее часто используемым классом эмпирических зави- симостей является класс многочленов. На стр 316 представлена про- грамма определения коэффициентов многочлена по методу средних. Исходными данными программы являются: У, X — массивы экспериментальных значении функции и аргумента; jV — число экспериментальных точек; М — стеиеяь аппроксимирующего по- ЛШ10ВД& В программе для решения системы линейных уравнений ис- пользуется стандартная процедура GORDAN (стр, 253). В про- цессе формирования нормальной системы вида (11—40) разбие- ние исходной системы на группы производится автоматически. Выходными данными являются: В — вектор решения, Р — век- тор отклонений експериментзльных и расчетных значений, Метод наименьших нвадратов, Пусть задана последовательность экспериментальных точек (я{, у?), (i = 1, 2, п), которая аппроксимируется зависимостью йъ Дз,..., afl) (з<п), (11—41) Согласно методу наименьших квадратов наилучшими коэф- фициентами в смысле приближения к экспериментальным значе- ниям будут коэффициенты, найденные исходя ие условия (11—8), т. е минимума суммы квадратов отклонений между експеримен- тальными и расчетными значениями п Я(«1,0В, ..,«•)= (И—42) При фиксированных значениях яц функция R (<slt сг^ at) является положительно определенной функцией при любых зна- чениях коэффициентов а1( а2| аа, at и, следовательно, имеет минимум, Необходимым условием существоиания энстремума функции нескольких переменных является равенство нулю частных произ- водных по каждой из переменных. Таким образом, аналитически существование экстремума выражения (11—42) запишется^ в виде н До, , вр) — 2 [/(®в «в. * • • 1 ал) Jfj*—О (/ = 1*2...s). (11—43) 319
Легко заметить, что выражение (11—43) представляет собой нормальную спетому уравнений, решением которой являются пс- комые значения коэффициентов = 1,2, t у). Следовательно, в методе наименьших квадратов порядок опре- деления коэффициентов эмпирической зависимости задается кри- терием оценки аппроксимации (11—42). Для определения коэф- фициентов необходимо для конкретной функции записать выраже- ние вида (11—42) и продифференцировать его по каждой из переменных Полученная система уравнений решается обычными способами. Система уравнений (11—43) значительно упрощается и сво- дится к линейной, оелн аппроксимирующая функция / (я?, вц аг, ..., аа) линейна относительно коэффициентов, например прн использовании дтя аппроксимации многочленов. Аппроксимация экеперпмеаталъных данных многочленами Предположим, что последовательность экспериментальных точек (л^, Vi) 0 = 1< 2, .. , n) необходимо приблизить многочленом сто- пеии т п tn У — / (.г) = а0 -Н 4- ар* -|-,. - = 2 С11 — 44) л=о Критерий (11—42) при этом запишется в виде п m Х(аиЪ, tam)= 2 bi- 3 (И-45) i-al L k=0 J а система уравнений (11—43) запишется как или после преобразований T7J Л 2 ак Зм (/ = 0,1,2, ...л») (11—47) k=j <=d. 1=1 Уравнение (11—47) представляет собой систему нормальных уравнений Если ввести обозначения п п Л= 24 Тз-Яу?! 0^0, 1,2, , т), f=l 4—1 то система (11—47) запишется в виде T7J 2 ~Т} о = 0, 1, 2. , т) (11-48) П’а0 320
В качестве примера запишем систему (И—48) дли т = 3, которая содергкят четыре уравнения в соответствии с числом коэффициентов полинома третьей степени Tt Tt ЯП «во-1-*!Sta’i-«22М S/fa), 1=1 £=! 1=1 1«1 n a n n п “Ь ®1 2 ~Ь “Ь ^3 = д‘»' i=l i=3«l i=l n n П Tt n ®0 zEl 4“ ®1 3®’ 3 4“ 3 ~ 3 / (^<) ®<’ i=l 1=1 i«l i=l i=I Л n H n n *0 3^ = а1 Зг* + «0 3^ +«3 Зх?= 3/(х0^‘ i“»l i=l i<™i {«1 Основная трудность многочленной аппроксимации по методу наименьших квадратов заключается в решении нормальной систе- мы уравнений. Поскольку коэффициентами системы являются суммы аргументов в соответствующих степенях, то при высокой степени многочлена они могут иметь значительный разброс по абсолютной величине, в силу чего система может быть плохо обус- ловлсииой и ее определитель близок к лу.тю, Поэтому решение таких систем итерационными методами бея соответствующего пре- образования редко бывает успешным, поскольку для них, как правило, пе выполняются условии сходимости (стр. 258). Метод наименьших каэдратов позволяет определить коэффи- циенты известной эмпирической зависимости. Если предполагае- мся зависимость не обепечивает нанлучшего приближения, то необходимо выбрать другую зависимость птп изменить степень полинома. Программа, реализующая многочленное приближение по ме- тоду наименьших квадратов для произвольного числа точен, пред- ставлена на стр, 322. Для решения нормальной системы уравнений используется процедура GORDAN, Исходными данными являют- ся: # — число экспериментальных точек; М — степень аппрок- симирующего полинома; X, У — массивы значений аргумента и функции в каждой точно. После выполнения программы выводятся В — вектор решали я, Р — вектор отклонений между экспериментальной, и расчетными значениями в каждой точке. Пример 4. Для экспериментальных данных х 0,01 0,02 0,0В 0,152 0,333 0,588 0,725 0,898 0,994 у 0,095 0,195 0,365 0,532 0,(13 0,05 0.67 0,71 0,935 подчиняющихся ваэпепмости = а -J- Ьх -г ла* 1 f В В Ьафароз к эр 321
S’L fv’'”? -i ’У’" ’? ; ' '1;Л> : ‘ ‘ " " ' л ' /*!- ' й** “ 1 •V № f.' 'BEGIN’ *INTEGER'M,N. , IN?UT(1fMfN)., KlaK+1., \ rBEGIN1 ’REAL’P., 'ARRAY'X.TC/1 :H,11K+1/) (B(/1 AT/)., <,' ., 'PROCEDURE'GORDANCNi A(X)., ’IHTEGES'N., 'ARRAY'AiX., ’BEGIN* »REAL’AMAX»DIA., ’INTEGER'IjJ.KiIC,IR., «INTEGER*'ARRAY'IHV(/1 SN/) ., f 'EOR'I:=1'eTEE"-l’miTIL*N'DO*IO(/I/):sO,t 'FOR'I:=1'STEPH ’UNTIL’!?1 DO' •BEGIN* AMAX:«0.0»! * FOR'J:=1'STEP*1'UNTIL'N* DO' 'BEGIN' *IF,INV(/J/)=/0'THEN'’GOTO*F2., 'FOR 'K :=1' STEP' 1' UNTIL'N' DO* 'BEGIN' * IF' INV(/K/)=/O*TBEK"GOTO*F1.1 ’ IF»AMAX* LT* ABB (A( /J, K/) )’* THEN' «BEGIN* AWAX:^ABS(a(/J,K/))m IR:=JM IC:=K 'END'., Ell 'IND'., F21 'END'.» 322
’1г«1На/1сдаар ’BEGIN’ ’FOR’ J :=1 ’UNTIL*N+1 ’DO* ’BEGIN? DlAi«A(/lR,J/)M AC/IR.J/) l«A(/IC,j/)., A(/lC,J/) l=DIA ’END’ ’END’.। DIA:=A(/IC,IC/)«, A(/IC,IC/):=1.O., INV(/IC/)s=IC., *TOR’Jr=1’STEP*1’UNTIL'N*DO' ’BEGIN’ •IF’INV(/J/)eO»THEN’A(/IC>J/)|aA(ZlC,^/)/»U •J»D»o A(/IC,N+1/)1xA(/IC,N+1/)/DIA., ’FOR* J:=1’STEP’1»UNTIL’N’DO’ ’BEGIN’ ’IF’J=/IC’THSN* 'BEGIN' DIAs=A(/J,I0/)., A(/J,IC/):=0.0.l ’FOR'K1=1'STEP'1'UNTIL’N’DO» ’BEGIN’ »IP’INV(/K/)^O’THEN’A(/J>K/)t=A(/J»K/)-A(/IC>K/)xDIA ’END’., A(/J,N+1/)^A(/J,N+1/)-A(^C,N+1/)xoIA »end* ^EHD’., »IF’KEI(1) ’THEN’ OUTPUT(3 ' (E’), A,INV) ., ’IND’., ’FOR’IlsI ’STEP’I’UNTIL’!;’DO’X(/INV(/I/)/) jsA(/INV(/I /M+V) END’., 323 11
INPUT Cl. * FOE ’ 11 =1 ‘ STEP’ 11 X’TIL»N* DO '' FO' J : - 1 ’ о ГКР * 1W?IL* N+1' DO» 'BEGIN* »FOR’K:=1'STEP'1'UNTIL’M'l)01 A.C/I.J/O :='IF*5=N+1'THEN »a(/i,j/HyC/k/)*x</k/)* 4i-')‘rX5a’A(/T,J/)+x(/y/)* ’END’ ., • ООКШСи.А.В),, OUTPUTS, ЧЕ’),в)., »?OR*I t=1 'STEP'1 * UNTIL’\i‘DO* ' BEGIU» P:=Y(/l/)-B(/1/)., ‘FOR’J s=N‘STEPI’UNPIL'2'DO'FУ(/1/)A *(J- 1).. оитритСЗ.Чй')»?).. 'END* 'EUD* 'END* определить ковЗДицпевЕЫ л, Ь, о до методу наименьших киадратов и методу средних Р етеки о По программам метода средних и метода вапм&ньших квадратов подучены следующие коэффициенты: Метод средних Метод нвименьтпик квадратов а = 0,1672 а *= 0,2247 Ь= 1,7587 Ь = 1,1543 с= —1,2022 с = -0,5722 В табл» 20 приведена иогрешяость аппроксимации Л гд = (yj — Vi) (f =“ " 1,2,..., 0), рассчитанная по указанным методам в каждой точке TWwiija 20 Точна 1 J 3 4 5 6 7 8 9 Метод сред- них - 0,089 -1,598 1,466 0,292 0,178 0,032 0,027 0,100 0,749 Метод НАИмелАШЯХ киадратоа -0,581 0,008 0,058 0,022 -0,48 0,003 0,037 -0,04 0,014 324
Уточнение аппроксимирующей аанисимоетя После вычисле- ния коэффициентов аппроксимирующего полиноме по одному из представленных методов может оказаться, что отклонения рас- четной и экспериментальной зависимостей будут все же более зна- чительными, чем это желательно. В этом случае цечссообравно из- менить степень полинома при многочленном приближении и пов- торять вычисление коэффициентов, т. е попытаться подобрать полином яанлучшего приближения. Иногда целесообразнее улуч- шить распределение погрешности путем введения дополнительного коэффициента в полученную полиномиальную аппроксимацию илн воспользоваться эпоиомизецией многочлена с помощью полиномов Чебышева, Уточнение зависимости с помощью дополнительного коэффици- ента осуществляется следующим образом. Представим уравнение (11—44) в виде У = f(jj + е, (11-49) где с — некоторая постоянная величина Тогда для функции (11— 49) сумма квадратов отклонений равна II «= 3 [у<-ЛМ-<Т = Я(<0 f=i Выбирая величину l так, чтобы сумма квадратов новых отклоне- ний была минимальной Л- ^• = -2 3 iff. —/(**)—И = о, »=1 найдем п = = 4-3^-/^)» . (11-50) 1=1 Таким образом, дополнительный коэффициент определится как сумма отклонений. Экономизация зависимости с помощью полиномов Чебышева основана па том, что аппроксимация полиномами Чебышева по сравнению с другими полиномами такой же степени обеспечивает наименьшее отклонение функции Более того, при заданной точ- ности такие полиномы позволяют уменьшить число членов разло- жения. Последнее особенно важно при использовании вычисли- тельных машин для расчетов, так каи соответственно уменьшают- ся ошибки округления и затраты машинного времени. Уменьшение» числа членов аппроксимирующего многочлена с помощью поли- номов Чебышева носит название процесса экономизации. Полиномы Чебышева принадлежат классу ортогональных по- линомов и онредетяются следующей формулой: ТГ1 (д') = сов п0, 2 = cos0 (11—51) 325
или 74 (г) = dos л (аге соз г). (11—51) Полиномы Чебышева ортогональны на интервале [—1, 1], т. е. । 1 J Т* (х) Тр (?) » 0 при к =/= р, —1 так как тригонометрические функции {cos kt} ортогональны на . интервале [—rt, л]. ' Выражения для Tn (з) могут .быть найдены разложением ccs nG по степеням cos 0, например 7’а (z) — cos2G = cos10 — sin.s0 — = д? — (1 — z1) == 2з? — 1, Однако удобнее воспользоваться ревуррентпым соотношением, связывающим полиномы (я), . 2^(х) 74« (а) = 2хТп (2) - Г„-1 (*). (11-52) которое следует из тригонометрической формулы 2 cos п 6 cos 0 -= = cos (n + 1) 0 + cos (n — 1) 0, если учесть, что (z) = — cos 0 — х, Основным свойством полиномов Чебышева является то, что они обеспечивают равномерное приближение функции на интервале [—1, 1] и дают в этом интервале наименьшее отклонение от нуля по сравнению с другими полиномами такой же степени со старшим коэффициентом, равным единице [40]. Экономизация многочленных приближений заключается в сле- дующем. Пусть дана Некоторая функция rt /w= Se»»‘. ?t=>a заданная да интервале (—1,1). Если интервал определения функ- ции / (ж) равен (а, Ь), то для перехода к интервалу (—1,1) необ- ходимо воспользЬваться заменой переменных &—а + (6 —a)xf х=—__------------.. Для функции f (д) можно записать соответствующее разложе- ние по полиномам Чебышева, так что « р Д») = 3 = 2 Ъттт (г) (11-53) V-=0 m=ft Экономизация заключается в том, что сначала различные степени выражаются череп 7\л (х) и вычисляются коэффициенты bm, а за- тем выполняется обратное преобразование, т е. каждый полипом Тт (х) выражается через соответствующие степени х. Оказывает- ся, что и результате такого преобразования степень исходного 32в
полинома может быть понижена без существенной потери точно- сти [27]. Таким образом, для того чтобы осуществить экономизацию сто- пешюго ряда, необходимо располагать формулами для перевода степеней х* в полиномы Чебышева, и наоборот. Общая формула перехода от Xs* к полиномам Чебышева имеет вид [33] я" = 2а-"> 2 (11—54) 1^0 где С* — сочетания из п элементов по А, определяемые но фор- мулам гтК п(п —1)(л —2) ..(к —Л-И) _ л! ‘ ИЗ fc “ Л1(п-А)Г • а ]1/2 п] — наибольшее целое число, пе превосходящее 1/2п. Для перехода от Гп (ж) и степенному ряду можно воспользо- ваться рекуррентным соотношением (11—52) или более общим выражением (331 Т„ (х) = 1/2 [(2г)" - (2С1.< - Й-,) (2г)м + (2CS-, - Й-а)- (2г)"~4— . (11—55) Подставляя-выражение (11—55) в правую часть соотношения (11— 53), подучим апхп 4- Оп^еп“1 4- 4“ •. — 2П"ЧН (^хт‘ — + .)-Н откуда следует, что 6 =2-Сл~1)я -1 “th ( уп—1 — * “п-i (11—56) При больших п каждый из коэффициентов Ъп оказывается зна- чительно меньше соответствующего коэффициента ап. Поскольку iGf-1, 1], го найдется такое ш, что сумма I | 4~ | &п-т+з | “h • * Ч- I | будет меньше точности степенного ряда. Следовательно, при р = = п — тп выражение (11—53) будет справедливо с точностью не ниже точности степенного ряда. Если коэффициенты степенного ряда в левой части выражения (11—53) заранее известны, то экономизацию ряда можно осуще- ствить, воспользовавшись непосредственными выражениями для 327
и Tn (х) согласно формулам (11—52) и (11—54) Выражения для Г„ (х) через хп и для хп через Т* (а:) при и « 0, 1,2, 3, 4, 5 пред- ставлены в табл. 21 Тсбмнрг 21 fl т„м X* 0 7’о(х) = 1 Хп = 1 => Tq (х) 1 Т) (х) — х я = Т1 (л) 2 Т5 (х) = 2ха — 1 2л»^2'о(х)+^^) 3 Тз (х) - 4жи - Зх 4z°^3Ti (х) 4-2 а (х) 4 (х) = 8ж* — 8х4 - - 1 8z4 « ЗТ» (л) 4- 47’, (х) 4- т* (х) 5 Л (I) = 16аА -20х» 4 5х 16x5 =и юп (X) 4- ЪТъ (ж) 4- Та (х\ Пример 5 Рассмотрим ряд Тейлора для показательной функции с членами до х* включительно, в котором каждый из коэффициентов представлен пятью значащими разрядами: е“я *=- 1—х4-0,5хЗ-0,18867х’4-0,0416Ь7х*-0,ООЗЗЗЗЗх® (11—57) Исключим хЕ с помощью потиноМпн Чебышева, для чего х заменим вы раже япем & <t0Tl Ь5Гв-1-Т6)=^ (10х4~20хЗ-15л(-Тв), и подставим, в ряд для е~* <Г* = 1 — ж 4г 0,5а’ — 0,160871® 4- 0,041667x3 — 0,00052083 (—5х 4-20Х5 4- -b ТБ) «« 1-0,99739х 4- 0,5 я’-0,17709 х» 4- 0,041687г* — 0,00052083Т6. (И-58) Поскольку ошибка авакоперемевного степенного сходящегося ряда не пре- восходит но абсолютной веплчино последнего отбрасываемого члена, тю ошиб- ка полученного ряда с учетом того, что [ Tt1 1, пе превосходят (е ] -С 5,2- - КН. Ерли вычислить сумму рядов (Н— 57) и (11—58) прпх = i, то для зпа- чедпя основания натурального логарифма можно получить но формуле (11— 57) е = 2,7083, а по формуле (11—58) с = 2,7161. Точное значение до пятого десятичного знака равно с = 2,7182 Дплрокспмацня эксперпмеиташ»ных данных произвольной ли- нейной аавпсимостью. Выше уже отмечалось, что нормальная си стема линейных, уравнений в случае многочленного приближения иногда бывает плохо обусловленной и ее определитель близок к пулю. Это означает, что между отдельными уравпепнпмм систе- мы имеется слабо выраженная линейная" зависимость, т. е одно уравнение может быть заменено линейной комбинацией других 4 с некоторой поправкой, С увеличением порядка системы, т. о с ро- стом степени аппроксимирующего полипома в силу разброса ко- 328
эффицисптов системы, понижается точность машинных расчетов и нормальная система уравнений вырождается. Поэтому решение системы уравнений выгпо пятого-щссюго порядков прямыми мето- дами затруднительно Эффективным способом, преодоления ука- занных трудностей ивлястся метод использования ортогональных полиномов, например полиномов Чсбтлпева и Лежандра, когда матрица коэффициентов нормальной системы сводятся к диаго- нальной, решение которой тривиально [27] Однако исполъзоиа- ние таких полиномиальных приближений обычно сопрпшепо со значительными вычислительными трудно стами Иногда удобнее, а часто и желательнее, обрабатывать экспе- риментальные данные в форме зависимостей, коэффициенты кото- рых имеют определенный физический смысл Удобство состоит в том, что некоторая зависимость может быть описана с достаточной точностью специальной функцией с меньшим числом параметров, а следовательно, с меньшими ошибками вычислений С другой сто- роны, например, зависимость константы скорости химической ре- акции как фушщин температуры может быть, аппроксимировала полиномом, однако целесообразнее ее описывать уравнением Аре- ниуса, когда параметрам етого уравнения придается конкретный физический смысл. Метод наименьших квадратов аффективен в том случае, когда аппроксимирующая зависимость линейна относительно парамет- ров. В противном случае для определения параметров приходится решать систему нелинейных уравнений, сходимость решения ко- торой не всегда может быть обеспечена простыми методами. По- этому чащз всего нелинейные зависимости стараются привести к линейному виду путем соответствукмцих аналитических преобра- зований или заменой переменных. Рассмотрим несколько примеров приведения функций к линей- ному виду 1 Скорость гетерогенной каталитической реакции к описывается у равнение и г_и (11-59) где К — константа скорости роамдпи, РА — парциальное давление вомпоиек- та л; КА — коксташа абсорбционного равновесия компонента Л, Для определения Д и по набору экспериментальных значений PA i (i 1, 2,3,-.., п) уравнение для скорости реакции можно привести к ли- нейному виду относительно неизвестных, если преобразовать уравнение (11— 59) к виду PA,i 1 КА у—~ р? 1 и сделать замену переменных л = 1/ V Л, я =□ КА/ /X 329
2 . Зависимость давления паров чистых компонентов от температуря опп оына'етоя уравнением Антуана В = .«) (Ц-W) Зю уравнение для определения коэффициентов Л, В, С по методу панмвКь- пшх квадратов можно также привести к линейному виду нреобразованней с эамевой переменных: Xi 4- *(й?2 — «1а Р<, где п ~ АС 4* В, яъ^А, яя±=С 3 Скорость паталитпчоской реакции синтаза хтористого етила ка эти- нека и хлористого водорода в присутствии метана. А~~ flz;C описывается уравнением [9] „ К(Р^-Р<=1^ HI АП 'O+Vx + Vl +K<Pc + KbI’bY' с 8,) где К- -= Рс!(РАРв}‘ При известных значениях г^, Рв^ Pc,t Р^ повстанцы Я, КА, Яв, Кс, Ks можно определить по методу канмепыпнх квадратов, еелк уравнение скорости реакций записать в виде и сделать замену переменных a?l *= i/}TKt Ъ=КА/Ук, Общий порядок получения нормальной системы уравнений в форме выражения (11—43) при немногочленном приближении не отличается от ранее рассмотренного, за исключением того, что коэффициенты матрицы вычисляются по более общим форму- лам. Пусть эмпирическая зависимость / (х, aB а2, . ат) в выра- жении (14—43) линейна относительно коэффициентов ctz, ... и задается формулой m /<г'а1'"2...а")=2а^м- (11~62) Тогда уравнение (11—43) запишется как п тп А = 2 2 (аА (г4) - уУ = О П —1,2, ,m), (п>т) (11-63) i Ьэ1 fc«l 330
или n 3 Ф1 I fl191 to) + ад to) -Г , + «таФпг to ) — ¥< 1 " °t i=*l n 2<pa to) [ад to) + ад to) + + *»<₽« to*)—y»i = o, **** * т Л » » » » #*»fr n 2 Ф« to) [ад to) -I- ад to) + 4- am<pm to)—«м = ° Таким образом, нормальная система уравнений окончательно запи- шется П П 11 2 Ф: tot) Ф1 to) + <4 2 Ф1 to) Фа to) + • + 2 Ф1 to) Фт to) = i*=l ii-1 = 2<pito)yi- <=i n n n 2 Фа to) <pi to)+2 Фа to») Фя (x0+• • + flm 2 ф* tot) Фл» to*) — i**l t=l i=l n = 2 Фа toO У(, » » » » » »» » № n n n 2 ф» tot) Ф1 to<) + <h 2 Фт tot) ф» to*) 4- + 2 to) ф™ tot) = 1-^1 {s=l n ==2ф.«(х|)У<- (11—64) t=4 Обозначим tt n ЗфЛ^Ф^). 2фл(^У1 t«l <•*! to, i 1,2, । w)i тогда система уравнений примет вид м m S S<4fi,i = r» (Н-65) Jc»»l i=l Рассмотрим порядок получения матрицы коэффициентов нор- мальной системы с помощью матричных операций. Матрица возф- фициеятов системы (11—65) ивадратная и симметрическая порядка т X т1 тогда как матрица исходной переобусловленной систе- 831
мы — прямоугольная и имеет размерность т X ft. Обозначим <р^(г1) = С1,1Г (к — 1,2, . .,m), (i^ 1,2,... ,п), тогда матрица коэффициентов исходной системы уравнений за-* пишется как (си ct2 . c1(rt \ с™- е*т , (11-66а) Cjil ^п2 СПщ а соответствующая расширенная матрица как 1 Сд1 С» С13 • Сцл У± С21 Сц2 с23 » • Сип Уа с$г Cjj , . e3m Уз (11-666) \ Cftj СП2 Спз спт Уп / Сравнивая (11—66а) и (11—666), можно заключить, что коэф- фициенты матрицы нормальной системы уравнений (11—64) мо- гут быть получены в результате умножения транспонированной матрицы коэффициентов (11—66а) на расширенную матрицу (11— 666) Таким образом, для решения задачи расчета коэффициентов зависимости (11—62) методом наименьших квадратов необходимо располагать тремя матричными операциями: транспонирования, умножения и решения системы уравнений (пли вычисления обрат- ной матрицы) Определение параметров уравнения Редлиаа—Кистера для расчета коэффициентов активности « компонентов в растворе Уравнение Редиих а—Кистера для расчета коэффициентов ак- тивиостп бинарной системы имеет вид [SJ: In (Vyg) = В (1 — 2x0 4- С [&14 (1 — ii) — 1] + + П(1 -2x0(1 - 8^(1-®!)1, где ?i = (*\%); Тз = (fya) / W «2), Р — общее давле нив пара .над раствором, .ч.и рт. ст; £\°, Pz° — давление пара чи- стых компонентов, -K.it рт. ст/, хь — концентрации компонентов в жидкости, моль/Ataдь\ ylt у» — состав паровой фазы, лодъ/леоль Вычислим коэффициенты В, С иD по методу наименьших квад- ратов, используя следующие данные. « 0,01 0,02 0,0В 0,152 0,333 0,588 0,725 0,898 0,994 У 0,095 0,195 0.365 0,532 0,63 0,05 0,67 0,71 0,935 948,6 872,5 729,8 669,6 550.0 539,0 541.7 558,3 713,8 702,0 027,0 486,0 382,0 331,0 322,0 324,0 338,0 472,0 Э32
* BEGIN' ’INTEGER’NjM,, INPUT(1,f4,N)., 'ВЕЙ IN' 'INTBGER’I,J.t 'REAL’S,81., • ARRAY’A(/1 rtMiM+1/),BC/1 ;M,1iN/),c(/l :M,1sM+1/) ,I(/1 : «PROC BDURE'PI 221,, 'BEGIN’ ’INTEGER’!,*., ‘AKRAY'GAMAI,GAMA2,Y,P1,P2(X(/1:N/),, INPUT C!,P1»P2,X,Y)., OUTPUT^,' (E') ,P1 ,P2,X,Y,M,N)., ’FOR’I:=1 'STEP’1 ’UNTIL’N'DC ’BEGIN' GAMA1(/I/)t=Y(/I/)/(P1C/I/)*XC/l/>)•i GAMA2(/I/) :=Cl-YC/I/))/C₽2C/I/)X , A(/I,2/) :=6*X(/I/)* С1-Х(ЛЛ)-1,, A(/1,3/) ) X C1-XC/I/»),, AC/1,4/):=LN(GAMAlC/I/)/aAMA2C/I/>)., '-.KND* 'ENO'., PHOOEDUHE’MUMCR.M.t,A,B,C)., ’!NTSGlfiR’N,M,b., «ARRAY’A,3,C.a BEGIN' • INTEGER’I,J.K., 'SEAL'S., 'FOR*Ii=11 STEP11 ’UNTIL’N* DC 'FOR*К!=11 STEP» 1 'UNTIL*L 'DO' 'BEGIN* Se₽.OM ''POR’Jjal'STBP'I'UNTTL’M'DO’S^S+AC/ItJ/JxBC/J.K/)., §38
C(/I»K/)1=S 'END* *№D'., * • PROCEDURE’ INVERSION (N f A)., ’INTEGER'N., ’ARRAY'A», ’BEGIN' ’REAL'Alf AX, PR, DI A., •INTBGER’I»J,KrIC,IR.t 'ARRAY' INVC/1 (NJjJ/).» 'FOR'Ji=1’STEP ’1’UNTIL’N*DO'IKVC/J,3/)x=O.О», *FOR'Ii=1’STEP’1'UNTIL’N’DO’ ’BEGIN' AMAXi-O.O., ’FOR’Ji-1»STEP'1’UNTIL*N’DO* ’BEGIN' *IP’INV(/J,3/M’TraEN’ 'GOTO'FI., 'FOR»К:=1’STEP ’11UNTIL’N’DO’ 'BEGIN* ’IF’INV(/K, J/M • ТКИС'-'СОТО’ F2., •IF•AMAX-ABSCAC/J,K/>)’LT’0’THEN* ’BEGIN' IR S’sJ •, IC»=K., AMAX:=ABS(A(/J,K/)) 'END*., F2j 'END*., S~ F1! •END'., INVC/IC.J/):aINV(/IC,3/)+1., INVC/ICja/J^IC.» mv(/ic,i/) x=irm 'IF'IR-ICx/O’THEN' ’BEGIN’ 334
’’FOR’JisI ’ЭТЕРИ 'UNTIL’N’DO’ ’BEGIN' PBt»A(/lR,J/)M А(Да,Г/)|вАС/1О,*/)м END* ’EUP*,, DIAj=A(/IC,IC/).# A(/ICfIC/) 1x1,0., ’FOR’J':^^.’SW1*UNTIL,N1DO,A(/IC,J/):sA(/IC,J/)/DIA. ’FOR’ J !=1 ’BTEP’1 ’UNTIL’N’DO’ ’BEGIN* * *XF’(J~ICb/O*THEN’ ’BEGIN* _ В1А»=А(/«Г(10/),» A(/J,IC/)i=,OM ’FOB*Ki=1’8m>*1*UNTn/N*DO’AC/J(K/):=A(/J,K/)-A(/l0 ,K/)*DIA ’END* ’END’ ’JHD*,, • FOR ’ I: =1 * STEP И • UNTIL ’ N * DO ’ «BEGIN* J:=S-I+1«i ’IF’ (INV(/J(1/)-INV(/J,2/) WO*TRB»’ ’BEGIN* IBlxINVC/J.V)-! IC:=INV(/J,2/).« *POR*K:x1*S5ra5”1’WJb*N*DO* •BEGIN* A(/K*IR/):aA(/K,IC/)., A(ZK,IC/):=PR ’END* •END’ 835
’END* ’END*., 1 IF • KEI(1)1THEN’PI2211 ELSE1 TOUT(1 , A)., ’FOR’I!=1*STEP*1’UNTHi’N’DO’’TOR’Jt=1’STEP*1’UNTIL’И’DO ’B(/J,I/) i=A(/I,J/)., MULT(M,N,M+1 ,B,A,C)«, INVERSION(M,C, ’FOR»IJa1’STEP’1’UNTIL’M’DO’ ’BEGIN’ x(/i/)!=.o., ’кон’лИ’ЗФн><1’шга‘Х1»*м,эо’Х(/1/) :=x(/i/)+c(/i,j/)x C(/J,M+1/) B:B:BiB:B»BYiBPAC41B:B!B:B:BABC;B0TK+ln-.hBjB;B:B:B0TH: ВОТК+Й-):Н:В(В:В:3:ВХ:/‘))., ’FOR’Ii=1 ’STEP'1 ’UlJTIL’K’DO* v ’BEGIN' OUTPUT^, *(T’),’(:/'))-» OUTPUT^, < (Z3D2B *),!),, S:=.O., ’FOR’J^I’STSP’I’UNTXri’M’BO’SisSi-AC/liJ/J^C/J/)-» S1:=S., 4 S:=ABS(S-A(/I>M+1/))., OUTPUTS, ’ (E*. 5i)!3f2DB’ ), A(/I ,Ы+1/) ) . , ОиТРГПР(4,»(E4.5Дк2ЫВ’) ,81),, 0UTPUT(4, t (E+^E^2DB’) , S)., 1 S:=’IF‘ AC/I ,M+1 /)=О’ТПШ ’ O’ ELSE’S/A(/1,11+1/) ., OUTPUT (S’ W2DB») ,3) ., *IF’I*LE*M*TliEN’0UTPUT(4,,(E+5Di>2DB*)>X(/I/)) ’END’ ’END* END* 336
О Cd Cd Cd ГЛ 4 ( « + + + БББоБоБББ g *o с о *о 'о Ъ о 'о о tcj V’VV'V'VV’V’V'V" Енилг-^г^с^Фсафг- О ^(Г'ПЛ^О^^Ф^ Ф Ф 4 О 4 Л 1Л Cd gascncfcr-S-t-Qirxi^ гЛПгО^П^ЛчО CU • ••«••••• + + + + + X I I I БББББ8БоБ м о *О *о *о о "о о "о *о Рн V*V"VVVVT“t“V К ф о Ф V V (\1 Ds 1Л о 00»ФСФ4-Ф1>-С04' moomc^^NCDao О OlAc^OJitOiDrlS р5 COtDHrrdrrrCs -aj +•+' + + +• + + + + + + + + + 1 I X I rCdr^^iA'dJiSCO^ 337
Программа метода наименьших квадратов и результаты рас- чета приведены на стр. 333, г Для расчета Коэффициентов уравнения Редляха — Кистера ис- пользуется стандартная программа, включающая процедуры ум- ножения матриц и нахождения обратной матрицы.. Исходными данными являются: Дг — число экспериментальных точек; М — число неизвестных, А — матрица коэффициентов системы ураи- нений, включая столбец свободных членов. Решением нормальной системы уравнений является вектор X Ее выходным параметром является массив А. Обращение к процедуре Р1221 производится Только при включенном первом ключе па пульта управления. Для вычисления коэффициентов произвольной линейной зависимости достаточно заменить эту процедуру. При выключенном ключе вводится матрица коэффициентов переобуслов леиной системы уравнений и программа может быть попользована в общем слу- чае. Расчет коэффициентов зависимости давления пара чистого компонента от температуры При расчете нарожидкостяого равновесия для описания зави- симости давления пара чистого компонента от температуры обыч- но используется выражение. 1пР == С\ -ь Cj/(Ca + Т) + С,Т + CJ* -I- с, 1п(Г), (11-67) где Р — давление, шплс; Т — температура, °К. Рассмотрим программу расчета коэффициентов уравнения (11 — 67) для случая, когда Ся => Cs = 0 Уравнение (11—67) линейно относительно коэффициентов Clt C2t С4 п СЙ Поэтому для их оп- ределения можно воспользоваться методом наименьших квадра-1 тов. С целью повышения точности аппроксимация коеффициент Св определяется методом последовательных приближений по ми- нимуму среднеквадратичного отклонения экспериментальных и расчетных значений давления. Алгоритм поиска заключается в следующем (21. Если уравнение (11—67) переписать в внде [InP — Со In (У1)] Т = СгТ + Са Ц- С^Г8, то расчет коэффициентов выполняется в следующем порядке; Св полагается равным нулю, вычисляются‘коэффициенты нормальной системы уравнений и определяются коэффициенты Ср Са и Ср Последние вместе со значениями суммы квадратов отклонений SUMSQ, абсолютной и относительной ошибками в процентном выражении запоминаются как каилучшие значения. После этого С9 изменяется на величину шага DC и производится повторный расчет коэффициентов Clt С2 и Cv Если при этом величина SUMSQ 338
меньше, чем предыдущее значение, то результаты расчета вано- минаются как наилучшие и снова изменяется Св. Если больше, то шаг DC уменьшается в 10 раз, изменяется направление движения по параметру С$ и снова вычисляются коэффициенты См Сг п С$. Вычисления заканчиваются, если выполняется одно из условий: достигнута заданная точность в определении параметров (величи- на ERSQ)\ выполнено заданное количество приближений по С«; получено минимально допустимое значение шага изменения пара- метра (величина DEL), Программа расчета коэффициентов уравнения (11—67) приве- дена на стр. 340. Исходными данными являются: ЛГ — число эксиернмеигаяькых значений Р и Г; Р — массив значений давления; Т — массив зна- чений температуры, °G; ER — погрешность в определении эк- спериментальных аиачепии Р и Т (для точных значений можно полагать равной пулю); DEL — минимальная .величина прираще- ния по параметру С6 (можно полагать равной пулю); PF2X — коэффициент для пересчета давления в атм (если значения Р при- ведены в рт. ст., то PFIX = 760; если n onw, то PFIX — 1). В программе предусмотрен расчет давления при заданной тем- пературе. Для этого необходимо включить на пульте управления ключ 100 и в исходной информации задать следующие величины. ЛГ1 — число точек; РР — массив значений температур, при ко- торых будет вычисляться давление. В качестве примера в конце программы приведены результаты расчета коэффициентов уравнения (11—67) для пропилена по следующим данным, 7*1 С —47.7 —31,4 —4,8 19,8 45,5 Л атм 1,0 2,0 5,0 10,0 20,0 3. Вычисление коэффициентов нелинейной зависимости по методу наименьших квадратов Пусть для аппроксимации экспериментальных данных (т^ yj, G — 1» •••» к) используется в общем случае пелипейпая емпирическая зависимость, в которой функция/(т) имеет непре- рывные частные производные по всем переменным • 1/ ~ t ®m) (II-’68) Поскольку число параметров, подлежащих определению в (11— 68), меньше числа экспериментальных точек, система уравнений вида = / («{, «И «2. > > ат) (11-69) является, вообще говоря, несовместной. 339
•BEGIN* 'INTD3ER'K,N1., inputCi •BEGIN' •REAL’ER.HELjPFIX., * A1?RAY’P ,T(/1 :N/) ,C(/116/) ,РР(/1 :BF1/),, 'REAL’EHSQ,TSUM»T2SUM,T3SUK,T4SUM,SPREV,DC,SQBEST,SUMSQ ,PSUMiPTSUM,PT2SUMfPT(Z1iZ2,A1'1,A12,A21 ,A22,SQEPS., 'INTEGER'I,ITER,COUNTtIBEST t S*। • ARRAY’PBEST>DBJSST>PEPSlPOAIi,PDHi(/1 :N/) ,CBSS®(/116/)., * PROCEDURE' TABL(K,N) . t *integer*k,n., •BEGIN* ’INTEGER'IjZ., •ARRAY'XC/1 •lP’Ks;0'THEif»0UTpb2(4J(T4,'(:/i/:BtBTi»i.)lh)EPA!Dia> AiB+)r-)p.C:B:B:B:BP;BATM:B:B:B:B:B:BP:BPAC4:BiBiBiB »B:BA+)H-)C :BOTK+)JI-) :B iB:B:BOTHiBOTK+)M-) ' FOR' I: * STEP4 ‘ UliTIL* N* DO’ •SESIN' X(/1/)^TC/I/)-2?JH5o XC/2/):=P(/I/).( X(/3/)»«₽BESU(/I/)M XC/4/):=DBESTC/I/)., XC/5/):«PEPBC/I/)., OUT1’UT(4,'(!')/(:/'))., OUTPUT(4,' (Z3D2B' ) ,1) . I 'POR’Z sx1'STEP’1'UNTIL'5 * DO'OUTPUT(4,*(B*.5DX>2DB*)♦ x(/z/)) 'END'.t OUTPUTS,» (T') I 'Ct/:/:B:BtB;B:ВРе;ЕХРСС1+С2/(СЗ+Т)+С^ Т+С5ХХ2+С6КШ(Т)) ' , ’ FOR' Z: ° 1' STEP • 1' UNIT L * 6' DO' 'BEGIN* OUTPUT(4r'(T'),'(:/:B;B:B:BiB:B:BC*)).f MO
0UTPUT(4,'(Z1D*),2).» OuTPUTGb'CT'VC^B’))., OUTPUT(4, » (Ef .7 D&I-2D •) ,CBEBTC/W) ’END*., OUTPUT(4,* (T’),»(:/:/:B :B :ВСРВН-)Д-)Н+Ш-) :BA+) ]>>CO + )ЛЙ«)ТНЛ+)Я») ;13С1+)ШИБ-)КА<В^’))«, OUTPUT (4>’(Efr.5D ♦2DB’),D9)., OUTPUTS, ’ (T*) r * (:/:B :В:ВСР&-)Д-)Н+)ЯЯ-) :BOTH0Q+)H -)фНИ-)1Ь-)Ш)Я-) :ВО+)ПИЕ-)КА:В=»))., 0UEPUT(4,'(&t-*5D +2DB'),TSVM).i OUTPUT(4,' (I» ' ( 5/;Н:В:ВСРК+)Д-)Н+)ЯЯ-) ;ВКВА+)Д-*)РА Т+)ИЧ“)НА+)Я-) :ВО+)ПМВ-)КА:В=’))., OUTPUTS,» (В* .$D +2DBr),SQEPS) »WD* XNPUT(1 ,P,T, ER, DELjPFIX)., ITER:=50., ' IF'DEL=O’THEN‘DEL:=.OOCOI., IS?Si;:=W^IS?KX2., * FOR' X: И * STEP'-1 * UNTIL' N»DO’ ’BEGIN» TC/I/)isCT(/I/)+273H5)/10P.0m P(/I/):«P(/I/)/PFIX ’m*., COUNT:=Ok, TSUM мТ2ВиМ:аТЗШЯ11а»8ПМ!8(т1ЙВ®(/Э/) isCSEST(/5/> » »FOR»I:z1»STEP'1’UNTIL*N*DO’ •BEGIN» T»:^TSUM+T(/I/).t T2SUMssT2SlJM+T(/I/)xx 2., T3SUK:=T3SUM(/I/}X« J., T4SUN:=T4SUM+T(/I/)x*4., *MD' C(/6/):=.0.t DC:--10.0., SfiBFST: =Ж;Е¥ -=1 r OJH a.,
A:C0UNT:=C0UNT+1., 0UTPUT(31'(I1),COUNT)», ^SUM:>PiSUMr=PT2SUM;=0.0. 'F0R'I:=1'STEP'1'UNTIL'N'DO* *BEGI« < PT;«(LN(P(/I/))-C(/6/)XLN(T(/I/)))XT(/I/).t FSUM:=PSUM+FT., FT5UM:-PrS’JM+Pr* T(/I/)., • PT2SUM l-PT2SW.+FT^ T(/I/)*x 2 ’W,, ' ! 21:^PSUM*T3SUM"PTbUMXT2SVM<, Z2:=PT6№T4SUM-PT2SUMxT3SUM., A11 «=RXT3SUif-TBUMxT2SlJM. , A1?:«TSUM*T3SUM-T2SUMxx2., A21 :=TSWxT4SUM-T2SUM3SUMl, A22: sTaSUMWSUM-TJSUM2. , C(/2/) :--(A22’Z1-Z2> A12)>(AHx AZ2-A12*A21)., CC/V) i^(Z1-A11xC(/2/))/A12. , CCA/) :=CPSU»-NxCC/2/)-TSUM>CCA/))/T2SVM.t SUWS^:=0.0,, ' FOR * I ;=1 ’ STEP' 1' UNTIL' N' DO» •BEGIN' рсаъс/1/)!хБХр(сС/1/)+сс/2/)/тСЛ/)+сСА/)11ТСА/)+О( /6/)xLN(TC/V)))., PDELC/X/)j»?C/l/)-PCAbC/I/).। PEPSC/I/) :=ABsC^OO«OxpDKI>C/T/)Z₽C/X/))* । SUM3Qi=SUHSQ+PEPSC/I/)**2 'END*., ’IF'(COUNT-1)'LL'О'THEN'* GOTO'Д1., »IFCCOUNT-ITnR)'GE'0»TJiJiNl'acno'FIN,, ’IF’ CSUMS'J-SQBEST) ’RE1 O’THEN» 'GOTO’A2., A1:SQ3JSST:-SUMSQ., IBEST:=COUNT., 'FOR'Is=1'ЗГЕР*1'UNTIL'N'DO* 'BEGIN' 842
; J - . • ; 1 . _ w - > ' ' ' лу. ' * 1 г л РВЕВТ(/1/) :=РСАЪ(/1/)., ЗЖЕЗТ(Л/):=Р1ВД/1/> </; •END1., * •; CBESTC/1/):=С(/1/)-С(/6/)х4.60517., " ’ \ DBESTC/2/) :хС(/2/)Х100»0»а ’ ‘ ‘ CBEST(/4/)fsC(/4/)/100«0«a ! 4 СВЕЗТ(/6/):=Л(/6/)м у’ •IP’ (SQBES4SB8SQ)’XE,0»’Mn»« »6ОТ0«Р1М'ЯЬЗВ"(ЮЕ0»ДЗ»> А2: »1У» CSUMSQ-SPm) ’ItE’O^THEN1 »GOTO*A3« , DCt=-DC/1O,O., ’I?»<ABS(DD)-DSIi)*LE’O<THEN» 'GOTO1?!!!., AJ:GC/6/) :=C(/6/)+DC., / SPREVtoSUMSQ», " ) ’GOTO*A., EINiSQEPSr^SqRT(SqeESTZH)., DCjeO.O.i TSUMtaO.O., > 'FOR*! :=1 «ЗТЯРЧ 'UKTIL'N'DO' ’BEGIN* DC:»DC+ABS(DBEST(/I/))., TSUM:sTSUM+PhPS(/I/) ,END»., ; DO^DD/N.j tsuu^tsuuZn., ’FOR'I^I’STEP'I’UliTXL'N’DO’^C/I/) t=T(/I/)X^0040., < I l=O., j. тлвадл).» OUTPUT(3(IIBSST).« OUTPUTS,»(E’) I DO, T3UM, CBEST)., ’Х2Г»КЕГ(100) 'W •BEGIN* mpuT(itpjE>)M OUTPUTO/CE»),^)., •F0R*Si=1,SPEP,1‘,UNTIL,N1'D0,PP(/e/)!=760.0XEXP(CBES T(/1/)+OBEST(/2/)/(H’(/S/)+273.15)+CBZST(A/)y(PP(/S /)+273.15)+СВЕЗТ(/6/)*ЪИ((РР(/8/)+2Р3.15)))м 0UTPUT(3r*GB*),PP) •END1 •HID1 •END*
ТЕМПЕРАТУРА ГР.С Р ATM Р РАСЧ АБС ОТО отн ото 1 - .47699^0+02 + -10000^ 0+СИ 2 -.31399п 0+02 +.20000^ 0+01 3 -.4799910+О1 + .50000^+01 4 +.1979910+О2 +.100СЮ10+02 5 +Л55ОО1О+О2 +.2000010+02 + .998бО1О+ОО +.200811Q+01 + ,Д970610+01 +.1004Э10+02 + .19976^ q+02 + ,1398O^q-O2 -.8179110*02 +-293391О“О1 ~.43874,jq-01 +.23455^q-01 +.14B56^q+00 +-41О531О+ОО + .579OO^q+OO + .44334^0+00 + .1231310+00 Р=ЕХР(С1+С2/(СЗ+Т)+СН T+C5^2+C64N(T)) С 1= +.49271341О+О3 С 2= -.1358163^0+05 С 3= +.000000010+00 С 4= +.1648840^0+00 С 5= +.0000000,,0+00 С 6= -.8668089^0+02 СРЕДНЯЯ АБСОЛЮТНАЯ ОШЮА =ч-.212491(Г01 СРЕДНЯЯ ОТНОСИТЕЛЬНАЯ 01ШБКА =+.3409110+00 СРЕДНЯЯ КВАДРАТИЧНАЯ ODMHKA -+.ЗВ40210+00
Для приближенного решения системы (11—69) иногда исполь- зуете л метод линеаризации т е. разложения в ряд Тейлора с точ- ностью до членов первого порядка р окрестности начальных зна- чений параметров. Для того чтобы воспользоваться этим методом, необходимо располагать начальным приближением, Чем точнее будет задано начальное приближение, тем быстрее может быть найдено точное решение. Начальное приближение, в окрестности которого производится разложение функции, может быть найдено различными способами, исходя из физических соображений и предварительных расчетов. Предположим, что начальное приближение известно и равно а®, (/ — 1,2, m). Тогда для точных значений параметров мож- но записать rtj “ я? Ч- ttJ (/ — 1,2,..., ai), (11-70) где а; — поправки, характеризующие отклонение от точного ре- шения и подлежащие определению. Если поправки достаточно малы, то после подстановки выра- жения (11—70) в соотношение (11—69) последнее приближенно можно представить как m = а1........О+ЗгЮ’Ч 0^1.2, . ,п). (11-71) 1-1 \ 1/Q Обозначим Л 4я},.. .«у, ....«У Тогда система (11—71) запишется как m = (‘=1.2, . ..п). (11—72) i=i Система (11—72) линейна относительно поправок и может быть решена обычным методом найме наших кзадратов. Процесс вычисления поправок к последующим приближениям повторяется аналогичным образом до тех пор, пока величина поправок не станет меньше заданной точности определения параметров. Рассмотрен- ный метод длн нелинейных систем уравнений не является универ- сальным. Условием его уснешного применения является «хоро- шеел поведение функции в окрестности решения, а также удач- ный выбор начального приближении. Может оказаться, что при определении коэффициентов нелиней- ной. зависимости по методу наименьших квадратов целесообразнее воспользоваться поиском минимума отклонений эксперимента ль 345
ных и расчетных данных пе по всем сразу, а по одному .или не- скольким параметрам нелинейной- зависимости. Например, при вычислении коэффициентов уравнения Антуаиа1пР ~ А — В/(С + 4- t) можно зафиксировать С, тогда, вычисляя А и В при различ- ных значениях С, можно найти такое значение параметра (7, при / котором будет обеспечено минимальное отклонение эксперимен- тальных и расчетных данных Аналогичным образом можно посту- пить и при вычислении коэффициентов зависимости у = а -г J 4- Ьеоя:, если искать минимум отклонения, даваемого методом наименьших квадратов при определении величин д и Ь по значе- нию с. Этот способ минимизации отклонений по одному искомому параметру с использованием метода наименьших квадратов может быть применен и для нескольких параметров, однако процесс ре- шения задачй при этом существенно усложняется.
Глава XII ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ Дифференциальные уравнения, устанавливающие связь меж- ду псзависимыми переменными, неизвестными (искомыми) функ- циями и их производными, широко используются в химической технологии для описания нестационарных процессов, а также процессов с распределенными параметрами Например, концен- трация реагента, вступающего в реакцию, является функцией времени пребывания, условий ведения процесса, и для того чтобы определить закон ее изменения во времени, необходимо составить дифференциальное уравнение, решение которого и устанавливает необходимую функциональную зависимость. Аналогично для опре- деления числа студеной разделения н процессе периодической рек- тификации необходимо определить состав кубового остатка и дистиллята как функция степени отгона. Это можно осуществить путем, решения системы дифференциальных уравнений матери- ального и теплового бздапсов. Дифференциальные уравнения являются основным математи- ческим аппаратом при исследовании динамических свойств объ- ектов, в частности переходных процессов. Пример 1. Математическое описание нестационарных процессов, происходящих в ректификационной колонке, основывается кд уравнениях материального и теплового балансов, являющихся количественным выраже- нием закона сохранения Однако н отличие от анализа статических свойств объекта здесь закон сохранения массы и ввергни как равенство входных я . выходных потоков не сохраняется. Прн протекании процесса происходит иановление массы и энергии, т. е. ВХОД — ВЫХОД = НАКОПЛЕНИЕ Матемагнчесвоа описание динамика ректкфшищпоикий колонны содер- жит; уравнения материального в тевлового балансов; уравнения, описываю щпе механизм взаимодействия между паровой и жидкой фазами яа отдельных тарелках; уравнения для описания фазового равновесия. При решения ряда практических задач можно допустить, что мольные воюют кара и жидкости ко высоте секций колонны постоянны, тем самым исключать рассмотрение теплового баланса, а также принять востоянство коэффициентов относительной летучести компонентов Дальнейшим упро- щенном является принятие концепции теоретической тарелки, т. о пар, по- кидающий тарелку, находится в равновесии с жидкостью. Исходя из приня- тых допущения математическое описание ректификационной колонны пред- 347
ставляет систему дифференциальных уравнений, адлпслнних для каждой те радия, включая куб я дефлегматор Для произвольной тарелки (рис 51) дифференциальное уравнение, запи- санное для компонента /, имеет вид Wi+i. / + ’Wi-uJ- ri*i /~ЬЛ.3 = d (Я^j 4- Ну p =------dt 0 = 1,2, ,k), (i^/). (12-1) Уравнения, записанные для куба колонны, дефлегматора и тарелки пита- ния при уелонпн, что питание подается в жидкой фазе, суответотвенпо имеют ВИД d(HL „4 Нуа) 1Л --------------i— , (12-2) d I" fl Li+ixi+i, f + i— vflt j “ Лх/./ * F*f j= Ji ~ * (12-3) . . ~ ft+14 Hy JV4i) .tf И j “ kv+l* V+-1,1 ~ ^®A+1, < “ ft (12-4) где Яд — задержал жидкости иа тарелке, TIV — задержка пара ка тарйлке W — количество кубового продукта; D — количество дистиллата; £, F, F — количества жидкости, ш1рд и питания соответственно Поскодьну Нъ >> HY, то задержкой паря на тарелке можно пренебречь без значительной потери точности. Тогда, учитывая, что (12—5) ai yi, i “ Ki. Л, i ““ 1 * систему уравнений (12—1) — (12—4) можно переписать в виде 348
А *= = — (Ь< + С — г К.7П dlT/dt - A (t) X (i) 4- J1 (f). (12—7) Система (12—7) n общем вида неразрешима обычными сиособамич Для ев решения необходимо воспользоваться приближенными методами Рас s L Ряс 52 Решением дифференциального уравнения является некоторая функциональная зависимость, которая в простейших случаях мо- жет быть получена аналитически, а и более сложных — числен- ными методами в виде таблицы значении независимой переменной и соответствующих значении функции. Есяи неизвестные функции рассматриваются как функции од- ной независимой переменной, то дифференциальные уравнения называются обыкновенными, я противном случае — уравнения- ми с частными производными Порядок наивысшей производ- ной, входящей в данное уравнение, называется порядком этого уравнения Рассмотрим дифференциальное уравнение первого порядка У* = / у) С12—8) Функцию / (х, у) будем рассматривать заданной в неиоторой области изменения ее аргументов причем переменные х,у можно рассматривать как декартовы координаты произвольной точки А области определения G (рис. 52) Дифференциальное уравнение (12—-8) устанавливает в каждой точке Д связь между координатами и производной от функции у в этой точке. Таким образом, для любой точки области & по уравнению (12—8) можно вычислить производную, т. е. тангенс угла наклона кривой у = у (%). Выбирая достаточно большое число точек в области G н вычисляя в каждой точке угол наклона, можно затем соединить точки, имеющие один и гот же угол накло- на, некоторыми кривыми, которые называются изоклинами диффе- ренциального уравнения. Любая функция у (ж), у которой в каж- 349
‘ < •; 5 » ' ’ ' * - . ' ' ' ...*• L -- .*. дой точке Области G производная' определяет направление, сов- падающее с направлением, задаваемым для изоклины, проходя- щей через ету точку (рис. 52, кривая Ро Р, Р2 Ря), является реше- нием уравнении (12—8). На этом свойстве изоклин основаны некоторые графоаналитические методы интегрирования дифферен- циальных уравнений Число кривых решения, направление каса- тельных к которым в каждой точке совпадает с полем направле- ний изоклин, вообще говоря, бесконечно, что непосредственно следует из рис. 52 Для того чтобы выбрать иа бесконечного числа решений един- ственное, необходимо зафиксировать некоторую начальную точку, через которую должно проходить решение. Это эквивалентно зада- нию дополнительного условия, накладываемого на решение диф- ференциального уравнения н называемого начальным условием. Наряду о одним дифференциальным уравнением во многих ге- еретических и практических задачах используются также и си- стемы дифференциальных уравнений Система обыкновенных дшр ференциаяьпых уравнений имоот столько уравнении, сколько в иео входит неизвестных функции, причем все неизвестные функции являются функциями одной независимой переменной. Для систем уравнений в частных производных число независимых перемен- ных больше единицы, но число уравнений также равно числу неизвестных функций. При решении дифференциальных уравнений системы имеют важное значение, поскольку любое уравнение порядка выше первого может быть путем замены переменных пре- образовано в систему уравнении первого порядка. Действительно, если имеется уравнение ^и) « / (z, у, у', jf, ., 8М), (12—9) * то, полагая = у', у2 = у°, уп = у*”'-1*, его можпо записать в виде системы уравнений {/' = Ух, = Ре, h * или, воспользовавшись матричными обозначениями, W’=/(!. У), (12-10) где у* и у — воктор-функцнн. Решением уравнения (12—10) будет вектор-функция у, опре- деляющая некоторую линию в п 4- 1-иерпом пространстве, в ко- тором начальное условна изображается как точка Методы решения одного дифференциального уравнения первого иорядка с начальным условием часто можно распространить и на 350
системы уравнений первого порядку а следовательно, на уравне- ния более высокого порядка. Поэтому в дальнейшем будут рас- сматриваться методы решения применительно только к урав- нениям первого порядка. 1. Интегрирование дифференциальных уравнений разложением в ряд Тейлора. Пусть для заданного интервала изменения аргу- мента требуется вычислить ряд значений функций у = у (г), яв- ляющийся решением уравнения (12—8), если известно начальное условие у0 — у (х0). Предположим, что правая часть уравнения (12—8) является аналитической функцией в области определения решения, тогда решение дифференциального уравнения является аналитическим и допускает разложение в ряд' Тейлора Разложим интегральную кривую уравнения (12—8) в окрест- ности точки в ряд Тейлора hn л^>*,М+рт1?1'",|Й. где h ~ a:t+I — и Ж величина h называется обыч- но шагом интегрирования. Поскольку производная у<т*о непрерывная н ограниченная, шаг интегрирования h можно выбрать настолько малым, что по- следним членом ряда (12—11) можно пренебречь. Пос кольну Уk+i ~ У (xfc+i)t выражение (12—11) запишется в в яде »т=»»+А»;+-?г»;+ ”+^г»г’- (12—12) Выражение (12—12) является основной формулой интегрирования дифференциального уравнения (12—8) путем разложения решения в ряд Тейлора. Полагая в пей последовательно к — 0,1,2, . я, п — (6—й)/Л,- можно вычислить решение уравнения (12—8) в п точках интервала (а( 6). Очевидно, чем больше членов разложе- ния и чем меньше шаг интегрирования, тем точнее будет получено решонио. Производные, входящие в формулу (12—12), вычисляются не- посредственным дифференцированием уравнения (12—8). По- скольку первая производная равна = (12-13) то выражение для второй производной может быть получено диф- ференцированием (12—13) по г *»)+ж »»> »«> 351
J или ffv> (12—14) где = h = У*)’ 1~1(хь>Ук) Аналогично выражение для третьей производной получается в результате дифференцирования выражения (12—14) ?; = /«+ 2U + fvf + АЛ + ffl- (12—15) Если выражения (12—43) — (12—15) подставить в (12—12),то , для вычисления у в точке х = ^+1 получим ^л+1 = Ук "Ь + гГ (/« А/ "Ь ТГ^х* "Ь +/„/ + 4/,+ //}))) +0 ('»*). (12-16) где О (Л4) — остаточный член ряда, определяемый членами выше третьего порядка малости по Л Принципиально формула (12—12) может быть использована при интегрировании любого дифференциального уравнения с произ- вольной наперед заданной точностью, от которой будет зависеть число членов ряда. Однако с увеличением числа членов ряда уве- личивается количество подлежащих определению производных, а следовательно', и Объем вычислений. Вычисление производных с практической точки зрения весьма трудоемко, поэтому формулы разложения решения в ряд как метод решения днффереициаль- jmx уравнений не подучили широкого распространения. Обычно , вместо разложения используются методы, опирающиеся на раз- ложение в ряд Тейлора, по позволяющие получать решение без * вычисления производных. Метод же отыскания решения с помощью » рядов Тейлора главным образом используется как способ оценки точности других формул интегрирования, 1. Методы численного интегрирования дифференциальных уравнений Формулы Эйлера. Пусть дало уравнение (12—8), удовчетворяю- щеенач альному условию yft — у (зт0), решенном которого является функция у = у (г), ояределенная на интервале (а, 6) (рис, 53) Выберем достаточно малый шаг Л к построим систему точек г* = г0 kh (А — 1,2, , п), (з?о — а), (л =а (Ь — а)7г) Для интегрирования уравнения (12—8) воспользуемся (фор- мулой (12—12), ограничившись двумя ч.топамп ряда ys„ = Лс ~ Ч = ’А + ht(xv »,). (12-17) 352
Интегрирование по методу Эйлера заключается в последователь- ном применении формулы (12—17) к уравнению (12—8)» начинай с^к — 1. Прд наличии начального условия у = у0 дли вычисления & пе требуется никакой дополнительной информации: достаточно вычислить правую часть уравнения (12—8) при за- дашшх значениях аргумента х0 и функции у0, Процедура вычис- ления у} аналогична проведению касательной в точке (xe, у9), Гис, 53. Графическая нддздтдоцвк метода ейдера тангенс угла наклона которой задается правой частью уравнения (12—8) прн х — х0 и у на у0, до пересечения с вертикальной прямой, проведенной иа точки х xL, На следующем шаге,. т. в при вычислении у21 снова.опреде- ляется производная, но только в точке (хп у±) и нз точки пере- сечения прямых х = и у = ух (точка иа рис 53) проводится касательная до пересечения с прямой х — х2 Аналогичная про- цедура вычислений повторяется для у3, у^ и т, д. Таким образом, в результате вычислений определяется неко- торая ломаная линия, линейные отрезки которой имеют угол наклона, вычисляемый через производную в соответствующей точ* ке интегральной кривой. Как следует из рис, 53, с ростом к лома- ная линия все дальше отходит от истинного решения. Отсюда же нз геометрических представлений легко заметить основной недостаток метода Эйлера: если, например, кривая решения вы- пуклая, то ломаная кривая, вычисляемая на каждом шаге, будет отходить от иее вверх, поскольку для вычисления положения по- следующей точки используется производная в предыдущей. Оче- видно, чем больше кривизна интегральной кривой и шаг интегри- рования, тем значительнее это отклонение. Другим неприят- ным свойством этого метода является также то, что ошибка ин- тегрирования накапливается, т. е. увеличивается с каждым шагом При интегрировании по методу Эйлера полагается, что произ- водная но х от до — постоянная величина, что соответствует Кусочяо-липвйному представлению интегральной кривой на от- дельных участках интегрирования. Ив формулы (12—12) следует, что для получения решения используется ряд Тейлора с точностью до членов первого порядка малости по А, поэтому ошибка на каж- 12 В В Кдфйгов и др 353
дом шаге может быть оценена как ек~~2уУк^ (“ч (12—18) Несмотря на простоту реализации, метод Эйлера относительно редко применяется при интегрировании дифференциальных урав- нений, поскольку не обеспечивает достаточной точности вычисле- ний и очень часто бывает неустойчив as-за накопления ошибок. Устойчивость метода увеличивается при уменьшении шага интег- рирования, однако при интегрировании сложных уравнений умень- шение шага приводит к резному упелмченню объема вычислений и, как следствие, — к значительным затратам машинного времени. Модифицированный метод Эйлера. В отличие от обычного ме- тода Эйлера, когда для вычисления следующей точки интеграль- ной 'кривой требуется информация только о предыдущей точке, модификация метода заключается в нснользовашш прогноза пове- дения интегральной кривой в последующих точках. Моднфицп- рованный метод основан на усреднении положения концевой точ- ки отрезка, которым заменяется интегральпан кривая. Усредне- ние производится с учетом тангенса угла наклона в некоторой про- межуточной точке, например в точке, отстоящей от начальной на половину шага интегрирования. Порядок построения решения в модифицированном методе Эйлера представлен на рис. 54 и заключается в следующем. Проводится касательная через точ- ку (zo У|) с тангенсом угла наклона j у() до нересечения с пря- мой х ~ + Л/2 п в точке пересечения вычисляется производная, равпан у г / I Л , Л f \ \ ^i= f (Т~ ~2 ’ 4" *2* ’ с учетом которой проводится касательная в этой точке (прямая Л2). Далее из точки (х{, yt) проводится прямая Ло, параллельная А2, до пересечения с прямой х — aji+l, уравнение поторой имеет ВИД J / 1. L \ + <*,« - = у. 4- Л/ 4- т, У| 4- у у\) • (12-19) I Формула (12—19J и есть формула модифицированного метода Эйлера. Она может быть записана иначе, если промежуточная точ- ка, производная в которой определяет направление отрезка ин- тегральной кривой, отстогп от согедпих точек па величину шага У( .1 = I'm + 2W («,. Vi, (12—20) Таким образом, при использования модифицированного метода Эйлера иа каждом шаге интегрирования необходимо иметь ин- формацию о текущей и предшествующей точках. Поэтому этим методом нельзя воспользоваться на первом шаге интегрирования ЗМ
по начальной точки. На первом шаге обычно применяете^ простой метод Эйлера, после чего на последующих шагах уже можно вос- пользоваться формулой (12—19). Усовершенствованный метод Эйлера— Коши заключается в том, что при вычислении следующей точки интегральной кривой про- изводится усреднение тангенса угла наклона кривой в двух при- лежащих точках. В этом случае тангенс угла наклона находится Рас, 54. Графическая яадмитнщцн мпдпфицпроцлкясгп метода Зйясро Pied Графическая Иллюстрация хетода 8й дери—Коган как среднее арифметическое тангенсов в точках (ij, pj) и (гж, yi+1). Поэтому аналогично Модифицированному методу Эйлера здесь также на каждом шаге необходимо дважды вычислять значение правой части дифференциального уравнения. Порядок построения решения в мотодо Эйлера—Коши пред- ставлен па рис. 55 Порез точку (ij, проводится касательная до пересечении с прямой ® = Х|+1. В этой точке пересечения вы- числяется тангенс угла наклона касательной Ла я из точки (zit у() проводится прямая Ли1 тангенс угла наклона которой есть сред- нее арифметическое тангенсов углов наклона прямых и Л8т ъ е. где ^=1/(14, р4) Для прямой Aq можно записать уравнение У{+1 "= r/i + = Ус + 4 Уг) + f (xi + Л« + й$Ь US—21) которое и является формулой метода Эйлера—Кошн. При использования формулы (12- -21) сначала вычисляется крпбкижешюо решение в точке (Z|+1J yl+1) 0Й = 'Ь bf(xv У& (12-22) которое затем уточняется. 355 12*
Решение по формуле (4Й-*-^1) мо5кно уЛучйгйН, есЛи ЬобпойЬ- эоваться итерационным способом уточнения каждого значения В этом случае, исходя из начального приближения (12—22), строится итерационный процесс ио формуле y£i« = V( +4nh.i/,) + /(«ul, <)] №=о.1,2,...,т,..) (12-23) и вычисления па каждом шага повторяются до тех вор, пока два последовательных, приближения и ие совпадут с некото- рой наперед заданной точностью. Оценка точности формул Эйлера Для того чтобы оценить точ- ность улучшенных формул Эйлера, можно сравнить их с разло- жением. решения в ряд Тейлора. Для / (я, у) в окрестности точки (®4, у4) имеем /(«» = У,) + (ж-*<) + Тогда для величин в формулах (12—19) и (12—21) можно запи- сать соответственно *.=/(«.+4-»)+4i'0=/+T</«+/v+o<ft‘)1 i‘i=41/ <«<•ы+1 ix<-rл- v,+*»;)=4 w+f+л/.+w«i+ + 0(/?) = /+4(/х-1-//о) + 0(Л«). Формулы (12—19) и (12—21) посла подстановки соответствую- щих выражений дли fc4 приводятся к виду — кн, = |/,+а/+4-(/«+Л)+0(а’)- <12~24) Иа сравнения (12—16) и (12—24) можно заключить, что видо- измененные формулы Эйлера согласуются с разложением в ряд Тейлора с точностью до членов степени № включительно, т. е. обеспечивают точность на порядок выше, чем формула (12—17). Можно также показать, что формула Эйлера—Копш с итерацион- ным уточнением на кая:дбм шаге позволяет получить точность по- рядка № 1271. Устойчивость решения. При решении дифференциальных урав- нений численными методами помимо вопросов точности важную роль приобретают вопросы устойчивости решения. Под устойчи в остью метода решения дифференциального уравнения пони- мается способность накопления и скорость роста ошибки интегри- рования. Как уже отмечалось выше, прп испольвовании формулы (12—17) ошибка вычислений накапливается в процессе интегри- рования. Скорость ее роста и абсолютную величину можно уменьшить только, путем уменьшения шага интегрирования, однако при етом 356
ЗДт^ТйелЬйо возрастает объем вычислении, (Вместе d teat а& ду» шествует способов выбора шага интегрирования до начала реше- ния, поэтому иа практике шаг обычно выбирается исходя из сравнения решений, полученных с различным шагом, например с Л и Л/2. Если эти решения отличаются на величину, большую ааданнсй точности, то производится уменьшение шага интегри- рования. Оценка ошибки иногда может быть получена и другими способами, например исследованием производных правой части- дифференциального уравнения. Однако ото на всегда целесооб- разно, так как может оказаться, что повторное интегрирование с измен еннымшагом выполнить проще, чем исследовать поведе- ние правой части уравнения на каждом шаге интегрирования. Модифицированные формулы Эйчера относительно часто при- меняются в практике вычислений, Рассмотрим устойчивость ре- шения, полученного по этим формулам Предположим, что для решения уравнения (12—8) использует- ся модифицированная формула (12—20). Тогда для вычисленного значения yi+1 в точке можно записать У<+1 “ + 2Ц. (12-25) Однако если У4 — точное решение, то для него можно также записать Пн = Ум -И 2hY’i± fht (12-26) где Bi — ошибка расчета по формуле (12—25) на одном шаге интег- рирования Если обозначить ошибку вычисления величины у{ черев в( =» = У( — то после вычитания выражения (12—25) из (12—26) получим eui - еЬ1+2й (У! — у'() + <?4 - et ъ Ч- 2Л [/ (xlt У,) — f у{)] Ч- ₽f. Последнее вы ряжен не можно переписать, используя теорему ю среднем в виде <4,1 = <Я-1 + 2Л ^11 (Г, - »,) - + 2Л |£-в( + е1г (12-27) где у4 G< С Уь Допустим» что ej и А = df/dy постоянны, тогда выражение (12—27) запишется в виде соотношения 8{+1 — 2ДЛв, — е1ч = еь (12—28) которое является линейным разностным неоднородным уравне- нием с постоянными коэффициентами. Рещопие уравнения (12—28) может быть найдено как сумма общего решения однородного уравнения а и частного решения не- однородного ё (271. Общее решение однородного уравнения (12—28) определяется корнями характеристического ураянения pi — 2Ahp — 1’=» 0 357
которые pafinU Pi = Aft + fAwTi, p, = Ah - И А2А2-И Следовательно, решение уравнения (12—28) есть ё* = Cipl -г cspl (12—29) В вависимостк от знака величины А один из корней характеристического уравнения (12—28) оказывается по модулю большим единицы* Поэтому нрп i -*• оо общее решение неоднород- ного уравнения ё-»-оо( и, следовательно, модифицированный ме- тод Эйлера является неустойчивым. Так же как и для простой формулы Эйлера, ошибка может быть уменьшена только за счет уменывонин шага интегрирования. Аналогичными рассуждениями можно показать [271, что фор- мула (12—21) является относитсяьпо устойчивой, так как по мере роста х относительная ошибка не возрастает Исследуем условия сходимости итерационной формулы (12—23), Пусть yEt11 и два последующих итерационных приближе- ния, подученные по формуле (12—23) Тогда, очевидно, имеет место равенство «й;° - иа=4 </ (* <«> -1 «ft”) (12—30) Используя теорему о среднем значении и вводя обозначение (8Л+1 = — ошибка It 1-го приближения), равенство (12—30) можно переписать в виде е.н = 4^ (<>-<-“) (12-31) или —- । । АЛ । । I е/И1 1 ~ 1 р> Ь где А -= | df/dy | Следовательно, втерациоиный процесс, определяемый формулой (12—23), будет сходящимся, если вынолпнетсн неравенство А/{/2|<^1 или h < 2/ [ А | (12-32) Равенства, апалшичные (12—30), могут быть записаны для ej;, 84-1, в?. Тогда, последовательно во детая л яя нти выраже- ния в (12—31), можно записать j eR+11 ££(,1/1/2)^ |. (12-33) Таким образом, при изменении k от 1 до т последовательность сходится к некоторому’’ определенному значению, отличаю- щемуся от точного решения па величину ошибки вычислений. 353
Иа условия (12—33) следует, что чем больше величина Л, тем меньше шаг, обеспечивающий сходимость итерационного процес- са, и чем меньше величина шага, тем меньшее количество итераций потребуется для получения устойчивого решения в точке. Однако в общем случае нельзя однозначно определить, что выгоднее: взять меныпни шаг, а следовательно, увеличить число шагов интегрирования, или же увеличить шаг, но производить большее число итераций па каждом шаге. Поэтому в практике вычислений обычно поступают следующим образом. Выбирается произвольный шаг интегрирования к производятся итерации но формуле (12— 23). Если после двух итераций заданная точность пе обеспе- чивается, го размер шага уменьшается и расчеты повторяются Эмпирически установлено, что такая стратегия обеспечивает ми- нимальный объем вычислений при заданной точности [18]. Формулы Рунге—Кутта. Наиболее распространенными в прак- тике интегрирования обыкновенных дифференциальных уравне- ний являются формулы Рунге—Кутта Эти формулы классифи- цируются по стенопы приближения их по точности к разложе- нию решения в ряд Тейлора Формулы, точные до второго, треть его, четвертого и т д. членов разложения, носят название формул второго, третьего, четвертого и т, д порядка соответственно. Достоинством формул Рунге—Кутта является то, что при их использовании ненужно вычислять производимо выше первого по- рядка, а их основной недостаток — громоздкость и значительный объем вычислении да каждом шаге В основе формул Рунге — Кутта используется следующее допу- щение. Поскольку определение производных высокого порядка в разложении решения в ряд Тейлора сопряжено со значительны- ми вычислительными трудяостями, вместо уравнения (12—12) используется линейная комбинация вида [40] Ут-Ы = Ут “|“ Pt, 1^1 (6) 4“ Рс (6) 4“ ’ > 4' Рс, е^‘с (6), (12—34) где Рс,, ~ постояпные коэффициенты прп функциях Л,1 (fe) = = Л./.(£(, T)i) (4 = 1,2,.,, с), в которых & = Ц аД 1]£ = ут + Ь1} (Л) Р Л (Л) 4- . 4-&1, 1-Л-1 (А)» (12-35) a cq и b{j — постоянные, причем щ 0. В уравнении (12—34) с определяет порядок формулы Таким об- разом, МЛ) = ут), (6) = bf |- -]- bg( i/fi), (6) — fif (хт -1- Oj/a, у 1Л -J- 6.J( ,/q 4- 6а, g^), I I МЛ)=" hf(xm 4-асЛ ут 4 6С, Л I Ьс,4-. 4-6c,c-i^-j). 359
,^,s fy- -' - ' ”r'i’- '• > ' “ Введем вспомогательную функцию . фс (ft) = yffl+1 - ym —(РсЛ (ft) + pMfc» (ft) 4- • + РсЛ (ft)l(12-36) J и потребуешь чтобы зта функция при h = 0 обладала свойствами фе(О)~<р;(О)= =(pW(0)~ 0, ^>(0)^0. (12-37) *'•'Тогда соотношения (12—37) могут использоваться для выбора по- стоянных коэффициентов pClli ai} bitj ';Г' J Рассмотрим несколько частных случаев формулы (12—34)* - Пусть с = 1. J Тогда < ' Утч1 = Утл Т" — Утл 4" Pblft/ (хтм Ут) и <Р1 (ft) « Ут^ “ УП1 — Pljtf (*m, Ут), <p;(°)=4~PiV^ym)- Поскольку при ft — 0 — ут, ТО <рх (0) — 0, а (0) = - '— ры/ (гт1 уп). Условие (12—37) для <рх' (0) будет выполнено лишь , в том случаек если рн — 1, и, таким образом, при с = 1 расчетная ; формула :;/ Ут». = + hf (xmt ут) (12—38) т* е получила вкд формулы Эйчера, • . Пусть с =7i 2. То*гда 5а = 4~ ««ft» — Ая 4” ttift = стп1 Яа = Ут 4“ ^2,1^1» Л1 = Ут Поскольку ftj == ft/ (я^, Pm) г fta = ft/ (An 4" ®sft* Ут 4" fts,lftl), ТО ф Уп>+1 — I/tn.4’ Epsrift\(ft) 4- (ft)J = (12 39) = Ут 4- ftpati/ (а» Ут) 4" If (хт 4“ «цй, Ут 4" b^hf (lR1 ута))]. Формула (12—39) содержит четыре неизвестных коэффицпон- ,-; та — Pmi й ^ад’ KQT0PLW необходимо определить исходя •• из условий (12—37). Для того чтобы найти значения этих коэф- фициентов, нужно записать выражения для (ft) и (ft) и по- ложить h = 0 Тогда неизвестные коэффициенты могут быть и ай- доны решением системы линейных уравнений. Выражение для фа (ft) имеет вид Фз(ft) = Ут+1 “Ут — [Рз,ift’i(ft)4- p2(2fts(ft)l (12—40) Вычислим (ft) ____ (ft) = Ут+I “ lpaX(ft) 4- Pa,A(ft)]i (12—41) , 360
где /С1.(Л) — / (ium, J/m) = /, А.а (/i) = f (£5, rja) -p h -}- />3,1//^). Для <pi (0) можно записать (0) = / — \psJ 4- p8t2 fl, где f — f fcm, tfm)t откуда следует, что условие (12-*37) для <pj (0) будет выполнено в том случае, если Ps.i + Рз,а == 1* (12—42) Аналогично, дифференцируя (А) по Л и учитывая, что Л1 (Л) *= 0, для <р^ (0) получим Ф1 (9) = /« 4" ffv 2рз,й [Од/а; 4" откуда следует, что для q\ (0) = 0 должно быть = 1, 2 Рад: = 1* (12—43) Таким образом, коэффициенты рзл, p3f3, a,, 63г1 формулы Руцго — Кутта второго порядка удовлетворяют системе линейных уравне- ний Ряд 4“ Рй«5 = 1» PjjjOta ~ 1/2, (12—44) ~ 1/2. Поскольку система (12—44) имеет четыре иеиевестных, то чис- ло ее решений бесконечно Каждое решение дает формулу интег- рирования с ошибкой порядка /А На практике коэффициенты вы- бираются такими, чтобы формулы были удобны для вычислений. Например, если положить аа= 1, то тогда р2Д = 1/2; == 1/2; Ьм = 1. После нодстаповки этих значений в выражение (12—39) получим формулу Утч — Ут 4“ 1/2 (А'1 /Гц) = ут -}- ?^/2 [/ (Ап, Ут} 4“ 4-/(®т4*Л, Pm 4- Лр;п), являющуюся формулой усовершенствованного метода Эйлера- Коши Если же положить, что р3к1 = 0, то из (12—44) получим рал — =1; = сч = 1/2. Тогда после подстановки полученных зна- чений в (12—39) последнее преобразуется к виду (12—19), т. е. получим формулу модифицированного метода Эйлера Отсюда следует, что формулы Эйлера являются частными случаями фор- агул Рунге— Кутта первого и второго порядков. Наибольшее распространение в вычислительной практике име- ют формулы Рунге—Кутта четвертого порядка, которые получают- ся из общих соотношений (12—34) — (12—37) при с ~ 4. При этом Утп — Ут 4“ р4д/с1 4~ 4~ Рл^а 4~ (12—45) 361
Где kx(h) = hf(vm, ym), ft2 (ft) *= ft/ (хт 4- «2ft, ytn 4- bitJCi), ft» (ft) e (Ж™ 4" aiA Vm "4" Ml + &И,2^з)* /Сд (ft) = ft/(я»1 -J- tt-lft- Ут 4" ^4,1^1 + ftj^S^e), Коэффициенты выражения ('12—45) также вычисляются исходя из условий (12—37) теперь уже для производных до четвертого порядка включительно. Точность формул четвертого порядка пропорциональна ft®, т. е формулы соответствуют разложению решения в ряд Тейлора до членов ft1 включительно ^При повышении порядка формулы возрастает произвол в вы- боре коэффициентов. Для формул четвертого порядка уже имеет- ся две степени свободы, что приводит к еще большому разнообра- зию соотношений. Примером формулы Рунге—Кутта четверюго порядка может служить соотношение У»н1 — Ут 4~ 1/6 (^i 4* 2Zcw 4- 2ft 3 4” ftj) 4* 0(fts) (12 46) где — ft/ faint Ут)* ft3 = ft/ 4- ft/2, ym 4-1/2&1)» ft» = ft/ fon 4- ft/2, Ут т 1/2^), (12—46a) ftj ft/ (^m 4“ ftr У»в 4“ ftn) На каждом шаге интегрирования no формулам Рунге—Кутта четвертого порядка -необходимо четыре раза вычислять правую часть дифференциального уравнения Это приведет к увеличению времени счета, однако компенсируется более высокой точностью формулы, в силу чего интегрирование можно вести с ббдыппм ша- гом. При использовании вычислительных машин выбор величины шага интегрирования производится автоматически в процессе витегрвровапня, Изменение шага обычно производится по резуль- татам сраввелня решений, получаемых на некотором интервале интегрированном с целым и половинным шагом. Если результаты этих двух вычислений совпадают с заданной точностью, то шаг для дальнейшего интегрирования остается прежним или увели- чивается, в противном случае уменьшается. Прн автоматическом выборе шага интегрирования затраты ма- шинного времени на решение дифференциального уравнения в значительной степени определяются стратегпей определения шага, обеспечивающего заданную точность Так, для формул Уты = Ут 4-1/2 (fcj |* 4ftj -j- ft$)t (12—47) где fti~ l/3ft/(x)rt, yftt), ft"- = t/Mf (x.m 4- 1 /3ft, 4- АД 302
Ь = i/ЗЛ/ (a™ + 1/ЗЛ, у,„ + l/2fc, + (12-47а) к... = 1/ЗЛ/(х„ J- 1/2Л, + 378^+ 9/8ОД, fes = Iffihf (з?п> “Ь Ут + 3/2А^ — ft/M*s ~г 6A,i)r предлагается следующая стратегия оценки точности интегриро- вания и выбора шага 1331. Если правая часть выражения в = А'! — 9/2 к3 -}- 4А-4 — l/2fc6 превышает заданную точность более чем в пять раз, то шаг уменьшается вдвое и интегрирование про- должается Если же правая часть меньше, чем 5/32 в, то шаг может быть удвоен. По оценке [331 интегрирование по формулам (12—47) на 20% быстрее, чем по формулам (12—46) с постоянным шагом. Пример 2. Рассмотрим сравнительную оценку различных формул яп- тегркровання иа простейшем примере. Пусть в сосуд объемом У, заполненный жидкостью состава го; с постоянной скоростью F ведается жидкость состава кс такой же скоростью выводится жидкость на с му да. Полагая, что жид- кость в сосуде идеально гярамошиваэтсл, найти зависимость концентрации на выходе сосуде, пецользуя формулы Эйлера и Рунге—Кутта Запишем уравнение материального баланса сосуда, схематически пред- ставленного ка рве 50. F (хр — = tf 02—48) Так как скорость ввода питания равна скорости вывода, то d7/A = 0, и, та- ким образом, уравнение, описывающее изменение концентрация в сосуде, имеет вид У (<^/<ii) = F (рр — х) (12-45) и интегрируется с начальным условием т = 0. Решением уравнения (12—49) являете;! выражение г - exp (— (xft — xF) -г xF, Решение уравнения (12—49) но формулам Эйлера (12—17) п (12—19), а также ио формулам Рунге—Кутта (12—47) для интервала времени 0 I 40 приведено в табл 22 Исходные данные: “ 0, Р = 1 .и’/час, хр «я 0,9, V « 5 ж’. 363
Таблица 22 Метод Шаг И Нвтиеииал перкненнвн t 1 б 10 1£ И 60 И) Точное реше- ние — 0,1631 0,5689 0.7781 0,8552 0,8835 0,8977 0,8998 Рунге—Кутта 1 0,1631 0,5689 0,7781 0,7780 0.8551 0,8835 0,8977 0,8898 5 — 0,5687 0,8551 0,8835 0.8977 0,8996 10 — — 0,8000 — 0,8883 0,8996 0,8121 0,8998 15 — — 1,1812 — — Эйлера 1 0,1799 0,6051 0,8033 0,8683 0,8996 0,8988 0,8998 0,8999 5 > 0,8999 1,8899 0,8999 0,8989 0,8999 10 * — 1,1800 —> 0,0000 1,8000 0,0000 15 — — — 2,7000 — -2,700 — Моди ф ядер о- 1 0,1620 0,4830 0,7762 0,8541 0,8829 0,8976 0,8995 ванный Эйлера 5 0,4500 0,8750 0,7875 0,8437 0,8859 0,8964 10 — — 0,0000 — 1 0,0000 0,0000 0,0000 15 — — —‘ —1,3500 4 1 а —4,7250 > Из срааневия точного и приближенных рсшоппй можно а а метить, что формула Эйлера па каждом шаге интегрирования дает завышенное аначенке функции, и то время ван видоизмененные формулы Эйлера заниженные, формулы Эйлера капмеиве устойчивы при увеличении шага иптагрпроаа- ния — в пих колебательность решения проявляется уже прк Н = 7, п фор- мулы Рунге—Кутта — при Я 15 Интегрирование системы дифференциальных уравнений. Ме- тоды интегрирования одного дифференциального уравнения могут быть распространены и па системы обыкновенных дифференциаль- ных уравнений. Пусть задана система двух уравнений У' = /(я, У, z), = У. 2) (12-50) с начальными условиями в точке х = х$ . = у0; 2|х=^ — z0. Для того чтобы проинтегрировать систему (12—50), например, по формулам Рунге—Кутта четвертого порядка, достаточно при- менить формулы (12—46) к каждому из уравнений Унх = + 1/6 (kL 4- 2Аа -т 2Аа Aj), sui = 3{ 4-1/6 (r»i 4- 2та 4- 2та + л74), (12—51) где А* и ntj вычисляются по соответствующим формулам Ai = A/(aci( zf), (12-52) Aj = hf (o?j 4~ A/2, 4~ ^i/2, z, -|- Hij/2), (12—53) 3M
Л» = hffa 4- Л/2, Vi 4- /cs/2, Si 4- m3/2), (12—54) kt = hj (xi 4- ht yi 4- A», zt 4- ma), (12—55) m1^hg(xil y4l 2f), (12-56) тг = kg (xi 4- Л/2, у14- fcx/2, st 4- mr/2), (12—57) m6 -= hg 4- Л/2, у14- Агг/2, 4- ша/2), (12— 58) m4 = fig (z{ 4- h} fa 4- Aa, si 4- mt) (12—59) Конечно-разностные формулы Формулы Рунге—Кутта чет- вертого порядка получили наибольшее распространение в прак- тике интегрирования дифференциальных уравнений с^исполь- зованивм вычислительных машин. Однако даже при относительно высокой точности их применение связано со значительным объе- мом вычислений, особенно если правые части уравнений являются сложными выражениями. Основным недостатком этих формул является то, что приходится вычислять три-четыре значения функ- ции и усреднять иа каждом шаге интегрирования. Прогноз реше- ния осуществляется исходя из информации лпшъ в данной точке, н совсем не используется информация о решении в предыдущих точках, В прикладных задачах, например, связанных с нестацио- нарными процессами, решения часто представляют собой монотон- ные функции, приближающиеся к стационарному состоянию, при- чем значительные изменения тангенса угла наклона интегральной кривой наблюдя юте я только на начальном участке интегрирования. Поэтому для вычислении значения интегральной кривой в после- дующей точке иногда целесообразно аппроксимировать решение, используя информацию о нем в предыдущих точках, т, е. его пре- дысторию Методы, в основе которых используется информация о решении в ряде предшествующих точек, называются конечно-разностными методами или методами прогноза и коррекции, В отличие от фор- мул Рунге—Кутта, в этих методах на каждом шаге интегриро- вания правые части уравнений вычисляются одни или два раза, а разность между прогнозированным и скорректированным ре- шениями дает оценку точности интегрирования и может быть ис- пользована для контроля величины шага. При интегрировании конечно-разностными методами наиболь- шее распространение получили формулы, в которых решение ап- проксимируется алгебраическими полиномами. В частности, формулы Ньютона — для интерполирования назад (формула 11— 29) используются в методе Адамса, а формулы Ньютона для ин- терполирования вперед (формула 11—28) — в методе Мплиа, Рас- смотрим порядок получения формул интегрирования для диффе- ренциального уравнения первого порядка У' = / (®. У). (12—60) для которого задано цацад&цое условие = {fy Ж
Предположим, что некоторый образом удалось получить приб- лиженные значения у — у (х) для ряда равноотстоящих точек '”1 ®i-k’ Тогда приближенно можно считать, что xi+l tt+i = ffi + $ ф(®)с&, (12—61) где <р (й) — приближенное представление правой части уравнения (12—00), основанное на аппроксимации решения по найденным точкам Тл е <р (я:) = / (х, у (л)). Метод Адамса, Воспользовавшись интерполяционной форму- лой Ньютона (11—39), с точностью до разностей третьего порядка включительно п выражении (12—61) можно записать [401 Ч>(*) = »;+ ДХа + '(< + +21 дКт (12—62) где t = (г — Г()/й. Тогда *i+i Ум = vi + (у\ 4- ед1?^ + *>• Д2у;_а 4- *< + ЩJ <fc. (12-63) Нели в последнем выражении произвести замену переменной dx «= й(Й, то можно заметить, что многочлен <р (я) не зависит пи от шага интегрирования fe, ни от f, и, следовательно, У1+1 = Vi + Л j (yj + tД1^-! 4~ Д®^_, + ** +.^ + 2* Д3^,) di, (12-64) Почленно интегрируя выражение (12—64), получим экстраполя- ционную формулу Адамса у1+1 = +5/12даг4-а+з/8дву;-в) (i2-65) Если учесть, что ДЧ'-i = y'i “ y't-v (12-66) Д’!/^ -= у\ - 2z/;_± + (12-67) Д’4-1 = ffi — 3^-L + Х-2 - у'нр (12-68) то окончательно формула Адамса запишется в виде tfi+1 = Vi 4- й/24 (55yj - 59У(1 + 37^ - 9|Q. (12-69) 386
Формула (12—69) получена исходя из интерполяционного мно- гон лена, включающего разности третьего порядка. Аналогично могут быть получены формулы Адамса с другим числом точек ин- терполирования, Так, пацример, если ограничиться разностями первого порядка, то в результате будет получена формула Эйлера. Однако чем выше порядок интерполяционного многочлена, тем больше точек необходимо знать для начала вычислительного про- цесса. В этом смысле конечно-разностные формулы не являются само- начинающимися, поэтому для их применения необходимо знать решение в нескольких предыдущих точках, которое может быть иолучеко любым другим ранее рассмотренным методом. Для при- менения формулы (12—69) таких точек должно быть четыре: Ут Уъ Уз* Только после этого, воспользовавшись уравнением (12—60) для вычисления соответствующих производных, можно применить формулу Адамса (12—69), Точность разностных формул зависит от характера изменения разностей. Если третья разность, папрнмср, постоянна, то иктог- риропанле по (12—69) будет точным При работе на вычислитель- ных машинах такой способ оценки точности решения в принципе возможен, однако применяется редко. Чаще используется одно- временное интегрирование по двум формулам различного порядка с последующим сравнением результатов. Если решения разли- чпются сильно, то шаг уменьшается и процесс повторяется. Метод Милна, Формулы Милна для интегрирования обык- новенных дифференциальных уравнений могут быть получены аналогично формулам Адамса, волн воспользоваться уравнением (11—28) для представления правой частя уравнения (12—60). Пусть для равноотстоящих точек Xj-j решение уравнения (12—60) известно и представлено в виде многочлена Ньютона с точностью разностей третьего порядка »' "= + 'д1^ + -ТГ1’ <12-70) где t (х — я^4)/Л. (12—71) Принимая во внимание, что лум = ум-Ум. 4%,-Ik,-(12-72) АХ. = — 3»U + 34о — »i-t- в результате почленного лнтегрировашгв уравнения (12—70) по х от Д7-,1 до Xi и преобразования полученного выражении формула Мплла запишется ъ виде [401 >,-».« + £(1Ц - Ум + 21Q (12—73) 367
, Другая формула Милна получается я результате интегрирования уравнения (12—70) в пределах от до « fc-g + -у ЭД + 4у1-т + У«-»> С12~ 74> При интегрировании дифференциальных уравнений ио методу Миднв обычно используются обе формулы (12—73), (12—74), Сна- чала определяется первое приближение у!1’ по формуле (12—73), затем второе у!4 по формуле (12—74) Если при этом вылол ияется условие $> — ' 2 гдб 8 — точность решения, то в качестве решения принимается значение В противном случае расчеты по (12—73) и (12—74) повторяются с меньшим шагом. Метод Милна обеспечивает более высокую точность по сравне- нию с методом Адамса. Другим его достоинством является то, что при корректировании вновь полученною решения нет необходи- мости пересчета интеграла с измененным шагам Метод Милна обеспечивает устойчивое решение, если производная во всем, интервале интегрирования положительна [271. Математическая модель нестационарных режимов тарельчатой ректификационной колонны Для условий, рассмотренных в примере 1, составим програм- му интегрирования системы дифференциальных уравнений, опи- сывающей динамику тарельчатой ректификационной колояныг используя формулы усовершенствованного метода Эйлера— Коши. Математическое описание колонны с учетом применяемых допу- щений (постоянство мольных потоков пара и жидкости по высотег постоянство коэффициентов относительной летучести компонен- тов, равновесие пара и жидкости па тарелке, питание подается » колонну в жидкой фазе ирн температуре ккпенпя) приведено вшри- мере 1 (система уравнении (12—6), поэтому па стр 370 представ- лена только программа, записанная на Алголе). Программа интегрирования системы (12—6) выполняется сле- дующим образом Вводятся исходные данные, характеривующие режим работы колопиы и свойства разделяемой смеси.* К — количество компо- нентов; Л — число тарелок колонны; NF —• местоположение ввода питания, INT — шаг вывода па печать; F — количество питания, кмолъ/час\ В - количество дистиллата, клсоль/чое; L — количество орошения, кмолъ!чис\ ВТ— шаг интегрирования,
X ч “ * EPS — точность; ХЕ — CotTah пиТайнЯ} ALF — коэффициента относительной летучести. Затем задаются начальные условия: количество и состав жидкости по высоте колонны полагаются рав- ными количеству я составу питания соответственно (пусковой ре- жим) Интегрирование системы уравнений начинается с вычисления правых частей уравнений. С этой целью вычисляются константы фазового равновесия и коэффициенты системы (12—6). В соответ- ствии с формулой (12—19) интегрировапне на каждом шаге про- изводится дважды — это обеспечивается циклом по Р. В ревуль- тате расчета определяется количество жидкости па тарелках по каждому из компонентов (массив Я), а затем уже состав. В про- цессе вычисления концентрации про наводите л нормировка, no- ir атому для каждой из тарелок выполняется условие xt — 1 После определения значений функции Н (я) в последующей точ- ке производится проверка на окончание интегрирования. С этой целью вычисляется сумма потоков па каждой из тарелок колонны и сравнивается с соответствующей суммой в предыдущей точке. Если они не равны между ербой с аадаяаой точностью, то пере- менная z принимает ненулевое значение и после вывода решение будет продолжено с оператора с меткой START. Рео 57 Графин яимспепвл копцептрапня не тярвлках колонии На рис 57 представлены результаты расчета колонны для раз- деления бинарной смеси. Исходные данные К = 2, EPS = 0,01; ХЕ = .0Д «j - 1; Лг 3, DT = 0,1; F - 2; а2 = 2; NF 2; L - 5; D = 1. Математическая модель реактора идеального вытеснения Реактор идеального вытеснения представляет собой объект с распределенными параметрами, Поэтому математическое опи- сание его нестационарных режимов представляется системой диф- ференциальных уравнений в частных производны*, опясывающей изменение концентраций реагентов и температуры как по длние реактора, так и во временя. 369
’BEGIN1 * INTEGER1К ,N, №, DOtH?, l№« * INPUT0 ,Kr»t№F>IHT)., 'BEGIN* ’INTEGER’IjJ^Z.IT.P., *REAL'D1FtW,L,V,EPS*SUM1TIMS1DT.( 'ARRAY' HSTfDlFt HtX, V1(/O:H+10 »K/) ,Ш‘,ХР (Л:К/),НВ(/0:Н+1/)«, INPUTS >F,D>Ii,OT>EPStXFlAL&)»» Wi^F-D., VizrL+D., DOUT i=I№M * FOR' I :=О* STEP’ 1' UNTIL* N+1 * DO1 'BEGIN' 'FOR•Ji=1 *STEPM’UNTIL*К•DO’ 'BEGIN* H(/ItJ/)^FxXr(/J/)M я 'END* •END’,. Z:=O.t •FOR’I^O'Sl'BP'I’UNTIL'NH*»’ *TOR»Js«1 »ST2P'1' ШШЬ'К’ЭО'ЯЗТЧД ,J/) :eH(/I,J7)M ,I',OH'P:=1 *2*D0* 'BEGIN* ’ FOR' I J=O* STLi' 1 * UNTIL*2?+1 * DO* 'BEGIN * SUTiSs^O.O., 'FCIf J:=1 ’STEP* i "JNTIJ 'K*DO*SUMi^SLt +Ш (/J/) • FUR • J S=1'&m '1' WTIT *K’ DO’V1 (I, J/) S^I1LF(/J/) X V/SUM 370
'END1,, •FOR' 'STEF'I'UNTIL'K'DO» •FOH’IiaO’SMPM' UNTIL'N+1 ’DO* H(./I। J/) :=’IF’1=0'THEN'-(VI (/I,J/) +',V) X X (/I, J/)+(Ih-F)x X(/I> J/)1 ELSE •» IP1 I=1M Ш’ V1(/I-1, J/)xX(/I-1,J/)-VxX(/I,J/) 'ISLSE'V'l (/1-1, J/) к X( /1-1, J/) - (L+ (' XT' X' LE W THEN * F' ELSE * 0,0) ♦V1(/I(J/))xX(/I|J/)+('IF'I’LE’№’THEN'L+F'IbSE' L)x X(/I+1tJ/)+('IP'I=NF’ ТИКК' FXXF(/J/)’ELSE' 0.0). , »1?'р=1'таш* ' BJJGIK* ‘ ’ FDR11 !=C *bT2P * 1 * UNTIL' IM r DO1 JB1&IN1 SUM:=.O,) 'FOR * J t=11 STEP’ 1' ИШЬ1 K* DO* BEGIN* DlF(/I,J/)s«H(/I,J/).t H(/I, J/) isHST(/I,1/)+Ж1(/1, J/). t SU?^:=SUM+H(/I,J/) 'END1.t 'FOR*J:=1'STKP'1'UhTIL'K*DO’X(/Ifir/) :=H(/I, J/)/SUM •EHD’ 'END' ’END'., ' FOR • I: =0 ' STEP • 11 UNTIL1N+1 ' DO " FDR1J i =1 • STEP ' 1 ’ UNTIL • K’ DO * H'C/I * J/) :-HST(/X. J/)+DT/2x (DIF( /I, J/)<X/X, J/)) . , • IF’KLY(2)' THEN' 0OTPUT(3» ’ (В») ,H|V1) ., ITt=O. ( ’FOR’T :-0’STLP’1f UNTIL’IMfW’ 1 BEGIN' SUM i=0.0M ’FOR * J ?=11 STEP11 * UNTIL * К1 DO1 S JM t=SUM+Il(/I. J/) ., ’ IE < ABSC SUM-HS C/I/l) 1 GT' EPS * THEN * IT: =1'1M HS(/I/) s=SUl,., • FOR• J:-1 SJtf' 'I' UNTIL'К' DO' X(/1,X/) : =H(/X,iT/) /SUM fEND1., 371
Т1МЕ:=2*ОТ.» *IF*TIME=jDOUT x ОТ1THEN1 'BEGIN’ ®OUT|=DOUT+IH®M 0UTPUT(3,*Cl'M).t OUTPUT(3,* (B«),TI«E,H,X) 'ИГО' *IF'IT=/O'TH2N* ’GOTO'STAFT., OUTPUT(3trCB')tX»H) 'НГО* *EHD' Стационарный режим работы реактора списывается обыкно- венными дифференциальными уравнениями, определяющими иа- меление концентраций реагентов и температуры по длине золы реакции V~^F — SbWi («= 1. 2,.. , m), (12-75) u* (12—76) **• *b где $ь — площадь сечения яоны реакции, 'lb — длина зоны реак- ции, I — расстояние от начала зоны реакции N* При использовании уравнений (12—75) н (12—76) для опи- сания реактора вытеснения предполагаются справедливыми сле- дующие допущения: реагирующая смесь идеально перемешивается в поперечном: сечении потока; продольное перемешивание в по- токе отсутствует; теплоемкость реагирующей смеси ие изменяется в процессе химического превращения; теплопроводностью смеси и стенок реактора в направлении движения потока можно пренеб- речь; поверхность теплообмена равномерно распределена по длине зоны реакции; количество реагирующей смеси при принятом способе выражения величины потока и не изменяется в процессе реакции. При использовании уравнений (12—75) и (12—76) для матема- тического описания конкретных процессов необходимо иметь соот- ветствующие выражения для скоростей образования реагентов в рассматриваемом процессе а также выражение для суммар- ного теплового эффекта реакции Qr. Общее выражение для скоростей образования реагентов в про- извольной химической реакции может^быть получено прн исполь- зовании понятия «скорости стадии сложной реакции». При этом род скоростью /-к стадии понимается величина г _ * пн ’ (12-77) 372
1 14. V’ * r >lf»* ’k -''^l*1 - '' 'fe * i.^1. й J'?*!*' <?, $ ' - - ' A?; > , *' - / p> 1 -v--^” ’ 1 • i .ti? * Г ' -‘ i. e\- '• M ’>rL " "/'b . \ " -V -'* ”’ 1 । , . *p<* , i. -i и .' " ,hl/ i ' ’ L i - '' / ' >Л ,г"' '- . '-.jr < 1 „ ______ /, > определяемая для элементарной стадии реакции 1 nfcMjt—(12—78) / ;> где ni} — стехиометрический коэффициент к го реагента, являю- щегоен продуктом данной стадии; л, у — стехиометрический коэф- фициент гс-го реагента, являющегося исходным в данной стадии; , ' у &Н — скорость образования /-го реагента па данной стадии; \ (Ofj — скорость образования А-го реагента, являющаяся отрада- _• <; тельной величиной, поскольку этот реагент на данной стадии . расходуется. •*' Например, для химической реакции . я А - *4 j - «з 7; Л1^ЛаС (12-79) -,М a A ** \ ‘У можно рассмотреть слодутощио элементарные стадии: ЦцЛх—♦- S -Г И'Л-Л.д ^й^8» (12—80) 3 Любую химическую реакцию можно описать матрицей стехно .-3?’ метрических коэффициентов [АП, число строк которой равно чис- Ч? лу реагентов, участвующих в реакции, а число столбцов равно /-J числу стадий реакции. Элемент Nki матрицы при атом определяет- ся как стехиометрический коэффициент Zc-ra реагента па /-Й ста- дни, причем этому коэффициенту приписывается знак минус, если ft-й реагент является исходным, и знак плюс, если он обра- вуется па данной стадии. . Например, для химической реакции (12—79) матрица стехио- ' \ метрических коэффициентов имеет вид 1-Пц о 0 \ Т ~£г 7” <12~81) 0 0 п.а / Если для каждой стадия сложной реакции известны зависи- мости скорости Гу от концентраций реагентов к температуры, то с использованием матричных обозначений можно записать сле- дующее соотношение; а -= 1М г. (12-82) Здесь (щ) — доктор скоростей образования реагентов в сложной 373
реакции (12-83) ar — вектор скоростей стадий реакции rt Г2 Га (12-84) Например, для реакция (12—79) можно получить -«11 rtai О О О — ^sa Л8Й О (12-85) откуда следует, что * О1 = — HnTlt Фа = ИлП ЛиГа — ш9 — ^яаГд, (1)а = fyar<j (12—86) С использованием понятия скорости стадии суммарный тепло- вой эффект сложной химической реакции может быть выражен как Qr = S (12—87) где gj — тепловой аффект j-й стадии, отнесенный к 1 лоль продук- та реакции этой стадии; ni} — стехиометрический коэффициент образующегося на /-Й стадии продукта реакции; s — общее число стадий сложной реакции. Воспользовавшись векторным выражением для скоростей об- разования реагентов (12—82), систему уравнений (12—75) можно также представить в векторной форме vd (x)/dl = sb [JVj (г) (12-88) Суммарный тепловой эффект реакции Qr определяется выра- жением (12—87) Система уравнений (12—75) и (12—76) должна интегрировать- ся при начальных условиях, соответствующих составу и темпера- 374
туре исходной смеси на входе в реактор, т е* |<Н> - Г |w> = Г1”. (13-89) Программа расчета изотермического реактора вытеснения для произвольной, кинетики представлена на стр. 376 В программе используется стандартная процедура решения системы уравнений (12—65) по формулам Рунге—Кутта четвер- того порядна 14] с некоторыми изменениями, внесенными па ста- дии отладки (процедура Р 502). и процедура вычислен ня правых частей системы (процедура Р 1024) Формальными параметрами процедуры Р502 являются: X, V — начальные условия, EpS — точность интегрирования; РШМ — булевская переменная, значение которой при первом обращении к процедуре должно быть true, а при последующих — false; XF/W — конечное значение интервала интегрирования, YFIN — выходной параметр процедуры (массив значений концентраций). Интегрирование осуществляется с автоматическим выбором шага, поэтому XFIN по существу является интервалом вывода проме- жуточных решений Рис, S9. Понеивяпо нонцслщации реагентов в реакторе ндевлыюго ншесшямл Формальными параметрами процедуры Р1024 являются: X, Y — текущие значения аргумента и функции, при которых вы чпсляются правые части системы уравнений; N — число уравне- ний системы; Z — совокупность производных — выходной па- раметр процедуры. Результаты расчета изотермического реактора для реакции А™Р™В приведены па рпс 58. Исходные данные- ^ = 3, ffOUT = O,l, АГ =2, №$’==0,01, Х-0, £5=1.0, XZW = lt У = 0,5, /—1.0 <?- 1,0 \ 0,0 0,0\ -1.0 I, 1,0/ кх = 375
'i ’1 'ВВЙК< •INTEGER’N.M., иприт С1,Я,М)" OUTPUT(3,‘(E‘),N,M),, < ‘BEGIN’ •RSAL’X.XFIN.EPS.HS.HOUT.XOUT.SB.V., ’INTEGER*?»SS.» •BOOLEAN’PRIM-, * ARRAY* Y*2,YFIN(/'1 :N/) »QC/1 :N,1 :M/) ,KR(/11M/)., ‘PROCEDURE’PI024 (X, Y,N»Z). , «INTEGER*N., 1REAL’Xi, •ARRAY*Y.Z., 'BEGIN* ‘ ' ‘INTEGER’I,J., j * ARRAY*R(/11M/) ., ' • P0R»J:^*STEP4*UNTXL*M»DQ« •BEGIN* 'POR^i^’STEP’I’UNTlL'N’DO* •BEGIN* • IF*QC/I,<J7) »LT*O*THEN*R(/J/) tsR(/J/)*Y(/I/) x* ABS&C/I,J/)) • END* ,.| •EHD*.» ,1; ’ F OR • I: • STEP *1 * UNTIL * N • DO * •BEGIN* “ ' Z(/I/) x».0M 'FOR*J1 sH •STEP•1•UNTIL*M*DO*2(/I/)I=Z(/I/)+Q (Д,1/)хЙ(/1/)Х8ВЛ •END*1 ’BHD*.» •PROCEDURE‘P5O2(X,Y.N.^IPS,PRIM»XPIN» YFHO., •value*x»y.» •RRAL*X»EPS»XFIN.» 370
L4B1;'ll '(K+2.01 xH-XFIiJGT'O)*EQ* GPGT'O^THfiH’ •BEGIN’ H3»=HO OUT:=1,» И:=(Ш-Х)/2М tf'EKX.Yiaxd.Alim.» ина«&гкр(х,г,н»хг,¥2)м ЗШ,(Х2»У2,Н,ХЗ|П).| •?CR’Ks=1«sm’,1 ‘UNTIL'N'DO* •BEGIN* UuW ABS(Y1(/K/) ) ‘ LT' EPS*OH’ABb(Y3(/K/)> 'LT'EPS* THKIP ,WS( (Y1 (/K/)~Y3C/K/) ) /EPS) • ELSE*ABS( (Y1 (/k/)-yX/k/))/yj(/k/))., »IF*U*GT•EPS•THEN* *GOTO•LAB3 *jiiND*., X:=X3.r »IF * OtfM1 THEN * * GOTO* FIN. । *FOH»K:=1»STEP*1 *UNTIL»N*DO*YC/K/) :=Y3(/K/),, *if»ss=5*thehi •BEGIN* SISinO•। H:=2xli.» 'END* SSseSSH., *GOTO»LAB1., LAB3!Hz=O.5xH.. OUTz=O.t XI :=X2.r •FOH*KZ=1*STEP*1*UNTIL*N*DO*Y1 (/K/) :=Y2CA/).rf *G0T0»LAB2.» FIN: ’ FOR »K: »STEP * 11 UNTIL * N * DO * YFIK C/K/) i=Y3 C/k/) *END*M INPUT(1»XtXFIN»HOUT.EPS» Y) ., 877
•INTEGER «Л м • BOOLEAN ’PRIM., •ASSAY’ Y,YFXN., ’BEGIN1 *HEAL’X'1,X2,X3IH,UB| •INTEGER’K,!,OUT., ’ARRAY’Z,Y1(Y2»Y3C/1:N/)., •PROCEDURE’ STEP(X'Y'H,XH»YH)., ’llEAL’XjH.Xir.t ’ARRAY’ЛYH., ’BEGIN’ •INTEGER’J tK. f •ARRAY’W(/1 :N/),A(/1*5/).t A(/1/) i~A(/2/) :=A(/5/) : =0.5*11. t AC/3/):=A(/4/):=HB| ХН:=Х., ’ FOR* К ;=1 • STEP * 1 • UNTIL’!? ’ DO* YH( Л/) : =W СЛ/) У(Л/)., •FQR’Ji=1,2f3f4’D0’ •BEGIN’ pioa^cxHfW.N^)., XH:=X+AC/J/)., •FOR’K:=1’STEP *1’UNTIL’N*DO* ’BEGIN’ YH( Д/) i=YH(/K/)+AC/J+1/)xZ( A/V3m :/(A/):=Y(/K/)+AC/J/)*zCa/).» •END* •END* ’END’., SARl’J’IF’PHIM’THBf’ ’BEGIN’ Ht=XFIN-XB| ssI=o •END’’ELSE’lfi=HSt, OUT:=D.| 378
0W№(3» * (№) tX,XFIN,ROUT,EPS,Y^., INPUTS 1Q,KB,SBlV).t 01ГМ>ЖЗ|1 (E1) .q.KRtSB, V)., PRXMi^TRUE* M XOUTi=X.( A:OOT?PUT(3।1(E*),XOUT,Y).t XOUT:=XOUa4HOUT,t * IF»XOUT* LE* XPIK»THEK *P5O2(X, Y t И t EPS ,XOUT, YFIN)* ELBE*•GOTO'У INP,, *FOR*P:=;T’STEP*“11 UNTIL*N* DO* Y(/P/) :=YFlN(/P/),t prim*=*false*., X:=X0UT., *GOTO*A., PINP: *END* 'W 2. Решение двухточечных нраспых задач До сих пор рассматривались методы решения обыкновенных дифференциальных уравнений, когда -начальное условие задано только в одной точке хёх,. Решение таких уравнений обычно не вызывает особых затруднений В прикладных задачах приходится решать дифференциальные уравнения, для которых условия выбора единственного решения заданы в нескольких точках интервала определения интегральной кривой. Например, может оказаться, что дчя системы и уравне- ний первого порядка у' (г) = ф (а*, у), где у (ж) — вектор-столбец неизвестных функций, ф (ж, у) — заданная вектор-функция п Первые к условий заданы прия = ж(|, а остальные п—к усло- вии — прн х — Несмотря на наличие полного набора гранич- ных условий для всех уравнений, зга система уравнений уже но может быть решена прямым применением формул Эйлера или Рунге — Кутта. Задачи, в которых граничные условия для диффе- ренциальных уравнении заданы и двух точках, называются двух- точечными, краевыми задачами, К краевым задачам относятся так- же многоточечные краевые задачи, когда условия для неизвестных функций заданы в системе точек х = ас0, х — а\ и т. д„ и задачи с дифференциальными уравнениями порядка выше первого, в ко- торых условия на решение или его производные задаются в рез- 379
?' . . . , r L? * - 1 • ••. - 1 ': * Лй^нУк fo^iiak йнтер&айд йн'гофрирования. йаиримбр, для y£ab- ‘ нения второго порядка у" = j (х,у, у') граничные условия могут быть заданы в виде Г х д?0, У = й( % = д0, у’ = 4; X = ж0, у а; ’ х = ffj, у — b; х = хг, у' = В, х у1 = В; ; и т д Для решения краевых задач имеется широкий выбор методов, пригодных для использования на вычислительных машинах, к ко- торым относятся методы, основанные на сведении краевой зада- 'i чи к начальной [271, а также методы, основанные па конечно- разностном представлении исходных уравнений [33, 4.0]. Сведение к задаче Коши Пусть задано линейное дифферен- циальное уравнение N У" 4- р И у1 + q(x)y =f (z), (12—90) где р (ж), у (ж), / (я)— непрерывные функции. Требуется найти его решение, удовлетворяющее краевым ус- ловиям при х = я01 у = yQ; X = ®J, у = у„ Для решения уравнения (12—90) как начальной задачи необ- ходимо некоторым образом определить у' в точке х = Это зна- чение можно вычислить следующим образом. Запишем уравнение (12—90) в виде системы уравнений пер- вого порядка dy{dx = s, dzfdx + pfa)z + q{z)y = f (ж), и, задавшись некоторым значением dy (z0)/dz, проинтегрируем ее( например, по формулам Рупге — Кутта. В результате будет по- лучено значение у (хЭ, вообще говоря, по равное у^ Задаваясь другими значениями dy (xc)/<2z, в результате интегрирования системы будем получать соответствующие значения у (х^ По- скольку для большинства практических задач у (zj является не- прерывной функцией dyfxoi/dx, используя метод интерполиро- вания, можно определить такое значение dy (z^/dz, прп котором вычисленное значение у (z2) будет в пределах заданной ошиб- ки равно заданному значению yt. Решение системы, полученное при этом значении dy (z^/dz, и будет решением уравнения (12—90) Метод конечных разностей. Пусть имеется линейное диффе- ренциальное уравнение “ Р (х) у' + у (х) у / (аг), (12—91) для которого заданы граничные условия z = 0; у' ~ 4; х = 1; у' Разделим, интервал 0^ z^ 1 на п равных частей и заменим в уравнении (12—91) для каждой, из точек разбиения первую и зво
fitopyto ироИЭЬодпЫе сооТВатйтЗуЮЩиМЯ раЭйоМЯИЙ „• У^+i Vi „ ЭД+а ^У<+1 “г Vi % *-----h—. У< =------&------ (1 = 1)2,.. — h - 1/п. (12—<92) Тогда уравнение (12—91) для кал сдой из п — 1 точек можно за- писать в видо У> (1 — >‘Р М + *’? ГЛ — Уы (2 — Ар Г,)) + + И»-Л‘/(®|) (‘ = 1.2, (12—93) Соответственно для'граничных точек получим Ji-Уо^ ЬА, ря — pn-i = hB> (12—94) Уравнения (12—93) и (12—94) представляют собой снстаму линейных алгебраических уравнений, и ев решение может быть осуществлено любым из методов, рассмотренных в гл. 10. Таким образом, для заданной последовательности значений независимой переменной /г0, а:д, дгп в результате решения системы будет по- лучена таблица значений искомой функции у ~ / (я). Точность решения дифференциального уравнения конечно- разностным методом зависят от числа узловых точек, чем больше , точек, тем точнее решение, однако и тем больше объем вычисле- ний. На практике число узловых точек выбирается из условия постоянства решения в пределах заданной точности при различ- ных разбиениях интервала интегрирования. При решении линейных дифференциальных уравнений второ- го порядка система линейных алгебраических уравнений являет- ся тр ехд нагой ал ыюй. Для таких систем разработай специальный метод решения, называемый методом прогонки. Расчет профиля температур при нестационарной теплопроводности Электрод диаметром D с внешней стороны печи на расстоянии 1 м охлаждается водой до температуры Т — 300° С. Как изме- няется температура во длине стержня, если известно, что темпе- ратура ночи Т = 2б00° С, температура окружающей среды То = — 50° С; коэффициент теплопроводности К = 80—0,01 Т (ккал/ /.н. ч.°С). Распределение температуры по длине электрода можно вы- числить путем решения дифференциального уравнения теплового баланса, записанного для элементарного участка [411. Приток тепла внутрь элемента описывается уравнением Фурье и равен — KAdT/dx ккал/час. Поток тепла из элемента равен — КА КА Дх 4- jiDJi (Т — То) Дт ккал/час 381
СлёдоватеЛьно, ураЬнёвйе ТеиЛоёоГо баланса запишется (К, - аГ) g— а (-£.) - ~ (Т - Г.) - 0, (12-95) гдо Я — теплоноторн в окружающую среду, ккал/час °C; А — площадь поперечного сечения электрода, м*. Гр«7игчкые условия jc^O, !Г = 2000°С, ь = 1, Г = 30(РС, Для того чтобы решить уравнение (12—95) как начальную за- дачу, необходимо для одной пз границ, например для х = 1, оп- ределить значение dT/dx С этой целью была использована проце- дура метода деления oi резка новолам (стр. 197 ) и формулы (12—47), Значение производной dTIdx, соответствующее граничным условиям задачи с точностью до Iе С, равно 1944,21 Некоторые значения, полученные в результате решенпя уравнения (12—95), приведены ппже Г’С 1Ж,7 1808,7 1444,8 Н«,7 776tl 465,4 302,8 А м 0,0 0,1 0,3 0,5 0,7 0,9» 1,0 Расчет разделительной способности тарелки ректификационной колонны для диффузионной модели движения потока жидкости При движении жидкости по тарелке в ректификационной ко- лонне ее концентрация х изменяется от некоторого значения т0 на входе до значения иа выходе'. Изменение состава жидкости происходит аа счет взаимодействия с паровым потоком, поступаю- щим на тарелку в количестве Е, и эффекта продольного переме- шивания, учитываемого коэффициентом турбулентной диффузии De (рис 59) Если положить, что локальный кпд Мерфри — Bov = (У - Ум)/(У* — Ум) постоянная величина, а в пределах одной тарелки равновесие описывается уравнением у* = то: — 6, то уравнение для кон- It ——- Ltl'~-W> SZ Hue 59 Диф Jyuacjuunn мод ед л дпяэдлии потока nn тлредко 382
1 цснтрзции Компонента и жидкости запишете и в виде [111 “ да — да — т L Е°у(х - °’ где Ре — UzJDe — критерий Пекло, « = z/И — доля площади сечения тарелки; 5 — сечение потока, U — L/S — скорость жид- костного потока. Если для я* воспользоваться выражением _______У/Д 1 + (1 — a) У/а ' то окончательно дифференциальное уравнение запишется как ТГ да “ да — т ~ Е°уХ = ^т1Г Eov i + • (12^-96) где а — коэффициент относительной летучести Граничные условия: о = 0, Lxitl — Lzj (0) — Eov Д^!0) . »= С tF = °- (12—97) Для заданных условии составим программу расчета профиля концентрации жидкости по длине тарелки. Пусть число узловых точек интегрирования равно п -г 1. Тогда для уравнения (12—96) и граничных условий (12—97) мож- но записать трехдиагональпую систему алгебраических урав- нений вида / г . & \ ^av . л г Хй “I J-----+ 0 “ /1,1 с, V \ /2 + РеЛ \ . 1 „ РсЛа ”* h ДЦ РйЛз j . Xi рёЛа — Л, (12-98 -г / 1 । 1 I7 \ , /2 + РеЛ\, 1 Рс/|1 + Л т&Оу L j Яп-Ц РеЛз J 4 «Л реЛ* — лт О— Тп-! р zn — О, где К = тЯОу~ t t t uv L i-[ (1 — a)y/a Программа, приведен пая тпке, состоит из процедуры решения трехдиагонадьнон системы уравнений и группы операторов для вычисления коэффициентов системы (12—9S) После ввода ис- ходных данных в операторе цикла по / рассчитываются коэффи- циенты системы для данного раз биения ц производится обращу З&З
’* АIА * ’ 1 ’ г\ ч' , , .* 1 г и' , ' .!»’*.'.•* BEGIN* ’INTEGER*»-, INPUTS ,N)., ’BEGIN* ; •INJJQGbR’X.f , •Ш>% V»XjPB,n,AliEA,Y, A1 *B1.1 ?ARRAY’ A,B,C,D(/1 <NH/).f 1PROC EDURS * C ODIA(N,A, В, C, D)., ’ VALUE’», A,Bt0«, ’ШВЙЙ’йм 1arhay’a;BjC»d«। ’BEGIN' ’HSAL’P. t ’INTEGER'I., P:=B(/V)»t ’ FOR ’ I is2 * STEP 4»U2JTIL ’ N' DO* ’BEGIN* в C/1-Vh«c(/M /)/!>., Р:«В(Л/)-А(ДИ/))гв(/1-.1/)м D(/I/):=CD(/I/)-A(/I-V)xD(/I-V))ZP *m*., *FOH’I^N«1’STEP*-1 »imib4’D0’D(/I/):sD(/I/)-B(/I/> - XD(ZUV) W., INPUTS »B.b.V,PE, ALTA, * 0UTPUTO. ’ CB*) ,C,I1,V,PE,AI1PA,Y, A1 ,B1) ,, Н:=И/1Ь, 'FOR’IzH’STEP’V WTIL’NH’DO* ’BEGIN* АС/I/) x=rlP’b/N*THElf* Cl/(PEW** 2)+lAr-ExV/L)»ELSB*- ‘. 1/H.i B(/I/) !г’1Р*1=И »№<’ (L+E/a) ’EGSD”IF* la/N-H ‘THEN’ 2*PE#B)/(PEJtlP«2) ’ELSEM/H. f CC/I/) *!ПГЕЯ’-Е/И’ЕЕ8Е*1/(РЕхПХХ2)., 384
D(/I/) »THEN«0•ELSE ’-(ExV/L* Y/ALFA/0+ (1-AEFA) XY/ALFA) ) ’END*., »IF’KEYC2}»THEH’OUTPUTS, ’ (E«) tA,BfC,D). t COpXA(b+1tA,B,C»D)M »FOR*I1=1(N+1 ,N/'lO*STEP*N/1O»UNTIL»N*DO»OUTP[ITGt’(S*)> »жэ» *Ж0‘ ни а к процедуре CODIA. Решение располагается на месте столб- ца правых частой системы Пример решения уравнения (12—96) для различного числа узловых точек представлен в табл. 23. Исходные данные* В = 0,5; L — 15; а = 5, m = 1; V — 20; 0,5; = 0,6, Ро — 2. Таблица 23 Концентрация жидкости и, х моль/шнь ш Ю И ИХ) SCO 9ОТ 0,0 0,57639 0,57586 0,57581 0,57576 0,57575 0,1 0,57638 0,54777 0,54445 0,54181 0,54150 0.2 0,54095 0,51583 0,51290 0.51057 0,51028 0,3 0,50935 0,48726 0,48467 0,48260 0,48233 00 0,48142 0,46193 0,45964 0,45779 0,45754 0,5 0,45704 0,43981 0,43767 0,43611 0,43587 0,6 0,43618 0,42091 0,41909 0,41761 0,41738 0,7 0,41889 0,40539 0,40377 0,40244 0,40222 0,3 0,40543 0,39350 0,39205 0,39089 0,39068 0,9 0,39578 0,38565 0,38443 0,39341 0,38322 1,0 0,39069 0,38248 0,38150 0,39068 0,38051 13 В В Кпфзроя и др
Глава XIII ПРОГРАММЫ РЕШЕНИЯ НЕКОТОРЫХ ЗАДАЧ ХИМИЧЕСКОЙ ТЕХНОЛОГИИ 1. Задачи оптимизации Математическая формулировка задач оптимизации часто может быть представлена как задача отыскания наибольшего или наи- меньшего значения функции иесколышх переменных: (®п ъ,..жп), (13—1) где функция R является количественной оценкой представляю- щего интерес качества объекта оптимизации. В настоящее время для решения подобных задач разработано довольно много методов [1], в основном ориентированных на при- менение средств вычислительной техники, некоторые из которых рассматриваются ниже, В приведенных программах реализует- ся задача минимизации критерия оптимальности, представля- ющего собой себестоимость продукта Р в реакции скорости стадии которой определяются выражениями Г1 ~ ~ Ajoo exp С a t ^2 — ?Г1^А = ОХР ^д» (13 3) и погорая проводится в непрерывном реакторе смешения. Для этого случая себестоимость продукта Pf исчисляемая с учетом затрат на сырье н амортизацию реактора, представляется выражением Л 1 [1 + T^1 + M) -A.L V , (13—4) где Сд1 — концентрация исходного реагента в сырье, подаваемом н реактор; — амортизационные отчисления на единицу объема реактора; £д — стоимость исходного сырья; т — среднее время пребывания реагентов в реакторе, 380
Мпннмнвацпя выражения (13—4) производятся выбором оп- тимальных значений температуры в реакторе Т и времени пребы- вания реагентов т Прн использовании приведенных программ для решения дру- гих задач необходимо включать в программу расчет значения соответствующего критерия оптимальности, оформленный, в виде процедуры-функции, а также необходимое число величин, опре- деляющих значение критерия, В приведенных примерах расчета использовались следующие числовые данные: - ехр ^6,72 — —^ , SA - 100; - 1,0 = ехр ( 13,45 - , 5V = 200, Метод сканирования заключается в последовательном вычис- ления критерия оптимальности в ряде точек, принадлежащих области изменения независимых переменных, и нахождении среди этих точек такой, в которой критерий оптимальности имеет наи- меньшее (наибольшее) значокие. Основным достоинством этого метода является то, что прн его использовании с достаточно малым шагом изменения по каждой нв переменных гарантируется отыскание глобального оптимума. К недостаткам метода относился необходимость вычисления критерия для большого числа точек, Последнее обстоятельство существенно ограничивает возможности использования метода сканирования Практически этим методом могут решаться за- дачи, для которых число независимых переменных пе превышает 2—3, кроме того, расчет одного значения критерия не требует большого объема вычислений Программа, приведенная ид стр, 389, составлена для задач произ- вольной размерности. Выбор точек, в которых производится рас- чет значений критерия оптимальности, производится последова- тельным ивмоненлем ио каждой из переменных до тех пор, пока не будет перекрыта вся исследуемая область. Границы области изменения неремсяпьтх задаются ио каждой иа пор ем с иных в от- дельности указанием се минимального и максимального значений в массивах XN и ХК Пример решения задачи минимизации критерия (13—4) пред- ставлен я табл. 24 (см. сгр, 393), Симплексный метод является одним из эффективных методов решения задач оптимизации высокой размерности Алгоритм этого метода основан па использовании некоторых свойств про- стейших многогранников «-мерного пространства симплексов.
Под симплексом и п-мерном пространстве понимается многогран- ник, имеющий п -Ь 1 вершин, каждая нз которых определяется пересечением п гиперплоскостей данного пространства. Примером симплекса в двумерном пространстве, т. е на плоскости, является треугольник. В трехмерном пространстве симплексом является любая четырехгранная пирамида, имеющая четыре вершины, об- разованные пересечением трех плоскостей — граней. Алгоритм симплексного метода заключается в том, что в вер- шинах симплекса, построенного в области измен сипя независимых переменных, вычисляются значения оптимизируемой функции и находится вершкнц с наихудшим значением (наибольшим в слу- чае поиска минимума). Далее производится преобразование симплекса, в процессе которого вершина с наихудшим значением исключается п заме- няется вершиной, расположенной по другую сторону грани, ле- жащей против исключаемой вершины. В полученном таким образом новом симплексе вновь отыскивается вершила с наихудшим значе- нием оптимизируемой функции, после чего строится новый симплекс и т д. При достаточно малых размерах симплексов этот метод приво- дит к перемещению симплекса л область оптимума, причем тра- ектория перемещения симплекса оказывается весьма близкой к направлению напскорейшего изменения оптимизируемой функ- ции. Метод окончания поиска может определяться по зациклива- нию, которое проявляется в том, что левая вершила симплекса опять оказывается панхудшеЙ и подлежит исключению Для расчета координат повой вершины симплекса использует- ся формула Т14-1 - (1+I13-5) где — координаты исключаемой вершины, — координаты новой вершины Программа, реализующая симплексный метод, представлена на стр. 300. В программе используется процедура ЯМ4Х, с по- мощью которой производятся поиск вершив ы с наихудшим злаче- нном Пример расчета представлен в табл. 24 (см, стр. 393), Метод случайного поиена основан па ирныеиении последова- тельностей случайных чисел, с помощью которых в области изме- нения независимых переменных производится выборка случай- ных точек или определение случайных направлений. Ниже рас- сматривается один из разновидностей случайного поиска — метод случайных направлений с обратным шагом 388
’BEGIN* »INTEGER* N,, INPUTO.N)., 'BEGIN* *RBAL»A1 »A2»E1 ,S2,SA, SV,XA., ' ARRAY' XN, XX, XQFT, DELX,X( /1 :N/) . , •aEAIi’BOIT.YiS.» .'INTEGER*!,J. f »REAl? »PROCEDDRE'F(X) » ’ARRAY’X.i •BEGIN* •REAL'KI ,K2.» K1 :=EX?(A1-El/X(/1/))., K2i =EXP(A2-E2/X(/1/))., F:=1/K1x(1+X(/2/)4K1+K2)MSA/X(/2/)+SV/XA) •ИГО'., niFUT (1, XN, XK, DM, A1, A2, El, £2»s A, S VIW ., OUTPUTS.' (В») ,X»,XK,DELX,A1 ,A2,E1 ,E2,SA,SV»XA)., »FOH»I:=1'STEP»1’DNTIL*N’DO»X(/I/)isXQPT(/I/):^XN(/I/). R0PT:=F(X)., M2iF0R*S x=XN( /1 /) • STEP’DELX(/V) »WTIL’XKf/l/) »DO1 'BEGIN* X(/'l/) :=S,r ’IP’^OPT'GT^’THEN» * begin* •FOR»I«STEP’1‘UNTIL’N'DO »X0FT(/I/):=X(/I/)., ROPTx=Y *W ’END».» J:=2., M1 ’FOR’ I !=!’ STEP11' UNTIL*N’ DO' •BEGIN* , X(A/):~XC/I/)+DELX(/I/),, *IF’X(/I/)*GT'XK(/I/)'THEN' •BEGIN* 383
X/I/)»=XN(/17).t •IF* I ’LT’N*THEN’ *GOTO*MT * ELSE* ’GOTO’MJ 'END*'ELSE''GOTO'MS W ,, M3:OUTPUT(3,*(E*),XOPT,ROPT) ’END* *END* Для реализации алгоритмов случайного поиска необходимо иметь достаточно большую последовательность случайных чисел Наиболее простым способом получения случайных чисел являет- ся их выборка из специальных таблиц! которые при расчетах на ЦВМ должны предварительно вводиться в ЗУ машины Недо- статок данного метода' состоит в том, что память вычислительной -машины при атом занимается информацией, которая практически используется однократно. Другим способом получения последовательностей случайных чисел является использование специальных датчиков случайных чисел, которые могут быть реализованы и програшшым спосо- бом [42]. Этот способ получил наибольшее распространение при ре- шении на ЦВМ задач, в которых используются случайные числа или их последовательности. В методе случайных направлений с обратным шагом поиск ведется шаговым Способом с расчетом критерия оптимальности на каждом шаге. Если и результате очередного шага получается луч- шее значение критерия, то шаг считается удачным и следующий шаг выполняется из найденной, точки. Если же шаг из некоторой точки оказывается неудачны»!, го следующий шаг вновь произ- водится из той же точки, но в обратном направлении. В качестве критерия окончания поиска производится подсчет н&удачпых шагов в обратном направлении Если число таких ша- гов превысит некоторую заданную величину, обычно выбираемую кратной размерности решаемой задачи, то поиск прекращается и последнее наилучшее значение критерия принимается за опти- мальное. Для получения случайных направлении используется после- довательность случайных чисел (JI} равномерно распределенная иа числовом интервале (*—&, Ъ), Компоненты вектора случайных нап равлепий в п-мерпоы пространстве прн этом определяются по выборке п случайных чисел в соответствии с формулой
•введи • '•>: ’imGKHN., тиягю.Ю., "< •BSGIN' ’INTEGER' I».» - ' •HKALiR0PT,SUKiY»A1iA2»B1»e2,SAiSV,XAiQ,S. > ’ ARRAY’ XN,Xrm»XMlNUCL(/1 :N/) ,R(/1 (-‘ ) * i । •REAL” PROC LDUfilS’l (Y)., , -?• 'ARRAY*Y-t ” ‘.j; ’BEGIN» INTEGER«J., REAL»K1lK2.t »А1Ш4Г’Х(/1Ш/)., ’F0R»Ji=11 STEP’“11 CI'JTIL’I'I’E>0’X(/J/) : _XWIN(/J/)*(X?nAX( K1 S=EXP(A1-E1A(/1/)) .» K2!-EXPCA2-E?/X(/1/)).» F s =1.0/K1 x 0+X( /2/) * (K'l +K2)) x ( 8Л/Х(/?/) *ЗУ/ХА) £ 'BND’F., »PStoCbWW’RMAX(RtF|lr)., »IKTEGSI»M,NM •ARRAY‘R., ' BEGIN» DTEEGSHI,, ’REAL’b., S!xR(/1/)., ' FOR ’ I! =2' STEP 4 ’ UNTIL»Д' JDO» ’BHGUP •I₽»R(/I/)»GT*b»THrjK’ •BEGIN» M;=I ’ENO» 391
»EKD»RMAXM INPUT(1 ,.A1 tA2,E1 ,^rSA»SVtXA»lPSrXN,XMIH.XMAX) * f OUTPUT^,»(S' ) t A1, AS,El .Ea.SAtSVtXA.EPS.XX.XMIN.W’AX) M INPUT (1»SUM).t OUTPUTGi’CS'hSUbOM »Р0й»11^Т»5Т>»Т»иМТ1Ь»К-ь1»^ »F084i=1’STEP»1/UNTlL»N» DO’XCA,J/)t=»lF»I»J'TWXN(/J/)*SUM»ELSE»XN(/J/)*i ’ FOR ’ I: -1 • STEP1T UNTIL1Я+1»DO» * BEGIN» •?OR»Jid ’STEP»'! 'UNTIL'NW:=X(/I,J/), t R(/I/)s-F(KIL) ’TO»., МЪ-D., ST iRMAX(a»M»N+-OM * IP * MaM1' ТгШГ •' GOTO • PUT.» ’ FOR' J: -11ЬТ EP 11 UNTIL N ’ DO» •BEGIN’ SUM:=O,O.f •FOR’Kjzt't’STKP’I’UNTlL’N+'t'DO’SUMisSUM+XCA^J/)., X(/M, J/) »«HIL(/J/) :=2<O/NXSUM-('I. O*2/N)xX(Д!, J/) 'END*J.» *IF*KET(1)’THEN* ’BlfilN' ouTPUTOt’Ci’JiM)-» OUTPUTCa.'CE'MC/M/)) »2SD»KW(l).t ’GOTO*ST.* FINx•FOR*Ii=1’STEP*1'UNTIL»N+1»DO*R(/I/),f !ШАХ(Я,М,1М)м ’FOJl'IxH *STEP*1'UNTIL'N'DO<4IL(/I/) :=Ж1Ш(/1/)+(ХМАХ(/ I/)-XMIN(/I/> X(/М, I/) . , OUTPUT ( 3, *( E’ )i 4TL»-R ( /Ы/) ) •END’ ’ •END» 382
Программа, реализующая метод случайных поправлений с об- ратным шагом, представлена па стр. 394. В ней используется процедура 8ТОСН' которая при обращении вырабатывает слу- чайный вектор ALFA Величина шага задается по каждой нз переменных в исходной информации программы массивом Н. Пример расчета представлен в табл 24, TefijiiiTfG 24 Метсд ^opt TGpt ^opi Сканирование 746,735 0,33 406,0 Симплексный 746,7475 0,3235 405,85 Случайный поиск 746,9145 0,308 408,093 2. Математическая модель реактора идеального смешения Математическое описание реактора этого типа представляется шстемоЙ дифференциальных уравнений, определяющей, измене- ние концентраций реагентов п температуры в зоне реакции во времени = —«O-hVrWi (/- 1, 2,.. , щ), /i-г , (13-7) VrC„ = иС» - П + + № (Т* ~ де Уг — объем реагирующей смеси в реакторе; а^’ “ концентрации t-ro компоислта в исходной смеси и в зоне реакции; JW,Тх — температуры исходной смеси и теплоносителя; t — время. Остальные обозначения соответствуют принятым, для уравнений (12-75) и (12-76) При использовании системы уравнений (13—7) для описания реакторных процессов предполагаются справедливыми следующие допущения" реагирующая смесь идеально перемешана в зопо реакции, т. е. температура и концентрации компонентов одинаковы во всех точках зоны; теплоемкость реагирующей смеси ие изменяется в процессе химической реакции, 393
г- - • 1 * BEGIN* »INTEGER'NtZ.» IKPUT(1|N>Z).» 'BEGIN' * INTEGER' 11J • > 'RMb'A'l»A2lLbE2,SA>SVIXAlR0PT>Y,BIG »ARRAY'XtXN,XOPT,ALFA»H(/1iN/)., 'REAL' 'PROCEDURE'F(X)., •ARRAX'X., 'BEGIN* 'REAL'KItK2., K1:-EXP ( A1-B1/X ( /1 /) ). t K2;-EXP(A2-E2/X(/1/)j,, FsalAl4l+X(/2/)x(Kq+E2))x(SVX(/2/)+SV/XA) 'END'.» 'PROCEDURE' bTOCH(K,BIG»X).» •INTEGER’S., 'l 'HSAL*BIGO 'ARRAV'X., 'BEGIN' »imx3ia'ifzo 'REAL'S., 'IP'BIGsO'THEN'BlGis.314159265., St^.O., ' FOR' I: =1' STEP' 11WPIL* К' DO * 'BEGIN' Ь bTARTlBIG:=(1.25)>cxl7-O*BIG.l Z:=EN1’IER(BIG)M ' IF ’ 0 ’ THEN ” GOTO' ST ART., BIG:aBIG-Z,, S;=S+X(/I/)^2 'EKD*.t S:=SQl?T(B)., 'F0P'I:-x1*STEP»1’UNTIIi»K*D0’X(/I/)^X(A/)/S 894
•ИФ’ЗТООВ., IKPUT(1,XN,H,BIG>A'lSA2,E1lE2kSA,SVlXA).l OUrmO,1 (S’) ,XK,BIG,H,A1 ,А2,Я1 rE2,SA,SV,XA) ., •FQR'I »BTEP»1' WTIL*N»DO,X(/I/) t^XOPTC/I/) t=XK r0PT:-F(X),, ST IJ1—О f , SIH iSTOCH(N»BIGtALFA)»» ।IF• WC1) ’THEN’OUTPUTS,’ (S' ) , ALFA)., 'FOR’I:=1 »STEP"1 ’UNTIL’N'DO’XC/I/) l=X(/I/) + rf(/I/) xALFA(/I/)., Y:=F(X)M ’Г?’I1GT’ROPT’THIN* »BEGIN* • FOR»11=1 ’ STEP11 * UNTIL 1 К DO * X ( /I/) 1 =X0PT ( /I/) - ALFA(/I/)•> Y:=F(X),, 1 IF'VLT'ROFT'THEN* »GCT0,ST2.I ’FOR*I iH'STEP'l’UKTIL'N’DO’XC/I/JAXOFTC/I/) ., J;=J+1M • * IFrJ=/2xZ* THEN * 1 GOTO*ST1»ELSE*»GOTO1 FIN, •END»., STSrROPTtsY., ’FOR*Is=-1’STEPH * UNTIL?N * DO1 XQPT(/I/) , 'GOTO’ST., FINIOUTPUT C 3,1(E’)tX0₽T,ROPT) •END* • END* теплосъем осуществляется теплоносителем, температура ко- торого постоянна; тепловой емкостью материала, па которого изготовлен реак- тор, можпо пренебречь по сравнению с тепловой емкостью реаги- рующей массы, находящейся в реакторе, количество реагирующей смеси на выходе реактора равно ко- личеству исходной смеси, подаваемой в реактор, т. е. при приня- том способе выражения величины потока у, и ие изменяется в про- цессе реакции Совместное решение системы уравнений (13—7) с учетом этих допущений определяет поведение реактора идеального смешения в нестационарных режимах Для того чтобы получить систему Э&
уравнений описывающую стационарные режимы работы реактора, достаточно в системе уравнений (13—7) положить производные по времени равными нулю, в результате чего получим систему конечных уравнений. »(®1Й -®t)+V,w,- 0 ((=1,2....т), wCpfr1"1 - Г) + VrQ, + krF(Tx - Т) = 0, (13-8) решение которой позволяет найти значения концентраций реа- гентов и температуры в реакторе прп заданных значениях вход- ных концентрации температуры исходной смеси TW и тем- пературы теплоносителя С испо львов анион векторного соот- ношения (12—82) (стр. 373) можно представить в векторной форме систему уравнений (13—7), которая запишется как пгт =и «®и>) - WI"! Ю. (13~7а) плп для стационарных условий v {(®m) - (as)} + Vr [X] (»•) = 0 (13-9) В общем случае зависимость скоростей стадий сложной реак- ции от концентраций реагентов и температуры нелинейна. По этой причине системы уравнений математического описания реак- тора идеального смешения также являются нелинейными, и их решение, как правило, требует применения соответствующих численных методов. Программа решения системы уравнений (13—9) произвольной размерности для изотермического реактора идеального смешения прн заданных значениях исходных концентраций приведена па стр 399. Пусть химическое превращение в реакторе объемом Уг ха- рактеризуется следующей группой реакций С *» к* h Р^2^->37< (13—10) Матрица стехиометрических имеет внд коэффициентов реакций (13—10) (13—11) Ж
Поскольку скорости стадий реакции при известных констан- тах скоростей реакции можно записать как Гъ = 1с3Се> (13—12) гй = l^Cct Гд = то для определения скоростей образования реагентов в сложной реакцпиможно воспользоваться соотношениями (12—82) — (12—85) 101 — — — ^1^'Л^'В — ^лСрС}}1, = — '— 2ЛдС^>Сш Wfi = А*3Сс — ЛцСд, (13—13) “Ь 1^й = ЛдСрСд Концентрации реагентов на выходе реактора молото опреде- лить в результате решения системны уравнений ft (ty — “| Vr1Pt ^вых^аих 1 — ® (f = 1, 2t , ,6), (13 14) Для решения системы (13т^*14) п программе (см стр 399) исполь- зуется метод нале ко рейшего спуска [1] Распеты выполняются следующим образом. Исходя нз вектора начальных значений концентраций реагентов (массив CI), вычис- ляются скорости образован ня реагентов по уравнениям (13—13) и значения /4 (С) по уравнениям (13—14), Расчеты по формулам (13—13) оформлены в виде процедуры WRR, Затем в цикле по I вычисляется матрица частных производных £, / — 1, 2, 6 (массив Ж) п транспопирозаннйя матрица I'F7 (массив ТУТ), С этой целью каждой иа переменных дается приращение, равное DELC. Расчет новых значений концентраций, производится по урав- нению €иш = С(^ — h^U(C^), (13-15) где С — вектор концентраций, к — помер итерация, у [7 — гра- диент целевой функции, равный в »(С„С4, , С<>)= СЛ, ,<?„)’ (13-16) 1=1 и определяемый но формуле Vtf (CW>)= ^(C^/fC*»), h — шаг спуска по выбранному направлению, равный Л - МЗ-17\ т/<«, ‘ ' В программе для выполнения матричных операций исполь- зуются процедуры MULT (процедура умножения матриц) и MULT У (процедура умножении матрицы па вектор) ЗЭ7
'..py-’’-|l*<'чСс*!л-. !т' После того как определен niar h по уравнению (13—17), он- . редолнются градиент долевой функции по уравнению (13—16) л новые значения концентраций по уравнению (13—15) — массив F< Если два последующих приближении отличаются на величину, превышающую EPS, то после коррекции значений массива С расчет повторяется с метки ST. Для реакции (13—10) результаты расчета приведены в табл 25 Исходные данные: матрица стехиометрических коэффициентов (13—11) — массив At VH — 2; V — 1; К — 6, Л/ = 4 (число k стадий реакции), KR (1,0 2,0 3,0 4,0); EpS = 0,01 DELC = = 0,001 Таблица 25 Новцешрзции Реагенты А л С Р в Р Ня входе Не выходе Скорость образо- вания 0,5 0,32521 -0,10514 0,5 0,32330 - 0,42016 0 0,055805 0,032254 0 0,017955 0,09745345 0 0,032973 0,012988 0 0,002271 0,002252 3, Программа расчета физико-химических свойств углеводородных смесей Одним на уравнений, используемых для расчета физико-хими- ческих свойств смеси, является уравнение состояния Венедикта— Вебба —Рубина [11] Р- ЛТр -Ь - Ло - ^р5 + (bRT - а) р» + + й«Р° +-^r(l + ТО1) ехр(— ТР2). (13—18) где Л0, Вй, Сй. а, &, с, а, у — коэффициенты, определяемые по уравнениям (3—33); Т — температура, "К; Р — давление, атнл; р — плотность, моль/л< Уравнение состояния (13—18) может быть использовано для расчета плотности смеси при известных значениях Р и Т системы Отмечается, что для приведенных температур Тг > 0,6 и плотно- стей р^>2 точность составляет величину порядка 1% как при расчете плотности жидкой, так и паровой фаз [43]. Помимо плотности уравнение (13—18) можно использовать для расчета энтальпии и теплоемкости углеводородных смесей. Для постоя иного состава энтальпия смеси является функцией температуры и давления и может быть представлена как л я (Л ₽)<= (Д 0)- HBU\ F). (13-19) t-=J 398
' BEG-IK’ •IHTEGER’K.M., ’REAL’DELO,EPS., INPUT(1,K,M,BELO,EPB)., 0UTPUT(3»,(I’).K,M),| OUTPUTG,' (E*) |DELC»EPS)*» ’BEGIN» •iM’ESLH'IfJ.» tREAIi’V’|VRiS»TAU>Hm ‘ARHAY‘CIIOIWR,F34(/1 |K/)iA(/1tK,1iM/)tKR(/1-.M/) гР,М Т(/ИК,И jK/)., ’PROCEDUaE'&WCK.M^L^B.G)., •INTEGER'K.MjL., »ШАГА,В1СМ ’BEGIN’ ‘INTEGER* I, J,ZM »POR‘l;«1*STi®‘1’UN2?IL»K’X’ ’ГСП*J:=1'5TE?’-|<ШГТ1Ь»1 ’DO* ’BEGIN’ •FOR’Z:^»STEP’1’dlTTIL’MTbX}*C(/I,J/)i=C(/IlJ/)+A(/Il »END* •END* -» ’PROCJ5IXJRE'biULTP(K|Mf A»B,C) 11 ЧНЖЕЯ’К»Мм ’ARRAY'A,B,C., •BEGIN* ‘INTEGER*I,J., ’FOR111=1 * STEP*1 *UNTIL*K'DO* ’BEGIN’ C(/I/)! = .0o *FOR*,r;=1f$TEP,1»UNTIb*MTDO’C(/I/)^C(/I/)+A(/IlJ/)x ’END'
•END’., ’ PROC bWRE * JHR(K , 0, Л ,KR, J) •, »lN-rS3ER»KtK-t »ЛНКАУ’С,Л,КН, ‘i.t ’BEGIN* ’INTEGER’I,J.» ’AH2AI’R(/1:«/)-, ’F0R‘J:-1 ’STSP’1’U»rXL’?;»ao» ’BEGIN* ' FOR ’Ij«1 ’ STEP11 ’ UNTIL’ К ’ DO1 ’BEGIN’ »IFTA(/I,J/)’L^O’THEa»rf(/J/)i=S(/J/)*< </I/)*-*ABS(A( /I»J/)) ' 3,’W’ ’.END’ • t KULTP(K,\ ( l,M) ’ItfD' ., INPUTS .VgVHtCI.KR,A)., OUTPUT3» *(H’) »V»VR).» 0UTPUT(3,‘(T»),’(:3.:B‘)).» OUTPUT(3,*(E’)ttltKR»A)-» TAD i*V?./V., »FOfi’Ix=^’STEP»1’UNTlI>’K’DO»C(/I/) ?Я(Щ/Т/)М ST: Ж R ( К, ?fj»C, A, KR, ДЙ ) *, «IF’K2X(-1} «Tills;’ OUTPUT(3, ’ (Е»),’.ио., » ’FOR’I.-=1’STEF,-1’UJ;TlL’K’DO’F(/I/);=CI(/I/)+TAUx^i(/I/) »FOR’I:=1 * STEP * 1'UNTIL’k’DO’ ’BEGIN» C(/I/) ;jsC(/I/)+DEIO . > V/RR(K»W»O»A|KR|?/R)< t ’FOR* Jits'!1 STEP И'UNTIL* K* DO* f ’BEGIN’ П (/J/) »*C’I(/J/)+TAUxjffl(/J/)-C(/J/).. 400
где мм-:епталышя идеальной газовой смеси при пуле- <=я вом давлении, я, — состав, моль/моль, Н° (Т, Р) — поправка и а иепзобаричиость системы. Величины могут быть определены по экспериментальным данным или исходи ив свойств идеальных смесей [7]. Для расчета величины Н можно воспользоваться выражением [44] № ~ (Л0Я7‘ - 2Л0 - 4С0/Т») р -|- 0,5 (2ЬЯГ - За) р8 4- , + 1,2аара -|- (cp’/P) |3(1-»хр(-Тр?) _ (0 5 _ TpJ) вхр (_ Tp!)J, (13-20) Точность расчета по уравнению (13—20) для > 0,6 и р < 2 составляет величину порядка 20%. Теплоемкость смеси можно представить как jV С (т, Р) = 2 (Т, 0) - С° (Т, Р), (13-21) <=i w где S Ср (^« 0)я» “* теплоемкость идеальной газовой системы; frat CD (Т, Р) — поправка на пеизобаричность системы Для расчета величины можно воспользоваться выражения- | ми, представленным я в литературе [71, а величины CD (Т, Р) I определить по соотношениям [441 С0 - А(В - С + Я, (13-22) где А = Т [Я -|. В<№ Ц- 2CQP/713 + ^р2 — (гср2/?15) х X (14-ТР*)ехр(—тр2)]2, > В = 7?Т4-2р(Я0ЯТ-Л-С1)/7,“)4-Зр2(&/?Т-а)4- h баар5 + (ср2/Т2) (з -ь Згр® + 2тар*) ехр (— ТР2)> С = (бСор/73 Ц- бс/уТ*) (ехр (— ур2) — 1)4- (Зср2/?3) ехр (“ ТРВ)- । ’ Точность расчета по уравнениям (13—22) лежит в пределах 30%, ' Программа расчета по уравнениям (13—18), (13—20), (13—22) приведена па стр. 404 Исходной информацией являются: К — ко- личество компонентов смеси; — количество точек t Т — Р; KOEF — массив коэффициентов для вычисления коэффициентов 40т В<н Со, а, Ьу ct а, у (для каждого компонента вводится восемь коэффициентов, таблицы значений которых приведены в литерату- ре [11,121); X — состав смеси; Я — массив энтальпии чистых ком- > понентов; С — теплоемкости чистых компонентов; Р — дрвлекяе, atHMj Т — температура, сС, PHASE — параметр, значение кото- 401
роГо равно 0 при расчете свойств паровой фазы н больше едини- цы — при расчете свойств жидкой фазы. Программа выполняется следующим образом- Вводятся К, NEXP, KOEF, X, Я\ С (если вводятся нулевые значения племеп- тов массивов Я к С, то по программе рассчитываются только по- правки на неизобарячпость по энтальпии н теплоемкости). Расчет плотности по уравнению (13—18) оформлен в виде процедуры BWR и заключается в поиске наимепыпего и наибольшего корней для паровой и жидкой фаз соответственно. При известном значе- нии плотности расчет энтальпии и теплоемкости осуществляете я непосредственно по уравнениям (13—20), (13—22). На стр. 408 приведены результаты расчета для смеси метана 72% н пропана 28%. 4. Расчет парожиднастпого равновесии Одной нз важнейших задач, которые приходится решать при математическом моделировании любых процессов разделения сме- сей, в том число и процессов ректификации, является исследование н математическое описание условий равновесия в парожидкостных смесях. Простейшей формой описания условий равновесия в паро- жидкостной смеси является соотношение, вытекающее из закона Рауля Я = ~Х' или й , (13—23) Тг;₽? 3“Л где у — состав паровой фазы; х — состав жидкой фазы; Р° — упругость паров чистого компонента, являющаяся функцией тем- пературы; а — коэффициент относительной летучести. Парожидкостные системы, для которых справедливы соотно- шения (13—23), обычно называются идеальными Их характерной особенностью является то, что условия равновесия определяются только индивидуальными свойствами компонентов — упругостью паров чистых компонентов и внешним давлением, Температура си- стемы при этом определяется из соотношения, описывающего за- висимость давления паров чистых коулоиентов от температуры, т. е, при известном внешнем давлении задача сводится к решению системы уравнений к f (Г) = S - Р = 0, (13-24) i™i ИЛИ Jr 402
’ЙП)*., C(A/-)f-C(/I/)-DEDO *END*. , MUMJCKjK.KjW.WTjP)., BTOIffiPCK.K.F.r.n)., HixSJa.CU, 1FOR* I:=1»STEP'1 *UNTIL*К*DO1 ’BEGIN» St=S+F1 f/l/)xx2., H:-H+F(ZI/W1 (/I/) ’END*., MUIZTP(K,K,WT,F,F'l)., »IF»KEY(2)’THEN» ’BEGIN* оиттсз»,(1,)ити'итн)., OUTPUT □» * CB*) ,F,W,E4 ,H) ’ВШ*», Jt-o., •FOR* 11=и’STEP11 *ONTIL*К* DO* ’BEGIN* ?C/I/) »=ССЛ/)-НхПсЛ/)^ J»Э»IT* ABS(7(/I/)“0(/I/) ) * M * EPS* THEN»J»ELSE’ J+1 ’END* ’IF*Ja/O’TKEN* ’BEGIN* *FOR’I:=1*STEP*1*UNTIL*K*DO*CC/I/)i=*iF’F(/I/)*GT’O* THEN’Ff/I/)’ELSE’C(,/i/)/2.O. ( • IF*KEI(4) ’THEN*OUTPUTf 3, * (.E*) ,C) M ’GOTO*ST , ’END*., cu®puT(3f«a»),c,«i) ’END* SID* 403
•BEGIN* * INTEGER ’ К, NEX? , INPUT(1,’k,NEXP)., 1BEGIN' ’JiEAL*P,T»DENtTh., »АйШ'Х,Н,С(/1;К/)|К0ь?(/1Л|ив/),М/1:8/)., * INTEGER*и»РНл8Е», * РИОМЙХШЕ* DB’ffi ( X, ТК, Р t DFN ,P HASE) .» ’4EAL»P,TKtDEN.( <AHRAY>X.« •INTEGER»PHASE., •BEGIN* • REAL* №, DEL, DELW t FO AL, M , A2, АЗ»Л4., ' INTEGER*1 fZ,IDIEJT., •TF'lbl’THKR* •BEGIN* • FOR*11=1*STEP11 ’UNTIL*8'DO*AC/I/) 1=0., •FOR*It=l,3,8*DO»»FOR»Z *STEP*l’UNTIL'K'DO’At/I/)a =AC/I/)+X(/Z/)xS^l1(K0Hr(/2fI/))., * E03* 11 B4,5 ,o, 7’ SO • * FOR* Z 1 =1 * STEP* 1' UNTIL’ К * DO* Af/I/ ) :=AC/I/)+X(ZZ/)xK0I№(/Z,I/) x*Cl/3) ., *FOx4'Zixl’BTiSP’1,UimL*F’Db’A(/2/)tsA(/2/)+X(/Z/)XKO TT(/Zf2/).t •FCR*l:=1,3,8*DO*AC/I/)i=A(/I/)xx2., ’ FOfi'I U4,5,6,7' DO* AC/I/):=A(/I/)^3 •ЫЮ’., Л1:=.ЭВ2О5хТК», 1 А2«хЛ(/2/)ха1-А(/1/>А(/3/)/ТКхх2., лЗ*хЛ(/5/)ха1-Л(А/).| а<»^а(А/Уа(/7/)., •15?’ PHAGE* GT • 1 * THEN ’ ’ GOTO ’ 02., DELIAxHO.O., i - DEI/! - *1 • , Dls*lF’DliU4*GT' «0001 'THEN' ’FOR’PCALSasAlXDai+ASXDSNXX 2+ A3xDS£xx 3+A4 к DEN**6+A(/6/)xDEN**3 *(1+A(/8/)*DEN*X 2 404
) ХЕХР С-АС /а/) XDEH** 2) /ТК **2* WHILE' Р • GT' PC AL-DSL' DO' ’BEGIN* DEN taDEN+DKL, > DELMs=AB8(PCAL-P), , ' tP’KEI(T) ,THEN*OUTPVT<3»1 (E*) »DENtDM) *IF'DEL*GT*,0001‘THEN’ ’BEGIN* DEN:»DEN-DEL,, DEL :s «1х DEL, । *GOTO'D1 *53iD*.» 'GOTO*FIN., D2:DENtx40.0i> DEL t=»111 DEUdtslO.O.» D3 х’ТР'ВЕШ’ОТ* ,001 'THEN’ *POR'FCAL:»A1xDEN+A2*DENX*2 +A3XDENXX3+A4* DENxxS+A(/6/)xdENxX3x(1*A(/B/)>:DENxx2) x EXP(-A(/8/)xDEft’X*2)/TKx* S^HJLE’P'LT'PCZiL+DEL* DO* ’BEGIN' Ч- DSNtiDEN-DlSii.j DELMs^ABS(P-PCAL)., * IP * KEY(2)1 THEN * OUTPUT ( 3 ► ’ ( E1) i M t DELV ) ’END’.» * IF*DEL*GT*.001’THEN* ’BEGIN* DELjiHXDEL.t *GCTD*D3 ' END* .» PIN: ’bND* ’BEGIN* * I?EAL' GAM,A1 ,B1 ,C1, DC/JX.HX.HF.CP., I]iPUT(1,K0EP,AtB,C).» 405
OUTPUT(3,' CE’)>KOEFtX>H>O) OUTPUTS (»(T») tВ:В »BPAC+)Ч-) ЕФ )ФИ5И-Ж0-Х +)1Ь)М+)ИЧ-)£>СК+)И-)Х:ВСВО+)Й-)СТВ:вСМЕС+)й-);В+)11 -)OjBT+)P-)-+)J0-) :BBWR*))., CX!=HX:=.O.t 1FOR'U•STEP*1’UNTIL’К*ВО» »BEGIN» HXt=HX+X(/U/)xH(/U/)., CX:sCX+X(/U/)xC(/U/) •END»., ' FOR * U (=1 * STEP ’ 1 ’ UNTIL • NBXP»IX) * ’BEGIN* INPUT(1,P»T, PHASE)., OUTFUT(3.»(I’)|U)., OUTPUTC3»»(Е»)tPtT,PHASE)., *BK 1x1+273.16., WH(X,TK,P, DEN,PHASE) ., *IF*U=1 *THEN* * BEGIN* *IF’PHASE*GT*1 *THEN*OUTPUT(^,*(T:B(B:BtB:B: В:В:В:В:В:В:В:В?В;В1В:ВгВ:В?ВСВСН)И-)СТВА(В+)ад“)КО +)Й~) 1В+)ф-)Л+) ЗЫ-) *))*ELSE’OUTPUTS, * (T* ),*( ; В(ВхВ!В:В;В:В(В:В1В;В(В1В1В:В.‘В;В!ВтВСВО+)Й-)СГВА:В +)П") АРОВО+)Й-) :В+ )ф-)А+)&Ь)1)) •, 0итРПТ(4, ’ (т*), • (:/1/?В:В;В(В;В:В!БР:ВАТМ:Е;В:В:В:В; В(В:В!В:ВТ:ВО:ВС1В;В1В:В:В?ВП:ВМО+)ДЬ-)/+)Л-).*В;В:В! ВН:ВКА+)Л-)АО+)ЛЬ-):В:За:ВКА+)Л-)/МО)ДЬ-)хВО:ВС*)) •ШП)»м OUTPUTS,»JT*),*((/»)) ., - OUTPUTS, *\z3DH*) tU),, OUTPUTS, * (В^4бЖ2ПВ*) tP) ,, OUTPUT^, * C^.6DEk2DB*) ,T) . t OUTPUT^ t» (Bfr .SDKk-PDB ’ ) T DUN) ., GAUisAC/S/^DFJixxa.» HF:=HX~((A(/2/)* .O82D5xTK-2,OXAC/VM*OXA(/3/)/TK 406
Т’ -г •» г. \-ьдл.'. - .ЛА . *,.* I ..г'.. >‘.v?-.»-7 , ,,.С<- ' - - : . .'i .*' ."Y ‘ • г," ,*• • ! . ': ДЛ- 1 г 2)xdE1I+Ca(/5/)x .OB2O5ylK-^5*AC/V))*DSUxa0.2*A(A /)« ЛС/7/)х DEN*x 5+А(/6/)х DEN*«2/ТК** 2х СЗ .Ох (1.О-ЕХР(- G АЮ ) /GAM- С. 5-GAM)a EXP (-GAM ) ) ) X (1 IP • 1 THEN»-1 * ELS ей)., HF:crfFx24.2l7., : f' Al :-TK* C.OB2O>+A(/2/)* .08205* Dm2.0kA(/3/)*dEN/TKx* r.\; 2+A C /5/) x . OB2O5* DEN * x 2-2.0* A ( /6/) x DEN **2 /ТК * « 2 x( 1,0+ < GAM)*EXP(-GAN))xx2.» ‘ B-l:a,D8205«TK.+2.0xDnN‘CA(/2/)*.08205*TK-A(/l/)-A(/3/ '*• )AKx*2)+J.0XDENxx 2+A(/5/)x.08205xTK-AC/4/)+6.0xA(A /)xA(/7/)xDWx5+A(/6/)xDENXx2/DKXX2*(3.CH3.OxA(/8/) =•.• XDE»**2+2.0xA(/8/)xx 2«M**4)*EXP(-GAK)., '.‘i СИ 6.0xA(/3/)xDEN/TK** 3+(6.OxAC/6/))/(A(/8/)xTKx»3) - к CEiCP(-GAil)-1.0)+3.0*A(/6/)x DEN >x 2/TK* x 3>f EXP (-GAM) <» ВС:=-А-1/В1-СИ+.08205. t CFj^CX-IXJxC’lF’CX^O'THro’-l ’ELSE’4) ., 0Ul!Pira‘(4>»(bi-.6lXk2DB»)|HP).l . 0UTPUT(4j ’ (Б+.бПКНгЕВ* ) ,CP) •UWD» ’ »I»D« Jj ’l^D* ’END1., где P — внешнее давление^ ноте мы; К — константа фазового рав- новесия =(.p's mi/p Рассмотренным соотношениям удовлетворяют лишь относи- тельно небольшое гшсло парожндкостиых смесей, разделяемых ме- тодами ректификации, к которым относятся обычно смеси компо- нентов одного гомологического' ряда (например, бензол — толуол, изомеры кислорода п др,). На практике использование этих соотношений приводит к существенным погрешностям, обуслов- ленным неидейльпостыо в поведении жидкой фазы, а прн высоких давлениях — иеидеальиостью и паровой фазы. Из термодинамики известно [8], что условием равновесия в мно- гокомпонентных системах является равенство химических потен- циалов компонентов в паровой и жидкой фазах = Р7 (13-25) или равенство фугитивностей паровой и жидкой фаз = (13-26) 407
РАСЧЕТ ФИЗИКО-ХИМИЧЕСКИХ СВОЙСТВ СМЕСИ ПО УР-Ю BWR § СВОЙСТВА НМЖОЙ ФАЗЫ Р ATM TOC D ЫОЛЕ/Л Н КАЛ/МОЛЬ С ШЛЮЛЬ 1 + .1О19991О+03 +.ЗТОООО1О+О2 + .63^100^ q+O1 -ЛОСтб^ОТ- -.70357^0+01 2 +.1O19991O+O3 + .100000^+02 + .90520010+01 -.13806110+04 -.22596^ 0+<И J + .10199910+О3 —177999-10+02 + .1323^ 0+02 -.186980^+04 -.59758?1О+ОО \ +.1О19991О+ОЗ -.45600010+02 + ,1599?О1О+О2 -,223761^+04 -.665334^0+02 5 +.1СИ9991О+О3 -.73300010+02 + .1797Ю10+02 -.2613161О+О4 -.2719761О+ОЗ 6 +.1СИ9991О+О3 -.1СИ10010+03 +.19755О1о+О2 —315159^04 -.696261^+03 7 + ЛО19991О+ОЗ -.12В8ОО1О+О3 +.21605010+02 -.40940010+04 -.15643О1О+О4 8 +.1СИ9991О+О3 -.1566991О+ОЗ +.237980^+02 -.60?е4В10+04 -.34721210+04
Однако соотношения (13—25) н (13—26) малопригодны для практического использования, Они являются лишь термодинами- ческим условием равновесия фаз и их применение возможно лишь после того, как найдены соотношения» связывающие фугитивности с составами фаз, давлением п температурой системы. Для того чтобы воспользоваться термодинамическими соотно- шениями, справедливыми для идеальных систем, для реальных сме- сей обычно вводятся поправки, характеризующие нендеальность паровой и жидкой фаз. В связи с этим вводятся понятия коэффи- циента лотучести для паровой фазы и коэффициента активности — для жидкой фазы. Эти характеристики с основными параметрами равновесной системы связаны следующими соотношениями Т> = *А (13—27) где ф — коэффициент летучести, у — коэффициент активности, /j0)L — фугитивность жидкой фазы в стандартном состоянии Таким образом, парожидкостное равновесие системы выра- жается соотношением <Ы>Р •= (13-28) Основная задача, которую приходится решать при математичес ком описании парожидкостного равновесия, заключается в опрй делении характера зависимости коэффициентов активности и ле тучести компонентов от состава смеси, температуры и давления Принципиально зависимость этих коэффициентов может быть вы браиа произвольной, с учетом того, что параметры выбранной функциональной зависимости должны определяться на основании экспериментальных данных по равновесию с использованием ос- новных термодинамических закономерностей. Для определения коэффициентов летучести чаще всего исполь- зуются соотношения между фугитивностью и волюметрическими свойствами паровой фазы, выражаемые в форме уравнений состоя- ния [21. Расчет коэффициентов активности. Для определения коэф- tHijneHTOB активности часто используется понятие избыточной сво- одной энергии Гиббса, определяемой как разность изменений свободной энергии при смешении чистых компонентов реального раствора и соответствующего ему идеального [8] — ЯТ In т, (13-29) Таким образом, если известно выражение для избыточной сво- бодной энергии записанное через индивидуальные характери- стиьл компонентов смеси с учетом их взаимодействия, то с помощью соотношении (13—29) можно определить ко&ффицненты активно- сти каждого из компонентов, соответствующие заданным значе- ниям температуры и давления 409
В настоящее время наибольшее распространение получили формы выражения свободной, энергии , основанные на данных о равновесии в бинарных системах компонентов, составляющих много компонентную смесь. Примерами таких соотношений явля- ются уравнения Ban Лаара [2], Маргулеса [45], Редлнха — Ки- стера [46J, Вильсона [2] и др. Для того чтобы воспользоваться этими соотношениями, необходимо располагать, как минимум, равно- весными данными между всевозможными ларами компонентов мноюкомпоийнтноЙ смеси Отличительной особенностью большинства соотношений, ис- пользуемых для расчета коэффициентов активности многокомпо- нентной смеси, является то, что они являются обобщением соответ- ствующих соотношений для бинарных смесей. Поэтому коэффици- енты этих соотношений определяются по экспериментальным рав- новесным данным соответствующих бинарных пар. Очевидно, для .системы, содержащей /г компонентов, коэффициенты будут пред- ставляться в простейшем случае матрицей размерности к X Ki Если же имеются данные о равновесии л тройных и т. д систе- мах, составляющих многокомпонентную смесь, то число коэффи- циентов, подлежащих определению, возрастает для их определе- ния можно носяольаоватъся соответствующими равновесными данными Уравнение Ван Лаара. Программа расчета коэффициентов ак- тниности по уравнению Вав Лаара приведена па стр 100. Для определения коэффициентов Atj этого уравнения пслольяуются следующие соотношения, справедливые для бинарных систем: / lllT; Г Ej 1ПТ,\4 А,=М< ‘-ttstJ- •>(1+vtarb (13-30) l| 1U [ | J I I I У Для определения констант Ац н Ац бинарпой пары i — j необходимо располагать равновесными данными только прн двух различных составах. Однако иа практике расчет эмпирических но нет а нт производится по большему числу точек и в результате получаются усредненные аначепия А ц и Программа расчета коэффициентов уравнения Ван Лаара при- ведена на стр. 411. Для каждой пары компонентов много компонент'- ной смеси коэффициенты А и А ц определяются но формулам (13— 30), причем количество экспериментальных точек произвольно Программа оформлена в виде процедуры KOEFLAAR, и ее формальными параметрами являются, чисно компонентов — 2V и матрица коэффициентов ylfj. Процедура выполлется следующим образом. После ввода JV — размерности массива А, вводятся Р — давление системы и массив Я, олементами которого являются целые числа, соответствующие количеству экспериментальных точек по каждой из пор компонен- тов многокомпонентной смеси. Затем диагональные элементы мат- рицы А полагаются равными нулю и вводятся для каждой пары 410
Л-j, ,-'^1-:. у ,, .4' V '• ч.' ; ;>• ’< ’ V : "' 1. < 1 i т 7 *’.4, . i' ' ' . * ‘ ’''Лп * begin» ’INTEGER’#. f INPUTS ,N)m ’BEGIN’ ’ ARRAY• Л(/1 :N,1 (N/)., ’PROCEDURE'KOfiTLAAH(N,A)., . & ’ INTEGER’NM Y. ’ARRAY'Am . у, ' BEGIN * 7‘;V ’.INTEGER’I, J,K., • •R2AL»GAM1,GAM2m ’ARRAY’F.AC/ltNjIiN/),, J ’INTEGER'’ARRAY’RC/I TNPUTOtP.R)., ’FOR' I :=1 • STEP’1 ’UlfTIL’N—1' DO’ ’BEGIN* ' A(/I»I/)1=0.0.» 4 ’FOR»J:=1+1 ’ fdTEP' 1 * UNTIL' N • DO ’ ’BEGIN’ \ 1 ARRAY'X, T,P01 ,PO2(/1 jR(/I,J/)/)m INPUT(1,X,Y,E01,P02)m OUTPUT(3,•IE’),X,Y.PO1,J02)., A(I,J/)4«A(/J»I/)i=0.0., *F0R’K:=1*STEP’1’tfflTIL'RC/r,J/)1 DO’ ’BEGIN’ GAM1 ;=LN(CY(/K/)^(/I,J/))/(PO'KZK/)^X(/K/)))/2.3O3., GAM2;;:IiN((P(/IiJ/)j’(1-Y(A/)))AP02(A/)'((1'X(/K/))) )/2.303m AC/I,J/)i=A(/I,J/)+GA!Mx(1+((1-X(A/))jcGAM2)/(XIA/) x GAM1))«* 2м A(/J»I/)i-A(/J|l/)+GAM2x(1+X(A/)XGMrt/C(1-X(/K/)jxG AM2))X*2., •BND’m A(A»J/) :=A(/I, J/) m 411
* ши* ’END* •ШИ., KOEFLAAR(U,A).| OUTPUT(3»*C2')tA) •END' *ПГО* массивы концентраций X и У по одному из компонентов и масси- вы POlt PO2t элементами которых являются давления паров чи- стых компонентов данной пары при заданной температуре. Эти данные необходимы для расчета коэффициентов активности по формулам Tl ‘ (13—31) Рассчитанные для каждой экспериментальной точки значения Коэффициентов активности затем используются для расчета Atj Hj4/j но формулам (13—30). Полученные значения коэффициентов для каждой пары усредняются путем деления на количество точек. Уравнение Маргулеса. Для расчета коэффициентов активности компонентов в многокомпонентной смеси уравнение Маргулеса имеет вид Т( — 2Xj 2 А*^ ~г 2 И- 2 Atf®t®it ' i i j,k — ^2('rk2J^;ia'i) 2 Ал5’»1/1'*» U3—32) it ' i ' i./.fc где Л — коэффициенты, определяемые по бинарным соотношениям In 7j ~ xj (j4^ -f- (-4;f — Лij)), In Yj = (-^/t -l~ 2^ (j4f— Ajj)), которые могут быть получены по программе метода наименьших квадратов (стр- 333)> Коэффициенты А^й учитывают эффекты взаимодействия в трой- ных системах и определяются по соотношению Л/л ~ (Л/ + Ал -Ь Лл + А* + Ал И- А/)> (13—33) Программа расчета коэффициентов активности по уравнению Маргулеса представлена на стр, 414. Исходной информацией являет- ся К. — число Компонентов многокомпонентной смесн; М — число различных но составу точек, значения коэффициентов активности в которых необходимо вычислить; ST — переменная, значение которой полагается равным нулю; А — массив коэффициентов 412
уравнения (13—32); XX — массив составов жидкости для каждой точки. Составы для каждой точьи задаются для fc — 1-го компо- нента, а концентрация jt-ro компонента вычисляется как &-1 =1 — S 1-1 Расч&т коэффициентов активности по уравнению (13—32) для одного заданного состава смеси оформлен в виде процедуры А СТСО и выполняется в соответствии с формулой. Поскольку ST = О, го после обращения к процедуре сначала вычисляются коэффици- енты A ifr 110 формуле (13—33), а затем коэффициенты активности по уравнению (13—32). Коэффициенты для заданной смеси компонентов вычисляются только однажды, так как при повтор- ных обращениях значение переменной ST = 1, и эта часть про- граммы пе выиолпвется. Уравнение Реддика — Кистера, Расчет коэффициентов актив- ности компонентов в многокомпонентной смеси производится в соответствии с формулой н Ig -у- — 2 1^1J *Ь ^1? (2^1 ^j) *Ь хз) (^'1' ^;)1 Л-1 ~ S хз Н 2ej) ~т* di j “ 3aj)] л — 2 я/) + М®|-xj)(3xf — ^)L j-f-H (13—34) где btc, d — коэффициенты, определяемые по бинарным соотноше- ниям 1g & Ь (1 — 2X1) + с [6xj (1 — Xj) —11 + -l d(l — 2zj) [1 — 8^1(1 — Xj)], значения которых рассчитываются но программе, приведенной л главе 12 (стр. 333). Программа расчета коэффициентов по уравнению (13—34) приведена на стр. 417, Исходной информацией являются: К — число компонентов многокомпонентной смеси: М — число различных составов жидкой фазы, значения коэффициентов активности при которых необходимо определить; А — массив коэффициентов урав- нения (13—34), задаваемый для каждой бинарной пары многокомпо- нентной смеси; XX — массив составов жидкой фазы Для каждого нв составов в этом массиве задаются концентрации только к — 1 компонентов. 413
’BEGIN* < •IflBAL’SUMM.» J иршмлм?)., ’BEG ПГ •ДйЙАУ’Х(/'1;У|1;К/)1ХХ(/'1 :К«И/) fA(/1 :K,1 tK/),GAMMA( •PROCEDURE' AOTOOCXjAjGAMMA) ., ’«XiAjSW., ’BEGIN’ ’REAL’TAU,ТНЯГАfTSTO, OXEGA tPSI. f ’•IХТЕОБВ’JHAX»KO,KMIN,I,J., ’ ARRAY’ПНО(/1 :K/) ,A3T(/1 :K,1 :K,1 :K/)., ’ I a' 31^ 1' Ti 12Ш ” goto »v-i., ’ FOR ’ 1 : -1' ЫНР ’ 1 ’ JNTIL»К ’ BO ’ * ’BEGIN’ JJMXuK-H., ’ FOB ’ J:=1 ’ EST GP' 1 ’ UNTIL ’ JMAX ’ DO ’ ’BEGIN’ •IF’CJ“I)=/OfTHEN’ ’BEGXK’ 1 For ’ ко: aKHiir • втёр ’ i • until • к ’ do * < •BEGIN’ •IF’(KO-I)a/O'THEi4’AST(/IlJ1K0/)(3.5^(A(^lJ/)+A(/Jt I/J+AC/IjKO/J+ACAOjI^+AC/JiKO/J+ACAO.J/)) •END’ ’END’ ’END' ’END’, f V-nS3?s=1o TAU:=O.O., Z ’TOR’I:=1’STEP’1»UNTIL’K*DO’ ’ESGBi’ ШЮ(/1/)^0.0м 414
'FOR1J: =11STEP11’UMIL * ЯВД ’ DO» ’BEGIN? ’IF’CJ~,I)=/O,THEN’ ’BEGIN’ ’ FDR ’KOizzKtflN ’ STEP* 1 ’ UNTIL' К ’ DO ’ ’BEGIN’’ ’IF(K0-T)s/0’THEN»R30(/I/):aRH0(/I/)+X(/S,J/)xX(/S, КО/Э^АЖ/чм^О/) •T^io* •END’., TAB: зТ AU+T (/S,I/ У RilO ( /I/) ’END’ TAU:=TAU/j.O., THETA»=O« । ’FOR’Ii=1* STEP'*1’UNTIL’L’DO* ’BEGIN» TSTO:=O.O., ’ FDR• J.: =1 ’ STEP’ 1 ’ UNTIL’K' DO’ T5T0 S =TSTO+X(/S,J/)x 4(/j jl/)•1 THETA:аГЯЕГА+TSTO» I/)XX(/S,I/) ’ FOE ’ I: =1 ’ STEP ’ 1 ’ UNTIL’К ’ DO» ’BEGIN’ OMEGA:-FSl raU.0. t ’ F OR ’ J : =1 ’ STU” 1 ’ UNTIL ’ к ’ DO ’ ’BECtIN’ CHDSGA s^04hGA+X{ /S, J/) « A ( /J, I /) ., PSI»aPei+X(/S»J/)XX(/SfJ/)xA(A,J/) ’END’., GAltHA(Zl/)i«EXF(2.0^X(/S,I/)x0in»A4PSl+RH0(/I/)-.2<.0x THETA-2.OxTaU) *END’., 4t5
OUTPUT(3|’СЕ»),GAMMA)., ’EMD’ACTCO., INPUTS »A,XX)., 1 FOR1S:=1'STEP»I’UNTIL’M’DO’ * BEGIN ’ SlWi^O.O.» ’ FOR' C:=1 ’ STEP м»UN TIL» КИ ’ DO’ ’BEGIN’ Х(/8,С/);=ХХ(А,С/)., StTMMiaSJMM+Xf/S.C/).» 'END’»» XC/SjK^isl-SUMM., ACTCC(X,A,GAKMA)., ’END’S.» ’END’ •END’., Вычисления по формуле (13—34) оформлены в виде проце- дуры. Расчет температуры кипения смеси. Если предположить, что паровая фаза подчиняется вакопам идеальных систем (то допу- щение справедливо для умеренных давлений) и на стандартное со- стояние взять условия бесконечно разбавленных растворов, то уравнение (13—28) для расчета температуры кипения смеси и со- става паровой фазы можно записать в виде (i = 1, 2, . , А) (13—35) или к /(Л = 2^(Ла-1 = о. {=1 (13-36) тде = ’р" еХР (4ц + Л51Т -р In Г), (13-37) Т — температура, **К Программа расчета по уравнениям (13—35) — (13 — 37) при- ведена на стр. 419, Исходными данными дли расчета температуры кп- лепня и состава паровой фазы являются, К — число компонентов смеси; EPS — точность, с которой, определяется температура; Т — начальное значение температуры, величина которой не вы- ходит ва пределы интерполирования зависимости Р® = Р® (Т); 416
’ВЕСПГ ’REAL’S^., птзда’кд ,3,0,0., ют?С1,к,м);, * BEGET’ ’ШАУ’ЙЁОСЛ »3/),X(/1 XX(/1 tM,11K-1/) ,B0X(/1 :X ,1iKn:3/)»^A(/2iK/).r ’ PROCEDURE ’ НШ(Х, BOX, GAI iA) •, ’AH1UY’X,GAKA,BOX., ’BEGIN’ ’REAli’lWU’ICXfnCKI,PICK2., rmGKii’LjJ., PEfssO.O., Ji^2», L:=1M V4!PlB:eP№+X(/S|J/)x(BOX(A>lJ,V)+SOX(Zb,Jt2/)>(2.0 SX(/S,L/)-X(/S,J/))+B0X(/L,Jl3/)^(X(/SIb/)-X(/S,J/)) JC (3.0xX(/S,L/)-X(/S,u/)) ),, J =J+'l • । ’ ip ’ a »ii£< к ‘ фиёгг’ • goto* w, ’poR'Lssa’sjisp’i ’tmijj’K’DO’ ’BSGIN' KECK:^,.r J:=0«, S«MJ4SJ+1.f PICK^PICK+XC/S, J/) X (BOXC/L, J, T/)+EOX(/L, J, 2/) x (Xf/S ,J/)-2xX(/SIL/))+BOX(/LIJ,3/)*ai/SIJ/)-X(/S,L/j)^X (/S(J/)«3xX(/S|L/)))M •IF’J’GT’L’THEE1’GO-TDnJ’ELSE’’ТНЕН’Ч.ОТО ’ 54» rlLSE»' IF» J=L-1 ’ Т.ЧЗК ’ ’BEGIN* PICKIisPJCK., J != J+Л • , PICKi=:0,0 »ffiTD*., 14 В В Кафпрои и Jtp 417
Ui’IF’J*LT’K’THEir,fG0T0’fi4’ELSE’*IP’JaK’THEN’PlCK2i» PICK., " * GOTO*SI., B4jBOX(/L,J,2/):=~BOX(/LtJ,2/)., GOTO*34-., SI:GAHA(A/)*=SXP(2.30^(PEN-PICK1-PICK2)). • W.| outputs »• (e* ) ,gaju). * ’W’REDCO., ’FOR* s:-1 ’STEPH ’UNTIL’K-VDO’ ’ FOR’ О ‘ STEPH ’UNTIL ’ K’ZX)» ’BEGIN* INPUT И, RED)., »УОВ»0:=1,2,3’DO’EOXk/SfC,0/) *=В0Х(/С,3,0/) ibRED(/O/ ). < ' ’F0R’O:=1’STEF’1’UNTIL’K’DO” FOR’C:-1,2,3’DO’B0X(/O,O,C /):=O.Oi| INPUT(1,XX)., »FOR»S:=1’STEPH’UUTIL'M’DO* ’BEGIN* SUWS:=O.OM ’ FOR ’ C j=1 ’ STEP И ’ UNTIL ’ K-1 ’ DO* ’BEGIN’ Х(/3,0/)^ХХ(/3,С/)., SUW :=SUNMj£( /8, C/) ’END’., REDCO(X,BOX,GAMA) ’SMD’ ’UfD’ END’. 4 IS
* BEGIN* »IHTSGE&*K, । input(1 ,k)., 1BEGIN* *REAL*EPS,T»P., ’ARRAY*X,YR,A1 ,A2,A3tA4,GAM(/l tX/)., ’pROOEKJRE»NEW(X,SR,T)., »REAL’T.( *АЯНАХ*Х,ХН,КТ., » BEGIN* ‘REAL’SLOPE,S.TO,SUM,5UMD., *INTEGI3t4,J,Z., , Z^1., A:SUM:xO. >P0R'Jt=1 ’STEPH ' UNTIL* К * DO» »BEGIN1 YR(/J/) ;=X(/J/)xEXP(A1 (/J/)+A2(/J/)/(!I4273.1B)+A3(/ff /)x (T+2?3.16)+A4(/J/) хИМЗЛБ) )xGAM(/J/) ZP. , SUMj-SUM+SRC/J/) ’END*., ♦IP’ABStSMM ) ’DT»EPS*THBN* «GOTO’AI., ZtzZ-l.» ’rF’Z’W’O’THJN’ ‘BEGIN* SLOPE;= (SUM-SUMO)/(T-TO)., SUMOt=SUM., TO»»T., Tt=(l-SUS^SLOPE)+T., •GOTO’A ’ W ‘ELSE’SUUOt=SDM., TOi^T.t •I's-T+'IO., ’GOTO’A., Al; ’КГО’. t INPUT (1, EPS, T, Х,Р, GAtf, A1, A21 A3, A**) • «M(X,YR,ptT)., 0UTPUT(3, f(E*),E?,T) *END* •END* 419 14*
Р — давление системы; X — состав жидкости, молъ/ммъ\ GAM — коэффициенты, активности отдельных, компонентов, вычисленные при заданном составе жидкости X; Л1, А2, ЛЗ, .44 — коэффици- енты уравнения (13—37), полученные по программе главы 11 (стр 338). Расчет температуры кипения и состава пара определяется в результате решения уравнения (13—36) с использованием метода се- кущих (см. главу 8) путем последовательного уточнения темпера- туры п оформлен в виде процедуры NEW. Выходными парамет- рами процедуры являются: УТ? — массив равновесных значений концентраций компонентов в паровой фазе; Т — равновесная тем- пература.
ЧАСТЬ ЧЕТВЕРТАЯ КРАТКИЕ СВЕДЕНИЯ О ЦИФРОВЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ И ИХ МАТЕМАТИЧЕСКОМ ОБЕСПЕЧЕНИИ Глава XIV МАШИНЫ СЕРИИ «ПРОМИНЬ» Цифровые вычислительные машины серия «Проминь» предназ- начены для решения инженерных задач средней сложности. Использование мнемонических обозначений отдельных кодов операций позволяет легко освоить систему команд машины и обес- печивает определенные удобства при составлении программ Про- стота программирования н обслуживания обеспечила машинам этой серия широкое распространение. «Проминь» является также удобной машиной для освоения основных принципов программи рования н решения задач па ЦВМ 1. Общая характеристика «Промиль» является универсальной одноадресной машиной ма- лого класса. Конструктивно опа оформлена в виде двух отдельных блоков, достаточно компактна, проста в обслуживании п освое- нии. Скорость выполнения отдельных операций зависят от типа команды Система команд включает микропрограммные операции, выполняемые по отдельным алгоритмам, и их быстродействие опре- деляется величиной аргумента и эффективностью алгоритма При выполнении команды-сложения скорость достигает 1000 ол/егк, умножения — 100 (т!сек. Числа в машине представляются в форме с плавающей запя- той Разрядная сетка машины имеет 5 десятичных разрядов для представления шаптиссы н один разряд — для представления по- рядка чисел. Числовая информация вводится вручную в деся- тичном коде с клавишного набора на пульте управления. В машине информация и программа хранятся отдельно. Дли хранения числовой информации имеется 160 ячеек памяти, а на- бора программы — 100 ячеек. Программа набирается штецкера- ми, и отдельные ее команды не могут изменяться в процессе реше- ния задачи с помощью других команд Для изменения команды 421
необходимо заменить соответствующий ш тек кер па наборном поле программы Система команд содержит 33 команды, предназначенные для выполнения арифметических операций, перехода, вычисления элементарных функций ио микропрограммам и ряда других вспо- могательных операций,. Система команд может быть изменена пу- тем использования другого набора микропрограмм. Вывод числовой информации производится цифропечатающим устройством в десятичном коде с плавающей запятой. Перевод чи- сел иа внутреннего кода машины в десятичную систему, и наоборот, производится автоматически устройствами вывода и ввода. Представление чисел в машине Арифметические операции в машине выполняются с числами, представленными в нормальной форме. Исходная информация, записанная в десятичном коде, представляетен в нормализованном виде, набирается на клавиш- ном цаборе пульта управления и вводится в запоминающее устрой- ство- Внутри машины каждый разряд десятичной вазйасн преобра- зуется в специальный код, и в такой форме числа участвуют в вы- числениях Числа представляются пятиразрядной десятичной мантиссой 0,1 <;] ЛГ | < 1 и одним десятичным разрядом порядка Для знака мантиссы и знака порядка отводится еще по одному двоич- ному разряду Знак плюс обозначается нулем, а минус — едини- цей. В соответствия с этим каждая ячейка запоминающего уст- ройства (ЗУ) чисел имеет двадцать шесть двоичных разрядов, из них двадцать — для записи мантиссы числа (по четыре разря-' да на каждый десятичный разряд), четыре двоичных разряда для записи порядка чисел и два двоичных разряда — для записи зна- ка мантиссы и знака порядка. Например, число 0,000123 запи- шется в ячейке как —3 -Ь12300. Десятичные разряды май-' тиссы и порядка пронумерованы слева направо, начиная с еди- ницы. Весьма удобным при работе на машине «Преминь» является то, что программист практически оперируот только с деситнчпой ин- формацией. Числовая информация вводитсп в машину в десятич- ном коде. Промежуточные и конечные результаты также печатают- ся н индицируются в сумматоре в десятичном представлении. По- этому внутренний код используется только специалистами для уст- ранения неисправности. Десятичные разряды числовой ячейки нумеруются следующим образом: Знак tlOpillIK 1 б 1k раэрнд Знак 5 1 3 2 1 Порядок Мантисса 422
Максимальное по абсолютной величине число, которое может быть е а писано в ячейке, будет содержать цифру 9 во всех разрядах и равно 0,99999'10“, Если в результате выполнения операции по- лучится результат, превосходящий это число, то вырабатывается аварийный останов машины (переполнение разрядной сетки). Минимальное по абсолютной величине число равно 0,1*10"°. Если результат арифметическом операции меньше чем 10“10, то формируется машинный пуль Кроме нормализованных чисел машина использует в работе и числа в адресной форме. Эти числа используются для изменения адресных частей команд при организации циклических вычисле- ний Адресные числа записываются двумя разрядами разрядной сетки машины — в третьем и четвертом разрядах п, таким образом, соответствуют числам натурального ряда от 0 до 99, В ячейке для хранения чисел адресные числа записываются следующим обрааом* число 54----}-0 + 00500, число 15Л-------НО — 01500; число 91 а----г 0 + 09100. Для внутреннего кодирования числовой информации в машине используется система весов двоичных разрядов 5211. Это значит, что каждая десятичная цифра числа (каждый разряд, включая разряд порядка) записывается как сумма чисел 5я + 2b -j- 1с + 4- 1е, где а, bt с, е — двоичпые цифры, т. е. О пли 1 В атом случае десятичные цифры от 0 до 9 в машинном коде записываются н виде Дгсятпюг&я цифра ,, 01234S0789 Код машины . . OWJO 0001- ООН 0401 0111 1000 1<Ю1 ЮН 1101 Illi Легко заметить, что такая система кодирования использует не все возможные комбинации обычной двоичной системы счисле- ния, а именно, отсутствуют следующие коды: Десятичный код 2 4 6 10 12 14 Даолчвый код 0010 0100 (И 10 1010 1100 1110 Эти комбинации двоичных разрядов используются при кодиро- вании так называемых «запрещенных» адресов запоминающего устройства Логическая структура машины. В состав машины входят сле- дующие основные устройства: арифметическое устройство; уст- ройство управления; запоминающее устройство; устройство печа- ти; пульт управления. Конструктивно цифр о печатаю щей устройство выполнено отдель пым блоком, а все остальные размещаются в одном блоке — рас- четном столе. Арифметическое устройство машины предназначепо дли вы- полнения арифметических операций над числами в нормальной и 423
адресной формах записи, причем действия с адресными числами выполняются операциями с фиксированной запятой. Сумматор арифметического устройства, содержимое которого индицируется иа пульте управления в десятичном коде, используется при вы- полнении арифметических операций как запоминающее устрой- ство — один нз операндов должен вызываться в сумматор коман- дой чтения. Сумматор используется также как буфер при вводе п выводе числовой информации Обращение к микропрограммам вычисления элементарных функций организовано таким образом, что аргумент должен находиться перец выполнением команды микропрограммой матрицы в сумматоре, и результат опять засы- лается в сумматор. При выполнении арифметических операций действия выпол- няются только с нормализованными числами и результаты опера- ций также нормализуются. Выполнение операций с ненормализо- ванными числами приводит и неверным результатам.- Устройство управления обеспечивает программное выполнение команды и координирует во времени включение соответствующих устройств машины. Оно обеспечивает дешифровку команд, наби- раемых па наборном поле, выборку числовой информации по адресам и выполнение операции Для управления работой микро- программ используется логика, отличиав от логики выполнения элементарных операции Для этой цели в машине имеются специаль- ные операции, которые используются только прп выполнении мик- ропрограмм. Последовательиость выполнения команд микропро- граммной матрицы отличается от обычной: адрес следующей ко- манды -указывается в адресной части исполняемой команды. По- рядок выполнения микропрограмм можно проследить лишь в Спе- циальных режимах работы матппяы, которые используются при проверке исправности машины. Запоминающее устройство (ЗУ) машяян состоит из трех неза- висимых частей, отличающихся принципом действия и объемом запоминающее устройство для хранения чисел, выполненное па ферритовых сердечниках, запоминающее устройство для размеще- ния команд, построенное по принципу импульсных трансформато- ров с воздушными зазорами, в которые вставляются штеккеры команд и адресов, и запоминающее устройство па ферритовых сер- дечниках для хранения микропрограмм. ЗУ для храпения чисел предназначено для заилен числовой информации с клавишного набора и результатов выполнения ко- манд наборного поля Всего в машина может быть использовало 160 числовых ячеек. Дли кодирования этих ячеек используются два десятичных разряда адреса Ячейки с номерами от 01 до 79 являются оперативными и могут свободно использоваться про- граммистом. Ячейки с номерами от 80 до 99 используются для хра- нении таких констант, кал л, а, 4-1 -|-10000. -1-1 4-20000, -f-O-f- 4-50000ит. д. (см. табл 26). Чтение из ячейки с адресом 00 экви- валентно чтению нуля. Константы за коммутированы в машине, п 424
Таб wjrft? 2ff Койстдцты ЦВМ <гПромтп>» Ад рва Кадсишта mtniwmito Адрей Как triune Паясиешге СО 4-0+00000 нуль 96 4-6+20626 61800/Я S0 +5+00000 10» 0,00000 97 -f +17453 л/180 = I spafl 81 4-1+31410 л 98 —3+29089 rt/lOSOO = 1 82 +1+62832 2л 99 —5+48481 К/64800 = 1 мл 83 +0+31831 i/rt 8а* +0+59000 0,5903 84 .+0+15915 V 4-0+41730 0,4173 85 +1+15708 Л/2 V + 1+31023 10 8b +1+10000 1 8l0* 4-0+31G23 0,1 87 4-1+20000 2 812* + 1+40000 4 88 +0+ 50000 0,5 814* +1+50000 5 80 +0+25000 0,25 92* +14-60000 6 90 +0+00100 1 94* +1+70000 7 9i +2+10000 10 95* 4-1+80000 8 02 -rt+23026 la 10 910* +0+45469 0,45469 08 +0+43429 1/In 10 912* +1+17128 с— 1 94 4 2+57296 180/я 914 * +0+10000 0,1 95 +4+34'377 10800/rt содержимое этих ячеек не может быть изменено программистом Два десятичных разряда, используемых для представления адреса числа, позволяют закодировать 100 адресов памяти. Ос- тавшиеся 60 ячеек запоминающего устройства чисел кодируютсн с помощью «запрещенных» комбинаций двоичных разрядов си- стемы аесов 5211 Всего таких комбинаций шесть Использование «запрещенного» кода в качестве второй цифры в записи адреса позволяет закодировать дополнительно 60 ячеек памяти. Ячейки, адреса которых получаются таким способом, называются «запре- щенными» ячейками При записи адреса запрещенной ячейки вторая цифра помечается звездочкой, например: 02*, 010*, 016* и т. д Часть «запрещенных» ячеек (12 ячеек) используется для-хра- нения констант, другая часть (25 ячеек) — для записи промежу- точных результатов прн выполнении микропрограмм, а остальные могут использоваться как обычные ячейки прн составлении програм- мы для хранения промежуточных результатов расчета. Распределе- ние ячеек по отдельным группам можно найти в инструкции по программированию, Важно заметить, что адреса «запрещенных» яче- ек нельзя выразить десятичными кодами, поэтому с путьтв управ- ления н них нельзя ни записать, пи вызвать число Опн могут 425
быть использованы только в программе в адресной части команд. Запоминающее устройство для хранения программ называется наборным полем н содержит 100 ячеек с номерами от 00 до 99. Каждая ячейка наборного поля состоит иа 13 двоичных разря- дов, причем 8 разрядов (2 десятичных разряда) отводятся для указания адресной части команд, а 5 разрядов (один десятичный разряд) — кода операции (отсюда всего 5а = 32 операции)- Код операции представляется в двоичной системе счисления. Каждая команда набирается на наборном поле штеккерами, Штеккер состоит из пластмассовой головки с написанным на ней символом команды (например, чпг, м, улея, дел н т д,) и металличе- ской планки, па которой комбинацией отверстий кодируется код операции». На головке ш те к кера адреса указывается десятичная цифра, например 1, 2, 10* и т. д. Штеккеры кодов операций п ад- ресов не взаимозаменяемы, так как код операции содержит пять двоичных разрядов, а десятичная цифра адреса — четыре двоич- ных разряда Головки штеккер ов операций и адресов различаются по цвету. Наборное поле состоит из 10 строк, и каждая из них предназна- чена для 10 команд. Любая команда набирается тремя штеккора- ми; первый — код операции, второй и третий — десятичные раз- рядные адреса Штеккер ы вставляются вертикально в зазор им- пульсных трансформаторов, и каждое отверстие па ттеккере соот- ветствует одному двоичному разряду кода операции или адреса. Нулевой код штеккерами пе набирается — соответствующий раз- ряд команды остается незаполненным. ЗУ для хранения микропрограмм называется микропрограм- мной матрицей и содержит 512 ячеек Микропрограммы жестко закомыутированы, и нх набор может быть изменен только кон- структивно. Движение но микропрограммной матрице принуди- тельное, т. е. в каждой выполняемой команде указываются коор- динаты следующей команды. Порядок выполнения микропрограм- мы можно наблюдать па специальном отладочном пульте Отла- дочный пульт позволяет проследить выполнение любой команды микропрограммной матрицы цифропечатающее устройство мапшньи состоит из устройства управления печатью и печатающей машинки с цифровым регист- ром. Печать чисел производится из сумматора по специальной команде. При выводе промежуточных результатов указывается номер ячейки наборного поля, следующий за командой вывода, адрес команды вывода и числе в нормализованном виде. Например, 1201 -V 1 4- 23333. Это значит, что команда вывода расположена в < 11-й ячейке наборного поля, ее адресная часть есть 01,а выведен- ное число равно 2,3333. На некоторых машинах выводится также содержимое сумматора при записи с пульта или вызове из ячей- ки. Пульт управления предназначен для оперативного управления работой машины, На нем находятся клавиши ввода числовой ин- 420
формации, наборное поле программы, кпопкн пуска и останова машины, цифровая индикация содержимого сумматора, адреса чисел и адреса команды наборного поля, С помощью клавиш, рас- положенных на пульте, можно ведать режим ввода числовой ин- формации и режим работы машины (рис, 60) IrtMfyV Paa 60 Схема пульта управления Режим ввода задастся нажатием клавиш Вв1 и Вв2 JB режиме Вв1 производится адресный ввод: набирается число л адрес ячей- ки, И которую оно должно записаться, и нажимается клавиша «Запись в ячейку» Для записи второго числа вся последователь- ность действий повторяется, Аналогично при нажатии клавиши «Вызов на СМ» число по указанному адресу вызывается в сумма- тор. Прн вводе в режиме Вв2 указывается только начальный адрес, например 01, а все остальные адреса выбираются последо- вательно при каждом паж ат ли клавиши «Запись в ячейку», т. о, 02, 03, 04 и т, д. Решение задачи может выполняться в двух режимах; автомати- ческом и по тактам, Прн нажатии клавиши «Авт» и кнопки «Пуск? программа выполняется последовательно до команды останова, если таковая есть В режиме «Такт» при каждом нажатии кнопки «Пуск» выполняется только одна команда. Режимы К1 н К2 ис- пользуются для обнаружения неисправностей в работе машины. Прн выполнении любой команды па пульте управления в де- сятичном коде'указываются иомер команды наборного поля и ад- рес используемой ячейки, Код выполняемой оиерацни можно про- читать в двоичной записи только иа Отладочном пульте 2. Программирование Система ьоманд машины «Промннь» содержит 33 команды, ко- торые по своему функциональному назначению могут быть разде- лены па' отдельные группы, В процесса зкеплуатадни машины было предложено большое число усовершенствований основной си- 427
стами, сводящихся я изменению порядка выполнения или замены отдельных команд. Некоторые из таких новых команд рассматри- ваются в конце раздела. Все команды машины «Преминь» помимо внутреннего двоич- ного кода имеют мнемоническое обозначение. Эти обозначения обычно и используются при написании программы Команды для выполнения арифметических операций подразде- ляются на два типа: команды для выполнения действий с плаваю- щей и фиксированной запятой. Прн выполнении операций с пла- вающей запятой результат обязательно нормализуется, причем прн выравнивании порядков в операциях сложения и вычитания меныпее число округляется. Если результат не может быть нор- мализован из-за переполнения разрядной сетки машины, то выраба- тывается сигнал аварийного останова. Это возможно, если резуль- тат больше, чем 10’, или при делении) на нуль Арифметические операции, выполняемые машиной «Промшпл, приведены в табл. 27 Таблица 27 Операция Условное обозкаэдпяе Код В ИЛ1ГШН0 Пояснения Ове рации с нлвпаиицеЙ запятой Сложоаиб Сл а 0001)1 М -|. (й) -»(см) Вычитание 1 ВЫЧ1 а 00010 ((Ml) — (д) -» (сл) Вычитание 2 ВЫЧ2 а 00011 (д) —(см) —• (<?>чс) Умножение МШ а 00100 (см) X (д) -• (Alt) Делении ДОЛ а ООЮ1 (см)/(а)-» (см) Операции г фиксированной запятой Сложение СЛФ а 01100 (ли) Ч (с)-, (см) Вычвтвиво ВЫЧФ а 01101 (см) — (а) —. (см) С помощью арифметических операций можно производить до- полнительные действия, иногда необходимые при составлении программы. Так, например, при выполнении команды ВЫЧ2 00 знак числа в сумматоре меняется иа обратный, а при выполнении команды СЛ 80 выделяется целая часть числа, находящегося в сумматоре (в ячейке 80 хранятся константа 4-5 00000). Команды для выполнения операций передачи управления изме- няют последовательность выполнения отдельных частей програм- мы. Операции передачи’управления разделяются на операции без- условного я условного^перехода Команды этого типа приведены в табл. 28 Команды безусловного перехода всегда приводят к изменению последовательности вычислений. Их действие не зависит от резуль- 428
Тйбчица 28 Передача упрцвлв ППН Условное обозначен 11 а Код в ха ut пнд ITojiLHoimn Безустанная БП а 01 000 HaxdiiifttWH ссггсспгенгган последова гзльность Ецнсишения команд. к уп- равление асредлвтоя номомле с адре- сом а Уставная 1 УП1 а 01001 Кади ЧИСЛО 11 оуммдторв меньше пуля ((ан} < 0). 7о упрнлпенне передается команде С адресом л. Дени (ел) >0. то гыпошшстся следующей по номеру я ом. inn а Уставная 2 УП2 а 01010 Еми (сл) = 0, то управление передай, сп команде о пдррсюм а, иначе вапол- клотол следующая команда Безусловная по ад расу второго ранга БП2 а 01101 Управлений паркуются поманде.'вдрво которой находятся п 5-м и 4 м разря- дах ячейки а тата предыдущей операции. Выполнение операции условного пере- хода определяется* знаком числа, находящегося в сумматоре. Поэтому при появлении числа в сумматоре в результате выполне- ния операции или чтения из какой-либо ячейки вырабатывается признак, характеризующий его знак. Этот признак является зна- чением функции SIGN, которая определяется следующим образом: SIGN (я) = 1 при £>-0, 0 при ^ = 0, — I при я < 0 Кап следует из табл. 28, каждая команда условного перехода выделяет только одну возможную ситуацию Для того чтобы ус- т ап овить, например, что число в сумматоре положительное п толь- ко в етом случае перейти it другим вычислениям, одной команды лед остаточно. Это можно сделать двумя командами, записав их одна за другой, поскольку при их выполнении признак числа не меняется. Часть программы, обеспечивающая переход к команде с номером о + А, если число в сумматорёположительпо, запишет- ся в виде л-1-0 УШ с-4 в-М УП2 с + 4 с ЬЗ БП c + fc с -J- 4 * . 4 с+Й (сл) < 0 (ел) ~ 0 безусловной переход к команде о Ч- к продолжение программы при (с.и)<0 продолжение прогремим при (с.ч)>0 Команда'ВП2 л относится к операциям с адресами второго ран- га. Подробно етн операции рассматриваются ниже. Команды обращения к запоминающему устройству и устрой- ствам ввода — вывода. Комэнды ыгого типа приведены в табл. 29. 429
Таблица 29 ОперандЯ Усновяод ОбОЗ ДПЧ мшв код я машшге Пояснении й Чтонне числе в сумми. тор * Запись содержимого сум- ыатора в ячейку Чтение числа в сумма- тор но адресу второго ранга •• Запись по адресу второго рввга Вывод числа ej печать ЧТ а зп а ЧТ2 а ЗП2 а ОСТ 1)1 (ЮНО 001 и 01011 01100 11111 (с)->(см) содержимое нчайкд с адресом а замостил а сум внтор (сл|) —(«) В сумматор заносится число, адрес которого находится в 3-м и i-м разрядах мавткссы числа so адресу а Содержимое сузждюра вапвсы лается в пчейку. адрес которой находится и v 4-м р дар ядах ячейки с адресом а Содержимое сумматора шлю* ддтои im печать в деонтячпом моде ч * Оавраиип ЧТ ОТ моиет вслолг^оиатасц для ваплся пули в сумматор. • Прн чтении числа ио ячейки айумиаторподлодгют оонилястся о сумматоре*110 и сох ралнется п вчвйяо. операция ЧТ 52* ирнкештетси для переноси чиольендаяиатуры в о ум ьга гор «Преминь» ие имеет .команды ввода, поскольку программа наби- рается ттеккерами вручную, а ввод числовой информации осуще- ствляется с клавишного набора на пульте управления. Поэтому машина не имеет н устройств подготовки данных. В машине имеются два тина команд обращения к запоминающе- му устройству — обычные команды и команды с адресами второго ранга. Последние используются при организации циклических вы- числении, а именно для изменения адресов памяти числовой ин- формации с помощью команд программы. Команды программы избираются сгпомощью штвккеров, и из- менить их программным путем нельзя. Чтобы изменить, например, адресную часть команды, нужно заменить соответствующие штеккеры. Однако адресную часть команды можно изменить с помощью команды с адресом второго ранга. В этом случае адрес, указываемый в команде на наборном поле, является не адресом ячейки, где хранится операнд, а адресом ячейки, в которой нахо- дится адрес операнда. Таким образом, это есть адрес адреса числа Такие адреса называются адресами второго ранга. Если с помощью обычных команд изменять содержимое ячеек, указанных в адрес- ных частях таких команд, то соответственно будет обеспечено изме- нение адресов числовой информации В операциях с адресами второго раша используются адресные числа, т. е, числа, вамнеанныевтретьеми четвертом разрядах ячей- ки Поэтому действия с ними должны выполняться операциями с 430
? 4 f фиксированной запятой, так как плаче после нормализации чис-* ло, т. е адрес, будет сдвигаться и старший разряд и тем самым те- ряться. Адреса второго ранга удобны для организации циклических вы- числений при обработке массивов чисел. В этом случае числа рас- полагаются в последовательных ячейках, начиная с какого-то номера, и, следовательно, число повторений цикла заранее извест- но. Если над числами проиаводятоя однотипные действия, то до- статочно написать программу для обработки одного числа, а за- тем организовать изменение адресов и повторение цикла. Про- грамма будет выполняться до тех пор, пока не будет обработано 4 последнее число. Типичным примером такой программы является последовательность команд ло вычислению суммы j-i j С? ~~ 10) при фиксированном i, блок схема алгоритма которого приведена иа рис. 6. Пусть число компонентов равно 10. Если разместить зц и Ajj последовательно А<г1, хг, A<(J и г. д. в памяти чисел, начиная с ячейки 01, то всего будет занято 20 ячеек и каждая вара я/ и х;+1 (как и пара А^иЛи+1) разделяется двумя единицами адре- са. Пусть ячейка с номером 70 будет использоваться в качестве адреса второго ранга команды чтения Тогда ев содержимое бу- дет вначале равно 20, т. е. адресу последнего числа Теперь, если перед выполнением команды ЧТ2 70 каждый раз вычитать из со- держимого ячейки 70 по одной адресной единице, то зга команда обеспечит последовательно чтение в сумматор значений xJ0, Ait 10, лй, A-i, Bt ж8,.... В программе, которая приводится на стр. 432, реали- зуется эта последовательность действий. Распределение памяти: 01 — 02 — Alat 03 — xit 04 — Ai, s, .. 19 — ж10, 20 — A,f io> 70 — адрес последнего числа (4- 04~ 02000), 71 — ячейка накопления суммы 2, 72 — рабочая ячейка. Примечание константа 4- 0 4- 00100 (адресная единица) хра- нится н ячейке с номером 90 (табл. 26). Программа будет па одну команду короче, если в ячейку 70 записать адрес последнего числа со знаком минус и команду ВЫЧФ 90 аамепигь па СЛФ 90 Тогда вместо команды. УП2 16 можно использовать команду УП1 02, а команду ВЛ 02 исклю- чить Команды для вычисления элементарные функций (микропро- граммы). В основе алгоритмов вычисления элементарных функций используется их разложение в цепные дроби [33]. Точность вы- числения для большинства из них лежит в пределах четырех-пяти разрядов и ограничивается раерядной сеткой машины. Для неко- торых функций накладываются также ограничения на величину 431
Программа ЛДрвО Команда 00 ЧТ со 1 зп 71 2 ЧТ2 70 3 ВП 72 4 ЧТ 70 б ВЫЧФ 90 6 зп 70, 7 ЧТ2 70 8 У МП 72 9 сл 71 W зп 71 t ЧТ 70 ' 2 ВЫ ЧФ 90 3 зп 70 4 УП2 10 , 5 ВП 02 8 ЧТ 71 7 осг 01 8 ост 00 П0Л1М5еп|1« -Запись trptn в плойку, дредиваначеняую для в<* коплеппя суммы Чтение в сумматор Aj,; (Aj,;(мА) (ox) -* p я Подготовка адреса дан чтения Ш;ХЛМ— (C.W) 2 |“Х;хЛ1т/-*(с,и) (d.u) -»5 П|К>варка окончания счйтд суммы (если содержимое сумматора поело вычитания равно пулю, то выбра- ны ii it Л),1 и счет суммы закончен) Еезуслопный переход иа продолжение счета S —»(с.и) Вывод результата Остапов аргумента Так, при вычислении еж аргумент должен находиться в пределах —10 =С х 20/723, Быстродействии выполнения мик- ропрограммных операций также эавкепт от величины аргумента. Список микропрограммных операций и краткая их характерис- тика приведены в табл. 30 При выполнении команд вычисления ел ем епт ар пых функций предполагается, что аргумент находится в сумматоре, поэтому адресная часть этих команд равна пулю. Матричные операции (ум- ножение векторов л решение системы) также имеют нулевые ад- реса, но перед их выполненном коэффициенты заносятся в соответ- ствующие ячейки памяти другими командами или с пульта управ- ления. Усовершенствование системы, команд. В машине «Промяпь-М» для организации циклических вычислений введена новая команда СчП а, операция ЧТ2 а отработана по новому алгоритму. Команда СчП а имеет такой же код, как и гиперболический си- нус, по&тому если адресная часть ее равна нулю, то выполняется обычная операция вычисления синуса. Эта команда может исполь- зоваться для модификации адресов и счета циклов. При ее вы полно - иии к содержимому 1-го, 2-го и 3-го, 4-го разрядов мантиссы кода по адресу а добавляются единицы, и результат еапнсывается в ячейку а. Значит, чтобы использовать ату команду для подсчета числа циклов л изменения адресных частей команд, в ячейку с адресом а необходимо записать следующую ияфорлтадню: в зна- ковый разряд мантиссы — минус, в 1-й и 2-й разряды мантиссы — 432
Таблица 30 Операции Усжишоа оСоэнйчо* ине Код и мо шина Hhotiw ItnifctBua, tm/.HUU Почсненлгг Синус sm 10000 33-35 Для аргументов 1i| < 2л Косявуо СОЗ 10001 33—35 вычисление трягопомет- Тангенс Eg 10010 05-135 рическпх функций бы- стрее, но точность 3—4 знака | я ияу < 0,1 * 10й Снпус гипербола ноский sb 10011 65-154 При вычислении ншо[Г бёлнчвеклх функций воа- Коспиус гипербо- лический ch 101 GO 6S-154 можва ошибка до одл- япцы четвертого разряда Тангенс ытпербо лнчоскпй th 10101 110 х К 20,723 Арксинус asia 10110 36^40 Точность 4—5 знаков Арккосинус 0003 10111 30—40 ш j < 1 Арктангенс atg 11000 80-113 X |< 6 Корень квадрат- ный iT- 11004 50-72 0 Экспонента exp 11010 130-256 -10<’<х <20,723 Логарифм нату ральвый 111 11011 100—120 s > 0 Умножение пепто- рои an 11 IGO 260-3700 Размерность вектора п<3а Формирование знака ФР 11101 4000 onfceK Числу в сумматоре при- сваивается амак числа но адресу а Решение системы Останов PC OCT OG 11110 11111 16-60 Решение системы линей ныл уравнений методом Гаусса число повторений цикла в дополнительном коде (100 — jV, 1де jV — число циклов), в 3-й и 4-й разряды — начальный адрес мас- сива обрабатываемых чисел. Когда все циклы будут выполнены, т. е. в l-мл 2-м разрядах будут нули, то мантисса меняет знак на обратный, и по команде УП2 можно выйти ла цикла. В зтом слу- чае в разрядах 3 и 4 будет содержаться максимальный адрес чис- ловой информации, увеличенный на единицу Команда СчП а моя«ет также использоваться раздельно для под- счета числа повторений цикла (заполняются только первый^ второй л знаковый разряды) и модификации адресов (заполняются третий . и четвертый разряды). В последнем случае в разрядах 1 и 2 должно находиться число JV }> 21. 433
Использование команды СчП для организации циклических вычислений позволяет сократить число команд программы по срав-* нению с обычными операциями и адресами второго ранга. Ниже 10 для сравнения программа вычисления суммы 2 хЛ/ (стр, 432) переписана с использованием этой команды Порядок записи чис- ловой информации и распределение памяти остаются такими же, как ранее, изменяется лишь содержимое ячейки' с номером 70:-)-0 —• 00180 (01 — начальный адрес, 80 = 100— 20 число циклов) Программа Адреи Команда Ионона инн 00 ЧТ оо , Золпсь ауля в ячейку, предпаапачепиую для хуа i зп 71 пения суммы 2 ЧТ2 70 Xy-*(G.U) 3 ЗП 72 (с.ч) -» р я 4 СчП 70 Подготовка адреса 5 ЧТ2 70 Atly —(с.ч) 8 УМН 72 7 СЛ 71 2-т zj X А^—(сл) 8 зп 71 (w*) - 2 1 9 СчП 70 Иереадресацня я счет цаплей Ш УШ 02 Переход па продолжение счета 1 ЧТ 71 2 ост 01 Вывод результата 3 ост 00 Оетаноп Изменения в алгоритме выполнения команды ЧТ2 а заключают- ся в следующем Команда ЧТ2 а- позволяет записывать програм- му в числовой, памяти машины, и характер ее действий определяет- ся содержимым ячейки а. Если содержимое разрядов знака и по- рядка числа, записанного в ячейке а, равно пулю, то эта операция выполняется обычным образом, как операция’ с адресом второго ранга. Однако, если зти разряды не нулевые, то содержимое ячей- ки а, воспринимается как команда, записанная в памяти, ивыпол- няется обычным образом. Значит, в память машины в произвольную ячейку можно записать команду н выполнить ее с помощью опе- рации ЧТ2. Команда в памяти записывается так В разрядах порядка и его знака указывается код операции, а в 3-м и 4-м разрядах мантиссы— ее адресная часть. Залесение команд в намять производится в ре- жиме ввода, как п любой числовой информации; в третьем и чет- вертом разрядах клавишного набора указываются разряды'адре- са, а в разрядах порядка а знака код операции Затруднение 434
при наборе команды может вызвать несоответствие двоичного пред- стовления кода операции в машине и в системе весов разрядов 5211, используемой при кодировании десятичных чисел на вводе. Но его легко преодолеть, еслн сопоставить двоичный код и машинный. Так, коды, набираемые в разрядах порядка и его анака последова- тельно 4-1, 4-2, -J-3, -{-4, 4-5 и т. д», будут соответствовать кодам операций 01, 03, 05, 07, 08 и т. д. Следует заметить, что программы, записанные в память маши- ны, получаются обычно длиннее но сравнению с аналогичными программами, набираемыми пттеккерами, так как яельая пользо- ваться «запрещенными» константами. Средн других модификаций [47] можно отметить расширение списка команд, выполняемых с адресами второго ранга, введение новых операций типа сложения с записью в ячейку, гашения, ква- драта числа и т, д. Порядок решения задачи на машина Программа, записанная на бланке, может набираться штвккерамы с произвольной ячей- ки наборного поля. При атом, конечно, должны быть согласованы адресные части операций перехода, В программе допускаются сво- бодные ячейки наборного поляг если ячейка пе заполнена штекке- рами, то это равносильно нулевому коду Такая операция пе про- изводит никакого действия. Если в программе предусмотрена цифровая информация или часть команд размещается в числовой памяти, то перед началом вычислений их надо занести в память с клавишного набора на пульте управления. Иногда случается, что часть ячеек вначале должна имотъ нулевые коды. Занесение нулевых кодов во все ячей- ки производится шинками «Стирание памяти», которые находятся также па пульте. Решение задачи начинается с ее отладки Отладку можно произ- водить в автоматическом или одиночном режиме. Для этого с по- мощью кнопки «Нам, сброс» сумматор, регистры адреса и номера команды устанавливаются в пулевое состояние я включается ре- жим «Авт» или «Такт». При отладке в автоматическом режиме имеет- ся возможность останавливаться после выполнения любой коман- ды наборного поля. Адрес останова набирается на пульте. Отлад- ку программы можно производить и отдельными частями. С этой целью в регистр номера команды с пульта засылается соответст- вующий начальный номер команды. Отлаженная программа может быть нанесена о помощью пер- форатора па метяллизлровашше карты (10 команд на каждую нарту) я при повторных решениях использоваться вместо штекке- ров Пример 1 Составить программу расчета минимального чис- ла теоретических ступеней разделения по уравнению Фенске — Андервуда Минимальное число теоретических ступеней разделения при ректификации бинарной системы согласно уравнению Фенске —
Андервуда определяется по уравнению [48] Ь(егА/ЬА.ЛБ/зв) .11 п\«т " ' - 1 - (14-1) где Ьд, Ьв — количество компонентов А и В в кубовом остатке; dA, ds — количество компонентов А и Л в днетиллате; адв — ко- эффициент относительной летучести Уравнение получено при условии, что колонна работает в ре- жиме полного орошения, а коэффициент относительной летуче- сти есть величина постоянная по высоте аппарата, Распределение памяти 01 «ав, 02 — 03 — Ьд, 04 — d^ 05 — dst 78 — рабочая ячейка (р.я) Программа Адрес Комдада. Полевения 00 ЧТ 01 ЯАВ “* (СЛ) 1 In 00 2 зп 01 (ан) — 01 3 ЧТ 04 йд (см) 4 ДЕЛ 02 dA^A~^^ 5 У МН 03 ЙА Мд -» (***) 0 ДЕЛ 05 dA • bjjl фАфв) —- (wt) 7 In 00 “* ("») 8 ДЕЛ 01 Идд (0«) 9 ВЫЧ1 № . AGnin “*(«*) 10 ост 01 Вывод результата 1 ост 00 Останов Составим эту же лрозрамму при условии, что часть команд, например команды 03—06, размещается в памяти чисел Для'этого > нужно поступить следующим образом. Пусть эти команды будут размещены начиная с 20-й ячейки памяти. Тогда содержимым ад- реса а команды ЧТ2 а, указанной на наборном поле, должна быть опять команда чтения по второму рангу. Эта команда обеспечит выполнение части программы, размещенной в памяти. Если для исполнения одной команды, записанной в памяти, содержимым " , адреса команды ЧТ2 а будет код операции, записанный в разрядах порядка и его знака, и адрес, записанный в 3-м л 4-м разрядах мантиссы, то Для выполнения нескольких команд ячейка а будет содержать- а) в разрядах порядка и его знака код операции ЧТ2, набирае- мый на клавишном наборе как 4-7; б) минус в э паков ом разряде мантиссы; в) в третьем н четвертом разрядах — адрес первой команды, ,* записанной в числовой памяти, 436
г) в первом и тором разрядах — число команд в дополнитель- ном коде, которые записаны в памяти, Таким образом, если ваять команду ЧТ2 79, то содержимым ячейки 79 будет код +7 —02093, гдо +7 — код операции ЧТ2, 20 — адрес первой команды в памяти, 96=400 — «число колшнд», т. е. 4 Управление выборкой команд ив памяти производится с помощью команды. СчП 79 Распределение памяти под исходную информацию остается тем же, что а в предыдущей программе, В новой программе ячейка 78 выполняет несколько иную роль: она является сумматором для команд, записанных в памяти Программа состоит из двух частей. Одна набирается хптенке- рами, а вторая вводится в память чисел вместе с числовой инфор- мацией н кодом в ячейку 79* +7 —92096. Программа в памяти чисел. Адрес Команда Пояснения 20 ЧТ 04 d Д 21 ДЕЛ 02 22 УМН 03 Зльв!ьл - М 23 ДЕЛ 05 Программа на наборном ноле Адрес Команда Пояснении 01 ЧТ 01 2 In 00 Ь («АВ^ - № 3 ЗП 01 (сл) —>01 4 ЧТ 78 Чтение в сумматор одного из Онсрвидоп для коман- ды, аапнеаняой в памяти 5 ЧТ2 79 Выполнение команд, аанисанных в памяти 8 ЗП 78 Запись результата эдао чнения команды, записан- ной в вамятп 7 СчП 79 Переадресация я счет числа выполненных команд 8 УП 1 04 Переход иа яыбор следующей команды 9 ЧТ 78 - М 10 1а 00 1а (сл).—> (сл») 1 ДЕЛ 01 (сл)Дп аАП -* (сл») 2 ВЫЧ1 86 Лт~^ (сл») 3 ост 01 Вывод 4 ост 00 Осишоп Как следует из сравнения этих вариантов программ, введение операции ЧТ2 для записи команд в память лишь удлинило вторую программу. Следовательно, вряд ли целесообразно размещать в числовой памяти пебольшие части программы, так как для орг а- низании их иснояпеимя необходимо затратить пять ячеек набор- ного полп, 437
-ТЛ Л -‘-7 \ S. Л* --’'•-> ^‘Y ‘ ' ' . • , - м * - - г . V ; После выполнений микропрограмм в ^запрещенных» ячей- ках находятся величины, которые могут оказаться полезными при составлении программ Эти величины, в частности, могут исполь- зоваться как константы. и их пе нужно вводить в память машины заранее. Аналогично в ^запрещенных» ячейках, не используемых в данной микропрограмме, могут храниться результаты промежу-т точных расчетов. Конечно, тонкости программирования поэво- ; . ляют. экономить считанное количество ячеек, но, как часто бывает, 1 " при составлении программы именно их и пе хватает. Примера, Составить программу для пересчета состава сме- \ си, заданного в весовых долях, в молярные. Пересчет состава осуществляется по формуле х /Д/ **,-= я,! - (< = 1,2,3,. .,т>), (14-2) где дгМ1 — весовой л мольный составы соответственно; М — молекулярный вес Распределение памяти: 02— жяи01 — Aflt 03 —Л/£, 04 — #3,5,. 2п — 1 — ЛГП, 2п — #в,п, ,, - ' П 1 77, 78 — рабочие ячейня, 76 — ячейка для хранения 2 я» 79 — константа: -f-О —0 о^а^ак где: а*а8—01 — адрес первого числа; — 100 — 2п. Алгоритм расчета по формулам {14—2) и состоит иэ двух отдель- / ных циклов: в первом вычисляются отношения xv 7/М> и подсчи- ‘ , п тываетсн 2 /МЛ (для удобства организации второго цикла от- ношения размещаются и ячейках, где хранились х^), во , втором цикла непосредственно по формулам вычисляются мольные концентрации. / При изменении числа компонентов исходной смеси увеличивает- ся количество ячеек, запятых исходной информацией, и изменяется . _• содержимое ячейки 79 (число повторений циклов и начальный адрес). Программа приведена на стр. 439. Пример 3. Составить программу расчета зависимости чис- ла теоретических ступеней разделения укрепляющей части ректи- фикационной колонны (при разделении бинарной смеси) от флег- мового числа При выводе расчетных соотношений были приняты следующие допущения: потоки пара и жидкости по высоте колонны постоянны; состав пара, покидающего стунень разделения, находится в равно- весии с жидкостью, те . ’ И = = Ktfi (t == 0, 1. 2, , /), 433
Программа Дявес Комвицк Пояснения ОО ЧТ 00 1 1 ЗП 76 ) Запись пуля в ячейку накопления суммы 2 ЧТ 79 1 3 зп 78 J Запись константы в рабочую ячейку 4 ЧТ2 78 1 5 ЗП 77 ) Подготовка первого анероида Afy 6 счп 78 Подготовка адреса второго операнда j 7 ЧТ2 78 хв j -> (о«) 8 ДЕЛ 77 гв, 9 ЗП2 78 Запись в ячейку 10 сл 76 Подсчет суммы 2xu j/Mj 0 = 1,2, ) 1 ЗП 76 2 СчП 78 Переадресация и счет циклов 3 УП1 04 Переход на порто рейле цикла 4 СчП 79 Начало цикла расчета мольных концентраций 5 ЧТ2 79 6 дел 76 «моль!-(«О 7 ост 01 Зывод «молИ 8 СчП 79 Порвядресацпя и счет циклов 9 УШ 12 Переход на повторение цикла 20 ост 00 Останов где i — помер ступени; кривая рав- новесия пар — жидкость описывает - он уравнением * аг< “ 1 + (а — 1) ’ где х, — состав жидкой фазы; а — коэффициент относительной летуче- сти; состав жидкости на ступени ввода питания равен составу пита- ния Xj (условие оптимальности ввода инталия); пар, поступающий в дефлогматрр с верхней огупепн, полностью конденспруотся, т. о, Хп = = !/г>- Расчетная схема колонны приве- дена на рис, 61. Задача расчета за- ключается в следующем Исходя иа заданного состава диетиллата jfo п ограничения, наложенного на место ввода питания, требуется определить Рио (И Схема потоков о уцрепчиКг щей части коло>1»ы при рааличиом орошении (TimingЛ < Ншад) число теоретических ступеней, обеспечивающих заданное рц а деление исходной смеси, т, е при каждом значении флегмового числа необходимо произ- вести расчет укрепляющей части колонны.
Математически аедача расчета укрепляющей части колонны формулируется так. Для произвольного сечения колонны можно записать уравнение общего материального баланса где V — количество пара, ьздюль/чос; L — количество жидкости, какодь/чде; D — количество днетиллата, хамадъ/час Уравнение материального баланса по легколетучому компонен- ту (при направлении счета ступеней разделения сверху вниз) име- ет вид = Lx, + (i = 0, 1, 2, , АГ) (14-3) Для решения системы уравнений (14—3) целесообразно вос- пользоваться методом расчета «от тарелки к тарелке». В этом слу- чае алгоритм расчета будет состоять из следующих этапов: 1) за- дается режим работы колонны (орошение, количества пара и жид- Рпс 02, Влои мима алгоритма расчета эанивнмОсти X = /(Я) кости); 2) но известному составу пара (состав днетиллата задан) рассчитывается равновесный ему состав жидкости х‘ = • <14-4) > 3) фиксируется помер ступени i, и концентрация легколет^чего компонента сравнивается с его концентрацией в питании Если xt х/, то печатаются значения флегмового числа, числа ступе- ней разделения, и расчеты повторяются с пункта 1. В противном случае по уравнению (14—3) + JT=T1d (14—За) рассчитывается состав приходящего пара, и вычисления продол- жаются для следующей ступени начиная с пункта 2. Блок-схема алгоритма расчета приведена на рис. 62. Распределение памяти: 01 — Хп — состав днетиллата, моль/ /моль', 02 — xj — состав питания, лииьАквль; 03 — а — коэффици- ент относительной летучести; 04 — Hmini 05 — Яшах: 06 — ДЛ — шаг изменения флегмового числа; 07—12 — рабочие ячейки, ис- пользуемые для хранения промежуточных результатов расчета 440
Программа Адрес Команда По нс Fie л пн 00 чг 00 3 1 зп 07 j Запись пуля в ячейку помора ступени 2 ЧТ 04 3 зп 08 > ^пИл“*Ря- (пачольнов вначение Л) 4 ЧТ СИ ' Задание концентрации на верхней ступени разде- ления 5 зп 09 . 6 ЧТ 08 7 ел 86 Л + 1 -• р я 8 зп 10 9 ЧТ 08 ’ 10 ДБЛ 10 ДДЯ+Й-РЯ 1 зп 11 2 ЧТ 01 3 ДЕЛ 10 YpKR — 1)->ря 4 зп 10 5 ЧТ 03 л 6 ВЫЧ1 86v 7 УМН 09 8 ВЫ 42 03 9 зп 12 Расчет По формуле (14—4) 20 ЧТ 09 1 ДЕЛ 12 2 зп 12 3 ВЫ 42 02 Х1 — - м 4 УП1 34-57 Если тн переход к расчоту ун1 5 ЧТ 07 1 8 ост 01 1 Вывод Л 7 ЧТ 08 8 ост 01 [ Вывод Я 9 ел Об Я -|- ДЯ -г (cut) 30 зп 08 (cut) -* р,я. 1 ВЫ 42 05 Яртяг Я * (wt) 2 УП1 Если Я > Я1ПЦХ1 то выход па окончание программы 3 ьп 02J I Переход на повторепио расчегга при лоном Я 4 4'1 07 1 — 1->1 5 ел 86 6 зп 07 1 7 ЧТ 12 8 УМН 11 Расчет у1+г по форму те (14—За) 9 ел 10 40 зп 09 1 ЕП 15А Переход ян расчет следующей ступени 2 ост 00ZI Останов 441
Пример 4 Составить программу расчета температуры ли- нения многокомпонентной системы и равновесного состав а паровой ; фазы, если известно, что система подчиняется законам идеальных газов Исходные данные* состав жидкой фазы — я-4, , хп\ п =f 1; давление пара чистых компонентов при различных тем- - i=i пературах; общее давление системы — Р, ашл Как отмечалось ранее (часть 1, стр. 34), задача расчета равно- весия сводится к итерационному поиску положительного корня - уравнения с одним неизвестным п /(7) = ЗК1(Лт1-1 = 0, (14-5) f=I 1де К (Г) — константа равновесия, являющаяся в простейшем слу- чае функцией температуры. При выполнении инженерных расчетов для описания зависи- мости К — Л (Т) достаточно задание полипома второй-третьей степени, коэффициенты которого определяются по эксперимен- тальным значениям Kt и - Определение коэффициентов эмпирических зависимостей яв- ляется широко распространенной задачей в практике обработки экспериментальных данных. Поэтому при отсутствии аналитичес- кой зависимости К = К. (7') задача расчета равновесия разбивает- Ся на две независимые части. В общей постановке (произвольное число компонентов исходной смеси, произвольная степень аппрок- симирующего полинома) программа не размещается иа наборпом поле машины. Программа метода наименьших квадратов. Если число экспе- риментальных точек равно п 1 (и — степень полинома), то для он- • > ределепия коэффициентов полинома можно воспользоваться иптер- поляцпонпыми формулами Лагранжа, Ньютона (главе 11, стр. 302), если же число точек больше степени полинома,-то наиболее рас- ’j, пространэнным способом оценки коэффициентов является метод наименьших квадратов (см. глава 11, стр. 319). Для последовательности экспериментальных точек (t = 1, 2,..., п), подчиняющейся зависимости' К — К (Т, Qg, flj, , om) (n m), согласно методу наименьших квадратов наилучшими в смысле приближения к экспериментальным значениям будут коэффициен- ты а0, я-i,..., «т, определенные всходя из условна минимума суммы квадратов отклонений функция 11 и = 2 (£( (Л «9 , ат)~ = mm. (14—6) ; »=i 442
Таким образом, для построения аппроксимирующей аависнмо- сти rrt KOT-S’MO’i. t=4) ГД о фк (Г) = ?ki необходимо подобрать коэффициенты а$, alt.. ttt, ат так, чтобы значение U, рассматриваемое как функция пере- менных aftf было минимальным. В конечном счете задача поиска коэффициентов сводится к решению системы линейных алгебраичес- ких уравнений относительно неизвестных оо, ох, . , ат (глава 11, стр. 320) аоЛо 4 fllPoi 4 4 — frfh OoPlQ-^ П1Рц I СзРщ-г 1“ (1^—7) «««44 « ««« OoPfflO 4 ^iPml 4 flaPfli2 4 * -1- flm-Pmfli = bm, где n Pm “ S Фл (7\) Фз (T’f)* n bfc == S Фь (T0 (fc. « = 0, 1, 2, ftl), j=l Как слодум из формул (14—6), программа метода наимень- ших Кондратов состоит из последовательности команд для опре- деления коэффициентов матрицы системы уравнений и решения полученной системы, В стандартной программе для решений си- стемы уравнений используется микропрограммная команда ре- шения системы (PC) [47]. Команда PC позволяет решать системы в зависимости от кон- кретной машины до 7-го порядка включительно, и перед ее выпол- нением коэффициенты системы должны находиться в памяти, на- чиная с ячейки 01 в следующем порядке: Роо, Ли, Рог, Р0)[П &си Рю. , Pi™. йу и т. д Кроме этого, в ячейках 71, 75, 76 долж- на находиться следующая информация: 71—00100 — адресная единица; 75 — т 4* 2 — число коэффициентов в уравнении; 76 — (m — 1) (те ф 2) - адрес последнего коэффициента. После выполнения команды PG коэффициенты исходной мат- рицы пе сохраняются, а значения неизвестных находятся непос- редственно аа последним коэффициентом системы, т. е. начиная с адреса (т 4-1) X (т 4- 2) 4 1. н т. д. При использовании команды PG со стандартной программой метода наименьших квадратов для таблично заданной функции порядок системы по превышает пяти Стандартная программа метода наименьших квадратов пред- назначена для подбора коэффициентов at (; = #) форму- 443
лы вида fc Ф(*, у) = 1 + 2 <чх}- Начальным вводом в память машины заносятся эксперимен- тальные точки в количестве, кв превышающем п ~ 35 — (% + 2)а/2 (fc — степень полинома), и другая вспомогательная информация, а в процессе выполнения программы вычисляются коэффициенты матрицы, записывающиеся в соответствии с требованиями коман- ды PC В программе предусмотрен ввод масштабного множителя, ко- торый предотвращает переполнение разрядной сетки машины в процессе вычисления коэффициентов системы. Точность вычисле- ний — три знака. Исходные данные (* + 2)г + 1-Л, (A + 2P + 2-JG, (fc-F2)2 + 3-T3t (fc ф- + 2р + 4-^......... (к {-2)* + 2п-1-Л, (fc + 2Р + 2n- Knt 75-(fc + 2)A, 77-(fc-H) (fc +2)л, 78-((fc+2) + 2n)At 79- масштабный множитель 1О'г,71 — -ф001100—(fc-|-2)s 70—}-0— — 0 (fc+ l)(fc 4-2) + 1 100 — A 69 — ф-o‘— 0 (Д-2) +1100 - 2n Д.Д, “»«i И*“, 013, После окончания работы программы неизвестные ttj (; = 1,2,., fc) находятся в ячейках (fc 4- 1) (fc ф- 2) 4- f, я0 — в ячейке (fc 4- 1) (fc ф- 2) 4- fc 4“ 1» Наряду с этим выводится па печать рас- согласование между расчетными и экспериментальными значе- ниями функции в каждой точке. Программа Алроо Команда Поп сиге пи л $ 00 1 ЧТ 77 ЗП 76 j (fc ф1) (fc 4 2)а —» (р п) (дтя команды PC) 2 СЛФ 90 3 ЗП 414* (fcd l)(fc-| 2) ф 14 -адрес/1(7*) 4 ЗП 54* . 5 СЛФ 75 6 ЗП 56* (fc -1- 2)3 4- 1А — адрес первого аргумента 7 ВЫЧФ90 8 ЗП 34* 9 ВЫЧФ90 (fc -j- 2)д — копстаита для выбора К я Т 10 ЗП 64* i ЧТ 00 1 (fc -J- 2)’ — 1А — адрес птейкп коэффициента 2 ЗП2 71 ) при а« 4 444
3 СЧП 71 1 4 УШ 11 J 5 ЧТ 80 \ б 3112 64* J 7 ЧТ 90 ' 8 311 71 9 ЭИ 510* 20 ЧТ 86 >. 1 зп 82* 2 ЧТ 69 3 зп 24’ 4 ЧТ 70 5 зп 514* О ЧТ 24* 7 311 66* 8 У МН 62» 9 зп 82* 30 ЗП2 70 1 СЧП 70 2 УШ 26 3 СЧП 2-4* 4 ЧТЯ 24* 5 ВЫЧ1 80 fa ДЕЛ 66* 7 ЗП2 34* 8 ЧТ 54* 9 ЗП 412* 40 ЧТ2 412 1 ЗП 512* 2 ЧТЯ 414* 3 УМН 512* 4 УМН 79 5 зп Ъ4* । 8 ЧТ2 510* 7 СП 84* 8 ЗП2 510* 9 ЧТ 510* 50 СЛФ 90 . 1 311 510* 2 ЧТ 414* ’ 3 СЛФ 90 4 зп 414* 5 выч 56* ] fa УП1 42 J 7 ЧТ 54* 1 8 зп 414* j Запись кули а ячейки 01 — (А -|- 2)1 Запись единицы ч ячейку (fc -1- 2)* — 1 Запись единицы в ячейьу 71 (для PC) т = 1 Вычисление ft (Т) (формирование функций Тц Т^,, 7* и вшшсь в ячейки начиная с (А -|. 1) (А +2) + 1) Вычисление (7^ — А)/!* Формирование и запись коэффициентов патрицы ГП —’ /к -*- 1 Формирование индекса суммирования i<(* L2)'+ 1 Впссгадовяенио адреса суммироваиня 445
< L 1 ' ' ~ » 1 » 9 ЧТ 412* г 60 СЛФ 90 ? —7 -1 1 ‘ > 1 зп 412* 2 ВЫЧ1 з4* П роверца f — 2)1 8 УШ 40 4 СчП 24* Переход к выбору следующей точки 5 УШ 17 - < 6 FC 00 Решение системы уравнений 7 ЧТ2 ЗП 89 Вычисление точности аппроксимирующего полидома ДК< = АС - (1 + й171 -L Й5Т* + + акТ1) _ , 8 78 9 ЧТ2 70 1 70 УМН 76 1— а.Т, 1 ВЫЧ2 88 1 i ! 2 ЗП 24*. 3 ОЧИ 69 4 ЧТ2 69 X 1 —й1— Г, < 5 ВЫЧ1 24* 1 • 8 ЗП 24* 7 ЧТ 00 1 8 ЗП 01 9 ЧТ 70 80 ВЫЧФ 90 1 зп 70 2 ВЫЧФ 77 3 УП2 89 Вычисление по формуле 4 ЧТ2 70 ; 5 сл 01 (-««Л-1 «»п>Л+ 6 УМП 78 4 7 зп 01 8 вп 79 9 ЧТ (И f3 90 УМН 7В 1 зп 01 г1 2 3 ЧТ ВЫЧ1 24* 01 ДК =^-(1+^-1 -\-акТ*) 4 ост 01 Bbiuojv Kt 5 счп 69 Переадресации и переход к расчету ошибки в ап 8 УШ 67 протижыацни следующей точки 7 вп 95 Останов динамический Если ошибка аппроксимации превышает заданную точность, - То целесообразно изменить степень полинома и повторить расчет коэффициентов При отом может оказаться, что для различных компонентов полиномы3 описывающие зависимость константы равновесия от температуры, будут иметь разные степени Программа расчета равновесия. После определения коэффи- циентов аппроксимирующих полиномов необходимо составить про- грамму расчета по уравнению (14*—5). Рапсе отмечалось, что 446
для решения этого уравнении можно воспользоваться любым методом уточнения корней уравнений о одним неизвестным (гла- ве 8). Здесь будет использовал метод делений отрезка Пополам .. j: При решении уравнения 04—5) корень расположен па отреа- > Ito (Гит, Ттих), гдо 7*тлт ~’ температура кипения самого легкого ?' компонента смеси, а Гтат — соответственно самого тяжелого* . А Алгоритм расчета по уравнению (14—5) состоит вэ следующих этапов (см. рис 30). .’j 1 Вводится исходная информация — состав жидкой фазы, - ? граничные температуры нипепия, коэффициенты зависимостей К = / (Г), точность вычислений. 2 При температуре, равной полусумме грепичных температур, вычисляется значение функции по уравнению (14—5) 3 . Проверяется знак функции /(Гср)- Если / (Тар) > 0, то, следовательнд, 7\.р > ГКип н отрэзок 0%f Лмх) можно дальше не принимать во внимание, а Гср записать в ячейку, гдэ хранится ,а TmnX. Если (Тер) <0, то Тор < и аналогично отрезок (Ттш, ГСр) можно исключить, а Гар записать па место 4 Если ]/(Гср) | «С е или длила вновь полученного отрезка ве превышает заданную точность вычислений, то вычисления за- канчиваются, иначе необходимо возвратвться к пункту 2 на пов- торный расчет при попом значении Тер, 2 Число приближений, которое необходимо выполнить, зависит от начального температурного интервала и от точности вычисле- ний Программа, реализующая указанный алгоритм, приведена ни- же При ее составлении полагалось, что число компононтов висте- мы может быть произвольным, так же как и степени полиномов, описывающих зависимость константы равновесия от температуры, могут не совпадать для различных компонентов, В последнем сну чае свободные ячейки под храпение коэффициентов заполняются нулями при вводе, Числовая информации размещается последовательно начиная С НЧ0ИКИ 01; Xj(t Лд1, ®D3,'“> ®22 а т д. (A; — число компонентов). В процессе расчета концентра- ции паровой фазы ytl у2,..., ук записываются последовательно в ячейках за последним коэффициентом атк. При таком расположе- нии информации, если записать уравненве (14—5) в виде m К ^01=1 где т — степень полинома, легко организовать циклы по вычис- лению отдельных сумм. Распределение памяти 01 — Ji А. -|-1 — aOi 2А- |- 1 — ап тк +1 — tfmi (m + 1) к -J-1 — 02 —' л*з Л + 2 — 2/г -| 2 — Qu тк -ф 2 — tfjna (wi — 1) к 4- 2 — y2 447
03 A 3 *— 2Л —p 3 *— /и A —[“ 3 “I- 1) Zc—}** 3 y^ • « * • * i * * i * * к — хц 2k — аФк ЗА — а1Лг mk 4“ Л — + 2k —- у* 70----H 0 — 001100 — к, где 01 — адрес 71 —- 0 — ОА (яп-1-1) 4-1 ‘ (100—А), где к (т-р 1)4-1— aupecyi 72----г 0 — ОА' 100 — А\ где к — адрес хК 73 —0 4- 000 100 — Л, где 100—А—число понтср&пий цикла 74-Гт|п / 5 — Г тах 76 — точность вычленении В программе зашыы ячейдп- 77, 78, 24*, 34*, 412*, 414*, 46*, 56*г 54*. Программа Кдрео Команда Пйнсщепия 00 ЧТ 74 1 сл 75 I 71 4 min 4 тих 2 ДЕЛ. 87 — 2 3 ЗП 77 4 ЧТ 71 5 ЗП. 34* 6 ЧТ 00 7 ЗП2 34* Г ЗаШк.ь пула а ячейки для хранения Vf 8 счп 34* 9 УП1 (И5 10 ЧТ 72 1 зп 414* г ВосъгАнйнлРИне адреса хк 2 ЧТ 86 3 зп 56* [ Запись одинитца в ичейку для хранения Г1 4 ВЫЧ2 00 5 зп 78 Запись —1 в ячейку дне хранения / (Г) 8 ЧТ 71 7 зп 24* 8 ЧТ 70 Восстановление адресов yi п ц 9 зп 412* 20 ЧТ2 412* > 1 зп 54* 2 счп 414* 3 ЧТ2 414* Вычисление 4 УМН 54* 5 УМН 56* 443
> 1, / Д\|р' ' ,’V й 7--iJXV 1. 1 1 |1 - , 1 ' ' 1 . 7 -,т 1 С>4 ' < 6 зп 46* 7 8 ЧТ2 сл 24* 46* (форнпрованно у^) J ,• 9 8П2 24* "j' 74: _ 7' 30 1 СЛ 8П 78 78 [ 3Seft*i7rf“t з i . ,т 2 СЧП 24* Переадресация у4 3 счп 412* Переадресация и счет циклов Г’!’ 4 УП1 20 - 5 ЧТ 56* ’ 8 УМН 77 Формирование 7^ 7 зп 56* 6 ЧТ 414* 9 СЛФ 73 Формирование первого адреса следующего кздффн* » 40 ФР 72 циадта 1 зп 414* 2 СЛФ ЙО 3 ВЫЧ2 71 । Пропарка кв онопчаиие расчета / (Г) 4 УП1 10 5 ЧТ 78 6 ФР те 1/П1 7 В ЫЧ! 1 76 6-1/П1 8 •УП1 59 е>!/СП1 9 чт 78 50 УП2 69 /СП —0 1 УШ 66 /(Л<о 2 8 ЧТ ЗП 77 75 •^ср ~‘ "Гтах 4 5 вп ЧТ ОО 77 Переход кв начало расчета прн новом значении Тф 6 7 ЧТ зп 77 74 Т - т ср ш|д 8 БП 00 9 60 ЧТ оат 77 01 L Вывод ТИЯ[1 1 ЧТ? 71 2 ост 01 Вывод У| 3 счп 71 Переадресация 4 УП1 61 * 5 ост 65 Динамический остапов 1J V115 В В- Квфарте в др.
Глава XV МАШИНА СЕРИИ «НЛИРИ» Вычислительная машина сНапрш относится к классу малых иашнп н предназначена для решения широкого круга аадач, воз- никающих при економических, влжоперпых расчетах и научных исследованиях. Программирование вадач для решения на машинах этой серии можно осуществлять тремя различными способами: в оистеме ко- манд машины, в режиме автоматического программирования в в очетиом режиме. Составление программы в си стене команд машины производит- ся обычным образом, Алгоритм решения задачи ааписывается в терминах команд машины и вводятся в запоминающее устройство. Дли этого можно использовать машинные операции в количестве 44 команд и 30 псевдоопераций (вычисление элементарных функ- ций, операции с комплексными числами, операции преобразова- ния кодов), Последние осуществляются с помощью машинных ко- манд и могут использоваться наравне с машинными операциями. При автоматическом программировании (язык АП) програм- ма ааписыдается в терминах операторов—символических наиме- нований для выполнения определенной (для каждого оператора) совокупности действий. Операторная запись алгоритма по форме близка к обычпой записи вычислений в математике. Эта запись зачем вводится-в машину и преобразуется в последовательность машинных команд с помощью транслятора, Счетный реяшм используется для однократного вычисления алгебраических выражений, если заданы значения всех входящих в него переменных, , Язык АП весьма прост в освоении и позволяет работать на ма- шине беа специального обучения программированию, Это обстоя- тельство обеспечивает машине широкое распространение для решения небольших по объему задач, е также для первичной под- готовки сложных алгоритмов. В настоящей главе рассматривают- ся вопросы программирования на языке АП длн машин «Наири-С», 1. Общая характеристика еНаири-Сэ является универсальной двухадресной ирограммио- управляомой машиной с естественным порядком выполнения ко- манд. Конструктивно она оформлена в виде трех отдельных бло- ков! главного блока, выполненного в виде письменного стола, бло- ка питания и блока внешних устройств. 450
Нюьа приведены основные характеристики машины. Форма иредставлевия чисел Система счисления Разрядность ячейки памяти Емкость оперативного ааномяиаю- щого устройства Емкость долгов ре манного вапомнпою- щего устройства Диапазон представ ля оных чйоел Скорость ввода с перфоленты Скорость вывода вывод да печатающую машину вывод па перфоленту Среднее быстродействие о фиксированной запятой двоичная 36 двоичных разрядов, включая одев числа 1024 ячейки п 5 фиксированных, адре- сов 18 384 ячейке ГН < | г | < 2(1 — 2-W) 100 знаков сек В аиакое/сек 70 такое/мк 2—fl тыс, tm/сея Операции с плавающей еапятой вводятся с помощью микро- программ, и средняя скорость их выполнения — 200—300 оп/сек. Представление чисел в машине. Арифметические операции в машине выполняются с числа мл в дополнительном коде, представ- ленными в форме с фиксированной запятой. Основной единицей информации в машине является 36-pasряд ный код, соответствующий одной ячейке ЗУ. Разряды нумеруются справа налево! 36,35, 34,..., 3,2,L При храпении числовой информации напитан фиксируется между 34-^ и 35-м разрядами, а 36-й разряд — знаковый, С помощью поевдооперацнй можно ввести целые числа, числа е двойной точностью и с плавающей запятой. Целые числа пред- ставляются в виде условно целых, когда запятая фиксируется после младшего разряда. Числа с двойной точностью записывают- ся в двух последовательных ячейках, при этом целая часть раз- мещается в первой ячейке, а дробяап — во второй. При записи чисел с плавающей запятой мантисса н порядок размещаются в одной ячейке, В этом случае для записи порядка числа отводятся разряды 1—7, а для мантиссы — разряды 8—34. Знак порядка уиаеывается в 7-м разряде, а знак числа — в 35 и и 36 м раз- рядах, Число называется нормализованным, если для его мдп- гиссы выполняется условие 1/2 | ml < 1. Логическая структура машины, «Наири-С» содержит следую- щие функциональные устройства! арифметическое устройство, устройство управления, в адоминающее устройство, устройство ввода-вывода, культ управления. Арифметическое устройство (А У) предназначено для выпол- нения арифметических и логических операций над числами и ко- дами Оно состоит из сумматора н регистров для хранения опе- рандов, роль которых выполняют фиксированные ячейки, 451 15*
Все арифметические операции в сумматоре выполняются над числами с фиксированной запятой в модифицированной доводив тельном коде. При выполнении операции над числами с плаваю- щей запятой Код числа в сумматоре разбивается па две части? мантиссу и порядок, операции с которыми пронвводятся в режиме с фиксированной запятой раздельно, В процессе выполнения операции предусмотрено округление результата. Для этого яспольвуетси дополнительный разряд сум- матора. Устройство управления (УУ) предназначено для автоматиче- ского управления работой отдельных устройств при выполнения операций. Команды программы выполняются в порядно их следо- вания, адрес каждой ив них при исполнении указывается в счет- чике адреса команд (СчК). — Выполнение команды осуществляется за пять этапов и начи- нается с ее выборки ие запоминающего устройства в Зб-рапряд- иый регистр команды (РгК). На первом этапе производится выборка команды не памяти в сумматор, формирование исполнительной команды в соответствии с прианаканд и передача ее в РгК. ‘ Второй к третий етапы обеспечивают подготовку операндов к выполнению операции (выбор из памяти, разделение на мантиссу к порядок для операций с плавающей запятой и запись в* фикси- рованные ячейки). На четвертом и пятом станах производится выполнение опера- ' цин и запись результата по адресу, указанному в команде. Запоминающее устройство (ЗУ) машины подразделяется на две /j части! оперативное (ОЗУ) я долговременное ЙЗУ). ОЗУ содержит 1024 ячейки и предназначено для хранения 1> программы и числовой информации. Помимо этого оно содержит пять фиксированных ячеен, которые выполняют роль регистров других устройств машины. ? Вренн обращения к ОЗУ составляет 24 мк^сек. При чтении ин- формации ив ячейки содержимое передается в сумматор и роге- 1 нернруется в ячейке. При чтении ив фиксированных ячеек рэго- . ;ч нерации ве пропс ходит — их содержимое Меряется, .У ДЗУ содержит 16 384 ячейки и предназначено для хранения команд, микропрограмм псевдоопераций и транслятора АП. Вре- мя обращения к ДЗУ составляет 20 мксек. Первые 2048 ячееп ДЗУ используются для хранения микро- •: программ управления н констант. Команды микропрограмм вы- полняются принудительно, т. о. в выполняемой команде указы- вается адрес следующей. Поэтому каждая ячейка памяти, занимае- мая микропрограммами, содержит большее число разрядов, а имен- но по 72 разряда. \ Остальные ячейки ДЗУ содержат по 36 разрядов. Эта часть за- поминающего устройства используется для размещения различ- ных подпрограмм и системы автоматического программирования. ;
Устройство ввода-вывода состоит ив печатающего устройства, перфоратор а и фотосчитывающего устройства с перфоленты и пред- назначено для ввода программы я числовой информации. Для ввода информации в машину можно использовать печа- тающую машиику типа Consul-254 и фотосчитывающае устройство. При вводе о машинки информация, набираемая па клавиатуре! сразу передается в регистр внешнего устройства и выполнение программы обеспечивается автоматически после ввода последней команды. Прн вводе с фотосчитывающего устройства информация подго- тавливается еаранее па клавишных устройствах. Вывод информации производится иа перфоратор типа ПЛ-80/8 или на печатающую машинку Consul-254. Выводиться может Про грамма и результаты решения. В некоторых режимах работы машины предусмотрена qbtohqm иая работа внешних устройств, т. в. в процессе решения можно производить вывод па печать о перфоленты, дублировать перфо- ленты. Пульт управления состоит иа двух панелей: панель сшнализа- ции (ПС) и панель управления (ПУ). Панель сигнализации предназначена для выбора соответствую- щего режиме работы к сигнализации состояния машины. На па л ель сигна ливацин выведены неоновые лампочки рае личных ре- гистров машины (сумматора, регистра, команд, регистра счет- чика команд и т. д.). Здесь располагаются кнопки включения я выключения машины, различных ее устройств. Панель управления предназначена для проверки и наладки машины, изменения отдельных команд программы вручную путем занесения кодов в соответствующие регистры с пульта. На панели управления расположены клавиши для. набора кодов а равличные регистры, кнопки останова по адресу, кнопки управления, пере- ключатели для изменепил питающего над ряжения отдельных устройств. 2. Автоматическое программирование (АЛ) Основными символами входного языка АП являются символы, представленные на клавиатуре печатающей машинки типа Consul- 254. Всего попользуется три регистра — верхний, средний и ниж- ний, поэтому одна я та же комбинация двоичных разрядов будет восприниматься машиной различно в зависимости от регистра. В АП используются следующие группы* основных символов} 1) буквы русского и латинского алфавитов п, с, а, у, б, л, л, 2i м, гг, а, б, ч, г, и, о, е, /, р, т, ш, М> м — для записи назва- ний операторов и обозначения действительных переменных; 2) цифры 0,1,2,..., 9, представленные на верхнем регистре кла- виатуры,— для записи любого неотрицательного показателя сте- пени; 453
3) цифры 0,1,2,...) 9 иа среднем регистре клавиатуры — для ваписи целых и действительных чисел (максимальное число в ма- > шине не должно превышать величину 10гй); Ч 4J ааивтая — для отделения целой части числа от дробной; 5) знаки арифметических операций 4-, —, / (деление), (знак г операции умножении в е а пней формул опускается); 6) внаки операций отношения = , 7) буквы /, / (верхний регистр), А, п (средний регистр) — для обозначения целочисленных переменных; 8) символы ^возврат каретки» и «пробел» — для указания кон- ца операторов и выделения служебной информации; 9) наименования элементарных функций sin, cos, tg, arcsin, arccos, arctg, exp, In, 1g, /; 10) круглые скобки —для укавапия последовательности вы- пол не вия арифметических операций в формулах; 11) аиак модуля; 12) буква л. Структура программы к AIL Прогреыча АП состоит из заго- ловка (шапки) и операторов. Заголовок является обращенном к транслятору, и его присутствие в программе обязательно. Если программа не содержит массивов, то заголовок состоит вз кода и, возможно, из формулы, которая используется в вычисли- тельной части программы. Например, ад у 5= ехр (а — Ъ)/{о 4* 1) Если в программе попользуются массивы, то помимо указан- ной информации в заголовке задаются максимальные значения индексов По этой информации производится распределение па- мяти для хранения массивов. В вычислительной части программы содержатся операторы, со- стоящие пе наименования и содержательной части. Оператор за- капчивается символом «возврат каретки». В АП. отсутствуют описания переменных. Каждое наименование переменной имеет фиксированный адрес ЗУ, в котором хранится ее значение. Значения переменным задаются операторами про- граммы В программе могут быть использованы операторы, представлен- ные пижо допустим... интервал... €ЫЧиС4(1Л... втоау.Н... СПрОоЦМ... храним... Введем... начертим... решим... кончаем... печатаем... программа.» если . идти я останов., массив... исполним.. 4^4
Операторы программы выполняются в порядке их написания. Этот норядои может нарушаться лишь операторами перехода. Наименования операторов выбраны так, что различаются но пер- вым двум буквам. Поэтому при их вводе печатаются только эти буквы. Все операторы, ва исключением массив и исполнив, обязатель- но помечаются цифровыми метками, В качестве меток можно ио польеоватг* числа от 1 доч132. Они от операторов отделяются обя- зательно символом «пробел». Составление рабочей программы происходит по мере поступле- ния символов данного оператора в машину, поэтому нельзя вы- вести ва печать исходную операторную ваппсь после ее ввода иля выполнения рабочей программы. Выводить можно лишь програм- му в командах машины. Последняя размещается в ячейках ОЗУ 370-980. Алгоритм решения заканчивается оператором «окадел, а пос- ледним оператором программы должен быть оператор исполним п, где п — метка оператора, с которого начинаются вычисления. Элементы входного яэыпа Элементами входного языка АП яв- ляются числа, переменные, функции и операторы. Числа в АП используются двух типовj действительные и це- лые, Первые хранятся в машине в форме с плавающей запитой, е вторые — о фиксированной запятой кек условно целые Целые числа записываются обычным образом в виде последо- вательности цифр десятичной системы счисления. В программе целые значения могут принимать только переменные, обозначен- ные буквами i, /, А, п. Действительные числа могут быть целыми я дробными. При записи дробных чисел целая часть отделяется от дробной запятой. В программе основные символы первой группы могут принимать только действительные значения. Переменные массивы АП используются только в виде однобук- ве umji названий. Если, например, в программе в строча стоп аа^ пись вида ес, то она воспринимается транслятором как произведе- ние в х с. Для наименований используются буквы, перечислен- ные в н.п. 1 и 7 основных символов (стр. 453). В программе допускается использование массивов, размерность которых пе больше двух, Элементам массива соответствуют пере- менные с индексами, причем в качество индексов используются только буквы i, /, /ь*. Массивы определяются в заголовке программы, где указывают- ся максимальные вначения индексов и буквы, к которым они от- носятся, Например, массив а, число элементов которого равно 10, в заголовке будет определен как ал (— 0д, 455
‘-“1‘ НТ' '• «»»- । * ij-‘ • •". *1-1-лч’.|||'. ' । и "-г ' ’ , '• - JV ' f - ’’ В операторах программы переменная о индексом, соответствую- щая массиву а, будет записываться & вице alt Нижняя граница массива не указывается, потому что она всег- да равна нулю, В прогремлю массивы разметаются начинал с ячейки 980 а сторону уменьшения адресов. Дриоблетические действия в АП следующие} w сложение, вычитание, умножение, деление и возведение в целую степень — для действительных чисел; Сложение и вычитание — для целых чисел. Порядок выполнения отдельных операций яри вычислении вив* пения алгебраического выражения устанавливается обычными правилами старшинства арифметических действий или с помощью круглых скобок. В одном выражении можно использовать не боль- ше 15 следующих подряд скобок Ниже даны примеры занеси выражений в АЛ ОСычиал ааппсь в4 — а а — в/ар 4* в (а 4* ш)/(в — м) aB>u — ain («) ашшоь в ли о1 а а — в/ср 4- в (а 4- ш)/(в — ы) ехр (3,21) 1в а — в1п в йлемептарныв функции, используемые при записи арифмети- ческих выражений} тригонометрические sin, соз, tg; обратные тригонометрические arcsin, агссоз, arctg; логарифм натуральный In; логарифм десятичный 1g; корень квадратный экспонента эхр; модуль} а]. При написании аргументов элементарных функций необходи- мо соблюдать следующие правила) аргумент тригонометрических функций воспринимается всегде в радианном измерении*, аргументом может быть число, переменная действительного типз, последовательность переменных и чисел, соединенная зая- вами арифметических операций, пли значение любой другой эле- ментарной функции, например, cos а 4- в; 1в 15,6 — а/в; соз sin я ит. g.; зля того чтобы в программе выделить наименование элемен- тарной функции, ему предшествует пробел. Если отсутствует про- бел перед наименованием функции, то запись, например, вида ® сов х будет восприниматься как произведение сомножителей х, с, о, s, Ж, в необходимых случаях аргумент функции заключается в круг- лые скобки. Например, чтобы вычислить произведение соа л-йп г, нужно аз писать __ (cos arcsin х, Если же опустить скобки, то будет вычислено значение соа (э sin «); если число скобок недостаточно для полного определения ар- гумента, те в качестве последнего воспринимается все то, что сло- 456
дует ва наименованием функции до знака — или «возврат ка-п ДОТКИ». Например, вались айда Соз z In az — с «вк» воспринимается как Соз (я In az) — с. Операторы,, В зависимости от содержательной части все опе- раторы'’АП удобно разделить на отдельные группы следующим образом. 1. Вычислительные операторы, предназначенные для выпол- нения арифметических действий я изменения числовых значений переменных. 2. Операторы ввода-вывода, предназначенные дня ввода чис- ловой информации и вывода результатов расчета в удобной форме. 3. Операторы перехода, используемые для организации цик- лических я разветвляющихся вычислительных процессов % 4. Вспомогательные операторы, предназначенные для органи- зации автоматического выполнения программы. 5. Оператор подключения подпрограмм, записанных в машин- ном коде. 7. Оператор допустим используется для присваивания пере- менным, помеченным буквами, конкретных числовых значений, а также значений других переменных. Например, присвоить пе- ременной а значение 6: допустим а — 6. Прн написании оператора допустим следует придерживаться следующих правил: в содержательной части оператора можно присваивать значе- ния нескольким переменным, причем отдельные присваивания от- деляются пробелами, например, допустим с—в к=>5 В левой части любого из присваиваний могут быть простая переменная с индексами, а в правой — простая переменная, число, адрес ОЗУ, заключенный в круглые скобки, например допустим с = (135) ац ~ 3,65. Минус перед переменной справа иельвя упот- реблять без знака модуля; папример, для присваивания перемен- ной н значения — а, необходимо записать* допустим н = — } а [. Переменным, обозначенным буквами i, /, ft, п, можно при- сваивать только целые значения, но нельзя присваивать число- вые значения других букв, вроме 2, /, ft, п. Знак модуля используется только в онераторе допустим. Оператор оставим используется для увеличения значений пере- менных на заранее заданную величину, причем целочисленные переменные можно также и уменьшать. Например, вставим а *= a-j-3,5ft = ff — 1. В этом -операторе нельзя применять иере- менные с индексами. Оператор вычислил* используется для записи вычислений по формулам и засылки результата в ячейку, соответствующую пе- ременной в левой части формулы. Этот оператор при вычислении значения выражения у = f (х) может использоваться в двух вариантах: вычислил у в вычислим У — f(x) 14 В В Идфиров п др 457
В первом случае правая часть формулы должна быть ааписа- на в е а головке программы АП, я выполнение оператора вычисли,» у приведет к вычислению значения этого выражения н присваи- ванию переменной у. Переменная у должна бйть обязательно переменной без индексов» Во втором случае выполнение оператора приводит к вычисле- нию вначения провой части и присваиванию его переменной у. Переменной слева в выражении может быть и переменная с ин- дексом. В оодержательной части оператора вычислив можно указы- вать только одну формулу. Формула не может начинаться со знака минус. Если это так, то ему должен предшествовать нуль. Например, у = 0 — ав. Пример 1. Составить часть программы для вычисления ве- личины второго вир вольного коэффициента смесн по формуле Всм “ ВцУ\ 4* 2J5nyii/ji -г 5яу1й, если у, « 0,265, В& = —1500. Лп = —1-300, д12 -5000 ап fl = яУа + 26 у (1 — у) -f- с (1 — i/i 1 допустим а “ —1300 б ~ —5000 с — —1500 у — 0,285 2 вычислим в » • » * » ♦ 2. Оператор введем используется для ввода числовых значе- ний переменных непосредственно в процессе решения задачи. В содержательной части оператора указываются объекты вво- да, разделяемые друг от друга пробелом. Объектами ввода могут быть простые переменные, за исключением переменных, обозна- ченных буквами, i, /, п, или переменные с индексами, Напри- мер, введем a b q Если при выполпенпи программы встречается оператор ввода числовых данных, то вычисления прекращаются и па панели сиг- нализации загорается лампочка «команда ввода». После этого необходимо на клавиатуре машинки набрать числа, соответствую- щие вводимым переменными той же последовательности, в какой они указаны в операторе. После набора каждого числа нажи- мается клавиша «возврат каретки» По окончании ввода машина продолжает решение, Оператор печатаем испольяуотся для печати числовых значе- ний простых переменных и переменных с индексами с заданным количеством цифр после запятой. Оператор имеот следующий вид* печатаем е А анакали «список», где к — 0,1, 2,..., 9 и для действи- тельных переменных указывает число печатаемых цифр после запятой, «Список» содержит наименования переменных, вначения кото- рых выводятся на печать. Элементы списка разделяются пробелом, При выводе значений переменных целого типа точность не прини- мается но внимание. 458
li одной строке печатаются эИаченйя не более чам ьтрэх Пере- менных Оператор интервал предназначен для пропуска указанного количества строк. Количество пропускаемых строк указывается в содержательной части оператора в виде целого числа. Напри- мер, оператор интервал 5 означает, что перед печатью следующей информации необходимо пропустить 5 строк. Оператор спросим используется для контроля числовых зна- чений переменных чащо всего в процессе отладки про1раммы. Этот оператор выполняется в том случае, если на панели сигна- лизация нажата клавиша «варианта. Перед выполнением этого оператора вычисления прекращаются, и на панели сигналиаации загорается лампочка «команда ввода». Для вывода значения пере- менной на клавиатуре печатающей машинки необходимо набрать ее наименование и знак равенства. При выводе значения перемен- ной с индексами необходимо набирать индексы в виде цифр. Для продолжения вычисления по программе нужно отжать клавишу «вариант» и нажать «возврат каретки». Операторы храним и начертим псвользуютсн дли вйвода зна- чений функций в виде графика. Одновременно можно выводить один или два графика. Оператор храним имеет вид. храним пу (или храним nyz)t где п — количество значений функции, которое необходимо хра- нить для построения графика или графиков. Эта величина опре- деляется по формуле п = (& — a)/(h -J- 1), где [п, Ь] — от резок,^на котором строится график функции, h — шаг изменения аргу- мента Оператор начертим предназначен для вывода информации, за- писанной с помощью оператора храним в виде графика. В его со- держательной части указывается количество выводимых графиков, например начертим 1 гр или начертим 2 гр, 3, Оператор идти к Л является оператором безусловной пере- дачи управления. При выполпеняя этого оператора прерывается естественный порядок выполнения программы и осуществляет- ся переход к выполнению оператора, перед которым стоит мет- ка JV. Оператор если,,, валяется оператором условного перехода и изменяет последовательность выполнении программы в зави- симости от результата сравнения некоторых величин, В его содержательной части содержатся условие и оператор безусловного перехода. Если условие выполняется, то управление передается оператору, метка которого указана, в содержательной части, в противном случае выполняется следующий по порндку оператор программы, Условие состоит из левой и правой частей, разделенных знаком операции отпошевия, В левой части может быть только простая переменная (действительного нли целого типа), а в пра- 459 16*
вой — яростей переменная или число. Например, если а — b идти к 5 если k 1 цдти к 10 В АП операторы перехода являются единственным средством организации циклических и разветвляющихся вычислительных процессов. Пример 2 Для реакции Р, скорости стадий ноторой й» Гл = к&д, Гг = концентрации реагентов па выходе реактора идеального смешения (при = 0) выражаются уравнениями 14-0*3 „ 6Л1 ха ®А1 ^0(^-3-^)' ТР ®д 1 ч-о(Лл-ьл») ’ где 0 — время пребывания. Составить программ! расчета зависимости концентраций я zp от времени пребывания 6. Результаты расчета вывести в виде графика. Исходные данные и обозначения А1 йа 0 *9А хА хр 0МЫЕ Д0 а е о л х у м м Программа 1 SunjrcmiMi а = 1 Ь ®= 0,5 о = О 2 Золустиз» а — 0,9 а — 2 ы = 0,1 3 вычислил* а = а + ы 4 вычисли.»* к = д (1 <?в)/(1 т о (d 4 <*)) 5 вычислил* у — лоа/ (1 4" ° t® + ff)l 0 араиил» 21 ту 7 печатали а 5 ян акал* и о я у 8 если а^м пяти. к 3 9 начерти.»* 2 <гр 10 кончаем испольши 1 Пример 3. Для условий задачи, рассмотренной в главе 8 (стр. 200), составить программу расчета профилей концентраций по высоте ректификационной колонны для разделения бинарной смоси Для обеспечения сходимости решения использовать метод деления стрезка пополам. Результаты расчета напечатать в виде таблицы и вывести в виде графика Математическое описание и алгоритм расчета ректификацион- ной колонны приведены на стр 203, Для уточнения концентрации в кубе колонны воспользуемся следующим приемом. После того, как при некотором значении а?иг вычислена концептрацияпродукта в днетиллате Уо и пе выполняется уравнение общего материале- го баланса, концентрация компонента в кубе уточняется по фор- муле <+a = W + ^)/2. 400
Где Исходные данные и обозначения аеромешгых JV Л> 1? а я> / £ е Z) у* у П J f tj s л I в t и у iO 5 0,5 3 0,5 г 5 10-в 1 Программа дп и « ад/(1 (а — 1) ж) 1 ревЗг.м & а к л I v t 2 вычислил ы = I + i 3 допустим и = 10 j=5a=sfc=l х = а 4 аичиалим ш = я — 1 5 допустим I = О 6 вычистил и 7 если t О 0 идти к 10 8 допустим у ~ и 9 идти ж 11 10 вычистим у = у (1 “ д) -|- ей 11 если к яз 0 идти к 14 12 храним 11 ау 13 печатаем с 5 «накали я у 14 доли i > 7 идти к 17 15 вычистим ж = (ыу -V 4* О 16 идти к 18 17 вычислим х = (tuy + шс — Тз)/2 18 вставим t = I 4- i 19 если i < п идти к 6 20 еычиелцл н ™ лт — iy 21 если к — 0 идти к 31 22 вычистим х = н/ш 23 вычистим н = м ~ wa 24 вычислил с “ (в 4 «)/2 25 допустил н = | « | 25 вычислил н £= н/я 27 шли н < в идти к 29 28 идти к 5 29 допустим к = О 30 идти к 5 81 мдчертил 2 sp 32 НО7РШДМ исполним 1 (результата расчета рвдтифнкацношюй колонны см в табл, 31) 4. Оператор кончаем используется для указания окончания вычислений. При выполнении этого оператора состояние сумма- 461
Тбрб. гасятся и прекращается работа машины Он является логи- ческим концом алгоритма Оператор остяков предназначен для останова вычислений и по- зволяет продолжить со следующего запим оператора решение на- жатием кнопки «пуск 2& на панели сигнализации. Этот оператор используется при отладке программ или решении задачи по ча- стям. Оператор леденив используется для контроля размещения про- граммы в памяти машины и вывода рабочей программы на печать Запись вида массив к обеспечивает вычисление и вывод на пе- чать количества команд, занятых рабочей программой. Запись .массив в позволяет вынести иа печать рабочую програм- му, составленную транслятором АП. 5. Оператор решим является обращением к стандартным про- граммам решения систем линейных уравнении порядка п 22 и вычисления корпей многочленов степени 38. Для решения системы линейных уравнений оператор записы- вается в виде решим спал ~ 0, где s — наименование программы решения системы уравнений} п — число, указывающее порядок системы, а — наименование массива матрицы коэффициентов. Для вычисления корпей алгебраического уравнения оператор записывается в виде решимрахт = 0, где р — -наименование про- граммы решения уравнения, а — наименование массива коэффи- циентов уравнения', х — наименование неизвестной уравнения, т — степень уравнения. Оператор решим в программе должен выполняться последним. После его выполнения решение нельзя продолжить. Таблица 31 Таралкв Концентрация нгаЛ кости, MOAbf.tWAti КсндвЕРГ рация пара. Рнмовесиий нонцшзтраций 0 О.0В552 0,17378 0,17379 ( 0,15839 0,26733 0,36087 2 0,21857 0,37593 0,48453 3 0,33165 0,48705 0,598(8 4 0,42691 0,68896 0,09080 5 0,51425 0,87475 0,76054 а 0,58778 0,74263 0,81052 7 0,70437 0,80995 0,87726 8 0,78514 О,8В318 0,91640 9 0,84902 0,90361 0,9440} 10 0,89753 0,93347 0,96334 462
Оператор программа используется для включения в програм- му, составленную в АГГ, стандартных подпрограмм, записанных и системе команд машины. Оператор имеет вид программа п где п — число целое, указывающее адрес начала подпрограммы. При обращении к подпрограмме предполагается, что выход в ос- новную программу производится по содержимому ячейки 66 Пример 4. Для последовательности случайных величии X = (®1Г яг4„„, z10) и у = (уп Уз.ylff) составить программу рас- чета средних значений 1 10 1 10 & ~ То- S У = 7Т S Ми i=i i=>i дисперсии to ~д“ 3 (•£< ^)2’ f=l 10 »«=4- з (у. - л i=4L средник квадратических отклонений ой = Dx^ av == )/ Dv коэффициентов корреляции ю эЛ- з с*. - я) Я V f«sj Ранее отмечалось, что для массивов, используемых в програм- ме, в заголовке необходимо указывать размерности При атом, если массивы совпадают по размерностям, то указываются общая для всех верхняя граница и наименовании массивов Если же массивы не совпадают по размерностям, то каждый из них сопро- вождается отдельным заголовком. Программа расчета характеристик случайных велнчпп xt и уг приведена ниже. Уолоилкс о(йкшачйнип х у Л § Dx Du Gx aw r х у а в s б в os Программа ап i = 9 х у 1 допустимi = 0 <т — U « = 0 л — 10 р = 10 2 ебедем zj y-i 8 ffbWiHUim а = а 4~ х 4 иычислии в = -V У 463
5 встсвим I ®= i + 1 6 если i < n u&mu к 2 7 вычислив a — a/p 8 вычислим * = e/p 9 допустим (= О о « 0 б == 0 10 вычислим о — c 4» (®[ — a)1 11 вычислив 6 = 6 -г (yt — 12 вставил I = I -у i, 13 если 1<Z n идти к 10 ’ 14 вычислил о 30 а!(р — 1) 15 вычислил б = б/ (р — 1) 16 вычисли.* е= /с 17 вычислим о — Уб 1В печатаем с 9 видками вес 19 печатаем с 9 знаками б в о 1 20 допустим f = 0 а = О 21 вычисли.* s = в 4* (Л — а) (у< — в) 22 вставим t = I + 1 < 23 вали I < п идти к 21 24 вычисли.* с= в/((р — 1)ео) 25 печатаем с 9 знаками е , 2В кончаем исполним 1 П р им 0 р 5, Длп заданных значений концентраций в жидкой фазе Х( и коэффициентов относительной летучести се4 отдельных компонентой составить программу1 расчета коэффициентов мат- рицы тангенсов угла наклона кривой что ,,=дг-' «»=• , У. 'л f-1 f Программа ап i = 4 я а у ал I = 4 j 4 и 1 допустим 1«=0п=5«—0 2 медем 3 вычислил» t *= 4 4" я*х< 4 «ртавим t ®= t + 1 5 если f <С п идти к 2 6 допустим t ~ О 7 вычислил у1 =» a* xth 3 лвчатаьи с 5 внакя.ии 4М равновесия, если известно, (I= (! + /,(,/=!, 2....5). i
б АстпеиЛ i = i 4- f 10 если i < n идти tc 7 11 допустим I = О 12 допустим j — О 18 если I = J идти к 10 14 яычийли^* .«ij = 0 - yjyifa 15 идти к 17 16 <г№Ш«лцл* ЛЦ) — щ(1 — yj)/x< 17 пйадпшли с 5 опаками Mij 18 acmwu,w / = / + 1 19 если / < п идти к 13 20 ecwweujw 1 = i + 1 21 если I < п идти к 12 22 кокчойм исполнил 1 Внесение изменений е операторную программу. При написании программы в АП могут использоваться только основные символы и допустимые конструкции Если вводимый символ или конструк- ция не соответствуют правилам их написания, то они восприни- маются как неверная информация и на печать выводится знак * Для исправления необходимо ввести заново вою строку (если это оператор, то он печатается с прежним номером) Операторная программа в процессе ввода о пишущей машинки или решения может изменяться произвольно. Операторы в ЗУ фиксируются метками, т е. их порядковыми номерами, поэтому для изменения одного или нескольких операторов в процессе вво- да необходимо повторить ввод строк с теми же Помарами. Если же ошибка обнаружена во время ввода некоторого символа операто- ра, то нужно следующим символом ввести символ * и заново по- вторить весь оператор Для исправления ошибок, обнаруженных в процессе выполне- ния операторной программы, необходимо на панели сигнализации нажать клавишу «полуавтоматический», а затем, восстановив ее, клавишу «пуск 1». После этого па печатающем устройстве наби- рается код па и вносятся исправления в программу (добавляются или заменяются операторы) н решение продолжается с помощью оператора исполним...
Глава XVI ЦВМ «МИНСК-22» 1. Общая характеристика «Мипсь-22» — универсальная ЦВМ, предназначенная для ре- шения широкого круга математических, логических неэкономиче- ских. задач. Эта машина может также использоваться в автомати- зированных системах управления в качестве звена управления Машины этой серии находятся в эксплуатации длительное время, поэтому имеют достаточно разработанное математическое обеспе- чение 149, 50]. Быстродействие при выполнении отдельных операций и объем запоминающего устройства позволяют для повышения эффек- тивности мснользовапнп машины применять эффективные методы автоматического программирования. В настоящее время для ма- шины «Минск-22» создана обширная библиотека стандартных про- грамм и подпрограмм, разработана система автоматического программирования АКИ, имеются трансляторы для перевода на машинный язык алгоритмов, эапнсаииых на алгоритмических языках Алгол-60, Фортран. «Минск-22» относится к машинам среднего класса п имеет еле* дующие характеристики: Быстродействие . ...................... Система ечведения ........ ... Снстона счисления нри кодировании л вводе программы........................... .... Тил вводимой п выводимой имфирмацва Способ представления чисел . ............ Диапазон представляемых чисел с фпкепроаанной валятой . . с плавающей запятой ...................... Разрядность ячейки памяти . . ........ Адресность а способ выполнения команд . Емкость оперт!пваого паиомиплющого устройст- ва (МОЗУ)....................... 5—6 сп/сек двоичная восьмеричная десятичная, восьмерлч* на я, алфавитно-цифровая о фиксированной л пла- вающей вашгуой 0<|х(<1 10-“ | х | < КГ» 37 двоичных разрядов, включая разряд злака числа двухадресная с естествен- ным порядком выполне- ния команд 8492 ячейки 466
ёмкость япеинной и нм ягд на мдпкггпой ленто (НМЛ)................................. Скорость обмена ипформ(щпой г НМЛ . . Скорость ввода информации с перфоленты (фотоввод). . ... с перфокарт.................... ... с- телеграфного аппарата ... со старт'стопного Механизма Скорость вывода информации вв быстродействующую печать (МП 16) на перфоратор ленты . на телеграфный аппарат . . . на перфоратор карт . . ... на устройство печати УПч 22 (АЦПУ) . . Число команд . . ... . . 1COD 000 ячеек 2 500 смв/сбк 800 анак/сск 250 каргп/мин 7 анак/сек d0 SHtiKfttis 20 чгм;&1/сая 20 так/сек 7 знак/сек 1QO карт1мии 400 строк! »«н 104 Конструктивно машина выполнена в виде отдельных стоек с гибким соединением, что позволяет монтировать узлы произволь- но в зависимости от имеющейся площади. Представление чисел в маишпе Основной единицей информа- ции в машине является 37-разрядный двоичный код, соответствую- щий одной ячейке ЗУ Ячейки запоминающего устройства пред- назначены для хранения как числовой пли алфавитно-цифровой информации, так н команд программы. В ячейке памяти может быть записана информация одного на следующих типов: двоичное число с фиксированной или плаваю- щей запятой; двоично-десятичное число с фиксированной или пла- вающей запятой; алфавитно-цифровое слово; индексная констан- та; команда Запись чисел с фиксированной запятой. Независимо от систе- мы счисления числа с фиксированной запятой, записанные в па- мяти машины, не превышают по модулю единицы. При выполнении арифметических операций считается, что запятая фиксируется не- посредственно поело внакового разряда Прн записи двоичного числа каждый разряд ячейки соответ- ствует разряду числа, а при записи двоично-дссятичпого числа десятичный разряд представляется двоичной тетрадой Следова- тельно, всего в ячейке монсет разместиться 9 разрядов двоично- десятичной записи числа Коды двоичных чисел при записи на бланках и чтения с пуль- та обычно преобразуются в восьмеричную систему. Для итого двоичное число разбивается па триады и каждая триада записы- вается соответствующей восьмеричной цифрой. При выполнении арифметических операций с двовчнымп чно дамп возникает перополпопис разрядной сетки машины, если ре- зультат превышает единицу, и число воспринимает сд ^aii мащиЛ’ нуль, еад рцо цщзде Ь2"вв. 4W
Запись чисег с плавающей запятой В режиме работы о плаваю- щей запятой числа записываются в машине в нормальной форме х — Ч- А '2±р, где А — мантисса числа х; р — порядок числа х. Мантисса числа и его порядок хранятся в одной ячейке. По- этому по сравнению с формой записи с фиксированной запятойэдесь под число отводится меныпее количество разрядов ячейки. Прн хранении1 чисел с плавающей запятой мантисса также пе должна превышать единицу. в протидпом случае выполняется операция нормализации. При записи двоичного числа с плавающей запятой для пред- ставления мантиссы отводится 28 разрядов, а порядка — 6 раз- рядов. Знак порядка размещается в 30-м разряде. Наибольшее по модулю число' которое может быть записано в разрядах поряд- ка, равно 63-м, п, следовательно, максимальное до модулю, чис- ло, представляемое в машине в формо с плавающей запятой, бу- дет равно (1—2"за)-2и. Соответственно наименьшим по модулю числом будет i-2-aa«2"e>s — 2~й или нормализованное —2-’1. Рпс. оз Если при выполнении арифметических операций порядок ре- зультата больше 63, то происходит переполнение разрядной сет- ки: если порядок меньше —63, то число воспринимается как ма- шинный пуль. Двоичное число с плавающей запятой в ячейке представлено на рис. 63 Прн записи двоично-десятичных чисел с плавающей запятой для хранения мантиссы отводится 28 разрядов (7 тетрад), а по- рядка — пять разрядов. Значит мантисса представляется семью десятичными разрядами, а порядок — двумя. Запись алфаситко-цифросой информации В память машины могут записываться не только числовая информация, но и такие алфавитно-цифровые символы, как буквы, знаки препинания, знаки отношения и т. д, При подготовке информации каждый символ с помощью клавишных устройств машины представляется в виде цифровых кодов ц в такой форме записывается в память. Прн записи в ячейку под каждый символ отводится шесть двоич- ных разрядов, и, таким образом, в ячейке может разместиться шеств подов символов,
Логическая структура машияы.. Машина «Минск-22» содержит следующие основные устройства: центральный пульт управления; центральное устройство управления; арифметическое устройство, магнитное оперативное запоминающее устройство,, внешний на- копитель на магнитной ленте; устройство ввода; устройство вы- вода. (УВВ) Центральный пульт управления, (ЦЛУ) предназначен дая рун- ного управления машиной н для контроля за ходом вычислений ЦПУ состоит иа двух частей — пульта сигнализации я пульта ручного управления; На пульте .сигнализации расположена индикация регистров арифметического и центрального устройств управления. Здесь можно прочитать в восьмеричном коде иомер выполняемой коман- ды, результат выполненной операции, адресную часть команды, код выполняемой операции, а также содержимое любой ячейки оперативной памяти. Пульт ручного управлений состоит на ряда кнопок я клавиш, позволяющих активно вмешиваться в работу машины в процессе отладки программы. Здесь расположены кнопки пуска п хост а но- ва машины, кнопки включения режима работы, кнопки залесения и гашения отдельных регистров, блокировки внешних устройств, набора остановов при выполнении программы. С пульта управле- ния можно изменять отдельные команды и части программ с по- мощью занесении с клаиитпых наборов. Центральное устройство управления (УУ) предназначено для управления автоматической работой машины при выполнении про- граммы, а именно, управления вводом и выводом числовой ин- формации и программы, обмена информацией между различными устройствами машины. Прн выполнении программы устройство управления обеспечивает последовательность включения и взаи- модействие различных блоков, заданные командами Выполняемая команда сначала попадает в устройство управ- ления и расчленяется на отдельные части — код операции и адре- са операндов Код операции попадает в регистр кеда операции, а адресные части — в регистр адреса МОЗУ. Индикация этих ре- гистров выведена на сигнальную панель управления Номер вы- полняемой команды также указывается на пульте управления в счетчике адреса команд (СчАК). Счетчик адроса команд представляет собой 13-разрядный ре- гистр, в котором хранится адрес МОЗУ выполняемой команды, и его содержимое автоматически увеличивается на единицу после выполнения команды. При выполнении команды передачи управ- ления в него записывается адрес команды, которая будет выпол- ниться следующей Арифметическое устройство (4 У) служит для выполнения операций с числами н кодами и состоит из двух регистров я сум- матора. ДУ является также буфером прн пересылне кодов от вход- ных устройств в МОЗУ и из МОЗУ во внешние устройства и внеш- 46Э
ниЙ накопитель. Любой обмен информацией между отдельными устройствами производится через арифмет ическое устройство Сумматор и регистры арифметического устройства содержат 37 двоичных разрядов и выведены на сигнальную панель пульта управлении. Сумматор (СМ) предназначен для приема и хранения кода второго операнда, а также для выполнений операций нац кодами, поступающими в ДУ. Прн вводе информации в сумматоре нака- пливается контрольная сумма, которая впоследствии использует- ся для контроля правильности ввода При выполнении команды вывода число сначала поступает в сумматор, а затем в одно из выходных устройств. * Первый регистр (pi) устройства управления при выполнении операций используется дтя приеме и хранения первого опе- ранда. Второй регистр (Р2) предназначен для хранения промежуточ- ной информации при выполнении различных операций. При вво- де чисел в Р2 хранится адрес последнего записанного в МОЗУ слева, при выполнении арифметических и логических операций хранится конечный результат Прн выполнении некоторых операций в арифметическом: уст- ройстве вырабатываются «признак пуля» и «признак пореполне- ния разрядной сетки», которые могут использоваться для переда- чи управления по признаку результата. Быстродействие вычислительной машины в значительной сте- пени определяется скоростью выполнения отдельных операций в АУ. Для машины «М1*ШСК-22» характерна следующая продол- жительность выполнении отдельных операций! Сложений с плавающей запятой ............ 240 мхсск с фиксированной запятой ............... S3 мксек Умножению с нлчваютцей запитой , . . 2&5 .киек о фиксированной запятой............ 300 мксек Деление ... . ............. , , , . (ИЮ—700 jtYceu Магнитное оперативное запоминающее устройство (МОЗУ) содержит 8192 37-разрядных ячеек и состоит из двух блоков по 4096 ячеек — нулевого н первого. МОЗУ предназначено для за- писи и храпения числовой информации и программы Любые операции в машине выполняются над кодами, записанными в МОЗУ Адреса ячеек МОЗУ пронумерованы восьмеричными кодами от 0000 до 7777 для нулевого блока и от 10000 до 177777 для пер- вого блока. Для' ааписщ одного адреса в команде отводится 13 даоичных разрядов, Время обращения к ' МОЗУ составляет 24 мксек Внешний-накопитель на магнитной ленте (НМЛ) преднаана- дец ДЛЯ хранения больших массивов информации й состоит ца 470
4 шкафов, каждый из которЬгк СОД.ёржШ’ по Четыре лентопротяж- ных механизма (ЛПМ) емкостью 100 тыс слов. Общая емкость НМЛ 1600 тыс. слов. Запись информации на НМЛ адресная, по- этому обмен с МОЗУ может осуществляться как массивами по 2048 слов, так н По одному слову. G информацией, за пне ан пой па НМЛ, никакие операции не производятся. Поэтому, крещде чем использовать программу или числовую информацию, записанную иа НМЛ, ее необходимо переписать в МОЗУ. Время обращения к внешнему накопителю весьма значительно и может составлять величину порядка не- скольких десятков секунд, НМЛ в основном используется для хранения БСП, систем ав- томатического программирования и массивов информации при ре- шении экономических задач Устройство ввода (У В) предназначено для ввода исходной информации и программы как в начале работы, так и в процессе выло л пе пия программы. Машина имеет фото считывающее устройство, с помощью ко- торого вводится информация, записанная на пятиноаиционной те- леграфной ленте, и устройство ввода перфокарт. Независимо от способа ввода информация поступает в МОЗУ через АУ. Ввод информации осуществляется по специальным командам или вруч иую при помощи кнопок иа пульто управления в десятичном, восьмеричном илп международном теяеграфиом коде М-2 (см. рис. 66), Для ввода небольших массивов информации в процессе выпол- нения программы используются стартстоппый механизм или теле- графный аппарат РТА. Устройство вывода (УВВ) состоит из ленточных перфораторов № 1 и 2, быстропечатающего механизма МП-16, перфоратора карт, телеграфного аппарата и автоматического цпфропечатающего уст- ройства (АЦПУ) УПч-22. На любое из выходных устройств могут выводиться программа и цифровая информация. На МП-16 выводится цифровая информаций в десятичной и восьмеричной системах счисления. Прн выводе восьмеричных чи- сел печатается знак числа л 12 восьмеричных цифр. Десятичные числа выводятся с фиксированной и плавающей запятой. Перед выводом десятичные числа должны быть представлены в двоично- десяткчном коде а записаны в соответствующие ячейки памяти. При выводе десятичного числа с фиксированной запятой пе- чатаются знак числа и девять десятичных цифр, а с плавающей запятой — знак числа, 7 десятичных цифр мантиссы, знак по- рядка и два десятичные цифры порядка. На первый перфоратор выводится как цифровая (восьморпч- ная п десятичная) информация, так я текстовая (цифры, буквы русского н латпнвкого алфавитов ы т, д,). На второй перфоратор выводится только текстовая информации. Текстовая информация может выводиться также на телеграфный аппарат в вида таблиц, 471
графиков, произвольного текста. Формат вывода определяется программой. Выходное устройство АЦПУ представляет собой автономное печатающее устройство с самостоятельной системой команд и запоминающим устройством и может использоваться для вывода таблиц и графиков. Скорость начато 400 спуэок/лан, ширина стро- ки — 128 позиций. На печать может выводиться как цифровая, так и алфавитно-цифровая информация. Перед печатью информация заносится-в буферный накопитель устройства вывода, содержащий 128 семиразрядных ячеек (по од- ной ячейке на каждый символ). Посла заполнения буферного накопителя печатающее устройство работает независимо от вычис- лительной машины в течение 150 мсек, в это время машина про- должает выполнение следующих, команд программы. По оконча- нии вывода строки выдается сигнал готовности печатающего Спетевш команд. аМинск-22» является двухадресной машиной, и команды к общем виде записываются так; 4; трр К — код операции (7 двоичных разрядов), а — индекс-адрес, указывзющий номера блоков МОЗУ для первого и второго адре- сов команды и адрес индексной ячейки (всего 6 двоичных разрядов), «. — первый адрес (12 двоичных разрядов); о2 — второй адрес (12 двоичных разрядов). Распределение разрядов ячейки при записи команды приве- дено на рис. 64. Каждый адрес команды позволяет выбрать ячейку, паходящую- сн в одном из блоков МОЗУ. Принадлежность адреса к пулевому или первому блоку указывается в 7-м и 8-м разрядах ячейки, ко- торые для удобства объединяются с индокс-адресом. Если, напри- мер, в 8-м разряде указывается единица, то второй адрес относит- ся к первому блоку МОЗУ, н наоборот, нуль соответствует- нуле- вому блоку; 7-й разряд определяет принадлежность первого ад- реса какому-либо блоку Для автоматического изменения адресов команд в машине ис- пользуется способ индексных ячеек. К индексным ячейкам отно- сятся первые пятнадцать ячеек пулевого блока МОЗУ (0001а — 0017в). Номер индексной ячейки указывается в индекс-адресе 472
ч «Минск-22& может работать и с двумя блоками МОЗУ к'" единым целым, со сквозной нумерацией ячеек от 0000 до 177 но структура команды при этом изменяется. Каждый из адресов^, увеличивается на один, разряд за счет 8-го и 7-го, Режим ра-Л боты машины с такой структурой команды носит название «ре- ' жим Та Особенности выполнения команд. При работе на машине раз ли-* чают две команды начальную и исполнительную. Первая исполь- зуется для записи программ, а вторая — непосредственно выпол- няется в машине, Начальная команда перед выполнением поступает в сумматор ДУ и здесь может изменяться в зависимости от адреса индексной ячейки. Если адрес равен пулю, то команда не изменяется; при Индексные ячейки помимо модификации адресов обеспечивают автоматический подсчет числа повторений циклов. Поэтому в этих ячейках указываются шаг переадресации по каждому из ад- ресов команды я число повторений цикла. Структура индексной ячейки приведена на рис 65 Исполнительная команда при ненулевом адресе индексной ячей- ки образуется путем прибавления к адресной части команды соот- ветствующих частей индексной ячейки. При сложении адресных частей па сумматоре блокируются переносы из старших разрядов обоих адресов, т, е. из 7-го и 8-го разрядов соответственно, и прн накоплении шага переадресации индексной ячейки блокируются переносы из 25 го и 13-го разрядов. Выполнение команд в машине характеризуется стандартным рабочим циклом, состоящего из пяти тактов, назначение которых для любой команды одинаково. Действия, выполняемые машиной в каждом такте, обеспечивают исполнение любой команды систе- мы, л отдельные из них присущи ие всем операциям. В первом такте содержимое сумматора (результат предыдущей операции) пересылается в регистр Р2, и производится выборка в сумматор команды, адрес которой находится в СчАК. В первом такта каждая команда анализируется па нудь индексного адреса, н, если последний не равен нулю, то производится повторно пер- вый такт, когда к адресной части команды прибавляется содержи- мое индексной ячейки. 473
Второй п третий гакты сййзаШд О' йТДреспымИ чабтямй команд Во втором такте содержимой ячейки по первому адресу и 7-му разряду вызывается из МОЗУ в регистр Р1 В третьем — содер- жимое ячвйки’по второму адресу н 8-му разряду записывается в сумматор. Второй и третий такты связаны с выполнением ариф- метических, логических, посылочных и вспомогательных опера- ций В четвертом такте выполняется непосредственно сама опера- ция. Этого такта не имеют операции обращения к ЗУ, У В п УВВ, т о операции, не связанные с выполнением вычислительных: дей- ствий. В пятом тапто содержимое сумматора записывается в МОЗУ по второму адресу. Выполнение каждого из тактов можно проследить на пульте управления в ходе отладки программы 2. Математическое обеспечение Транслятор АКИ. Программа, записанная в автокоде, перфо- рируется па пятипоаиционной бумажной лейте я международном коде М-2. Символы кода М-2 соответствуют клавиатуре теле- графного аппарата СТА-2М, представленной ниже на рис, 66. Прн работе транслятора АКИ используются два лентопротяж- ных механизма машины (ЛПМ-0 — для размещения рабочей Программы, ЛПМ-2 — для размещения рабочих программ транс- лятора), фотосчитывающее устройство, алфавитно-цифровое пе- чатающее устройство (АЦПУ), ленточные перфораторы и теле- тайп [491. Работа транслятора начинается с вызова его управляющей программы в МОЗУ машины о помощью специальных команд об- ращения к транслятору, после чего исходная программа вводится транслятором в машину и начин аетсв состав тонне рабочей про- граммы. Во время трансляции производится анализ исходной прог- раммы с целью обнаружения синтаксических ошибок, которые могут быть допущены при ое написании нлн перфорации Инфор- мация об ошибках может быть выдана па печать с указанием опе- ратора исходной программы, в котором допущена ошибка. Исправ- ление программ производится с помощью специальных операто- ров (стр. 157), которые вводятся в машину с перфоленты перед пов- торным вводом исходной программы Готовая рабочая программа записывается иа магнитную лен- ту и может многократно использоваться для решения задач с различной числовой информацией. Мониторная снетема. На базе алгоритмического языка Фор- тран-1 V разработана Монитор па я система ИФВЭ-68 для ЦВМ «Минс к-2 2f> [19]. Система состоит из набора программ, обеспечп- 474
вающих прием исходных программ, записанных па Фортране, их трансляцию, объединение нескольких программ в одну, счет по получепдым программам, а также выполнение ряда других функций. Управление работой Системы производится посредством спе- циальных указаний — директив. Директивы подготавливаются на перфоленте н могут включать от одного до пяти управляющих слов, определяющих содержание директивы Использование ди- ректив позволяет обеспечить работу машины в непрерывном авто- матическом режиме, После выполнения очередной директивы Си- стема обращается за получением следующей, перфолента которой к атому моменту должна быть установлена па устройство ввода машины. При работе Системы используются три лентопротяжных ме- ханизма (ЛПМ-2 — для хранения программ Системы и библиоте- ки стандартных программ, ЛПМ-1 — для хранения каталога ис- ходных программ и самих npoi рамм па время отладки, ЛПМ-0 — для хранения рабочих программ), фотосчитывающее устройство, алфавитно-цифровое печатающее устройство (АЦПУ), ленточные перфораторы и телетайп. Полный токст транслируемой программы ити любой отдельной ее части, оформленной в виде подпрограммы, вводится Системой с перфоленты в машину только один раз, после чего он заносится tia отладочную лепту, откуда считывается по мере необходимости Если в транслируемой программе обнаружены ошибки, Система, указав на них оператору, может по соответствующей директиве начать или продолжить работу с другой программой. Подготовив необходимые исправления и соответствующую директиву, опера- тор может ио запросу Системой директивы ввести исправления в машину и продоллоггь трансляцию этой программы. Транслятор МЭИ-3. Для ввода программы и числовой инфор- мации в трансляторе МЭИ-3 используется фотосчитывающее уст- ройство. Поэтому материальным носителем является иятипози- цноппая перфолента [23]. Программа, записанная на Алгола, перфорирует св в междуна- родном телеграфном коде М-2 (рис, 66). При этом допускается ис- пользование цифрового кода, букв русского и латинского алфа- витов. Поскольку емкость пятипозиционной ленты всего 32 кода, что равно .числу букв только русского алфавита, все буквы рус- ского, латинского алфавитов, цифры н другие вспомогательные символы (знаки операций, скобки п т, д.) разносятся по трем ре- гистрам (цифровой, русский, латинский). Это значит, что одна и та же комбинация на лепте будет соответствовать различным сим- волам в различных регистрах. Определить, какому регистру при- надлежит символ, можно лишь по коду регистра, который должен предшествовать данному символу илн группе символов Указание соответствующего регистра перед кодом символа рбдстельно, Если код; регистра пропущен( то спывоа будет восз 47fi
I № HevSmauisa pt&cirtp (littppoSop регмтр 1 ? J Ч 5 / • • AfA) — 30 2 • •1 4 4 sai) 7 23 J • 4 titfj 4 '16 ч • •| 4 Yfliu m ’ 2? 5 • 4) £(£) J 30" S • 4 4 m 3 ?f 7 • “1 4 4 Г{£) Ш 13 8 4 4 XOi) , Hi 05 3 □аа H</} 8 14 to • • 4 Ito) Ю 32 ”/Г • • 4 4 KM i ' tC л? • 4 да.) j 8 4 4 4 Mfil) « 07 4 4 nan > OS 15 4 4 0(0) s 03 15 • 4 4 4 ill?) Q 15 17 • • 4 4 8(Q) / ~3T 18 • 4 P(R) 4 12 13 • 4 C(S) 'onicmpsip 24 20 4 T(I) 5 01 и • • 4 tt(f) 7 34 ?? • 4 4 □ M(V) ЯГ 17 23 4 • □ BM) 2 31 гч • 4 4 □ 61X) / 27 25 • 4 а М3) ...5 75 28 • □ 3(1) + 21 27 4 ВЫомя леретли z. of 78 4 (fypeSoO impSKu = 10 23 • 4 4 4 4 ЗртинсанО j7 30 • 4 4 4 Цщрры IT *ЗГ 4' tyrfw 04 32 Afcatiru 00 Риск M Международный тедсграфный код М-2 приниматься в регистре, который был указал последним перед ним. Перфорирований программы производится па телеграфном ап- парате GTA-2M, клавиатура которого соответствует коду М-2. Прн перфорировании группы символов одного регистра код его указывается только один рае (перед первым символом) Началу программы на ленте предшествует код «граница вво- да», который перфорируется как рядом втонгцие коды «русский» и «датинвний». В конце массива также перфорируется код «конец зоны»— рядом стоящие символы «латинский» и «русский». Эти комбинации не должны нигде встречаться внутри вводимого мас- сива Коду «конец зоны» предшествуют пять комбинации «пробел». Три регистра кода М-2 пе охватывают полностью основные символы Алгола. Поэтому отсутстюующно основные символы Алгола заменяются во входном языке транслятора комбинациями 479
сими о яо а кода М-2 Например» символ сне равно»- кодируется :кай два рядом стоящих символа <равно» и «деление», символ * буквами латинского алфавита ‘GT’, заключенными в кавычки. Поскольку в ноде М-2 отсутствует подчеркивание, то при кодиро- вании основных символов последнее заменяется апострофом. Символы входного языка, отличные по начертанию от соответ- ствующих символов эталонного языка, приведены в табл. 32. Таблица 32 Символ иалоииого нэырд Символ мОдиого языка Си мвд a ЭТИ поило ГО _ языка Символ входного языня Символ эталонного языка Сймаол входного лзцня X X ’EQ’ t Г XX *GT' т ’) 'NOT* ’GE' I (/ V ’OR’ 'LT' ] 7) Л ’AND, ’LE’ 10 ю ZD •IMP’ ] * = / 1 « р В начале текста програюш допускается употребление назва- ния задачи Число букв названия в латинском алфавите может быть произвольным, однако печатаются при выводе исходи ой программы только первые шесть символов. В программу можно также вводить комментарий по правилам эталонного языка. Рус- ский текст может быть только в строках и примечаниях и должен быть выделен знаками +) и —). Между этими знаками не может быть других символов кроме русского алфавита. Рассмотрим пример кодирования простейшей программы BEGIN BEAL A, Bt А- В- = 1 О END « Перфолента, полученная на аппарате GTA-2M, будет содер- жать следующую последовательность символов. рус лат цифр1 лат BEGIN цифр" лат REAL цифр1 мт А цифр, лат В цифр , лат Л ifuj5p:= лат В цифр- =10 лат END jfwjfFp’ рус лат Каждый символ в указанной последовательности есть резуль- тат нажатия соответствующей клавиши GTA-2M. Поскольку код «русский» не содержит пробивок ни по одной дорожке, с пего начинается и им заканчивается программа. Для удобства ввода в начале программы необходимо оставить 10— 15 «чистой» ленты, т. е. с кодом «русский». 477
Программа, подготов лепная с учетом упазанпых правил, мо- жет быть введена п машину для трансляции Служебная информации транслятора. К моменту ввода про- граммы транслятор должен находиться в запоминающем устрой стве машины, а именно, и а магнитной ленте. Собственно ввод ис- ходной программы осуществляет транслятор, для чего часть его по специальному обращению (обращение состоит из команды -чтении с лепты) вызывается в МОЗУ Весь транслятор не может поместиться в МОЗУ (его объем превышает 20000 слов), поэтому в процессе трансляции он вызывается отдельными частями. Во время перевода программы транслятор осуществляет вы- вод на АЦПУ и МП 16 служебной информации Включение того или иного выходного устройства осуществляется по ключу на пульте управления В процессе трансляции па печать выводится следующая ин- формация. 1. Диагностическая информация об ошибках во входной прог- рамме. Транслятор выявляет все синтаксические и многие семан- тические ошибки. Некоторые типы ошибок могут быть вызваны особенностями трансляции программы, хотя с точки зрения эталон- ного уровня они отсутствуют Например, использование обраще- ний к процедурам раньше их описания. Это обстоятельство осо- бенно важно в том случае, если в процедуре производится обра щенпе к другой процедуре, описанной ниже в программе Информация о месте ошибки выдается в виде левого и правого контекстов места ошибки. Печатается 5 символов слева от ошибки и 5 символов справа. На АЦПУ7 выводится также и указание о ха- рактере ошибки. Ввиду того, что транслятор однопроходный, по- сле обнаружения ошибки дальнейшая переработка входной про- граммы прекращается н может быть возобновлена посла соответ- ствующих направлений 2. Информация о распределении памяти. Для каждой пере- менной, массива, процедуры, формальных параметров процедуры на АЦПУ выводится идентификатор и адреса ячеек в восьмерич- ном коде. На МП-16 распределение памяти может быть выведено по ключу Адреса в распределений памяти означают следующее: для простой переменной адрес ячейки, в которой находится значение данной переменной, для массива — начальный адрес вектора массива (ряд ячеек, в которых хранятся адрес первого элемента массива, значение нищпел и верхней границ каждой граничной пары, признак окончания вектора); для процедуры — начальный адрес вектора процедуры (вок- тор процедуры — ряд ячеек, в которых хранятся значение функ- ции, если процедура является процвдуроп-фупкциой, адрес нача- ла содержания процедуры и адрес конца), адреса формальных па- раметров процедуры, вернее нчешен, в которые засылаются ад- реса при выадщцши рабдчрй программу. 478
Значение ксЗа Вгчпсяь маненле - — • 0 t • 2 • • 3 - • • — • * 5 • • 8 o> • • • 7 • 8 • • а • ,^8 + • • ^"7 1 • • -1- • • • „—"Ю 1 • • • Ля? зипяпхШ vt • • • • itwf tewrttMtseo • • „Передача* • • • ’ Ёвелринешаютсй в • • \ лаияиредаш" • • • • ^Запись" • • • • J • Васпринимаюяы • • t zo<r, запись* • • • • • • • o. • • • • Весяршшю/аямя • • • миг „ораВы4 • • • • • • • • • • в • о FfiSHvun BSaffa РПП 07 ЦнфрОГМЛ КОД ГПСППЛИЫ «МнПСк 22# В конце трансляции на МП-16 выводится таблица адресов опе- раторов п операторных скобок. Если адрес относится к оператору, то в старшом разряде соответствующей строки печатается 0, если открывающей операторной скобке — то i, если закрывающей— то 2. Содержание процедуры с параметрами заключается допол- нительно в операторные скобки, о чем также выдается информа- ция в таблпце адресов. Структура таблицы адресов в точности со- ответствует расположению операторов в исходной программе. Исходная программа может быть выведена па АЦПУ п по пер- форатор по ключам на пульте управления. Рабочая программа в свою очередь может быть записана на ленту или выведена на перфоратор при помощи соответствующего ключа. В Начале таблицы операторов выводится пусковой адрес ра- бочей программы (адрес начала программы), а к конце — общее количество ячеек, которые занимает ирограммат 479
Подготовка. исходных даиюлх. Числовые данные перфориру- ются & цифровом коде машины (рис. 67), Он состоит иа десяти ко- дов, соответствующих цифрам десятичной системы счисления от О до 9, и ряда вспомогательных комбинаций (восьмеричный и де- сятичный знаки, ноды «запись», «передача», «граница» н др,). Всего на нятипозициоиной ленте может быть представ лэ по 2е — = 32 кода Для обозначения восьмеричных и десятичных чисел использу- ются одни и те же цифровые коды, Различаются они тем, что код числа при вводе определяется кодом его знака, Для обозна- чения восьмеричного числа используется знак -г я или —8? а Де- сятичного ----И ю или —10, Перфорирование цифровых кодов осуществляется с помощью электромеханического устройства подготовки данных (УПД), клавиатура ноторого соответствует цифровому коду машины При нажатии клавиш. УПД на перфоленте появляется двоичная ком- бинация из отверстий и пропусков, соответствующая цифровому ноду. Прн этом отверстиям соответствует код «1», а отсутствию отверстия — под «0». Каждому цифровому коду на лейте соот- ветствует одна строка, а числу — группа последовательно рас- положенных строк. В конце числа перфорируется символ «запись». При подготовке перфоленты с исходными данными необходи- мо соблюдать следующие правила. Вся числовая информация вводится в десятичном коде, для чего перед каждым числом печатается десятичный знак, Количе- ство разрядов в написании числа не должно превышать девяти (без учета знака). Ввод производится групповым способом, при- чем адреса ячеек памяти па перфоленте не указываются (запись чисел в нужные ячейки обеспечивается программой), Транслятор допускает две формы записи действительных чи- сел: с плавающей запятой и в виде десятичной дробя. В послед- нем случае код запятой между целой и дробной частями должен обязательно присутствовать, Целью числа перфорируются в обыч- ном порядке, т е, десятичный знак, число, «запись», Массивы печатаются по строкам или в порядке следования индексов, Объекты ввода перфорируются в порядке их следовании в опе- раторе ввода, Если объекты ввода ~ простые переменные, то они все заключаются в границе ввода. Для этого перед первым числом печатаются код «0» и «граница», а за последним — код «граница» и «О», причем число нулей произвольное. Рекомендуется в начале печатать 10—15 см кода «0» Число простых Переменных, стоящих в одном операторе ввода, не должно превышать 14. Если объек- тами ввода являются простые переменные и массивы, то последние отдельно заключаются в границы ввода, т. е, каждый массив имеет границы Рядом стоящие простые переменные объединяются в один границы. 480
Если в записи цифры допущена ошибка, то ее можно яопра- вить добавлением, недостающих пробивок до кода «пробел» или воспринимаемых как «пробел» Код «пробел» в машину ие вводится „ При составлении программ на входном языке тран- слятора МЭИ-3 ошибки в числовой информации ионию дополнять до кода «граница». При работе транслятора МЭИ-3 используется два лентопротяжных механизма (ЛПМ-2 — для раз- мещения транслятора и ЛПМ-0 — для размещения рабочей про- граммы), Еслиурабочая программа ванисызается на магнитную ленту для хранения, то необходимо занять еще один <ЛПМ я его номер указать и команде записи иа пульта управления.
ЗАКЛЮЧЕНИЕ Опыт использования ЦВМ в самых различных областях нау- ки и техники показывает, что наибольшие успехи в их примене- нии достигаются & той случае, если вычислительными методами и программированием овладевают специалисты в конкретной об- ласти. Настоящее издание ставило своей целью изложить необ- ходимый, по мнению авторов, минимум сведений из области про- граммирования н вычислительных методов, который позволяет химикам и химикам-технологам самостоятельно ставить и решать задачи, возникающие в нх практической деятельности. По мере накопления опыта работы с вычислительными маши- нами научный работник поднимается иа качественно новый уро- вень в методологии проведения исследований ив их теоретической! осмысливании, поскольку появляется возможность использова- ния более полных и точных математических описаний изучаемых явлений. Вместе с тем необходимо подчеркнуть, чю способности вычис- лительных машин быстро п точно решать самые сложные задачи пе снимают с исследователя ответственности за интерпретацию получаемых результатов Основной целью любых расчетов дол- жны быть не числа, а их физическая интерпретация, их понима- ние [27]. Глубокая специализация в конкретной области н опыт работы о вычислительной техникой должны помочь исследователю правильно поставить задачу, выбрать метод ее решения, провести анализ полученных результатов и на его основе наметить путь дальнейших исследований. Авторы будут считать свою задачу выполненной, если насто- ящая книга окажется полезной в практической деятельности специалистов в области химии н химической технологии.
ЛИТЕРАТУРА 1 А И Бояринов, В В. Кафиров Методы оцтимняацни в химической технологии. М-, «Химия», 1969. 2 Дж. Прауаниц, К. Экмрт, Р. Орай и др. Машинный расчет парозвпд- костного равиовосня миогокоашонйнтных смесей* М-, «Химия», 1971 3 Дж, Карр Лекции цо программированию. ИЛ. 1963, 4 Алгоритмический язык Алгоп-fiO. Под род* М< И. Агеева, М-, «Мир», 1985 5 J ТУ. Backus. The syntax and semantic? ol the proposed international algebraic language Of the Ziiricii ACM — GAMM conference ICIP. Paris. 1959. 6 . В. В Кафарйа. Методы кибернетики в химии и химической тахиоле- тип М., «Химия», 1971. 7 . Р Рид, Т- Шервуд* Свойства газов и жидкостей. Л , «Химия», 1971 8 . В. Б. Кован. Гетеро генные равновесия । Л., «Химия», 1968, 9 . С. Вейлао* Химическая‘Кинетика и расчет пвомышлошшх реакторов М-, «Хтшяе, 1967, 10 Г. Н. Dickson. The computer and Chemistry. San Franclsko, 1968 11 . Ч Д. Холланд. Многокомпонентная рзктпфикацня, M*, «Химия», 1969. 12 , И W. Cooper, J. С. Goldjrank. Hydrocarbon Proc. 1967, v. 46, N 12. 13 , Л. M.'B&mynep, M. E. Ко&ин. Математические методы я химической технологии. М., «Госхимиздат», 1963 14 . Е. Г. Денби?.. Теория химических реакторов М , «Наука», 1968 15 А. А Б руд но. Алгол, М,, «Наука», 1971 18 Е. И. Беллвский'АЛВ. Деген, 10 В. Этин Алгол-00 Л , Гидрометеоре- , логическое издательство, 1968. 17 . Л. IF. Johnsen, С. Р. Cover. Ilydrocarduii Ртов- 1969, v, 48, N 3 18 Д Мак-Кракен, J'. Дорн. Численные методы и программирование па Фортране, М., «Мир», 1969* 19 С. Я* Соколов, Л. В. Бсляеаскик, Д А Калинченко Фортран н мониторная система* М*, «Статистика», 1'970 20 - В К. Прохоров, И. А. Погарыко, В. А. Яковлев. Основы ирО1рамммро- вакия -для ЭЦВМ* М*, «Высшая шкода», 1967* 21* 2J, Рекдея, Л. Россия. Реализация Алгола* М«, «Мир», 1967 22 Алгоритмы и алгоритмические языки, вын 3 Под ред М И Агеева Мм ВЦ АН СССР, 1968. вын* 3. 23 Инструкция н методические указания но использованию транслятора в языка Алгамс для ЭЦВМ «Мипси*22», МЭИ, 1969* 24 . А. П. Ершов. Доки. АН СССР, т, 2, 1955, выд* 10, стр, 751 25 . Г, М Фихтемолгц Основы математического анализа- Т 1 М , «Паука», 1988, 26 . Л. Г. Курит. Курс высшей алгебры М*, «Наука», 1965 27 Р. В. Хемминз. Масленные методы М*, «Наука», 1968 28* К. Кунц. Численный анализ* Клоп, «Техника», 1964* 29 В. П. Демидович, И. А Маран Основы вычислительной математики М,г «Фнвматт», 1963* 30. Д. С- Димарскцй, К. Н- Лояинекий, Я* Г, Макушкин и др Справочник программиста* Т. I Л , Судпромгиа, 1963 483
31. В- В. Доеан, В, ЛЛ Фриёман, В* В, Кафарм Равновесие между ЖДдйй- стью и паром. М., «Ноуна», 1966. 32. П. С Верееин, Н* П, Жидкое. Методы: вычислений Т 2 М , Фламатгая. 1932 33 Д Н. Ланс. Численные методы для быстродействующих иычислктельных машин. ИЛ, 1962 34 В. В* Кафаров, А И Бояринов, В. Н. Bemoxw — Докл АН СССР. Т- 202, № 5, стр. 1143. 35- А/. И. Агеев, В, П- Налик, Р- М Гачис Алгоритмы, выл 3 М., ВЦ АН СССР, 1936, 36. Г, Норн, Г. Корк. Справочник но математике М., «Наука», 1988, сгр 379. 37. 3 Страйтеиоер. Теория молекулярных орбит. М., «Мир», 1985. 38, Л* С* Понтрягин. Обыкновенные дифференциальные уравнения. М., «Наука»,. 1965. 39. Дм* Перри Справочник инженера химика Т, 1 Л , «Химин», 1969, стр. 44. 40 Б. П, Демидович, It* А Марон, 3 Я. Шувалова Чнолеопые методы она* лила м., Фнаматгиз, 1983. 41 V О. Yensan, Q* V* Jeffreys* Mathematical Methods In Chemical Engi- neering. Academic Press. L. and N. Y-, 19B3. 42. Д, И* Голенко* Моделирование и статистический анализ псевдослучай- ных чисел на ЭВМ, М., Фмаиатгнз, 1965. 43. D* W Johnson, С- Р Cover* Hydrocarbon Proa. 1988, v 47, N 12 44. D W. Johnson, С* P* Cover. Hydrocarbon Proc. 1969, v 48, N 1 45. D* Oliver.-D* Bari. Ind. Eng. Chom. 1058, v. 7, 46. O. Bedllah A, Kteter. Ind. Eng. Chain. 1948, v. 40 47. 2J. P- Л/окцибощмпч, В* А. Попае* Программирование и стандартные программы для ЭЦВМ Шроиннь» и «Прошгаь М». Кван, «Нлуцоаа дум- ка», 1989. 48. Б. М* Платонов, В Г Берво Разделение многокомпонентных смесей М>, «Химия», 1985. 49 ' В. М. Калачев, М. М Ялубощч* Программирование для ЭЦВМ *Мкнею-2» н «Минск-22». Мм ^Советское'радио», 1971. 50. Стандартные программы для ЭВМ «М1пгск-22* Под род А А Пальцева Минск, «Наука и техника», 1907.
УКАЗАТЕЛЬ МЕТАЛИНГВИСТИЧЕСКИХ ПЕРЕМЕННЫХ И ТЕРМИНОВ Безусловный о нор ат о р 63 Блок 84, ВБ Буква 48', 123, 148 Выражение 55 — арифметическое 56, 128 — безусловное 58 — вмеиудгнцаа 78 — индексное 54 — логические 57, 127 — условное 59 Граничная пара 53 Десятичное число;52, 125, 147 Заголовок блока 89 — процедуры 105 — цикла 88 Знак операции арнфмотвчесиой 48, 56, 126, 149 — * логпчесиай 4ВГ 58 — отношения 48, 58t 128, 154 -1- следования 48 Цдешкфикатор массива 53, 126, 148 —»переключателя 78 — переменной 53, 126, 148 — процедуры 105' Комментарий 86, 124 Левая часть 71 Логическое значение 48, 57, 127 Метка 68, 76, 124, 147„ Металингвистическая переменная 51 — формула 51 Монитор 474 Непомеченный основной оператор 88 Объект ввода 167 — вывода 167 Ограничитель 48 Оператор 38, 63, 134, 149 — ввода 70, 140, 150, 167 — вывода 70, 141, 151, 107 — «если* 83, 154 — онпсательяып 142 — перехода 76, 135, 154 — присваивания 70, 134, !51 — процедуры 105, 115 — пустой 82, 137 — управлении 141 — условный 83 — цензе 88, 137, 155 Описание массива 54, 128, 150 — переключатель 78 — процедуры 105 — типа 54, 128, 148 Основной оператор 83 — самсой 48, 128, 148 Память, динамическое распределе- ние 89 Первичное выражение арифметиче- ское 56 — логическое 57 Переключательный список 76 Переменная простая 52, 125, 148 — с индексом 52, .126, 148 Подпрограмма 132, 150 Подпрограмма-функция 130 Порядок 52 Правильная дробь 52 Программа 65, 123, 148 Процедура 105 Процедура-функция 114 Разделитель 48 Сегмент мвеенва 55 — программы 124 Скобка 48 Совокупность спецпфикацяп 107, И Спецификатор 48 Список значений 11 — массивов 55 — цикла 88 1ип 54. 128 Указатель переключателя 78 — фупкпив 114 Условие 59 Фактический параметр 108 Формальный параметр 108, 129, 149 Функция стандартная 62, 129, 149 Целое 52, 125, 148 — боэ знака 52 Цифра 48 Чпело 52, 125, 147 Элемент списка цикла 89 Язык коше ротного представлении 50 — публикаций 50 — вталонный 50 485
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Алгоритм. 36 — деления на основание системы 25 — суммами алия степеней основа- ния 26 — умножения на основанио системы 20 Алгоритмический язык Лгол 60 47 — АКИ 146 -----АП 453 -----Фортран IV 123 Аппроксимация многочленами 320 — иелиненаой зависимостью 330 — произвольной пшюЙыоЙ оависп местью 328 — уравнения дифференциального, разностная 365 Библиотека стандартных лроЕрамм 40 Блок-схема ЗЬ В штор матрицы собственный 277, 262 Горнера схема 187 Деление матриц 235 Дпфферопцпроаании матриц 243 Дпфферонцнальяое уравнение с ус довиямя 370 — граничными 379 — начальными 350 Интегрирование дифференциальных уравнений разложением в ряд 351 Интерпретирующая программа 45 Итерация простая 103 Компилятор 45, 123 Конечные разности 303 Корень уравнения алгебраического — трансцендентного 182 — характеристического многочлена 276 Коэффициент активности 75, 332, 409 Кратный лнтегрял 245 Мантисса числа 28 Матрица 229 — днаг£ лльяая 229 — еддяичцая 229 — обратная 235 — симметрическая 230 ; — транспонированная 230 Машинный нунь 28 Метод Адамса, решение дифферен- циальных уравнений Збб — Гауссе 249 — Гаусса-Жордана 235, 251 — Гяусса-Зепдоля 261 — деления отрезка пополам 189 •—итерации простой 193, 259 — итерационный обращения натри- цы 242 - < — конечных разностей решения кра елой задачи 380, 382 г — Крылова получения характери- 5 этического многочлена 283 ’’ — Лаверьо получения характера- -v етпческого многочлена 284 4V — Милла, рошоипа дпфферепплаль пых уравнояпй 367 1 — наименьших квадратов 319 — Ньютона, отделение корней 191 — рошонмя трехднагонвльной систе- мы уравнений 255 — Рунге — Кутта, решение даффе- ропциаяьных' ураанеиий 359 — системы днфферонцвальпых vpan пений 364 — секущих 190 — сканирования 387 — симмлексиый 387 — случайного поиска 388 — средних 315 — уточнения аппроксимации 325 — упнтярных н реобразов е turn 287 — Эйлера 352 — модифицированный 354 — Эйлора-Коши усовершенствован иып 355 — Якоби 285 Многочлен с коэффициентами дей- ствительными 184 — нроиоаольными 183 Норма вектора 258 — матрицы 258 Определитель 230 486
Ошпбиа абсолютная 176 — относительная 17В Ошибки в алгоритме 41 — имансамтеньной иангины 43 — при подготовке информации 42 — программиста 42 Перемножение матриц 233 Переполнение 28 Погрешность Интерполировапия 310 — формуя Эйлера 35В Полиномы Чебышева 325 Порядок числа 28 Правило Декарта 1 St? — Крамера 249 Программирование 39 Рант матрицы 231 Ректификации бинарная 200 — многокомпонентная 2ВВ Система команд 21 — счпслонин 22 — восьмеричная 23 — двоичная 2d — двоично десятичная 24 Сходимость метода итерации 194, 258 — касательных 192 Температура кипенил смеси компо- нентов 416 Транслятор 48, 163 Точность формуй численного инте- гриромннн 217 Термодинамическая совместимость данных 219 Уравнонпе Ван Лаара 410 — Вяльсова 37 — Маргулеса 412 — Редлнха-Клстера 332, 413 Устойчивость решения дифферен- циальных уравнений 356 Устройство ввода 19 — пывода 19 — аапомшшющее 17 — урравлояия 20 Формула Гаусса, вычисление инте- гралов ' 213 — Лагранжа, инторнониро'ваиие 302 — Ньютона, инторноллрование 305 — прямоугольников 209 — Рунге-Кутта 359 — Симпсона 211 —трапеций 210 Число кормализонаннпа 29 •— с плавающей запятой 28 — с фиксированной ье пятой 27 Экопомпаацни ряда 325
А*Л.- — * — г г-~- -Г. 4 I Ал<- __ (. — L- __? Аа1 1( — I г Л • Би: Сл Bel,. , V Га" Д°'- Виктор Вячеславович Кафаро^ Валентин Николаевич Ветмин, Анатолий Иванович Волриное программирование и вычислительные методы и химии И ХИМИЧЕСКОЙ ТЕХНОЛОГИИ У тй«рйсЙин1» к печати Drrt Имением р!к«Ш1«>-хилии и mexHcutcwu нгормничеекик ^ишпериадм редактор лэдкгбпьстеа В. В Дытытт* Художниц Л. Г. Вимоерадм ТйхиинескйЙ редактор О Jit ГиоЬхооо Сдано п набор b/V’i^72 п Подписано к печати 23;Xj’1972 г. Форм»? ДОХОД,. Byuera М 2 Уол, печ, л, ЭСР/,. Уа.’ЭТд. ntao,3, Тирши 7050 эка тиа. зпн 7Ж Т-17150 Цеаа S р М п Издательство «Неука», f03717 ГСП, Моздвд К-®, ПздсоселйннЙ ПЭр<, 21 2-я тшюгрцфип Иадателииба «Hayite» Ш0&1, Mociiua Г'Ж Шубииский нер., 10 и£ • Иг.' 1ft к< Кс Кс К( к.
ОППСОК ОПЕЧАТОК 2 Строна Напечатано Додало бить 48 18 сн (111111*14 (1)1[111*1 '1 50 12 св, array, if -13 else 33 array 84 20 св, И J3 then В3„ 109 22 сн. del a riel, а 117 24 ся вывод i’. еывгд (с); 124 1 св* SUBPROGRAM SUBROUTINE 131 23 ся. не должен быть должен быть 181 18 сп. должна содержать иа должна содержать 135 1 сн простел перемен ЧИСЛО пая 130 17 ся 1 = 2 1 Я* 10 148 8 ся А<1), 1» 4(1), 1 = 144 14 ев /с. W 151 9 св воод ввод 157 2 св ВЫЧИСЛИТЬ 3 ВЫЧИСЛИТЬ 169 4 сн (3/ (Е>), 3,’ (Е1), 170 20 оп № (П W (4/ (TV (+) ИВАНОВ—)») ИВАНОВ-)’)) 170 14 ск « (Т,), 4/ (Г), 198 Подпись в ректи&икацпон- в однократном к рис. 39 пой кололле испарителе 214 8 сн 121 [27] 37Б б св (12—65) (12—88) ’ARRAY'P( 411 12 св ’ARRAY'?, А( 455 16 СК Переменные Переменные и массивы масоииы 457 19 он. с индексами или переменная 477 с индексами 7 си. руб лат догп рус л В В, Каф ар св и др