Текст
                    Е.А. Бойко
Применение ЭВМ
для решения
теплоэнергетических
задач
Красноярск
Издательство
«Сибирский промысел»
2001
-
-






"
"


%
%






'
'


!
!








#
#









ББК 31.32 - 5 Б 77 УДК 621.182 Рецензенты: зав. кафедрой прикладной математики САА, д. т. н., проф. В. А. Охорзин ; зам. директора по науке Сибирского филиала Всероссийского тепло - технического института, к. т. н. В. В. Васильев Бойко Е.А. Применение ЭВМ для решения теплоэнергетических задач: Учебное пособие для теплоэнергетич. спец. вузов – Красноярск: Изд – во «Сибирский промысел», 2001 – 202 с. ISBN 5 – 94253 – 003 - 3 В учебном пособии рассматриваются основные методы вычислительной ма тематики, алгоритмы расчета и принципы их программной реализации применительно к моделированию и решению наиболее распространенных теплоэнергетических задач. Приведены описания и тексты программ на языке Си, которые могут быть использованы как в учебных ц елях, так и для решения практических инженерных задач. Для студентов и аспирантов вузов теплоэнергетических специальностей, а также инженеров и научных работников, применяющих вычислительные методы при разработке прикладных программ. ISBN 5 – 94253 – 00 3 – 3  Бойко Е. А., 2001
3 Предисловие Интенсивное развитие ЭВМ в последнее время вызвало поистине рев о- люц и онные изменения в теории и практике математического моделирования и синтеза технических устройств, что привело к возникновению таких спец и- альных научных дисциплин как "Вычислит ельная теплофизика", "Вычисл и- тельная гидрогазодинамика", "Автоматизированное проектирование", "Авт о- матизированные комплексы и системы". В настоящее время не вызывает с о- мнений, что специалисты - теплоэнергетики должны обладать определенным набором зн а ний, уме ний и навыков в области применения ЭВМ для решения различных инженерно - технических задач. Это обстоятельство привело к поя в- лению в учебных планах ряда высших учебных заведений соответствующих дисци п лин. В последние годы издан целый ряд учебных пособий по методам вычи с- лительной математики, предназначенных для студентов, специализирующихся в области математической физики и прикладной математики [1 - 6]. Кроме того, в учебных пособиях [40, 47 - 49, 54 - 63] рассмотрены вопросы применения в ы- числительной техники для решения отдельных теплоэнергетических задач. Однако в настоящее время отсутствует полноценное руководство, на базе к о- торого может быть построен первоначальный, систематизированный курс об у- чения инженеров теплоэнергетических специальностей основам использов а- ния численных методов и вычислительной техники. Представляется, что такой курс целесообразно строить на базе рассмо т- рения вопросов применения ЭВМ для решения типовых теплоэнергетических задач, к числу которых можно отнести поверочные и конструкторские ра счеты котельных и турбинных установок и процессов, протекающих в них, расчет тепловых схем ТЭС, расчет образования и рассеивания выбросов вредных в е- ществ, оценка технико - экономических показателей работы основного и всп о- могательного оборудования и т.д. При таком подходе наиболее последов а- тельно соблюдаются принципы фундаментализации высшего образования, п о- скольку алгоритмы и методики решения вышеперечисленных теплоэнергет и-
4 ческих задач являются платформой для процедур математического моделир о- вания самых разн ообразных процессов и устройств соответствующего проф и- ля. Данное пособие основано на опыте преподавания учебного курса "М а- тематическое моделирование теплоэнергетических задач на ЭВМ", который читается в течение последних семи лет на кафедре "Тепловые элек трические станции" Красноярского государственного технического университета для студентов соответствующей специальности. В нем рассмотрены методы в ы- числительной математики, алгоритмы расчета и принципы их программной реализации применительно к наиболее рас пространенным теплоэнергетич е- ским задачам. При изложении материала пособия одновременно рассматриваются в о- просы, связанные с построением математической модели соответствующего процесса или устройства, а также алгоритмов и программ, используемых при ее реа лизации. Такой подход, основанный на широко используемой в работах академика А.А.Самарского триаде "модель – алгоритм – программа" [2, 5], представляется автору наиболее методически правильным. Состав задач и м о- делей подобран так, чтобы они образовали набо р, входящий в профессионал ь- ный багаж любого теплоэнергетика, и рассмотрение их численной реализации позволило бы затронуть практически все основные вычислительные методы. При выборе расчетных методик, моделей и подходов автор опирался на мат е- риал учебников , являющихся базовыми для изучения теплоэнергетических специальностей, например [41, 46, 50, 56, 66, 68]. Анализируя различные вычислительные схемы решения теплоэнергет и- ческих задач, автор сознательно стремился по возможности давать схемам "физическое объ яснение" и оценивать их качество на основе проверки соо т- ветствия получаемых решений особенностям изучаемых процессов и ус т- ройств. Такой подход неизбежно приводит к потере, по - видимому не столь важной для инженера - теплоэнергетика, математической строгости в ыводов,
5 которую желающие могут восполнить из книг и монографий по вычислител ь- ной матем а тике, например [1 - 6]. Изложение элементарных принципов программной реализации пре д- ставляется автору весьма важным компонентом учебного материала . По его мнению, даже для инженера, являющегося только пользователем уже готовых программ, эти программы не должны быть "абсолютно черными ящиками". Такие знания и навыки необходимы, так как иначе будут затруднительными планирование вычислительного экспери мента и интерпретация его результ а- тов. Поэтому в пособии большое внимание уделено изложению примеров, д е- монстрирующих особенности составления вычислительных программ, испол ь- зованию стандартного программного обеспечения, а также рассмотрению о б- щей структуры программ для решения задач теплоэнергетики. Значительное внимание посвящено вопросам, которые нередко в учебной литературе опу с- каются, хотя важность их понимания для эффективного применения ЭВМ очень велика. К числу таких вопросов относятся, например, пон ятие коррек т- ности, устойчивости и обусловленности вычислительных задач и алгоритмов, особенности поведения вычислительной п о грешности. Практическая направленность данного пособия подкреплена текстами вычислительных программ, написанных на алгоритмическом я зыке програ м- мирования – Си. Перспективность использования этого языка в современных программных комплексах обусловлена его хорошей структурированностью, четкой и однозначной грамматикой, высокой эффективностью и мобильн о- стью, удобством работы с файловыми с труктурами. Программы составлены так, чтобы их легко можно было читать и модернизировать, брать за основу при разработке прикладных пр о грамм. Остановимся на общей структуре пособия. В первой главе рассматр и- ваемые вопросы закладывают фундамент, необходимый для правильного п о- нимания подходов и принципов математического моделирования теплоэнерг е- тических процессов и устройств, а также изложенных в остальных главах в ы- числительных мет о дов.
6 Во второй главе описываются основные численные методы поиска ко р- ней нелин ейных уравнений на примере решения задачи моделирования и о п- ределения теплофизических свойств энергетических теплоносителей. В третьей главе рассматриваются прямые и итерационные методы реш е- ния систем линейных алгебраических уравнений, как инструмент расче та б а- лансовых уравнений элементов тепловых схем ТЭС. В четвертой главе на примере расчета принципиальных тепловых схем ТЭС рассмотрены методы решения систем нелинейных уравнений. В пятой главе содержится изложение наиболее распространенных сп о- собов вычисле ния определенных интегралов применительно к решению зад а- чи технико - экономического обоснования параметров и структуры тепловой электростанции. Шестая глава учебного пособия посвящена методам поиска экстремумов функции одной переменной и приведены программы, реализующие методы деления отрезка пополам и золотого сечения. В седьмой главе рассмотрены методы безусловной оптимизации фун к- циональных зависимостей нескольких п е ременных. В восьмой главе приводятся методы интерполяции, аппроксимации и экстраполяции таб лично заданных функций. Так же в этой главе изложен м е- тод наименьших квадратов и принцип статистической обработки результатов испытаний и эксплуатационных показателей работы теплоэнергетических у с- тановок. В девятой главе описываются алгоритмы и методы реше ния задачи К о- ши для систем обыкновенных дифференциальных уравнений на примере м а- тематического моделирования нестационарных тепловых процессов в энерг о- установках. Можно предположить, что к изучению отдельных параграфов или даже глав этого пособия читате ль приступит, только столкнувшись с необходим о- стью решить на ЭВМ важную для него задачу. Вероятно, в этом случае польза от изучения соответствующего раздела будет наибольшей.
7 В ряде случаев автор позволяет себе интерпретировать те или иные р е- зультаты, дела ть определенные выводы и даже давать рекомендации в наде ж- де на то, что для новичка соответствующие рассуждения дадут полезный н а- чальный ориентир. В целом же ко всяким рекомендациям в такой сложной и многообразной области, как применение вычислительных мето дов с их реал и- зацией на ЭВМ для решения прикладных теплоэнергетических задач, следует отнестись с осторожностью. Они не могут претендовать на бесспорность, и их следует рассматривать скорее как отражение точки зрения автора. Иногда то или иное положение об основывается ссылкой на вычислительную практику. Хотя критерий практики и играет при отборе способов вычислений сущес т- венную роль, все же оценки методов, основанные на результатах их примен е- ния для решения конкретных задач, нередко бывают весьма субъективн ы и противоречивы. В заключение следует отметить, что никакие теоретические положения и советы не могут заменить собственного опыта программирования и вычисл и- тельной работы. Как надеется автор, параллельно с изучением данного пос о- бия такой опыт читатель м ожет приобрести, переходя от решения задач уче б- ного хара к тера к серьезным практическим задачам. Автор
8 Глава 1. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И СИСТЕМНЫЙ ПОДХОД ПРИ РЕШЕНИИ ТЕПЛОЭНЕРГЕТИЧЕСКИХ З А ДАЧ § 1.1. Общая характеристика методов моделирования теплоэнергетич е ских установок Современные теплоэнергетические установки (котлоагрегаты, турб о- устан овки и др.) состоят из большого количест ва взаимосвязанных элементов, в каждом из которых протекают сложные физические процессы. Закономерно - сти, описывающие эти процессы, сложны и многообразны и с трудом подд а- ются математическому описанию. Эти трудности значительно возрастают при комплексном и с следовании всей системы [40, 46]. Исследование таких объектов может быть проведено экспериментал ь- ными методами, методами физического и математического моделирования. В о б щетеоретическом плане моделирование означает осуществление каким - либо способом отражения или воспроизведения действительности для изуч е- ния имеющихся в ней объективных закономерностей. Экспериментальные способы исследования имеют первостепенное значение в качестве основы для построения теории процесса и являются критерием для оценки точности зн а- ний об объекте [40]. Однако эти способы не всегда могут служить эффекти в- ным рабочим методом получения информации о свойствах теплоэнергетич е- ских установок. Постановка эксперимента и обработка эмпирических данных становятся все более сложными и дорогостоящими. Экспериментальные да н- ные не могут использоваться для оценки свойств проектируемого оборудов а- ния, особенно новых типов, поскольку в этом случае требуются значи тельное обобщение и экстраполяция результатов, н о сящих конкретный характер. М е- тод физического (натур ного) моделирования сохраняет особенности провед е- ния эксперимента на реальном объекте, но в принципе требу ет предварител ь- ного математического исследования для определения условий и соотношения подобия [5]. Поэтому физическое моделирование ограничивалось частными 
9 задачами отдельных процессов и устройств, а для всей системы не нашло применения. Для детального исследования теплоэнергетических процессов и устан о- вок как сложных и больших систем в настоящее время широкое применение находят методы математического моделирования с применением вычисл и- тельной техники [25 - 28, 42, 43, 54, 55, 59 - 64]. В отличие от физического мод е- лирования математическое моделирование позволяет изучать только те пар а- метры реального о бъекта, которые имеют математическое описание и связаны математическими соотношениями в уравнениях, относящихся как к модели, так и к оригиналу. Следовательно, математическая модель реального объекта есть некоторый математический объект, поставленный в соо тветствие данн о- му физическому объекту. Поэтому в дальнейшем под математической мод е- лью реального объекта будем понимать совокупность соотношений формул, уравнений, неравенств, логических условий и т.д., которые связывают хара к- теристики объекта с параметрам и объекта и исходной информацией. Осно в- ными моментами метода математического моделирования являются создание ма тематической модели - описания, достаточно полно и точно отражающей ф и- зические процессы, как в отдельных звеньях, так и в объекте в целом, и реал и- зация этой мо дели в виде алгоритма функционирования моделирующей си с- темы. При применении вычислительной техники математи ческая модель об ъ- екта строится исходя из возможностей вычислительной техники, вида и типа вычислительных машин, которыми располагает и сследователь. Например, о г- раниченная оперативная память ЭВМ приводит к не обходимости компактного представления модели и мето дов моделирования, простоте их реализации. С другой стороны, математические модели разрабатываются в за висимости от сложности стр уктуры объекта, математи ческого описания его звеньев и целей моделирования. Цели моделирования, вид и объем исходной информации о п- ределяют характер модели – вероятностный или детер минированный, гран и- 
10 цы моделируемой системы, способ ее разбиения на компоне нты, степень тр е- буемой точности и форму описания физических процессов в каждом из них. При этом связь исследователя с моделирующей си стемой должна быть макс и- мально удобной. Это отно сится в первую очередь к способу подготовки и вв о- да исходной информации, контроля процесса моделирования и обработки р е- зультатов. § 1.2. Иерархия задач и уровней математического моделирования Современные ТЭС представляют собой технические комплек сы разн о- родных элементов оборудования со сложной схемой технологи ческих связей, тесным взаимодействием различных физико - химических, тепловых, гидра в- лических и других процессов; в них применяются раз нообразные типы конс т- рукций и компоновок оборудования. При математическом моделировании столь сложных объектов целесообразным представляе тся использование м е- тодологии системного подхода, разработанного и внедренного применительно к энергетическим установкам академиками Л. А. Мелентьевым и Л. С. Поп ы- риным [40, 49]. Как показано в этой работе, ТЭС могут являться предметом сис темного подхода, так как представляют собой технические системы, кот о- рые, с одной стороны, являются частью системы топливно - энергетического комплекса, определяющей цели и ограничительные рамки их со оружения и функционирования, с другой – сами объекты (ввиду техно логичес кого разн о- образия отдельных установок) допустимо рассматри вать как совокупность взаимосвязанных подсистем. Кроме того, расчетные теплоэнергетические з а- дачи совпадают с целью систем ного подхода – выбрать наилучшие пути ада п- тации (приспособления) ис следуе мой системы к постоянно меняющимся и н е- детерминирован ным (не вполне определенно з а данным) внешним условиям. Основными этапами решения теплоэнергетических задач, положенных в основу проектных решений являются: 1 – выделение рассматриваемого объе к- та из обще й системы топливно - энергетического комплекса; 2 – выявление 
11 внутренней структуры исследуемой ТЭС; 3 – формулирование в общем виде задачи математического моделирования; 4 – эквивалентирование (группиро в- ка) реальных элементов и связей объекта; 5 – определени е состава задач пр и- менитель но к каждой эквивалентной системе; 6 – выявление способов инфо р- ма ционных взаимосвязей систем в рамках сконструированной иерархии об ъ- екта; 7 – построение комплекса математических моделей устано вок; 8 – уст а- новление соответствия достоверности результ а тов. Иерархическая структура систем ТЭС. На уровне рассмотре ния бол ь- ших систем энергетики ее конечными элементами являются предприятия - производители энергетической продукции и предприятия, распределяющие ее между потребителями. В свою очередь, каждое предприятие - производитель энергетиче ской продукции является сложной системой, которая включает в себя мн о го единиц разнотипного энергетического оборудования, объединен - ных физико - техническими (электрические и трубопроводные линии) и тран с- портными связями. Каждую такую сложную систему целесообраз но предст а- вить в виде ряда иерархически соподчиненных систем. Приме нительно к те п- лоэнергетическим установкам на органическом топливе можно выделить ч е- тыре иерархических структурных уровня: э нергетическая установка в целом; энергетические агрегаты; группы элементов оборудования; элементы обор у- дования (рис. 1.1). Конечные элементы иерархической структуры теплоэнергетической у с- тановки (ТЭУ) – элементы оборудования можно подвергнуть даль нейшей д е- тализации с целью изучения отдельных явлений, процессов, конструкций. Эти исследования проводятся на нижестоящей ступени иерархии, т. е. на уровне физико - технических систем частей элементов оборудования и переходят в решение проблем механики, теплофизики, металловедения и других дисци п- лин. Изучение свойств реальных систем ТЭУ, их разработка и проектиро - вание, особенно с применением формализованных методов, требует вве дения 
12 понятия эквивалентных систем. Это связано с тем, что, во - первых, всякое обобщенное изучение систем требует определенной абстракции и, во - вторых, введение понятия "эквивалентные системы" необходимо ввиду практической невозможности количественно описать с помощью математических методов все элементы и связи реальных си стем. При этом эквива лентные системы должны правильно отображать основную структуру и свойства реальных си с- тем теплоэнергетич е ских установок ТЭС. Построенная в соответствии с изложенными принципами иерархия э к- вивалентных систем ТЭУ представляет собой четырехъярусную пира миду, верхние уровни которой содержат все меньшее число все более и более агр е- гированных систем (рис. 1.1). Исходными элементами рассматриваемой и е рархии служит множе ство эквивалентных систем элементов оборудования; для наиболее сложных типов ТЭУ целесоо бразно выделять и рассматривать до 50 – 70 элементов оборудования. Следующие три горизонтальных уровня и е- рархии образованы последовательным агрегированием каждого преды дущего уровня. На уровне групп элементов оборудования следует учи тывать в обо б- щенном в иде многочисленные конструктивные параметры и показатели, кот о- рые были детально учтены на уровне рассмотрения отдельных элементов об о- рудования. На этом уровне остальное внимание должно быть обращено на описание конструктивно - компоновочных, термодинамически х и расходных параметров, а также показателей, ха рактеризующих в целом группу элементов оборудования. При этом целесообразно выделять до 7 – 10 групп элементов оборудования, образующих достаточно самостоятельные системы (например, система топливоподготовк и, технического водоснабжения и пр.). Эквивален т- ные группы элементов оборудования на следующем иерархическом уровне объединяются в агрегаты. В качестве агрегатов целесообразно рассматривать такие крупные системы, как ко тельная установка, турбоустановка, с истема п и- тательных нас о сов и др. 
13 На этом уровне для получения эквивалентного описания агрегатов ос у- ществляется дальнейшее обобщение описания многочислен ных элементов оборудования и связей между ними. На верхнем уров не – уровне описания энергоустановки – дается наиболее обобщенное описание основных связей, процессов и показат е лей, характеризующих рассматриваемую ТЭС. Рис. 1.1 . Принципиальные связи математических моделей теплоэнергетической установки между собой и виды информации Внешняя обратная информация Внеш няя исходная информация Модель ТЭС, АЭС (энергоустановки) Модель агрегатов Модели групп элементов оборудования Модели элементов оборудования Внешние системы: машиностроение, электроэнергетическая, топливоснаб - жение, окружающая среда и др. Внутренние физико - т ехнические системы частей элементов оборудования Внутренняя исходная информация Внутренняя обратная информация Иско - мая инфор - мация 
14 Под обное, иерархическое построение системы математических моделей позволяет наилучшим образом реализовать возможности расчетов на ЭВМ и взаимосвязано исследовать с достаточной по исходным условиям точностью любую зависимость как в собственно данной теплоэнерг етической установке, так и в энергетической системе, включающей эту установку. Иерархия задач математического моделирования. После построения иерар хии систем ТЭУ следующим этапом подхода к проблеме комплексного математического моделирования является созда ние соответствующей иера р- хии научно - исследовательских или проектно - конструкторских задач; при этом базой служит иерархия систем ТЭУ (см. рис. 1.1). Следует отметить, что зад а- чи расчета теплоэнергетических установок значительно различаются в зав и- симости от стадии моделирования и поэтому должны дифференцироваться по этапам тех или иных работ; каждый из этих этапов целесообразно различать по глу бине и детальности проработки вопр о сов. Иерархия потоков информации. В зависимости от иерархии задач мат е- матического моделирования систем ТЭС должна соответствовать аналогичная по структуре иерархия исхо д ной и обменной информации. Всю информацию, которой необходимо оперировать в процессе ре - шения теплоэнергетических задач, подразделяют на исходную, промежуто ч- ную и иском ую. Получа емая промежуточная информация может одновреме н- но играть роль ис комой для предшествующих стадий и исходной для посл е- дующих. Ис ходную информацию подразделяют на внешнюю (данные о вне ш- них свя зях рассматриваемого объекта или условиях выбора решен ия) и внут - реннюю (данные соответственно о проектируемом объекте). Промежу точная информация, как правило, является внутренней. Искомая инфор мация также подразделяется на внутреннюю (результаты оптимизации параметров и хара к- теристик объекта) и внешнюю (со ответствующие данные об обратных вне ш- них связях). Промежуточная информация имеет иерархическую структуру (см. рис. 
15 1.1). Информация, получаемая в результате исследования объ екта в целом, п е- редается в качестве исходных данных для исследования агрегатов, гр упп эл е- ментов и отдельных элементов оборудования. Ана логично информация об а г- регатах и группах элементов оборудования пе редается в качестве исходной для исследования групп и от дельных элементов. Перечисленные потоки и н- формации направлены от общих решени й к частным. Обратная связь осуществляется соответствующими обратными поток а- ми промежуточной информации. Существенным моментом явля ется исслед о- вание источников исходной информации, методов ее сбора, обработки и по д- готовки для целей использования при матем атическом моделировании. Важно получение всех компонентов исходной информации на еди ной методической основе и одинаковой точности, так как только при этом можно получить с о- поставимые результаты. § 1.3. Основные положения математического моделирования и процесс создания математической мод е ли При исследовании, разработке, проектировании и создании сложных объектов (например, ТЭС) требуются знания о количественных и качестве н- ных закономерностях, свойственных рассматриваемым системам. Эти свед е- ния могут быть пол у чены на базе метода математического моделирования. Согласно основным положениям моделирования энергоустановок ТЭС, математическая модель дает формализованное и приближенное (с определе н- ной степенью точности) описание реальной картины количес твенных и лог и- ческих взаимосвязей и соотношений между основными параметрами рассма т- риваемого объекта, техническими и материальными характеристиками его элементов, характеристиками внешних технологических и экономических св я- зей, системой ограничений и соотв етствующим критерием эффективности. Возможности математич е ского моделирования и его влияния на научно - технический процесс неизменно возросли в последние десятилетия в связи с 
16 созданием и широким внедрением ЭВМ в инженерную и научную практику. Процесс созда ния математической модели тепловой энергетической у с- тановки условно можно разбить на ряд основных, взаимосвязанных этапов: построение математической модели; постановка, исследования и решение с о- ответствующих вычислительных задач; проверка качества модели н а практике и модификация модели. Рассмотрим основное с о держание этих этапов. 1. Построение математической модели . Предполагается, что с пом о- щью наблюдений и экспериментов, практики получена достаточно подробная и достоверная информация об изучаемом процесс е или явлении. Цель этого этапа – выяснение главных закономерностей. Выявляются основные "характ е- ристики" явления, которым сопоставляются некоторые величины. Как прав и- ло, эти величины принимают числовые значения, т.е. являются переменными, векторами, матри цами, функциями и т.д. На этом этапе моделирования дел а- ется предварительный анализ априорной информации о моделируемом объе к- те, на основании которого составляется перечень технологических процессов, характерных для этой установки, и формулируются основные допущения при построении мод е ли. Установленным внутренним связям между "характеристиками" явления придается форма равенств, неравенств, уравнений и логических структур, св я- зывающих величины в математическую модель. Таким образом, математич е- ская модель ста новится записью на языке математики законов природы, управляющих протеканием исследуемого процесса или описывающих фун к- ционирование изучаемого объекта. Она включает в себя набор некоторых в е- личин и описание характера связи между ними. Нередко в математичес кую модель закладываются некоторые гипотезы, ещё не подтвержденные на практике. Такую математическую модель назыв а- ют гипотетической . Математические модели часто разделяют на статистические и динам и- ческие. Статистическая модель описывает явления или ситуаци ю в предп о- 
17 ложении их завершенности, неизменности. Динамическая модель описывает, как протекает явление или изменяется ситуация от одного состояния к друг о- му. При использовании динамических моделей, как правило, задают начал ь- ное состояние системы, а затем и сследуют изменения этого состояния во вр е- мени. 2. Постановка, исследование и решение вычислительных задач . Для того чтобы найти интересующие исследователя значения величин или выяснить характер зависимости от других входящих в математическую модель величин , ставят, а затем решают математические задачи. Выявим основные типы решаемых задач. Для этого все величины, включенные в математическую модель, условно разбивают на три группы: 1 – исходные (входные) данные x ; 2 – параметры модели a ; 3 – искомое решение ( выхо д ные данные ) y . Наиболее часто решают так называемые прямые задачи , постановка к о- торых выглядит следующим образом: по значению входного данного x при фиксированных значениях па раметров a требуется найти решение y . Процесс решения прямой задачи можно рассматривать как математическое моделир о- вание причинно - следственной связи, присущей явлению. Большую роль в инженерной практике играет решение так называемых обратных задач , состоящих в определении входного данного x по известному значению y (пар а метры модели a , как и в прямой задачи, фиксированы). Помимо двух рассмотренных типов задач след ует упомянуть еще один тип – задачи идентификации . В широком смысле задача идентификации м о- дели – это задача выбора среди множества всевозможных моделей той, кот о- рая наилучшим образом описывает изучаемое явление. Чаще задачу идент и- фикации понимают, как зад ачу выбора из заданного параметрического семе й- ства моделей конкретной математической модели (путем перебора параметров a ), с тем, чтобы оптимальным в смысле некоторого критерия образом согл а- совать следствия из модели с результатами набл ю дений. 
18 Указанные три типа задач (прямые, обратные и задачи идентификации) называются вычислительными задачами . Как правило, решение вычислител ь- ной задачи не удается выразить через выходные данные в виде конечной фо р- мулы. Для решения такой задачи существуют специальные методы, которые называются численными (или вычислительными ). Они позволяют свести пол у- чение численного значения решения к последовательности арифметических операций над численными значениями входных данных. Эффективность и с- пользования численны х методов при внедрении математических моделей в науке и технике повышается при использовании ЭВМ. 3. Проверка качества модели на практике и модификация модели . На этом этапе выясняют пригодность математической модели для описания и с- следуемого явления. Тео ретические выводы и конкретные результаты, выт е- кающие из гипотетической математической модели, сопоставляют с экспер и- ментальными данными. Если же результаты совпадают с допустимой для оп и- сания данного явления точностью, то модель можно признать приго д ной. § 1.4. Основные этапы решения инженерной задачи с применением ЭВМ Решение серьезной инженерной задачи, в частности теплоэнергетич е- ской, с использованием ЭВМ длительный и сложный процесс, который с о п- ределенной степенью условности можно разбить на ряд пос ледовательных этапов. Выделим следующие из них: 1 – постановка проблемы; 2 – выбор или построение математической модели; 3 – постановка вычислительной задачи; 4 – предварительный анализ свойств вычислительной задачи; 5 – выбор или п о строение численного ме тода; 6 – алгоритмизация и программирование; 7 – отладка программы; 8 – расчет по программе; 9 – обработка и интерпретация результатов; 10 – использование результатов и коррекция математической м о- д е ли. Постановка проблемы . Первоначально прикладная задача ф ормулир у- 
19 ется в самом общем виде. На данной стадии происходит постановка задачи, и первостепенное внимание при этом уделяется цели исследования. Этот очень важный и ответственный этап завершается конкретной формулировкой пр о- блемы на языке, принятом в данной предметной области. Знания возможн о- стей, которые позволяет достичь применение ЭВМ, могут оказать существе н- ное влияние на окончател ь ную формулировку проблемы. Выбор или построение математической модели . Для последующего анализа исследуемого явления или объ екта необходимо дать его формализ о- ванное описание на языке математики, т.е. построить математическую модель. Часто имеется возможность выбора модели среди известных и принятых для описания соответствующих процессов, но нередко требуется и ее существе н- ная м одификация, а иногда возникает необходимость в построении принцип и- ально новой модели. Постановка вычислительной задачи . На основе принятой математич е- ской модели формулируют вычислительную задачу (или ряд таких задач). Анализируя результаты ее решения, иссл едователь предполагает получить о т- веты на интересующие его вопросы. Предварительный анализ свойств вычислительной задачи . На этом эт а- пе проводят предварительное (предмашинное) исследование свойств вычи с- лительной задачи. Большое внимание уделяют анализу кор ректности ее п о- становки, т. е. выяснению вопросов существования и единственности реш е- ния, а также исследованию устойчивости решения задачи к погрешностям входных данных. Выбор или построение численного метода . Для решения вычислител ь- ной задачи на ЭВМ требу ется использование численных методов. Часто р е- шение инженерной задачи сводится к последовательному решению ряда ста н- дартных (типичных) вычислительных задач, для чего происходит либо выбор среди известных методов, либо их адаптация к особенностям решаемой з ад а- чи. 
20 Для решения одной и той же вычислительной задачи обычно может быть использовано несколько методов. При этом необходимо знать особенн о- сти этих методов, критерии, по которым оцениваются их качества, чтобы в ы- брать метод, позволяющий решить проблему наи более эффективным о б разом. Алгоритмизация и программирование . Как правило, выбранный на пр е- дыдущем этапе численный метод, содержит только принципиальную схему решения задачи, не включающую многие детали, без которых невозможна реализация метода на ЭВМ. Не обходима подробная детализация всех этапов вычислений, для того, чтобы получить реализуемый на ЭВМ алгоритм. При этом составление программы сводится к переводу этого алгоритма на выбра н- ный язык програ м мирования. Отладка программы . На этом этапе с помощью Э ВМ выясняют и и с- правляют ошибки в вычислительной программе. Подготовку к отладке след у- ет начинать уже на этапе алгоритмизации и программирования задачи. Зам е- тим, что эффективность отладки самым существенным образом зависит от общей методики разработки прог раммы. После устранения ошибок програ м- мирования необходимо провести тщательное тестирование программы – пр о- верку правильности ее работы на специально отобранных тестовых задачах, имеющих известные реш е ния. Расчет по программе . На этом этапе происходит реше ние задач на ЭВМ по составленной программе в автоматическом режиме. Этот процесс, в ходе которого входные данные с помощью ЭВМ преобразуется в результат, наз ы- вают вычислительным процессом . Обработка и интерпретация результатов . Полученные в результате расч ета на ЭВМ выходные данные, как правило, представляют собой большие массивы чисел. Зачастую первоочередной интерес представляет лишь н е- большая часть полученной информации или даже некоторая грубая инт е- гральная характеристика. Для того, чтобы исследователь мог воспользоваться результатами расчетов, их необходимо представить в виде компактных та б- 
21 лиц, графиков или иной удобной для восприятия форме. При этом следует максимально использовать возможности современных ЭВМ для подготовки такой информации и ее предст авления с помощью печатающих и графических выводных ус т ройств. Использование результатов и коррекция математической модели . З а- вершающий этап состоит в использовании результатов расчетов в практич е- ской деятельности, иначе говоря, во внедрении результатов. О чень часто анализ результатов, проведенный на этапе их обработки и интерпретации, указывает на несовершенство используемой математической модели и необходимость ее коррекции. В таком случае математическую м о- дель модифицируют (при этом она, как правило, усл ожняется) и начинают н о- вый цикл решения задачи. § 1.5. Вычислительный эксперимент Создание математических моделей и решение инженерных задач с пр и- менением ЭВМ требует выполнение большого объема работ. Не трудно зам е- тить аналогию с соответствующими работам и, проводимыми при организации натурных экспериментов. Однако вычислительный эксперимент проводится не над реальным об ъ- ектом, а над его математической моделью, и роль экспериментальной уст а- новки играет оснащенная специально разработанной программой ЭВМ. В св я- зи с этим естественно рассматривать проведение больших комплексных ра с- четов при решении инженерных и научно - технических задач как вычисл и- тельный эксперимент . Широкое применение ЭВМ в математическом модел и- ровании, разработанная теория и значительные прак тические результаты п о- зволяют говорить о вычислительном эксперименте как о новой технологии и методологии научных и прикладных исследов а ний. Отметим некоторые достоинства вычислительного эксперимента по сравнению с натурным. Он, как правило, дешевле физиче ского. В этот эксп е- 
22 римент можно легко и безопасно вмешиваться, многократно повторять и пр е- рывать в любой момент. В ходе этого эксперимента можно смоделировать у с- ловия, которые нельзя создать в лаб о ратории. Существенным недостатком вычислительного эксперим ента является то, что применимость его результатов ограничена рамками используемой м а- тематич е ской модели. Наиболее предпочтительный вариант применимости вычислительного эксперимента достигается в сочетании с натурным. Действительно построение математическо й модели основано на результатах наблюдений, опыта, а дост о- верность его выводов проверяется с помощью критерия практики. Для инженерных задач характерно наличие значительного числа пар а- метров (конструктивных, технологических и др.). Создание нового изделия или изучение нового технологического процесса предполагает выбор среди большого числа альтернативных вариантов, а также оптимизацию по ряду п а- раметров. Поэтому в ходе вычислительного эксперимента расчеты проводятся многократно с различными значениями вход ных параметров. Для получения нужных результатов с требуемой точностью и в приемлемые сроки необход и- мо, чтобы на расчет каждого варианта тратилось минимальное время. Именно поэтому при создании программного обеспечения так важно использовать эффективные чи с ленные методы. Разработка программного обеспечения вычислительного эксперимента в конкретной области инженерной деятельности приводит к созданию крупного программного комплекса. Он состоит из связанных между собой прикладных программ и системных средств, включающих средства, предоставляемые пользователю для управления ходом вычислительного эксперимента, обр а- ботки и представления его результатов. Такой комплекс программ иногда н а- зывают проблемно - ориентированным пакетом прикладных программ [8]. 
23 § 1.6. Вопр осы точности и эквивалентирования при построении математ и ческих моделей Большие возможности, появляющиеся при применении метода матем а- тического моделирования к решению теплоэнергетических задач приводят к необходимости не только выявления основных законо мерностей взаимосвязей параметров и характеристик, присущим теплоэнергетическим установкам, не только проведение комплексной оптимизации параметров и профиля тепл о- энергетической установки, но и анализу возможных отклонений от получе н- ных решений. Для прави льного понимания подходов и критериев, используемых при решении прикладных задач с применением ЭВМ, очень важно с самого начала признать, что получить точное значение решения практически невозможно. Получаемое на ЭВМ решение * y почти всег да содержит погрешность, т.е. я в- ляется приближенным. Наличие погрешности решения обусловлено рядом весьма глубоких причин: 1 – погрешность от упрощений при постановке зад а- чи; 2 – погрешность используемых аналитических зависимостей и методов расчета; 3 – п огрешность аппроксимации исходных данных; 4 – п о грешность задания исходных данных; 5 – вычислительная погрешность. Погрешность от упрощений при постановке задачи ( 1 d ). Математич е- ская модель является лишь приближенным описанием реального п роцесса. Характеристики процесса, вычисленные в рамках принятой модели, заведомо отличаются от истинных характеристик, причем их погрешность зависит от степени соответствия модели реальному процессу. Величина 1 d определяется совокупным де йствием всех допущений предположений при построении м а- тематической модели и полнотой учета ее факторов и п а раметров. Погрешность используемых аналитических зависимостей и методов расчета ( 2 d ). Применяемые для решения задач аналитические з ависимости и численные методы в большинстве случаев являются приближенными. Сниж е- ние данной погрешности возможно за счет применения ЭВМ, исключающей 
24 округление при расчете, а также путем использования наиболее точных мет о- дов расчета. Погрешность аппроксима ции исходных данных ( 3 d ). Исходные данные, как правило, содержат изначально погрешности, поскольку они либо получ а- ются в результате экспериментов (измерений), либо являются результатом реш е ния некоторых вспомогательных задач. Погрешность задания исходных данных ( 4 d ). При вводе исходных да н- ных в ЭВМ, выполнение арифметических операций и выводе результатов на печать производится округление. Следует заметить, что величина возможного диапазона изменения исходных данных зависи т, прежде всего, от периода времени, на который необходимо прогнозировать исходную и н формацию. Вычислительная погрешность ( 5 d ). Невозможность получения точного решения следует уже из - за ограниченной разрядности вычислительной техн и- ки и в основном определяется характеристиками используемой ЭВМ. Величина, соответствующая сумме трех погрешностей 1 d , 3 d , 4 d указа н- ных причин, составляет погрешность, называемую неустранимой погрешн о- стью (  d ). Погрешность, источником которой является метод решения задачи, н а- зывается погрешностью метода ( < d ), а погрешность, возникающая из - за о к- ругления при вычислениях – вычислительной погрешностью ( 2 d ). Та ким о б- разом, полная погрешность результата решения задачи на ЭВМ * y y y - = d , где y – точное решение; * y – результат вычисления, складывающийся из трёх с о- ставляющих: неустранимой погрешности, погрешности метод а и вычисл и- тельной погрешности, т.е. 2 < = y d d d d + + = . Разность между точным и прибл и- женным значениями рассчитываемых величин, взятая по модулю, является абсолютной п о грешностью : * y y - = D . Однако по величине абсолютной погрешности не всегд а можно сделать правильное заключение о качестве приближения. Наиболее объективной х а- 
25 рактеристикой величины корректности вычисления является величина отн о- сительной погрешности : y y y y D = - = * e . Использование относительных п о- грешностей удобно в частнос ти тем, что они не зависят от масштабов величин и единиц измерения. § 1.7. Корректность вычислительной задачи Под вычислительной задачей будем понимать одну из трех задач, кот о- рые возникают при анализе математических моделей: прямую задачу, обра т- ную или задачу идентификации. Будем считать, что постановка любой вычислительной задачи включает в себя задание множества допустимых входных данных X и множества во з- можных решений Y . Цель вычислительной задачи состоит в нахож дении р е- шения Y y ᅫ по заданному входному данному X x ᅫ (см. рис. 1.2). Анализ важнейших требований, предъявляемых к различным прикла д- ным задачам, приводит к понятию корректности математической задачи. В ы- числительная задача называется корректной , если выполнены следующие три требования: ее решение Y y ᅫ существует при любых входных данных X x ᅫ ; это решение единственно; решение устойчиво по отношению к малым возм у- щениям входных данных. В том слу чае, когда хотя бы одно из этих требов а- ний не выполнено, задача называется неко р ректной . Естественным свойством некоторых вычислительных задач является единственность решения, хотя существуют задачи, решение которых может и не быть единственным. Например, квадратное уравнение имеет два корня. Во многих же задачах не единственность решения весьма неприятное свойство. Оно может быть проявлением неправильной постановки исходной прикла д- ной проблемы, неоднозначности ее решения или неудачного выбора матем а- тич е ско й модели. 
26 Рис. 1.2 . Схематическая ситуация устойчивости решения задачи Если решение y вычислительной задачи зависит от входных данных н е- прерывным образом, то такое решение называется устойчивым по входным данным x . Это означает, что всякому исходному данному * x , удовлетворя ю- щему условию d < D * x , отвечает приближенное решение * y , для которого e < D * y , где e - точность вычис лений; d - точность входных данных. Требов а- ние увеличить точность решения приводит автоматически к повышению тр е- бований к точности исходных данных. Наряду с определением абсолютная устойчивость рассматривают относительную устойчивость ре шения, при определении которой * x D и * y D заменяются на относительные погрешности * x e и * y e . § 1.8. Обусловленность вычислительной задачи Пусть вычислительная задача корректна (ее решение существует, еди н- ственно и устойчиво по входным данным). Теоретически наличие у задачи у с- X Y x y * x * y d e 
27 тойчивости означает, что ее решение может быть найдено со сколь угодно м а- лой погрешностью, если гарантировать, что погрешности входных данных достаточно малы. Однако на практике погрешности входных данных не могут быть сколь угодно малыми, точность их ограничена. Как же повлияют малые и конечные погрешности входных данных на решение? Для ответа на этот в о- прос введем новые понятия. Под обусловленностью вычислительной зад ачи понимают чувствител ь- ность ее решения к малым погрешностям входных данных. Задачу называют хорошо обусловленной, если малым погрешностям входных данных отвечают малые погрешности решения, и плохо обусловленной, если возможны сил ь- ные изменения решения. Часто оказывается возможным ввести количественную меру степени обусловленности вычислительной задачи – число обусловленности . Эту вел и- чину можно интерпретировать как коэффициент возможного возрастания п о- грешностей в решении по отношению к вызвавшим их погр ешностям входных данных. Пусть между абсолютными погрешностями данных x и решения y у с- тановлено неравенство ) ( ) ( * * x y D ᆪ D D n . Тогда величина D n называется абс о- лютным числом обусловленности . Есл и же установлено неравенство ) ( ) ( * * x y e n e e ᆪ между относительными ошибками данных и решения, то вел и- чину e n называют относительным числом обусловленности . Обычно под числом обусловленности n понимают одну из вели чин D n или e n , причем обычно выбор бывает ясен из смысла задачи. Для плохо обусловленной задачи n >>1. В некотором смысле неустойчивость задачи – это крайнее проявление плохой обусловленности, отвечающе е значению ᆬ = n . Примерами плохо об у- словленных задач могут служить задачи вычитания приближенных чисел о д- ного знака, вычисления многочленов в ы сокой степени и др. 
28 § 1.9. Вычислительные методы Методы, которые используются в вычислительной м атематике для пр е- образование задач к виду, удобному для реализации на ЭВМ, и позволяют конструировать вычислительные алгоритмы называются вычислительными методами. С некоторой степенью условности вычислительные методы можно ра з бить на следующие классы [3]: - методы эквивалентных преобразований; - методы аппроксимации; - прямые (точные) методы; - итерационные методы; - методы статистических испытаний. Методы эквивалентных преобразований . Эти методы позволяют зам е- нить исходную задачу другой, имеющей то же решение. Выпо лнение эквив а- лентных преобразований оказывается полезным, если новая задача проще и с- ходной или обладает лучшими свойствами, или для нее существует известный метод решения, а может быть, и готовая программа. Эквивалентные преобр а- зования иногда позволяют све сти решение исходной вычислительной задачи к решению совершенно иного типа. Методы аппроксимации . Эти методы позволяют приблизить (аппрокс и- мировать) исходную задачу другой, решение которой в определенном смысле близко к решению исходной задачи. Погрешность , возникающая при такой замене, называется погрешностью аппроксимации . Принято говорить, что м е- тоды аппроксимации сходятся , если погрешность аппроксимации стремится к нулю при стремлении параметров метода к некоторому предельному знач е- нию. Один из распро страненных методов аппроксимации является дискрет и- зация – приближенная замена исходной задачи конечномерной задачей, т.е. задачей, входные данные и искомое решение которой могут быть однозначно з а даны конечным набором чисел. 
29 При решении нелинейных задач широко используют различные методы линеаризации , состоящие в приближенной замене исходной задачи более пр о- стыми линейными задачами. Прямые методы . Метод решения задачи называют прямым, если он п о- зволяет получить решение после выполнения конечного числа элементарных операций. Например, метод вычисления корней квадратного уравнения 0 2 = + + c bx x по формулам a ac b b x 2 / ) 4 ( 2 2 , 1 - ᄆ - = является прямым методом. Элементарными здесь считаются четыре арифметические операции и опер а- ция извлечения квадратно го корня. Заметим, что элементарная операция пр я- мого метода может оказаться довольно сложной (вычисление значений или специальной функции, решение системы линейных алгебраических уравн е- ний, вычисление определенного интеграла и т.д.). При построении прямы х методов существенное внимание уделяется минимизации числа элементарных операций. Иногда прямые методы называют точными , подразумевая под этим, что при отсутствии ошибок во входных данных и при точном выполнении эл е- ментарных операций полученный результат также будет точным. Однако те р- мин “точный” характеризует скорее свойства идеальной реализации метода, а отнюдь не качество полученного при реальных вычислениях р е зультата. Итерационные методы . Это – специальные методы построения посл е- довательных приближен ий к решению задач. Применение метода начинают с выбора одного или нескольких начальных приближений. Для получения ка ж- дого из последующих приближений выполняют однотипный набор действий с использованием найденных ранее приближений – итерацию (от лат. iter atio – повторение). Неограниченное продолжение этого итерационного процесса теоретически позволяет построить бесконечную последовательность прибл и- жений к решению – итерационную последовательность . Если эта последов а- тельность сходится к решению задачи, то г оворят, что итерационный метод сходится . Множество начальных приближений, для которых метод сходится, 
30 называется областью сх о димости метода. Типичной для итерационных методов проблемой является, то, что эти методы, по сути, являются приближенными; ни одн о из получаемых прибл и- жений не является точным значением решения. Также этот метод не обесп е- чивает быструю скорость сходимости и не гарантирует получения решения. Для теоретического исследования скорости сходимости и условий примен и- мости итерационных метод ов используются так называемые априорные (от лат. a ’ priori – до опыта) оценки погрешности , позволяющие еще до вычисл е- ний дать некот о рое заключение о качестве метода. Практическая реализация итерационных методов всегда связана с н е- обходимостью выбора кри терия окончания итерационного процесса. Испол ь- зование для этой цели априорных оценок чаще всего оказывается невозмо ж- ным или неэффективным. Для формирования критерия окончания по дост и- жении заданной точности, как правило, используют так называемые апост е- рио рные оценки погрешности неравенства, в которых величина погрешности оценивается через известные или получаемые в ходе вычислительного пр о- цесса велич и ны. Методы статистических испытаний ( методы Монте - Карло ). Это чи с- ленные методы, основанные на моделировании случайных величин и п о- строении статистических оценок решений задач. Эти методы могут оказаться незаменимыми при моделировании больших систем, но подробное их излож е- ние предполагает существенное использование аппарата теории вероятности и м а тематической статистики и выходит за рамки данного пособия. § 1.10. Требования к вычислительным алгоритмам и их программным реализац и ям Вычислительный метод, доведенный до степени детализации, позв о- ляющий реализовать его на ЭВМ, принимает форму вычислительного ал г о- ритма. 
31 Определим вычислительный алгоритм как точное предписание дейс т- вий над входными данными, задающими вычислительный процесс, напра в- ленный на преобразование произвольных входных данных в полностью опр е- д е ляемый этими входными данными результат. Реаль ный вычислительный алгоритм складывается из двух частей: а б- страктного вычислительного алгоритма , формулируемого в общепринятых математических терминах, и программы , записанной на одном из языков пр о- граммирования и предназначенной для реализации алгоритма на ЭВМ. К вычислительным алгоритмам, предназначенным для широкого и с- пользования, предъявляется ряд весьма жестких требований. Первое из них – корректность алгоритма. Будем называть вычислительный алгоритм коррек т- ным , если выполнены три условия: он позволя ет после выполнения к о нечного числа элементарных для вычислительной машины операций преобр а зовать любое входное данное X x ᅫ в результат y ; результат y устойчив по отнош е- нию к малым возмущениям водных данных; результат y обладает вычисл и- тельной у с тойчивостью. Вторым важным требованием к вычислительному алгоритму является хорошая его обусловленность. Обусловленность вычислительного алгоритма отражает чувствительность резул ьтата работы алгоритма к малым, но неи з- бежным ошибкам округления. Вычислительно устойчивый алгоритм назыв а- ют хорошо обусловленным , если малые относительные погрешности округл е- ния приводят к малой относительной величине погрешности резул ь тата * y . Помимо вышеназванных требований к абстрактным алгоритмам пред ъ- являют еще целый ряд существенных требований: экономичность, надлеж а- щая точность, экономия памяти, простота. Экономичность алгоритма измеряется числом элементарных операций, необхо димых для его реализации. Это требование формулируют иногда как требование максимальной быстроты исполнения алгоритма. Требование точности означает, что вычислительный алгоритм должен
32 давать решение задач с заданной или приемной задачи точностью – e . Важным является требование экономии памяти . Интерес к экономному размещению информации в памяти возрастает в связи с более широким и с- пользованием персональных ЭВМ для решения научно - технических и инж е- нерных задач. Учитывая необходимост ь дальнейшей программной реализации алг о- ритма, следует подчеркнуть, что простота алгоритма также является весьма жел а тельным его свойством. В отличие от абстрактных алгоритмов к их программным реализациям предъявляются несколько другие требования. Перечис лим некоторые из них: надежность, работоспособность, переносимость, поддерживаемость, простота в использовании и др. Надежность программы означает, что она не содержит ошибок и в ы- числяет именно тот результат, для которого предназначена. Работоспособность включает в себя надежность и предполагает, что программа способна выявлять недопустимые данные, обнаруживать разли ч- ные критические для задачи или алгоритма ситуации. Переносимость означает, что программа может работать на различных ЭВМ без изменения или с незначительными изменениями. Поддерживаемость – это, прежде всего, требование легкости модиф и- кации программы. Для того чтобы была возможность внесения в программу и з менений с минимальной вероятностью получения ошибок, она должна быть с о ставлена максимальн о ясно и логично. Простота в использовании программы – весьма желательна, но дост а- точно труднодостижимое свойство. Следует признать, что сформулированные требования противоречивы. В разных ситуациях на первый план может выступать то или иное требование. Эт о частично объясняет наличие большого числа программ, предназначенных для решения одной и той же задачи.
33 Глава 2 . МЕТОДЫ ПОИСКА РЕШЕНИЙ НЕЛИНЕЙНЫХ УРА В НЕНИЙ § 2.1. Математическое моделирование теплофизических свойств теплон о сителей на ЭВМ При выполнении тепловых расчетов теплоэнергетических установок возникает необходимость многократного определения теп лофизических свойств теплоносителей и рабочих веществ в широких диапазонах изменения исходных параметров. К таким параметрам относятся: давление ( p ), темпер а- тура ( t ), удельный объем ( v ), энт альпия ( h ), энтропия ( s ), степень сухости ( x ) и др. К числу основных рабочих сред, используемых в теплоэнергетике, отн о- сятся, прежде всего, вода и водяной пар. Для определения теплофизическ их параметров рабочих тел при ручном способе выполнения расчетов широко используются соответствующие табл и- цы и диаграммы благодаря удобству их применения и наглядности, а также достаточной точности получаемых результатов [41, 44]. В практике теплоте х- ническ их расчетов наибольшее распространение получила h , s – диаграмма для водяного пара (рис. 2.1), которая строится путем переноса числовых да н- ных термодин а мических таблиц. Весь диапазон данных на диаграмме с помо щью пограничных кривых разбит на три области состояния: вода под давлением, влажный насыщенный пар и перегретый пар. За начало координат принято состояние воды в тройной точке (давление 0 p = 611 Па, температура 0 t = 0,01 0 С, удельный объем 0 v = 0,00100 м 3 /кг). При подводе теплоты к воде ее температура постепенно повышается до тех пор, пока не достигнет температуры кипения s t , соответствующей данному давлению. Совокупность т очек, характеризующих состояние насыщенной жидкости , доведенной до температуры кипения, образует нижнюю часть п о- граничной кр и вой. 
34 При дальнейшем подводе теплоты начинается кипение воды, сопрово ж- даемое интенсивным увеличением объема и образованием двухфазн ой смеси, представляющей собой пар со взвешенными в нем капельками влаги, наз ы- ваемой влажным насыщенным паром . По мере продолжения процесса кол и- чество жидкой фазы уменьшается, а паровой растет (увеличивается степень сухости влажного пара – x ). Температура смеси при этом остается неизме н ной и равной s t , так как вся теплота расходуется на испарение жидкой фазы, а процесс парообразования на этой стадии является изобарно - изотермическим. Оканчивается процесс нагрева на этой стадии полным превращением воды в пар, в котором отсутствуют частицы жидкой фазы, характеризуемый как сухой насыщенный пар . Совокупность точек его агрегатного состояния образует верхнюю часть пограничной кривой. Рис. 2.1. h , s - диаграмма состояния воды и водяного пара K h , кДж/кг s , кДж/кг  0 К const p = const t = const x = h ᄁ ᄁ h ᄁ s ᄁ s ᄁ ᄁ 1 = x 0 = x A A p t h s v о б ласть воды область влажн о го пара область перегрет о го пара 
35 Нижняя и верхняя часть пограничной кривой составляют кривую нас ы- щения , разделенную критической точкой ( K ), в которой удельные объемы в о- ды и пара уравнива ются. Параметры критической точки составляют : p = 22,129 МПа; : t =374,15 0 С; : v =0,00326 м 3 /кг. При сообщении сухому насыщенному пару теплоты при том же давл е- нии его температура будет увеличивать ся, пар будет перегреваться. Совоку п- ность точек агрегатного состояния среды, температура которых превышает темпер а туру насыщения, называется областью перегретого пара . Любая точка, отражающая состояние воды или водяного пара на ди а- грамме характеризуется с ледующими параметрами: p , v , t , h , s , x , значения которых можно найти с помощью комбинации любых двух известных незав и- симых параметров. При расчетах теплофизических свойств воды и водяного пара на ЭВМ возникают серьезные, порой непреодолимые трудности, в использовании да н- ных из имеющихся таблиц и диаграмм в связи с тем, что они включают сотни тысяч значений физических параметро в. В настоящее время одним из эффективных способов автоматизирова н- ного определения термодинамических параметров воды и водяного пара явл я- ется представление табличных данных на основе ряда теоретических полож е- ний в виде аналитических функций одной, двух или нескольких переменных для различных областей состояния с различной степенью точности [55]. На и- более простыми, адаптированными и отвечающими большинству требований, предъявляемых для выполнения значительного круга теплоэнергетических з а- дач являются уравнен ия Я. Юзы [45]. Эти уравнения с достаточной для инж е- нерных расчетов точностью аппроксимируют все подобласти состояния воды и водяного пара в диапазоне давлений 0  35 МПа и температур 0  650 0 С. Ра з- работанные приближенные уравнения представляют явные зависимо сти для п а раметров воды и пара на линии насыщения в виде: ) ( , , , , , , s s t f s s v v h h p = ᄁ ᄁ ᄁ ᄁ ᄁ ᄁ ᄁ ᄁ ᄁ , а 
36 также для областей воды под давлением и перегретого пара в виде: ) , ( , , h p f s v t = . Однако если в качестве исходных данных задается набор каких либо других параметро в (например, p и t или p и s ), возникает необход и- мость вычисления неявных функций, т.е. решения нелинейных алгебраич е- ских уравнений, так как имеющийся вид многочленов н е позволяет выполнять прямой расчет искомых величин, которые служат в качестве независимых п е- ременных. Для решения данной задачи используются специальные итерац и- онные численные методы решения нелинейных уравнений, позволяющих пр о- верить сходимость уравнения или его модификации во всей области измен е- ния параметров; найти простые формулы для определения границ отрезка, на котором функция имеет только один корень, или найти формулу для опред е- ления начального прибл и жения [7]. Следует отметить, что подобная пос тановка возникает во многих нау ч- ных и инженерных задачах вызывая, необходимость р е шения уравнения вида: 0 ) ,..., , , ( 2 1 = n p p p x f , где f – заданная нелинейная функция; x – неизвестная величина; n p p p ,..., , 2 1 – пар а метры задачи. Как правило, исследователя интересует поведение решений в зависим о- сти от параметров i p . При каждом фиксированном наборе параметров i p н е- линейное уравнение может иметь либо конечное, либо бес конечное количес т- во решений x , что соответствует определенному физическому смыслу ко н- кретной задачи. Нелинейные уравнения, содержащие тригонометрические, экспоненциальные, показательные и другие функции, называются трансце н- дентными . Решениями или корнями уравнения 0 ) ,..., , , ( 2 1 = n p p p x f (в дальнейшем 0 ) ( = x f ) называются такие значения x , которые при подстановке в уравнение обращают его в тождество. Решение задачи отыскания корней нелинейного ура внения осуществл я- 
37 ют в два этапа. На первом этапе необходимо отделить корни уравнения, т.е. найти такие интервалы изменения переменной x , где расположен только один корень. Этот этап носит название этап локализации (отделения) корней. На втором этапе, называемом этапом итерационного уточнения корней , находят ко р ни уравнения с заданной точностью. Способы локализации корней многообразны, но зачастую о наличии на отрезке [ ] b a , корня судят по перемене знака функции на кон цах отрезка. Осн о- ванием для применения указанного способа служат следующие теоремы м а- тематического анализа. Теорема 1. Пусть функция ) ( x f непрерывна на отрезке [ ] b a , и принимает на его концах значения разных знаков, т.е . 0 ) ( ) ( < b f a f . Тогда отрезок [ ] b a , с о- держит, по крайней мере, один корень уравнения 0 ) ( = x f . Теорема 2 . Корень уравнения 0 ) ( = x f будет единственный, если прои з- водная ) ( x f ᄁ суще ствует и сохраняет знак внутри интервала [ ] b a , . На втором этапе решения задачи производится уточнение отделенных корней, т.е. находят значения корней с заданной точностью ( 0 > e ). На этом этапе используют тот или иной и терационный численный метод, позволя ю- щий построить последовательность n x x x x ,..., , , 2 1 0 приближений к корню x . Чи с- ло последовательных приближений зависит от шага изменения аргумента x , который, в свою очере дь, определяется свойствами используемых для этого численных методов. Для решения нелинейных уравнений наибольшее распр о- странение получили следующие методы: метод бисекции, метод хорд, метод касательных (Ньютона), метод последовательных приближ е ний и т.д. § 2.2 . Метод бисекции (дихотомии, половинного деления) Пусть требуется с заданной точностью 0 > e найти корень x уравнения 0 ) ( = x f . Отрезок локализации [ ] b a , будем считать заданным . Предположим, что функция ) ( x f непрерывна на отрезке [ ] b a , и на его концах принимает 
38 значения разных знаков, т.е. 0 ) ( ) ( < b f a f . Согласно методу бисекции за первое приближенное значение корня принимают сере дину отрезка 2 0 b a x + = (см. рис. 2.2). Затем по приближенному значению 0 x определяют значение функции ) ( 0 x f . Далее делают выбор, какой из двух частей отрезка [ ] 0 , x a или [ ] b x , 0 взять для дальнейшего уточнения корня. Если левая часть уравнения ) ( x f есть н е- прерывная функция аргумента x , то корень будет находиться в той половине отрезка, на концах которой ) ( x f имеет разные знаки. При 0 ) ( 0 < x f , задают 0 x a = , иначе 0 x b = . После чего проверяют условие e > - a b . Если оно выпо л- няется, то осуществляют новую итерацию приближения к корню 2 1 b a x + = . Итерационный (повторяющийся) процесс продолжают до тех пор, пока инте р- вал [ ] b a , не станет меньше заданной погрешности e . Если условие e > - a b не выполняется, заканчивают вычисления и считают, что i x x = с заданной точн о- стью e . Структурная схема реализации вышеизложенного алгоритма пре д- ставлена на рис. 2.3. Число итераций при использовании метода бисекции зн а- чительно и поэтому скорость сходимости его медленная. О днако при любой ширине отрезка [ ] b a , сходимость его гарантирована. Кроме того, простота реализации метода уменьшает число вспомогательных операций и частично компенсирует увел и чение общего времени счета из - за медленной сходимости. § 2.3. Метод хорд Рассматриваемый метод так же, как и метод бисекции, предназначен для уточнения корня на интервале [ ] b a , , на концах которого левая часть решаем о- го уравнения 0 ) ( = x f принимает значения разных знаков. Очер едное прибл и- жение согласно методу хорд , в отличие от метода бисекции, задается не в с е- редине отрезка локализации, а в точке 0 x , где пересекает ось абсцисс прямая линия, проведенная через точки ) ( a f и ) ( b f . Такая линия называется хордой 
39 (см. рис. 2.4). Рис. 2.3 . Алгоритм решения нелинейного уравнения методом б и секции f x Рис. 2.2 . Решение уравнения 0 ) ( = x f м е тодом бисекции a ) ( a f b ) ( b f 2 b a x i + = ) ( i x f x на чало ввод вывод окончание вычисление [ ] e , , , y b a 2 b a x i + = ) ( i x f e < - a b i x i x a = i x b = Да Нет Да Нет 0 ) ( < i x f 
40 Соотношение, с помощью которого определяется значение последу ю- щего прибли жения по методу хорд, можно вывести из обобщенного уравн е- ния прямой линии, проходящей через три точки с координатами )) ( , ( a f a , )) ( , ( b f b , ) , ( y x i : a x x b a f y y b f i i - - = - - ) ( ) ( . После некоторых преобразований получаем окончательную зависимость: ) ( ) ( ) ) ( ( )) ( ( a f b f y b f a a f y b x i - - + - = . Рис. 2.4 . Решение уравнения 0 ) ( = x f м е тодом хорд Затем по найденному значению i x определяют значение функции ) ( i x f . Если e < - y x f i ) ( , то процесс решения и нахождения корня уравнения зака н- чивают, если же условие не выполняется, то производят сужение интервала поиска так, чтобы значения функции на концах отрезка имели разные знаки. При 0 ) ( < i x f задают ) ( ) ( ; i i x f a f x a = = , иначе ) ( ) ( ; i i x f b f x b = = . После чего в ы- числяют новое значение приближения и повторяют весь итерационный пр о- цесс. f 0 x a b x = 0 ) ( b f 1 x 2 x 3 x ) ( 1 x f ) ( 2 x f ) ( 3 x f x ) ( a f 
41 § 2.4. Метод касательных (метод Ньютона) Метод Ньютона ос нован на замене функции ) ( x f в точке начального приближения a x = 0 или b x = 0 касательной, пересечение которой с осью x дает последующее приближение i x (см. рис . 2.5). Пусть 0 x заданное начальное пр и- ближение равно значению одной из границ диапазона поиска (например b x = 0 , см. рис. 2.5). В точке с координатами ) ( , 0 0 x f x проведем касательную к граф и- ку функции ) ( x f y = . За новое приближение 1 x принимается абсцисса точки пересечения этой касательной с осью ОХ . Аналогично, за приближение 2 x принимается абсцисса точки пересечения с осью ОХ касательной, проведе н- н ой к графику в точке ) ( , 1 1 x f x . Продолжая далее этот процесс, получим посл е- довател ь ность n x x x x ,..., , , 2 1 0 приближений к корню. Рис.2.5 . Решение уравнения 0 ) ( = x f методом касател ь ных Расчетная формула метода касательных для решения нелинейных ура в- нений вида 0 ) ( = x f выводится из простых геометрических соображений. Н а- помним, что уравнение касательной, проведенной к графику функции ) ( x f y = в точке 0 x , имеет ви д: ) )( ( ) ( 0 1 0 0 x x x f x f y - ᄁ + = . f 0 x a b x = 0 ) ( a f ) ( b f 1 x 2 x 3 x x ) ( 1 x f ) ( 2 x f ) ( 3 x f 
42 Полагая, что 0 = y , видно, что при выполнении условия 0 ) ( 0 ᄍ ᄁ x f абсци с- са 1 x точки пересечения касательной с осью ОХ удовлетворяет неравенству: ) )( ( ) ( 0 0 1 0 0 x x x f x f - ᄁ + = . Выражая из последнего соотношения величину 1 x , получаем расчетную формулу метода касательных (Ньютона) . ) ( ) ( 0 0 0 1 x f x f x x ᄁ - = . В общем виде для i - го шага итерационного процесса последнее уравн е- ние принимает вид: ) ( ) ( 1 i i i i x f x f x x ᄁ - = + . Простота, логическая стройность и высокая скорость делает метод кас а- тельных чрезвычайно привлекательным. Однако для его практического пр и- менения необходимо преодолеть две существенные трудности. Одна из них состоит в необходимости выч исления производной ) ( x f ᄁ . Более существенной трудностью реализации этого метода является то, что он обладает только л о- кальной сходимостью. Это означает, что областью его сходимости является некоторая малая окрестность корня и для гарант ированной сходимости нео б- ходимо выбрать правильное начальное приближение, попадающее в эту окр е- стность. Для преодоления этой трудности часто используют метод Ньютона в сочетании с каким - либо медленно, но устойчиво сходящимся методом, н а- пример, бисекции [9] . § 2.5. Метод простых итераций Чтобы применить метод простых итераций для решения нелинейного уравнения 0 ) ( = x f , необходимо преобразовать это уравнение к следующему виду: ) ( x x j = . Это преобразование (приведение уравнения к виду, удобному для ит е- рации) можно выполнить различными способами. Функцию ) ( x j называют 
43 обычно итерационной функцией. Выберем каким - либо образом приближе н- ное значение корня 0 x и, подставив его в правую часть уравн ения ) ( x x j = , п о- лучим значение ) ( 0 1 x x j = . Используя теперь значение 1 x в правой части ура в- нения, им е ем следующее приближение ) ( 1 2 x x j = . f 0 x f 0 x f 0 x f 0 x 1 x 2 x x ) ( x y j = x y = ) ( 1 x j ) ( 2 x j x 0 x 1 x 2 x 3 x x y = ) ( x y j = ) ( 0 x j ) ( 1 x j ) ( 2 x j x 0 x 1 x 2 x 3 x 4 x ) ( x y j = x y = ) ( 0 x j ) ( 1 x j ) ( 2 x j ) ( 3 x j в) г) 0 x 1 x 2 x x ) ( x y j = x y = ) ( 0 x j ) ( 1 x j ) ( 2 x j 3 x 4 x ) ( 3 x j а) б) 0 x ) ( 0 x j Рис. 2.6 . Геометрическая иллюстрация метода простых итераций: а, б – соответс т- венно односторонний и двухсторонний сходящиеся процессы; в, г – соответс т- венно о д носторонний и двухсторонний расходящиеся процессы 
44 Продолжая далее этот процесс до тех пор, пока соблюдается условие e > - + i i x x 1 , получим последовательность приближений к корню, вычисляемых по формуле: ) ( 1 i i x x j = + , где 0 > i . Очевидно, что метод простых ит е раций – одношаговый. Из рис. 2.6 видно, что корень x уравнения 0 ) ( = x f является абсциссой точки пересечения графиков двух функций x y = и ) ( x y j = . В зависимости от взаимного расположения прямой x y = и кривой ) ( x y j = возможны четыре простейших случая поведения итерационного процесса. В случае (а) и (б) м е- тод простой итерации схо дится, причем при произвольном начальном пр и- ближении. Напротив, в случаях (в) и (г) метод расходится при любом выборе начального приближения. Заметим, что в случаях (а) и (б) 1 ) ( < ᄁ x j (как видно из рисунка 2.6, модуль тангенса угла наклона кривой ) ( x y j = к оси абсцисс меньше единицы), а в случаях (в) и (г) , наоборот 1 ) ( > ᄁ x j . Таким образом, сх о- димость метода простой итерации связана с выполнением условия 1 ) ( < ᄁ x j , что в свою очередь накладывает с ущественные ограничения на его практич е- ское прим е нение. Следует отметить, что нами был рассмотрен метод простой итерации при идеальном предположении о возможности точного вычисления значения функции ) ( x j . В действительности же вычисления на ЭВМ дают приближе н- ные значения ) ( * x j . Известно, что метод простой итерации и многие другие итерационные методы устойчивы к ошибке, допущенной на одной из итер а- ций. Поэтому о таких итерационных методах говорят, что они обладают сво й- ств ом самоисправляемости . Однако зачастую в вычислительной практике п о- грешности допускаются не на одной, а на всех итерациях, и совокупное их влияние может быть довольно существенным, что в свою очередь приводит к ухудшению обусловленности задачи и, как следс твие, снижению надежности получения решения. 
45 В последние годы получили признание алгоритмы поиска корней нел и- нейных уравнений 0 ) ( = x f , которые называют гибридными (или регуляриз о- ванными ). Они представляют собой комбинации надежных, но ме дленно сх о- дящихся методов типа бисекции с недостаточно надежными, но быстро сх о- дящимися методами типа хорд и Ньютона. Результирующие алгоритмы обл а- дают высокой надежностью и гарантированной сходимостью. В тех же случ а- ях, когда в окрестности простого корня функция ) ( x f – гладкая, сходимость стан о вится сверхлинейной. § 2.6. Программная реализация методов решения нелинейных ура в нений При решении теплоэнергетических задач инженерам или ученым далеко не всегда удается найти решение в рам ках стандартных прикладных систем. Более того, если прикладные системы общего назначения и позволяют решить задачу, то нередко эффективность работы с ними невысока, например, из - за перегруженности диалогом. Таким образом, четко выраженная тенденция и с- польз ования ЭВМ состоит в том, что в большинстве случаев (иногда после т о- го, как отработана методика решения конкретной задачи с помощью подх о- дящей прикладной системы) пользователь начинает составлять свои собстве н- ные программы. Хорошо, если необходимые процеду ры доступны в виде би б- лиотеки подпрограмм, прилагаемой к прикладной системе, но зачастую инж е- нер вынужден начинать разработку известных процедур численного ан а лиза самостоятельно. Значительному числу пользователей ЭВМ доступны разли ч- ные библиотеки численно го анализа. Они делятся на специализирова н ные библиотеки, разработанные для решения задач в какой - то специальной обла с- ти (например, для решения интегральных уравнений), и на библиотеки общего назначения. Из последних наиболее известны пакеты SSP ( Scientifi c Subro u- tines Package ) и NAG ( Numerical Algorithms Group ). Кроме этих пакетов сущ е- ствует большое число более узко ориентированных пакетов для числе н ного 
46 анализа, например MicroVay , в котором реализован набор операций для раб о- ты с большими матрицами и систе мами линейных уравнений большой ра з- мерности. Однако все эти пакеты не решают главной проблемы, стоящей п е- ред программированием для научных и инженерных расчетов – это их м а- шинная транспортабельность ( portability ). Несмотря на значительные усилия по стандар тизации языков программирования, многие проблемы переносим о- сти и преемственности вычислительных программ сохраняются. Эта проблема еще более усугубляется в связи с отсутствием или неразвитостью пакетов чи с- ленного анализа на языке Си, хотя его роль при напи сании прикладных пр о- грамм для операционных сред DOS (компиляторы семейства Turbo C , Borland C ++) и Windows 9 x / NT (среда программирования Builder C ++ 1.0/5.0) все б о- лее возрастает. Другой важной проблемой создания собственных эффекти в- ных программ численного анализа является решение задачи учета особенн о- стей работы математического сопроцессора современных процессоров класса Pentium , использующего разную систему представления чисел и разрядности плавающей машинной арифметики. Эта задача еще более усложняется т ем, что многие программы используют машинно - зависимые константы. Приведенные ниже тексты вычислительных программ ориентированы на пользователей со знанием языка программирования Си. При необходим о- сти с современной технологией программирования на этом язык е можно п о- знак о миться в [70]. В листинге 2.1 представлен текст подпрограммы - функции Dihotom , предназначенной для решения нелинейного уравнения 0 ) ( = x f методом пол о- винного деления. Функция возвращает переменную x вещ ественного типа. Работа подпрограммы основана на использовании следующих входных пар а- метров: f – нелинейная функция, решение которой требуется найти, офор м- ленная в виде подпрограммы с одним входным параметром вещественного типа ( float ); A , B – численные значение отрезка локализации, на котором ос у- ществляется поиск корня; E – расчетная точность. 
47  Листинг 2.1. float Dihotom( float (*f)(float), float A, float B, float E ) // заголовок { float x; // корень решения нелинейного уравнения float f i ; while( (B - A) > E ) // основной цикл { x = ( A + B ) / 2.; // вычисление приближения по методу бисекции f i = f( x ); // вычисление значения функции по найденному приближению if ( f i < 0 ) A = x; // изменение отрезка локализации else B = x; } return( x ); // оператор возврата } Текст вычислительной программы решения нелинейного уравнения 0 ) ( = x f методом хорд в виде подпрограммы - функции Hord приведен в ли с- тинге 2.2. Список входных параметров этой подпрограммы совпадает со сп и- ском вхо д ных переменных подпрограммы - функции Dihotom .  Листинг 2.2. float Hord( float (*f)(float), float A, float B, float E ) // заголовок функции { float x; // корень решения нелинейного уравнения float fa , fb , f i ; fa = f ( A ); // определение значений функции на концах отрезка локализации fb = f( B ); while( (B - A) > E ) // основной цикл { x = ( A * fb - B * fa ) / ( fb – fa ); // вычисление приближе ния (хорда) f i = f( x ); // вычисление значения функции по найденному приближению if ( f i < 0 ) { A = x; fa = fi ; } // изменение отрезка локализации else { B = x; fb = fi ; } } return( x ); // оператор возврата } В листинге 2.3 представлен текст подпрограммы - функции Newton , предназначенной для решения нелинейного уравнения 0 ) ( = x f методом кас а- тельных. Подпрограмма Newton использует следующие входные параметры: f – нелинейная функция, решение которой треб уется найти, оформленная в виде подпрограммы с одним входным параметром вещественного типа ( float ); 
48 0 X – значение начального приближения к решению; E – расчетная то ч ность. В качестве 0 X выбира ют тот конец отрезка локализации ] , [ b a , на кот о ром знаки ) 0 ( X f и ) 0 ( X f ᄁ ᄁ совпадают. Высокая скорость сходимости обеспечив а- ется за счет необходимости вычислений помимо ) ( i x f производной ) ( i x f ᄁ . И с- ключение составляют частные случаи, когда выражение, по которому вычи с- ляется отношение ) ( ) ( i i x f x f ᄁ , не сложнее выражения для вычисл е ния ) ( i x f отдел ь но.  Листинг 2.3. #include <math.h> // дирек тива препроцессора подключения стандартной библиотеки float Newton( float (*f)(float), float X0, float E ) // заголовок функции { float fi, temp; float x; // корень решения нелинейного уравнения x = X0; // начальное приближение do{ f i = f(x); temp = f i ; x = x + E; f i = f( x ); temp = E * temp / ( f i – temp ); // вычисление отношения ) ( ) ( x f x f ᄁ x = x – temp - E; // расчет приближения к корню по методу Ньютона }while( fabs( temp ) > E ); return( x ); // опер атор возврата } В листинге 2.4 представлен текст подпрограммы - функции Zeroin , пре д- назначенной для решения нелинейного уравнения 0 ) ( = x f комбинированным методом, сочетающим безотказность бисекции с асимптотической скоростью сходимости метод а секущих. Алгоритм метода изобретен в Амстердамском математическом центре Ван Вейнгарденом и Т. Деккером, улучшенный в п о- следствии Р. Брентом [6] и является одним из лучших машинных алгоритмов для нахождения решений нелинейных уравнений. Си - версия этой пр ограммы получена путем трансляции фортранной реализации вышеуказанного алг о- ритма Дж. Форсайта [9]. 
49 Функция Zeroin возвращает переменную x вещественного типа. Работа подпрограммы основана на использовании следующих входных параметров: f – нелинейная функция, решение которой требуется найти, оформленная в виде подпрограммы с одним входным параметром вещественного типа ( float ); ax , bx – численные значение конечных точек интер вала локализации, на кот о- ром осуществляется поиск корня; tol – расчетная граница погрешности. На каждом шаге Zeroin выбирает очередное приближение из двух во з- можных вариантов – один получен алгоритмом метода бисекции, а другой а л- горитмо м метода интерполяции. Данная подпрограмма - функция выполняет итерационный процесс, в котором на каждом шаге выполняется расчет трех абсцисс: c b a , , . Переменная a содержит значение предыдущего приближения; b – содержит значение последнего и наилучшего приближения к нулю; c – содержит значение предыдущего или еще более раннего приближения, при котором ) ( b f и ) ( c f имеют противоположные зна ки. Если a , b и c различны, то используется обратная квадратичная интерполяция; в противном случае – линейная интерполяция (метод секущих). Если значение приближения, пол у- ченное интерполяцие й, "разумно", то выбирается оно, иначе выбирается зн а- чение приближения, полученного по методу бисекции. Определение "разу м- ности" является технической операцией, по существу обозначающей, что ра с- четная точка находится внутри текущего интервала поиска и не с лишком близка к его крайним значениям. Следовательно, получают, что длина инте р- вала гарант и рованно убывает на каждом шаге, а скорость сходимости будет высокой, если н е линейная функция ведет себя адекватно.  Листинг 2.4. #include <stdio.h> // директи вы препроцессора #include <math.h> float Zeroin( float(*f)(float), float ax, float bx, float tol ) { int s1=0; float a, b, c, d, e, eps, fa, fb, fc, tol1, xm, p, q, r, s; /* Вычислить относительную машинную точность */ 
50 e ps = 1.0; for(;;) { eps = eps / 2.0; tol1 = 1.0 + eps; if( tol1 <= 1.0 ) break; } /* Присвоение начальных значений */ a = ax; b = bx; fa = f(a); fb = f(b); /* Прове рить существование решения в интервале [ ax,bx ] */ if( fa < 0 ){ if( fb < 0 ){ printf("### zeroin: решение справа "); return(9999.9); } } if( fa > 0 ){ if( fb > 0 ){ printf("### zeroin: решение слева "); return(9999.9); } } /* Начать шаг */ for(;;) { s1++; c = a; fc = fa; d = b - a; e = d; for(;;) { if( fabs( fc ) < fabs( f b )){ a = b; b = c; c = a; fa = fb; fb = fc; fc = fa; } /* Проверка сходимоости */ tol1 = 2.0 * eps * fabs( b ) + 0.5 * tol; xm = 0.5 * ( c - b ); if( fabs( xm ) <= tol1 ){ return( b ); } if( fb == 0.0 ) { return( b ); } for(;;) { if( fabs( e ) < tol1 ) { // Бисекция d = xm; e = d; break; } if( fabs( fa ) <= fabs( fb )) { // Бисекция d = xm; e = d; break; } if( a != c ){ // Обратная квадратичная интерполяция q = fa/fc; r = fb/fc; 
51 s = fb/fa; p = s * (2.0 * xm * q *(q - r) - (b - a)*(r - 1.0)); q = ( q - 1.0 )*( r - 1.0 )*( s - 1.0 ); } else { // Линейная интерполяция s = fb/fa; p = 2.0 * xm * s; q = 1.0 - s; } /*___ Выбрать знаки */ if( p > 0.0 ) q = - q; p = fabs( p ); /*___ Приемлема ли интерполяция ? */ if( ( 2.0*p ) >= ( 3.0 *xm*q - fabs( tol1*q )) ){ // Нет d = xm; e = d; break; } if( p >= fabs( 0.5 * e * q ) ){ // Нет d = xm; e = d; break; } e = d; d = p/q; break; } /* Завершить шаг */ a = b; fa = fb; if( fabs( d ) > tol1 ) b = b + d; else { b = b + tol1 * xm / fabs( xm ); } fb =f(b); if( fb * ( fc / fabs( fc )) > 0.0 ) break; } } } Для и ллюстрации использования вышеприведенных подпрограмм - функций для нахождения корней нелинейных уравнений 0 ) ( = x f в листинге 2.5 приведен текст головной функции для простого примера 5 2 ) ( 3 - - = x x x f . Данная тестовая функция является у равнением Валлиса [14], имеет один де й- ств и тельный корень на интервале [2, 3]: 0945514815 , 2 = x .  Листинг 2.5. #include <stdio.h> // директивы препроцессора #include <conio.h> #include <math.h> #include "trans.h" // подключение библиотеки подпрогр амм - функций 
52 void main() // головная функция { float f(float); // описание нелинейной функции f ( x )=0 float A, B, E; // A, B - границы диапазона поиска float X0; // начальное приближение для метода Ньютона float x ; // переменная для хранения решени я нелинейного уравнения A = 2; // инициализация исходных данных B = 3; X0 = A; E = 1.Е - 05; // погрешность вычисления clrscr(); // очистка экрана x = Dihotom ( f, A, B, E ); // обращение к функции метода бисекции printf(" \ n Корень( метод бисекции ) = %g", x ); // вывод результатов x = Hord ( f, A, B, E ); // обращение к функции метода хорд printf(" \ n Корень( метод хорд ) = %g", x ); x = Newton ( f, X0, E ); // обращение к функции метода Ньютона printf(" \ n Корень( метод касательных ) = %g ", x ); x = Zeroin ( f, A, B, E ); // обращение к функции Zeroin printf(" \ n Корень( комбинированный метод Zeroin) = %g ", x ); getch(); // оператор ввода без эхопечати } // нелинейная функция f(x)=0 float f( float x) { float y; y = pow ( x , 3) – 2 * x - 5; // вычисление нелинейного уравнения return (y); } В строке #include "trans.h" выполняется подключение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм, необходимых для решения нелинейно го уравнения 0 ) ( = x f . Текст файла trans . h представлен в листинге 2.6.  Листинг 2.6. /* объявление подпрограмм - функций, предназначенных для определения корня нелинейного уравнения f(x) = 0 */ float Dihotom( float(*)(float), float, floa t, float ); // метод бисекции float Hord( float(*)(float), float, float ); // метод хорд float Newton( float(*)(float), float, float ); // метод Ньютона float Zeroin( float(*)(float), float, float, float ); // метод Zeroin
53 Глава 3. МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРА И ЧЕСКИХ УРАВНЕНИЙ Тепловая схема современной тепловой электрической станции включает значительное число агрегатов и устройств, к основному числу которых отн о- сятся теплообменники поверхностного и смешива ющего типов, расширители, эжекторы, испарители и целый ряд другого оборудования. Как правило, зад а- чей расчета теплообменных аппаратов ТЭС является нахождение расходов греющей или обогреваемой сред, которые определяются в рамках единого по д- хода – на основе уравнений балансов. Последние есть не что иное как уравн е- ния законов сохранения массы, энергии (в термодинамическом виде) и импул ь- са [51]. § 3.1. Принципы построения балансовых уравнений на примере расчета элементов тепл о вой схемы ТЭС В основу составлен ия уравнений теплового и материального балансов положено знание принципов действия и процессов, протекающих в той или иной установке тепловой схемы [52]. Подогреватель поверхностного типа . Предназначен для подогрева о с- новного конденсата или питательной во ды за счет тепла пара отбираемого, из проточной части паровой турбины. Как правило, нагреваемая вода течет внутри трубной системы, греющий пар – в межтрубном пространстве (см. рис. 3.1). Целью расчета подогревателя поверхностного типа является определение ра с- хода греющего пара – ? D . Для этого необходимо составить уравнение теплов о- го баланса, заключающееся в равенстве теплоты отдаваемого греющим паром с учетом коэффициента полезного действия теплообменника и теплоты воспр и- нимаемой нагрев аемой средой. ) ( ) ( 2 2 2 B 4 ? ? t t G t h D - ᄁ = - h , где 2 G – расход нагреваемой среды, кг/с; 2 t , 2 t ᄁ – энтальпии нагреваемой
54 среды соответственно на входе и на выходе из теплообменника, кДж/кг; ? h – э н тальпия греющего пара, кДж/кг; 4 t – энтальпия дренажа греющего пара, кДж/кг; B h – к о эффициент полезного действия теплообменника. Рис. 3.1. Принципиальная схема (а) и температурный г рафик (б) работы подогревателя поверхн о стного типа Энтальпия греющего пара является функцией его давления и температ у- ры: ) , ( ? ? ? t P h h = . Энтальпия дренажа греющего пара равна энтальпии насыще н- ной воды, определяемой по давлению греющего пар а ) ( ? 4 P h t ᄁ ᄁ = . Энтальпия н а- греваемой воды на выходе из подогревателя поверхностного типа зависит от давления и температуры воды: ) , ( 2 2 2 t P h t ᄁ = ᄁ , где 2 t ᄁ – температура нагреваемой воды на выходе из подогревателя, опр еделяемая в свою очередь, как разность температуры дренажа греющего пара и величины недогрева: q - = ᄁ ) ( ? s 2 P t t . Зн а- чение q в инженерных расчетах для подогревателей высокого давления (ПВД) принимается 2  4 0 С, а для подогревате лей низкого давления (ПНД) - 3  6 0 С. Величина энтальпии нагреваемой среды на входе в теплообменник 2 t определ я- ется типом элемента тепловой схемы стоящего перед рассчитываемым элеме н- том против хода движения нагреваемой среды. Нагрев теп лоносителя в таких теплообменниках осуществляется в основном за счет скрытой теплоты, выд е- ляющейся при изменении агрегатного состояния (конденсации) греющего пара. ? ? ? ? h t P D , , , 4 4 ? ? t t P D , , , 2 2 2 2 t t P G , , , 2 2 2 2 t t P G ᄁ ᄁ , , , l t ? t 4 t 2 t 2 t ᄁ q ) ( ? s P t а) б) 
55 Все теплообменники, работающие по вышеизложенному принципу, называю т- ся собственно подогреват е лями (СП). Для повышения эффективности работы подогревателей поверхностного типа современные установки выполняют многозонными. В общем случае кол и- чество зон составляет три, а их классификация осуществляется по принципу теплообмена на охладитель пара (ОП) , собственно подогреватель и охладитель дренажа (ОД) (см. рис. 3.2). В охладителе пара происходит охлаждение пара до температуры на 10  15 0 С больше температуры насыщения греющего пара: ) 15 10 ( ) ( ᄌ + = ᄁ ? s ? P t t 0 С. В охладителе дренажа нагреваемая среда подог ревается за счет тепла, выделяющегося при переохлаждении дренажа греющего пара с температуры насыщения до температуры на 6  10 0 С больше температуры н а- гр е ваемой воды на входе в теплообменник ) 10 6 ( ᄌ + = ᄁ 2 4 t t 0 С. Рис. 3.2. Подогреват ель поверхностного типа с охладителем пара (ОП), собс т венно подогревателем (СП) и охладителем дренажа (ОД) 2 2 2 2 t t P G , , , ОД ? ? ? ? h t P D , , , 4 4 ? t t D , , > > 2 2 t t P G , , , ᄁ ? ? ? h t D ᄁ ᄁ , , 4 4 ? t t D ᄁ ᄁ , , t l ОП СП ОД ? t ? t ᄁ 4 t 4 t ᄁ > t A t 2 t > t A t > t ОП СП ) ( ? s P t q 
56 Задачей расчета теплообменника такого типа является определение ра с- хода греющего пара ? D , энтальпий нагреваемой среды на выход е из охладителя пара > t и охладителя дренажа > t . С целью определения неизвестных величин составляют уравнения теплового баланса для каждой зоны подогреват е ля: для охладителя пара: ) ( ) ( A > 2 B ? ? ? t t G h h D - = ᄁ - h , для соб ственно подогревателя: ) ( ) ( > A 2 B 4 ? ? t t G t h D - = - ᄁ h , для охладителя дренажа: ) ( ) ( 2 > 2 B 4 4 ? t t G t t D - = ᄁ - h , где ) , ( ? ? ? t P h h ᄁ = ᄁ – энтальпия греющего пара на выходе из охладителя пара; ) , ( 4 ? 4 t P h t ᄁ = ᄁ – энтальпия дренажа греющего пара на выходе из ох ладителя др е- нажа. Если в балансовых уравнениях все слагаемые с неизвестными величин а- ми перенести в левую часть, а с известными в правую, то в результате получим совместную систему трех линейных алгебраических уравнений с тремя неи з- вестными, решить к оторую можно одним из известных численных методов. Подогреватель смешивающего типа . Предназначен для подогрева воды за счет теплоты пара, отбираемого из проточной части турбины. Нагрев осущ е- ствляется путем непосредственного контакта и смешения греющей и н агрева е- мой сред (см. рис.3.3). Рис. 3.3. Расчетная схема подогревателя смешивающего типа При расчете теплообменников смешивающего типа искомыми велич и- нами являются, как правило, расход греющего пара ? D и нагреваемой среды ? ? ? ? h t P D , , , 2 2 2 2 t t P G , , , 2 2 2 t t G ᄁ ᄁ ᄁ , , 
57 по сле подогревателя 2 G ᄁ . Для определения неизвестных величин при расчете подогревателей смешивающего типа необходимо составить два уравнения: м а- териального и теплового балансов. Если уравнение теплового баланса характ е- ризует равенство отд анного и воспринятого количества тепла соответственно между греющей и нагреваемой средой, то уравнение материального баланса выражает равенство всех материальных потоков, поступающих в теплообме н- ник и выходящих из него. Уравнение материального баланса запи сывается в следующем виде: 2 2 ? G G D ᄁ = + . Уравнение теплового баланса: 2 2 2 2 B ? ? t G t G h D ᄁ ᄁ = + h , где ) ( ? 2 P h t ᄁ = ᄁ – энтальпия нагреваемой среды на выходе из подогревателя смешивающего типа равна энтальпии насыщенной воды, определяемой п о да в- лению греющего пара. Деаэрационная установка . Предназначена для дегазации технологич е- ской воды от растворенных в ней агрессивных газов ( СО 2 , О 2 ) , приводящих к химической коррозии металла станционного оборудования. Одновременно д е- аэрационная установка служит подогревателем смешивающего типа, состоящая из бака аккумулятора и деаэрационной колонки, в которой собственно и прои с- ходит деаэрация (дегазация) воды. Для организации вышеназванных процессов в деаэратор подается греющий пар из отборов турбины (см. рис. 3.4) и считае т- ся, что давление пара 4 P по всему объему аппарата остается неизменным, сам процесс теплообмена происходит в области насыщения, причем греющий пар полностью конденсируется. Целью расчета деаэрационной установки являет ся определение расхода отборного пара ? D и расхода теплоносителя, поступа ю- щего на деаэр а цию > G . 
58 Рис. 3.4. Расчетная схема деаэрационной установки Для определения неизвестных величин необходимо совместно решить уравнения материального и теплового балансов: ? ? > > B ? ? ? > ? t G t G h D G G D = + = + h где ) ( 4 ? P h t ᄁ = – энтальпия питательной воды (насыщенная среда) на в ы- ходе из деаэрац и онной установки; 4 P – давление в деаэраторе. Конденсатор . Предназначен для конденсации отработавшего в турбине пара за счет охлаждающей технической (циркуляционной) воды. При этом та к- же полагают, что все процессы происходят на линии насыщения, а давление в конденсаторе : P является известной величиной. Параметры охлаждающей воды определяются так же, как для соответствующих потоков у подогревателя п о- верхностного типа. При этом расход основного конденсата на выходе из ко н- денсатора > G равен расходу пара в конденсатор : D (см. рис. 3.5). Задача расч е- та конденсационной установки сводится к определению энтальпии основного конденсата пара на выходе, которая в свою очередь вычисляется как энтальпия насыщенной жидкости в зависимости от давления пара в конденсацио нной у с- тановке: ) ( : > P h t ᄁ = . > > > t t G , , ? ? ? ? h t P D , , , ? ? ? t t G , , 4 P , 
59 Рис. 3.5. Расчетная схема конденсационной установки Точки смешения и разветвления . Являются элементами тепловой схемы и предназначены для смешения или разветвления различных материальных пот о- ков (см. рис. 3.6). Рис. 3.6. Расчетная схема точки смешения Целью расчета любой точки смешения является определение одного из расходов теплоносителя, подходящего к точке ( 2 G или 4 G ), и температуры теплоносителя, получ ающейся в результате смешения потоков ( A t ). Для решения поставленной задачи, как и в случае расчета подогревателя смешивающего типа и деаэрационной установки, необходимо составить, систему уравнений, состоящую из уравнений материальног о и теплового балансов: A A 4 4 2 2 A 4 2 t G t G t G G G G = + = + : : h D , > > > t t G , , : P F F t G , 2 2 2 t t G , , 4 4 4 t t G , , A A A t t G , , 
60 Расширитель непрерывной продувки . Данные устройства используются в тепловой схеме ТЭС для утилизации тепла потока продувочной воды, пост у- пающей из соленых отсеков барабанов паровых котлов. Принцип работы ра с- ширителей непрерывной продувки основан на резком изменении давления пр о- дувочной воды ( ? G ) от давления в барабане или выносном циклоне котла ( 1 P ) до давления в расширителе ( @ P ). За счет резкого перепада давлений происходит вскипание продувочной воды, сопровождаемое образованием обессоленного насыщенного пара, который далее используется на технологические нужды и продувочную воду с повышенной концентрацией растворенных в ней солей. Если расширите ли в тепловой схеме используются одноступенчатые, то давл е- ние в расширителе ( @ P ) обычно поддерживается равным 0,7 МПа. Если схема включения расширителей двухступенчатая, то в аппарате первой ступени да в- ление равно 0,7 МПа, а вт о рой сту пени – 0,12 МПа. Целью расчета расширителя непрерывной продувки является определ е- ние расхода вторичного пара ? D ᄁ и расхода соленой продувочной воды после расширителя ? G ᄁ (см. рис. 3.7). Рис. 3.7 . Расчетная схема расширителя непрерывной продувки Для определения искомых величин необходимо составить систему л и- нейных алгебраических уравнений из уравнений материального и теплового ? ? ? t t G , , ? ? h D ᄁ ᄁ , @ P ? ? ? t t G ᄁ ᄁ ᄁ , , 
61 балансов: ? ? ? ? ? ? ? ? ? t G h D t G G D G ᄁ ᄁ + ᄁ ᄁ = ᄁ + ᄁ = где ) ( @ ? P h h ᄁ ᄁ = ᄁ – энт альпия насыщенного пара, определяемая по давлению в расширителе; ) ( @ ? P h t ᄁ = ᄁ – энтальпия насыщенной соленой воды на выходе из расширителя; ) ( 1 ? P h t ᄁ = – энтальпия продувочной воды на входе в расшир и- тель. Испарительная установка . Исп ользуется в тепловых схемах ТЭС для г е- нерации вторичного, влажного насыщенного пара из добавочной воды за счет тепла пара, отбираемого из проточной части турбины или коллектора собс т- венных нужд (см. рис. 3.8). Рис. 3.8. Расчетная схема испарител ьной установки Целью расчета испарителя является определение расхода греющего пара ? D , расхода вторичного пара ? D ᄁ или расхода продувочной воды ? G на выходе из установки. Для определения искомы х величин необходимо составить ура в- нение теплового баланса испарителя, дополненное уравнением материального баланса по добавочной воде: ? ? 4 ? ? ? ? 4 ? 4 4 B ? ? G D G t G h D t D t G h D + ᄁ = + ᄁ ᄁ + = + h ? ? ? ? h t P D , , , ? ? h D ᄁ ᄁ , 4 4 4 4 t t P G , , , ? ? ? t t G , , 4 4 ? t t D , , , , 
62 где ) ( ? 4 P h t ᄁ = – энтальпия дренажа греющего пара; ) ( 4 ? P h h ᄁ ᄁ = ᄁ – энта льпия получаемого насыщенного вторичного пара; ) ( 4 ? P h t ᄁ = – энтальпия продуво ч- ной воды на выходе из испарителя. Насос. Насос имеет однозначную расходную характеристику, поэтому задача расчета его сводится к оценке величины прироста энтальпии в результ а- те сжатия теплоносителя с давления на входе 2 P до давления нагнетания = P . Рис. 3.9. Расчетная схема насосной установки Тогда математическая модель насоса может быть записана в следующем виде: 2 10 ) ( = 2 2 = 2 2 v P P t t t t h - = D D + = ᄁ , где 2 v – удельный объем теплоносителя на входе насоса; = h – к.п.д. нас о са. Водо - водянной теплообменник. Целью расчета теплообменников, в кот о- рых греющим теплоносителем является вода (дренаж грею щего пара, прод у- вочная вода и др.), является энтальпия и соответственно температура нагрева е- мой среды на выходе из аппарата. Принцип расчета такой установки совпадает с принципом расчета охладителя дренажа (ОД) подогревателя поверхностного типа. Опред еление расходов греющего пара на регенеративный подогрев в п о- лучаемых системах линейных алгебраических уравнений производится с и с- пользованием численных методов решения подобных систем. Для этого ура в- нения балансов приводят к следующему виду: 2 2 2 t P G , , 2 = 2 t P G ᄁ , , 
63 ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ = + + + + = + + + + = + + + + = + + + + n n nn n n n n n n n n n b x a x a x a x a b x a x a x a x a b x a x a x a x a b x a x a x a x a ... ... .......... .......... .......... .......... .......... ... ... ... 3 3 2 2 1 1 3 3 3 33 2 32 1 31 2 2 3 23 2 22 1 21 1 1 3 13 2 12 1 11 где ij a – значения коэффициентов при неизвестных; i x – искомые корни системы (неизвестная величина); i b – значения правых частей ура в нения. Так, применительно к расчету теплообмен ника поверхностного типа с о- стоящего из охладителя пара, собственно подогревателя и охладителя дренажа такая система будет выглядеть следующим образом: ￯ ○ ￯ ■ ↓ - = - ᄁ - = + - ᄁ - = - ᄁ - 2 2 > 2 B 4 4 ? A 2 > 2 B 4 ? ? A 2 > 2 B ? ? ? t G t G t t D t G t G t h D t G t G h h D h h h ) ( ) ( ) ( где 2 B 4 4 2 B 4 ? 2 B ? ? G a a t t a G a a t h a a G a h h a - = = ᄁ - = = = - ᄁ = = - = ᄁ - = 33 32 31 23 22 21 13 12 11 0 ) ( 0 ) ( 0 ) ( h h h 2 2 A 2 A 2 t G b t G b t G b - = = - = 3 2 1 Для решения систем линей ных алгебраических уравнений (СЛАУ) пр и- меняют в основном два класса методов: прямые и итерационные [3]. Прямые методы являются универсальными и применяются для решения систем сравн и- тельно невысокого порядка ( 200 < n ). К числу таких методов относятся метод Крамера, метод Гау с са и т.д. Итерационные методы эффективно использовать для решения СЛАУ в ы- сокого порядка со слабо заполненными матрицами. Яркими представителями подобного класса методов являются методы Якоби и Зейделя. § 3.2. Метод Крам ера Метод Крамера для решения систем алгебраических уравнений основан на их матричном представлении: B Ax = , , , 
64 где nn n n n n n a a a a a a a a a a a a A ... ... ... ... ... ... ... 3 2 1 2 23 22 21 1 13 12 11 = , n x x x x ... 2 1 = , n b b b B ... 2 1 = . Согласно методу, определение матрицы неизвестн ых величин x осущес т- вляется по формуле: D D = i i x , где D – значение главного определителя, соста в- ленного из коэффициентов при неизвестных A a ij - ; i D – значение всп омог а- тельных определителей, образованных из главного путем замещения соответс т- вующего i - го столбца матрицы A на столбец значений правой части системы – B . Количество вспомогательных опре делителей в данном случае будет ра в- но числу искомых переменных – n . Например, nn n n n n n a a a b a a a b a a a b 3 2 2 23 22 2 1 13 12 1 1 ... ... ... ... ... ... = D , nn n n n n n a a b a a a b a a a b a 3 1 2 23 2 21 1 13 1 11 2 ... ... ... ... ... ... = D , n n n n n b a a a b a a a b a a a 3 2 1 2 23 22 21 1 13 12 11 ... ... ... ... ... ... = D . § 3.3. Метод Гаусса Метод Гаусса является одним из самых распространенных мет одов р е- шения систем линейных алгебраических уравнений. Этот метод называют та к- же методом последовательного исключения неизвестных. Вычисления с помощью метода Гаусса состоят из двух основных этапов, называемых прямым ходом и обратным ходом . Прямой ход ме тода Гаусса заключается в последовательном исключении неизвестных из системы линейных алгебраических уравнений для преобраз о- вания ее к эквивалентной системе с верхней треугольной матрицей. Вычисл е- ние значений неизвестных проводят на этапе обратного хода. Р ассмотрим схему решения СЛАУ методом Гаусса. Прямой ход . На первом шаге алгоритма исключают неизвестное 1 x из 
65 уравнений с номерами 2, 3, 4, …, n . Чтобы исключить 1 x из i - го уравнения, н е- обходимо первое уравнение умножить на отношение 11 1 a a i и вычесть его из i - го уравнения. Это позволит обратить в нуль коэффициенты при 1 x во всех уравн е- ниях, кроме первого. В резул ь тате получим эквивалентную систему. На втором шаге исключаем из полученной системы неизвестное 2 x из уравнений 3, 4, …, n . Множители второго шага вычислим по выражению ) 1 ( 22 ) 1 ( 2 a a i и вычислим последова тельно из третьего, четвертого и …, n - го уравнений ранее преобразованной СЛАУ второе уравнение, умноженное на соответствующие множители. Аналогично проводятся остальные шаги. После ( 1 - n ) – го шага искл ю- чения получа ют систему уравнений следующего вида: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ = = + + = + + + = + + + + - - ) 1 ( ) 1 ( ) 2 ( 3 ) 2 ( 3 3 ) 2 ( 33 ) 1 ( 2 ) 1 ( 2 3 ) 1 ( 23 2 ) 1 ( 22 1 1 3 13 2 12 1 11 .......... .......... ... ... ... n n n n nn n n n n n n b x a b x a x a b x a x a x a b x a x a x a x a Полученная матрица ) 1 ( - n A является верхней треугольной матрицей. На этом в ы числения прямого хода заканчиваются. Обратный ход . Из последнего уравнения треугольной системы нахо дят n x . Подставляя найденные значения n x в предпоследнее уравнение, получают 1 - n x . Осуществляя обратную подстановку, далее последовательно находят неи з- вестные 1 2 3 3 2 , , ,..., , x x x x x n n - - . Нетрудно з аметить, что для реализации метода Гаусса требуется (2/3) 2 n арифметических действий, причем подавляющее число действий совершается на этапе прям о го хода. 
66 § 3.4. Итерационные методы решения систем линейных алгебраических уравн е ний Ит ерационные методы применяют главным образом для решения задач большой размерности, когда использование прямых методов невозможно из - за ограничений в доступной оперативной памяти ЭВМ или из - за необходимости выполнения чрезмерно большого числа арифметических операций. Для того чтобы применить метод простой итерации к решению системы линейных алгебраических уравнений B Ax = с квадратной невырожденной ма т- рицей A , необходимо предварительно преобразовать эту систему к виду: D Cx x + = , где C – квадратная матрица с элементами ij c ; D – вектор - столбец с эл е- ментами i d . Самый простой способ приведения системы к виду, удобному для ит ер а- ций, состоит в следующем. Из первого уравнения системы выражают неизвес т- ное 1 x : 11 1 11 1 3 11 13 2 11 12 1 ... a b x a a x a a x a a x n n + - - - - = , где j j c a a 1 11 1 = – элементы 1 - й строки матрицы C ; 1 11 1 d a b = – элемент 1 - й строки вектора D . Соответственно из второго уравнения выражают 2 x : 22 2 22 2 3 22 23 1 22 21 2 ... a b x a a x a a x a a x n n + - - - - = , и т.д. В результате получают систему, в которой на главной диагонали матрицы C н аходятся нулевые элементы: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ + + + + = + + + + = + + + + = + + + + = n n n n n n n n n n n d x c x c x c x d x c x c x c x d x c x c x c x d x c x c x c x ... ... ... ... ... ... ... ... ... 3 3 2 2 1 1 3 3 2 32 1 31 3 2 2 3 23 1 21 2 1 1 3 13 2 12 1 
67 Остальные элементы выражаются по форм у лам: ii ij ij a a A - = ; ii i i a b d = , где n j i ,..., 3 , 2 , 1 , = и j i ᄍ . После преобразования системы, выбирают начальное прибл ижение { } 0 0 3 0 2 0 1 0 ,..., , , n k x x x x x = . Подставляя его в правую часть системы и вычисляя пол у- ченное выражение, находят первое приближение: D Cx x k k + = 0 1 . Подставляя приближение 1 k x в правую часть системы, получим: D Cx x k k + = 1 2 . Продолжая этот процесс далее, получают последовательность n k k k k x x x x ,..., , , 2 1 0 приближ е ний, вычисляемых по формуле: D Cx x i k i k + = + 1 , где n i ,..., 3 , 2 , 1 , 0 = . В развернутой форме записи формула выглядит так: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ + + + + = + + + + = + + + + = + + + + = + + + + n i n i n i n i n i n n i i i i n n i i i i n n i i i d x c x c x c x d x c x c x c x d x c x c x c x d x c x c x c x ... ... ... ... ... ... ... ... ... 3 3 2 2 1 1 1 3 3 2 32 1 31 1 3 2 2 3 23 1 21 1 2 1 1 3 13 2 12 1 1 В случае, когда для итераций используется вышеприведенная система, метод простой итерации принято называть методом Якоби. Заканчивают итерационный процесс, когда выполняется условие e ᆪ - + i k i k x x 1 . Итерационный процесс поиска корней системы л инейных алгебраич е- ских уравнений будет сходиться быстрее, если при расчете 1 + i k x в правой части матрицы Якоби для неизвестных с номерами i j < подставить не значения i k x , а значения 1 + i k x , уже найденные на данном шаге приближения. Такой итерацио н- ный метод называется методом Зейделя (иногда его также именуют методом Гаусса - Зейделя, процессом Либмана или методом последовательных замещ е- ний ) и записывается в виде: 
68 ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ + + + + = + + + + = + + + + = + + + + = + + + + + + + + + + n i n i n i n i n i n n i i i i n n i i i i n n i i i d x c x c x c x d x c x c x c x d x c x c x c x d x c x c x c x ... ... ... ... ... ... ... ... ... 1 3 3 1 2 2 1 1 1 1 3 3 1 2 32 1 1 31 1 3 2 2 3 23 1 1 21 1 2 1 1 3 13 2 12 1 1 Обычно метод Зейделя сходится быстрее, чем метод Якоби, при условии, если матрица C симметрична и положительно определена. Однако в общем случае возможны ситуации, когда метод Якоби сходится, а метод Зейделя сх о- дится медленнее или воо бще расходится. Возможны и противоположные с и- туации. Дело в том, что эти методы ориентированы на решение разных классов систем: метод Якоби – на системы с матрицами близкими к диагональным, а метод Зейделя – на системы с матрицами, близкими к нижним треуго льным. К достоинствам рассмотренных итерационных методов следует отнести простоту их программной реализации и отсутствие принципиальной необход и- мости хранения в памяти ЭВМ всех коэффициентов матрицы. Основным недостатком всех итерационных методов являетс я трудность получения оценок их вероятности и скорости сходимости. Для определения этих оценок приходится предпринимать специальные исследования, в частн о- сти, вычислять минимальное и максимальное собственные числа матрицы. Обычно это имеет смысл делать в т ом случае, когда систему линейных алге б- раических уравнений предполагается решать многократно. § 3.5. Программная реализация методов решения систем линейных алгебраических уравнений Почти в любой машинной библиотеке имеются подпрограммы, предн а- значенные для решения систем линейных алгебраических уравнений [12]. Д е- тали реализации этих подпрограмм очень различны, при этом они могут сер ь- езно отразиться на времени их выполнения и точности получаемых результ а- тов. 
69 Чтобы решить систему линейных алгебраических уравнений с помощью какой - либо подпрограммы функции, пользователь должен составить головную (вызывающую) программу, в которой элементы матрицы A , составленной из коэффициентов при неизвестных и столбца правых частей B линейной сист е- мы B Ax = , записываются в некоторые массивы, а затем выполняется вызов и с- пользуемой подпрограммы. Входными параметрами рассматриваемых ниже подпрограмм являются массив  и B , содержащие элементы соответствующих матриц, расположенные в строго определенной последовательности, число уравнений n . Эти подпрограммы позволяют решать системы уравнений с пр о- извольным числом уравнений n , поско льку число n и массивы A , B входят в число формальных входных параметров подпрограммы, а фактические размеры массивов устанавливаются в головной программе. Таким образом, подпр о- грамма - функци я оперирует с матрицей A как с двумерным массивом переме н- ной длины n n ᄡ и "не знает" о предельных размерах массивов, определенных в головной программе пользователем. При этом элементы матрицы A должны быть расположены в массиве подряд в определенной последовательности. Н а- пример, для матрицы общего вида в соответствующей области машинной пам я- ти последовательно по столбцам должны быть записаны 2 n элементов: 11 a , 21 a , …, 1 n a , …, n a 1 , …, nn a . В головной программе матрицу часто бывает удобно формировать в виде двумерного массива, первый индекс которого соответствует номеру строки, а второй – номеру столбца. Рассмотрим форму хранения двумерных массивов в памяти ЭВМ. Пусть, например, для хранения матрицы A предусмотрен массив, описанный оператором float a [4][4] , а фактический размер матрицы равен в данной задаче трем. Тогда девять элементов матрицы будут размещены в 16 - ти з а резервированных в массив A последовательных ячейках памяти следующим образом: 11 a 21 a 31 a 12 a 22 a 32 a 13 a 23 a 33 a 1 - й столбец 2 - й столбец 3 - й столбец 4 - й столбец 
70 Представленный пример показывает, ч то если фактический размер ма т- рицы n меньше указанного максимального размера в операторе описания float , то элементы в ячейках памяти располагаются не подряд. Поря д ковый номер k - той ячейки, соответствующей элемен ту a [ i ][ j ] , определяется формулой i n j k + - = 0 * ) 1 ( , где 0 n – максимально возможная длина столбца. Однако, в вызываемой подпрограмме - функции матрица A представлена в виде массива переменной длины, а элемент ы матрицы должны быть распол о- жены в массиве подряд без пропусков ячеек. Поэтому при обращении к по д- программе при 3 = n , будут использованы числа, содержащиеся в первых девяти ( 9 = ᄡ n n ) ячейках, зарезервированных под массив A в вызывающей программе. Очевидно, что эти значения не соответствуют коэффициентам построенной в вызывающей программе матрицы a [3][3] . Это происходит потому, что при описании матрицы в подпрограмме в виде массива ] ][ [ n n A переменной длины выбор номера k - й ячейки памяти, соответствующей элементу a [ i ][ j ] , произв о- дится на основе формулы i n j k + - = * ) 1 ( , где n – фактическая длина столбца, указанная при обращении к подпрог рамме. Таким образом, при 0 n n ᄍ матрица A будет передаваться в подпрограмму неправильно. Чтобы избежать рассмотренного несоответствия, следует перейти к ве к- торной форме хранения и обработки матриц, при которой кажды й столбец ра с- полагается в машинной памяти непосредственно за предыдущим. В этом случае все n n ᄡ элементов размещаются подряд, а последующие ( n n n n ᄡ - ᄡ 0 0 ) ячеек из общего числа зарезервированных останутся свободными. Одним из простых способов перехода к векторной форме хранения матриц, необходимый для р а- боты с подпрограммами, является способ формирования матрицы в виде одн о- мерного массива, в котором индекс k , соответствующий индексам i и j , дв у- мерного массива с n - строками и m - столбцами вычисляется по формуле i n j k + * - = ) 1 ( . При обращении к подпрограммам, в которых осуществляется обработка матриц, представленны х в виде вектора - столбца на месте фактич е- ского входного параметра, указывается адрес первого элемента матрицы – 
71 & a [0][0] . Пример такого способа записи матриц представлен в листинге 3.1, в котором приведен текст подпрограммы по решению системы линейных алг е б- раических уравнений методом Гаусса.  Листинг 3.1. void Gauss( float a [], float b[], int n , float x[] ) // заголовок подпрограммы { float h; // описание локальных переменных int i, j, k; n = n - 1; // учет характера индексации элементов массивов в я зыке Си for( i = 0; i <= n - 1; i++ ) // прямой ход { for( j = i + 1; j <= n; j++ ) { a[j*(n+1)+i] = - a[j*(n+1)+i] / a[i+i*(n+1)]; for( k = i + 1; k <= n; k++ ) { a[j*(n+1)+k] = a[j*(n+1)+k] + a[j*(n+1)+i] * a[i*(n+1)+k]; } b[j] = b[j] + a[j*(n+1)+i] * b[i]; } } x[n] = b[n] / a [(n+1)*(n+1) - 1]; // вычисление n - го корня for( i = n - 1; i >= 0; i -- ) // обратный ход { h = b[i]; for( j = i + 1; j <= n; j++ ) { h = h - x [j] * a[i*(n+1)+j]; } x[i] = h / a[i*(n+1)+i]; // вычисление i - х корней системы уравнений } } Значительным преимуществом использования вышеуказанного подхода при обработке матриц является возможность осуществления дина мического выделения машинной памяти (например, с помощью оператора new ) с посл е- дующим ее освобождением по мере необходимости. В подпрограмме Gauss в качестве формальных входных параметров и с- пользуются: матрица в виде одномерного массива [] a бесконечной длины, с о- ставленная из коэффициентов при неизвестных решаемой системы линейных алгебраических уравнений; вектор - столбец [] b значений правой части системы; n – число уравнений и, следовательно, не известных (искомых) величин. Одн о- 
72 мерный массив [] x используется в качестве выходного параметра и содержит расчетные значения корней. Наиболее удачным алгоритмом решения систем линейных алгебраич е- ских уравнений является использование ва риантов гауссова исключения с ча с- тичным выбором ведущего элемента [9]. Детали реализации такого алгоритма могут быть различны, однако они могут существенно отразиться на времени выполнения программы. Текст подпрограммы - функции Forsythe , в основу р а- боты кот орой положен вышеизложенный подход, представлен в листинге 3.2. Подпрограмма Forsythe , в свою очередь, последовательно использует подпр о- граммы Decomp и Solve . Функция Decomp выполняет ту часть гауссова искл ю- чения, которая зависит лишь от матрицы и позволяе т сохранить информацию о множителях и ведущих элементах. Solve использует результаты работы подпр о- граммы Decomp , чтобы получить решение для произвольной правой части. D e- comp вычисляет также оценку степени обусловленности матрицы, которая я в- ляется более над ежной и полезной мерой близости к вырожденности, чем о п- редел и тель или наименьший ведущий элемент.  Листинг 3.2. #include<math.h> // директива препроцессора #include<process.h> void Solve( int , float [], float [], int [] ); // описание подпрограмм void D ekomp( int , float [], float *, int [], float []); void Forsythe( float *a, float *b, int n, float *x, float *cond ) // заголовок { float *work, condpi; // описание локальных переменных int *ipvt, i, j, n1; work = new float[n]; // динамическое выделен ие памяти ipvt = new int[n]; Dekomp( n, a, cond, ipvt, work ); // обращение к функции Decomp condpi = *cond + 1; // проверка степени обусловленности if( condpi == *cond ) { printf(" \ nWarning !!!"); printf(" \ nMatrix is singular to wo rking precesion..."); exit(1); } Solve(n, a, b, ipvt); // обращение к функции Solve 
73 for(i=0;i<n;i++) { x[i] = b[i]; } delete( work ); // освобождение динамической памяти delete( ipvt ); } void Dekomp( int n, float a[], floa t *cond, int ipvt[], float work[] ) { int nm1, i, j, k, kp1, kb, km1, m, n1; float ek, t, anorm, ynorm, znorm; n1 = n - 1; ipvt[n1] = 1; if(n == 0) // случай матрицы 1*1 { *cond = 1.0; if( a[0*n+0] != 0.0) return; } nm1 = n - 1; anorm = 0.0; for( j = 0; j < n; j++ ) { t = 0.0; for( i = 0; i < n; i++ ) { t = t + fabs( a[i*n+j] ); } if( t > anorm ) anorm = t; } // гауссово исключение с частичным выбором ведущего элемента for( k = 0; k < nm1; k++ ) { kp1 = k + 1; m = k; // найти ведущий элемент for( i = kp1; i < n; i++ ) { if( fabs( a[i*n+k] ) > fabs( a[m*n+k] ) ) m = i; } ipvt[k] = m; if( m != k ) ipvt[n1] = - ipvt[n1]; t = a[m*n+k]; a[m*n+k] = a[k*n+k]; a[k*n+k] = t; // пропусти ть этот шаг, если ведущий элемент равен нулю if( t == 0.0 ) continue; for( i = kp1; i < n; i++ ) // вычислить множители { a[i*n+k] = ( - a[i*n+k] ) / t; } for( j = kp1; j < n;j++ ) // переставлять и исключать по столбцам { t = a[m*n+j]; a[m*n+j] = a[k*n+j]; a[k*n+j] = t; if( t == 0.0 ) continue; for( i = kp1; i < n; i++ ) { a[i*n+j] = a[i*n+j] + a[i*n+k] * t; } 
74 } } for( k = 0; k < n; k++ ) // решить систему { t = 0.0; if( k == 0 ) ek = 1.0; else { km1 = k; for(i = 0; i < km1; i++ ) { t = t + a[i*n+k] * work[i]; } } if( t < 0.0) ek = - 1.0; if( a[k*n+k] == 0.0) // точная вырожденность { *cond = 1.0E+32; return; } work[k] = - ( ek + t ) / a[k*n+k]; } for( kb = 0; kb < nm1; kb++ ) { k = n - kb - 2; t = 0.0; kp1 = k + 1; for( i = kp1; i < n; i++ ) { t = t + a[i*n+k] * work[k]; } work[k] = t; m = ipvt[k]; if( m != k ) { t = work[m]; work[m] = work[k]; work[k] = t; } } ynorm = 0.0; for( i = 0; i < n; i++) { ynorm = ynorm + fabs( work[i] ); } Solve( n, a, work, ipvt); // решить систему A * Z = Y znorm = 0.0; for( i = 0; i < n; i++) { znorm = znorm + fabs( work[i] ); } *cond = anorm * znorm / ynorm; // оценить обусловленность if( *cond < 1.0 ) *cond=1.0; return; } 
75 void Solve( int n, float a[], float b[ ], int ipvt[] ) { int kb, km2, km1, nm1, kp1, i, k, m, j; float t; if( n == 0 ) // прямой ход { b[0] = b[0] / a[0]; return; } nm1 = n - 1; for( k = 0; k < nm1; k++) { kp1 = k + 1; m = ipvt[k]; t = b[m]; b[m] = b[k]; b[k] = t; for( i = kp1; i < n; i++) { b[i] = b[i] + a[i*n+k] * t; } } for( kb = 0; kb < nm1; kb++) // обратная подстановка { km2 = n - kb - 1; km1 = n - kb; k = km1 - 1; b[k] = b[k] / a[k*n+k]; t = - b[k]; for( i = 0; i < km2; i++) { b[i] = b[i] + a[i*n+k] * t; } } b[0] = b[0] / a[0]; return; } Итерационные методы решения систем линейных алгебраических ура в- нений представлены в данном пособии подпрограммой - функцией Zeidel , реал и- зующей метод Зейделя (см. листинг 3.3):  Листинг 3.3. void Zeidel( float a[], float b[], float z[], float eps, int n , float *x ) { int k, s, i, j; // описание локальных переменных s = 0; // инициализация счетчика итераций do{ /* цикл последовательных приближений */ k = 0; for(i = 0; i < n; i++) { x[i] = - b[i]; for(j = 0; j < n; j++) 
76 { x[i] = x[i] + a[i*n+j] * z[j]; } if(fabs( x[i] / a[i*n+i] ) >= eps) k = 1; // условие окончания поиска x[i] = z[i] - x[i] / a[i*n+i] ; // вычисление значений корней z[i] = x[i]; } s = s + 1; // счетчик итеративных приближений } while ( k == 1 ); // окончание цикла } В отличие от подпрограммы Gauss у функции Zeidel в качестве входных формальных параметров добавляются в ектор - столбец значений начальных приближений к решению задачи [] z и предельное значение погрешности в ы- числ е ний eps . Головная программа, иллюстрирующая пример использования подпр о- грамм - функций Gauss , Forsythe и Zeide l , предназначенных для решения систем линейных алгебраических уравнений приведена в ли с тинге 3.4.  Листинг 3.4. #include<math.h> // директивы препроцессора #include<stdio.h> #include<conio.h> #include " slau .h" // подключение заголовочного файла void mai n() // головная функция { float a[3][3], b[3], z[3], *x, obusl ; // описание исходных массивов int i, n = 4; // количество уравнений x = new float[n]; // динамическое распределение памяти под массив [] x // инициализация значен ий исходных массивов из коэффициентов системы a[0][0]=4; a[0][1]=0.24; a[0][2]= - 0.08; b[0]=8; a[1][0]=0.09; a[1][1]=3; a[1][2]= - 0.15; b[1]=9; a[2][0]=0.04; a[2][1]= - 0.08; a[2][2]=4; b[2]=20; z[0]= 1; // инициализац ия начальных приближений к корню для метода Зейделя z[1]= 1; z[2]= 1; clrscr(); // очистка экрана Gauss( &a[0][0], b, n, x); // обращение к подпрограмме метода Гаусса printf(" \ n \ n Решение методом Гаусса"); // вывод результатов на экран for (i =0;i<n;i++) { printf(" \ n x[%d]=%f",i+1,x[i]); } Forsythe( &a[0][0], b, n, x, &obusl); // обращение к подпрограмме Forsythe 
77 printf(" \ n \ n Решение методом Forsythe "); // вывод результатов на экран for (i=0;i<n;i++) // вывод значени й корней { printf(" \ n x[%d]=%f",i+1,x[i]); } printf (" \ n C тепень обусловленности = % f ", obusl ); Zeidel( &a[0][0], b, z, 1.0E - 04, n , x); // обращение к методу Зейделя printf(" \ n \ n Решение методом Зейделя"); // вывод результатов н а экран for (i=0;i<n;i++) { printf(" \ nx[%d]=%f",i+1,x[i]); } delete(x); // высвобождение машинной памяти getch(); } В представленной программе приведен пример расчета системы из трех линейных алгебраических уравнений следующего вида: 20 4 08 , 0 04 , 0 9 15 , 0 3 09 , 0 8 08 , 0 24 , 0 4 3 2 1 3 2 1 3 2 1 = + - = - + = - + x x x x x x x x x Результатом решения данной системы методом Гаусса будут являться значения корней равных: 9091 , 1 1 = x , 1949 , 3 2 = x , 0448 , 5 3 = x . Такие же значения будут получены методом Зейделя при заданной точ ности 4 10 1 - ᅲ = e и начальных приближениях 1 30 20 10 = = = x x x . С помощью #include " slau .h" выполняется подключение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм, необходимых для решения системы линейных алгебраических уравнений. Текст файла slau . h пре д ставлен в листинге 3.4.  Листинг 3.5. /* объявление подпрограмм - функций, предназначенных для решения систем линейных алгебраических уравнений */ // метод Гаусса void G auss( float [], float [], int, float * ); // алгоритм Форсайта void Forsythe( float *, float *, int, float *, float * ); // метод Зейделя void Zeidel( float [], float [], float [], float, int , float * );
78 Глава 4. МЕТОДЫ РЕШЕНИЯ СИСТЕМ НЕЛИНЕЙНЫХ АЛГЕ Б РАИЧЕСКИХ УРАВНЕНИЙ § 4.1. Моделирование на ЭВМ тепломеханического оборудования энергоустановок Выбор вида и параметров тепловой схемы энергетической установки, а также анализ режимов ее работы возможны л ишь на основе расчета большого числа вариантов [53]. "Ручной" расчет одного варианта тепловой схемы современной пароту р- бинной электростанции (рис. 4.1) требует значительных затрат инженерного труда и времени. При ограниченном числе вариантов "ручной" расче т тепл о- вой схемы не обеспечивает получения оптимального решения. В настоящее время широко используют метод расчета тепловых схем с применением ЭВМ. Необходимость использования ЭВМ при таких расчетах обусловлена знач и- тельным усложнением конфигурации теплов ой схемы конденсационных и, в особенности, теплофикационных турбоустановок, а так же возросшими треб о- ваниями экономии энергоресурсов и повышения КПД энергетических устан о- вок. Задача расчета тепловой схемы состоит в определении расходов тепл о- носителей и их параметров на входе в теплообменные аппараты и на выходе из них и сводится обычно к рассмотрению нелинейных систем частного, но на и- более часто встречающегося в разных теплоэнергетических задачах "квазил и- нейного" вида. Такие системы записываются аналогично системам линейных алгебраических уравнений, но при этом состоят из коэффициентов ij a , завис я- щих от искомых величин { } i x : ) ,..., , , ( 3 2 1 n ij ij x x x x a a = . Для решения таких нел и- нейных систем обычно применяют итерационные метод ы, в которых на ка ж- дой итерации решается линеаризованная система, т.е. некоторая линейная си с- тема, полученная из исходной нелинейной задачи. Наиболее часто применяют два подхода к линеаризации: метод последовательных приближений (метод простой итерации для решения квазилинейных систем) и метод 
79 Нь ю т о на [22]. § 4.2. Метод последовательных приближений (на примере расчета принципиальной тепловой схемы ТЭС) Суть метода последовательных приближений состоит в том, что на ка ж- дом k - м шаге итерационного процесса коэффициенты линеаризованной си с- темы k ij a вычисляют по значениям неизвестных, найденным на предыдущей ( 1 - k ) - й итерации: ) ,..., , , ( 1 1 3 1 2 1 1 - - - - = k n k k k ij k ij x x x x a a , а затем путем решения получе н- ной линейной системы с известными k ij a находят новое приближение }, { k i x где n i ... 1 = . Рассмотрим принцип использования этого метода на примере ра с чета принципиальной тепловой схемы ТЭС. Расчет ПТС производится по исходным д анным, к основному числу к о- торых относятся электрическая и тепловая нагрузки, параметры острого пара на входе турбину и за ней, а так же давление пара в отборах [50]. По начальным параметрам пара перед турбиной ( 0 P и 0 t ), а так же по давлению пара в конденсаторе ( k P ) и давлению пара в отборах ( i P ) строится процесс расширения пара в проточной части турбины (рис. 4.2). При этом на s h - диаграмме параметры па ра в точке 0 определяются по 0 P и 0 t . Далее из точки 0 проводится линия, перпендикулярная оси абсцисс ( const S = ), до пер е- сечения с изобарой 1 P . Получают значение идеального теплоперепада на пе р- вый отсек 01 H . Для оценки действительного теплоперепада на отсек, необх о- димо значение теоретического теплоперепада умножить на относительно внутренний к.п.д. отсека i H H 0 01 1 h = . Значение энтальпии пара в первом рег е- неративном отборе о п ределяется как 1 0 1 H h h - = . Для определения энтальпии пара во втором отборе откладывают изоэ н- тропу из точки 1 до пересечения с изобарой 2 P . По аналогии нахо дят значения энтальпий во всех нижеследующих отборах. Линия K - 0 соответствует 
80 Рис. 4.1. Принципиальная тепловая схема ТЭС (на примере ПТ - 250 - 240) действительному процессу расширения пара в проточной част и турбины. К цвд цсд1 цсд2 цнд пн тп оэ 1 2 3 4 9 6 8 пу 10 П5 П6 П7 П4 5 7 нс вс оу дн днс П2 П1 П3 сн2 сн1 пвк к эг д кн от дн х.в.о. 0 P h 0 t 0 h 01 H 1 H 1 P 2 P k P 02 H 2 H 1 h 2 h 03 H 3 H k h 0 1 2 K s Рис. 4.2. Процесс расширения пара в проточной части турбины 
81 После определения параметров пара в регенеративных отборах прист у- пают к расчету расхода пара на турбину. ) ( 1 0 B B ? ? M n i i M @5 D y D y H W k D + + = ¥ = h , где @5 k – коэффициент регенерации, для расчета ПТС, принимается ор и- ентировочн о в диапазоне 1,15  1,3; M W – электрическая мощность, кВт; M h – электромеханический к.п.д., принимается в расчетах равным 0,98  0,99; ? y , B y – коэффициент недовыработки па ром соответственно отопительного и тепл о- фикационного отборов. Значения этих коэффициентов определяются по сл е- дующим формулам: k k n n h h h h y - - = 0 ; k k B B h h h h y - - = 0 , где ? h , B h – энтальпии в производственном и теплофикационном отб о- рах, кДж/кг; ? D , B D – расходы пара на производство и отопление, кг/с. Расход пара промышленного отбора ? D определяется обычно произво д- ственными потребностями в технологи ческом паре и является известной в е- личиной. Расход пара на теплофикацию B D определяется потребностью п о- треб и теля в тепловой энергии B Q . B 4 B B B t h Q D h ) ( - = , где B h – к.п.д. теплообменника (сет евой установки); 4 t – энтальпия ко н- денсата пара теплофикационного отбора, кДж/кг. Расход питательной воды для барабанного котла определяется по фо р- муле: ? c C ? D D D D G + + + = 0 , где C D – внутренние потери пара и конден сата 0 )% 2 1 ( D D C - = ; A D – ра с ход пара на собственные нужды станции, 0 )% 5 1 ( D D A - = ; ? D – расход 
82 котл о вой воды в расширители непрерывной продувки, 0 )% 5 , 2 2 ( D D ? - = . При расчете в еличины расхода питательной воды для прямоточного ко т- ла в последней формуле отсутствует расход продувочной воды. Тепловая схема энергоблока состоит из теплообменников поверхностн о- го и смешивающего типов (см. рис. 4.1). При тепловом расчете ПТС опред е- ляют расход греющей среды на каждый теплообменник или температуру обо г- реваемой среды на выходе из теплообменника. Эти величины определяются из уравнений тепловых и материальных балансов, составленных для элементов тепл о вой схемы. Расчет ПТС выполняется в след ующем порядке. В начале рассчитыв а- ются теплообменники, не входящие в регенеративную схему (расширители непрерывной продувки, испарители и паропреобразователи, сетевые подогр е- ватели и т. д.). Затем рассчитываются теплообменники регенеративной схемы (ПВД, П НД, деаэраторы, насосы и т. д.). При этом расчет выполняется от к о- тельного агрегата против хода питательной воды и основного конденсата. Уравнения материального и теплового баланса объединяются в систему л и- нейных алгебраических уравнений, для решения котор ой необходимо испол ь- зовать специальные численные методы (метод Крамера, метод Гаусса и т. д.). Для этого балансовые уравнения для необходимых групп теплообменников приводят к соответствующему в и ду: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ = + + + + = + + + + = + + + + = + + + + n n nn n n n n n n n n n b x a x a x a x a b x a x a x a x a b x a x a x a x a b x a x a x a x a ... ... .......... .......... .......... .......... .......... ... ... ... 3 3 2 2 1 1 3 3 3 33 2 32 1 31 2 2 3 23 2 22 1 21 1 1 3 13 2 12 1 11 После определения расходов пара в регенеративные отборы определяют расчетную мощность отсеков паровой турбины и общую суммарную электр и- ческую нагрузку. ¥ ¥ ¥ = = = = = = n i n i n i M i i M i i i @ M @ M H D H D W W 1 1 1 0 0 h h h , 
83 где p M W – расчетная мощность i - го отсека турбины, кВт; i D – расход п а- ра через i - й отсек турбины; i i i H H 0 0 h = – действительный теплоперепад на i - й отсек. Путем сравнения заданной электрической мощности ( M W ) и расчетной ( p M W ) обосновывается вывод о необходимости уточнения расчета. При этом определяется погрешность расчета ( d ), которая затем сравнивается с допуст и- мой погрешностью (в инженерных расчетах принимается обычно равной % 5 , 0 = e ). % 100 ᅲ - = M @ M M W W W d Если e d ᆪ , то расчет заканчивается. Если e d > , то расчет повторяется с уточнен и ем значения коэффициента регенерации: @ M M @5 @5 W W k k = . Структурная схема расчета ПТС представлена на рисунк е 4.3. начало Ввод исходных данных Построение процесса расшир е- ния пара в турбине Определение расходов острого пара и питательной воды Расчет ПТС. Определение расх о- дов пара в отборы турбины Оценка расчетной мощности турбоустановки Условие окончания расче та Уточнение коэффициента регенерации Вывод результатов окончание Да Нет Рис. 4.3. Струк тура расчета принципиальной тепловой схемы ТЭС 
84 Аналогичным способом решается достаточно много теплоэнергетич е- ских задач, в частности, расчет теплообмена в топочной камере котельного а г- регата, при котором выполняется расчет температуры продуктов сгорания т о- плива при совместно м решении нелинейных уравнений тепловыделения от факела и тепловосприятия топочных стен [65, 66]. Другим примером этого же класса задач является задача расчета высоты дымовой трубы тепловой эле к- трической станции, обеспечивающей экологически безопасный уров ень пр и- земных концентраций выбросов вредных веществ [68, 69] и целый ряд других задач. § 4.3. Метод Ньютона Метод Ньютона более сложен в реализации по сравнению с предыд у- щим методом, но позволяет во многих случаях ускорить сходимость итерац и- онного проц есса, а иногда является и единственным способом решения, пр и- водящим к успеху. Рассмотрим основную идею этого метода на примере ра с- чета системы двух нелинейных уравнений: ○ ■ ↓ = + = + 2 2 2 1 22 1 2 1 21 1 2 2 1 12 1 2 1 11 ) , ( ) , ( ) , ( ) , ( b x x x a x x x a b x x x a x x x a Предположим, что найдены приближенные значения искомых велич ин 1 1 - k x и 1 2 - k x на ( 1 - k ) - й итерации. Построим линейную систему уравнений для приближенных значений k x 1 , k x 2 следующей k - й итерации. Для э того предста в- ляют новые значения в виде k k k x x x 1 1 1 1 D + = - , k k k x x x 2 1 2 2 D + = - , где k k x x 2 1 , D D – уто ч- няющие приращения для приближений неизвестных на k - й итерации. Очеви д- но, что определение k i x D эквивалентно определению k i x . В методе Нь ю тона система линейных уравнений обычно записывается относительно прир а щений k i x D . Для ее получения необходимо значения коэффициентов k ij a пре д ставить, ис пользуя разложение в ряд Тейлора в точке ( 1 2 1 1 , - - k k x x ) и ограничив а ясь его первым членом, в следующем виде [24]: 
85 k k k k k k k k x x a x x a x x a x x a 2 2 1 11 1 1 1 11 1 2 1 1 11 2 1 11 ) , ( ) , ( D ᄊ ᄊ + D ᄊ ᄊ + ᄏ - - - - . Подставив теперь выражения для коэффициентов приведенного выше вида и k i k i k i x x x D + = - 1 в исходную систему и отбросив члены второго порядка малости (произведения k j k i x x D ᅲ D ), получим необходимую нам систему лине й- ных уравнений относительно приращений k k x x 2 1 , D D : 1 2 1 12 1 1 1 11 1 2 1 1 2 1 11 1 2 2 1 12 1 12 1 1 2 1 1 12 1 1 1 1 11 1 11 - - - - - - - - - - - - - - - - = = D    ↑ → ← ᄊ ᄊ + ᄊ ᄊ + + D    ↑ → ← ᄊ ᄊ + ᄊ ᄊ + k k k k k k k k k k k k k k k k x a x a b x x x a x x a a x x x a x x a a 1 2 1 22 1 1 1 21 2 2 1 1 2 1 21 1 2 2 1 22 1 22 1 1 2 1 1 22 1 1 1 1 21 1 21 - - - - - - - - - - - - - - - - = = D    ↑ → ← ᄊ ᄊ + ᄊ ᄊ + + D    ↑ → ← ᄊ ᄊ + ᄊ ᄊ + k k k k k k k k k k k k k k k k x a x a b x x x a x x a a x x x a x x a a Линейност ь полученной системы уравнений относительно приращений k k x x 2 1 , D D следует из того, что все ее коэффициенты рассчитаны по значениям искомых величин на предыдущей итерации. Для ее решения на каждом шаге итерации можно использовать какой - либо пря мой метод. Легко заметить, что выражения в правых частях уравнений системы представляют собой невязки исходной нелинейной системы при значениях 1 1 - k x и 1 2 - k x . Если итерационный процесс сходится, то в правых частях получа ют нули и решение системы дает 0 2 1 = D = D k k x x . Если оценивать качество метода Ньютона только по числу необходимых итераций, то следовало бы сделать вывод о том, что этот метод стоит прим е- нять всегда, когда он сходится. На практике для достижен ия разумной точн о- сти e при выборе достаточно хорошего начального приближения ) 0 ( x необх о- димо, как правило, 3 - 5 итераций. Однако при оценке общей трудоемкости м е- тода следует учитывать, что на каждой итерации потребуе тся выполнение сл е- дующей дополнительной работы: 1 – вычисление m компонент вектора ) ( ) ( n x f ; 2 – вычисление 2 m компонент матрицы Якоби ) ( ) ( n x f ᄁ ; 3 – решение системы линейных алгебраич еских уравнений. 
86 Существует большое число модификаций метода Ньютона, позволя ю- щих в тех или иных ситуациях снизить его трудоемкость, либо избежать нео б- ходимости вычисления производных. К числу некоторых таких модификаций относятся упрощенный метод Ньютона, метод ложного положения, метод с е- кущих, метод Стеффенсена и т.д. § 4.4. Программная реализация методов решения систем нелине й ных уравнений Следует отметить, что решение систем нелинейных уравнений может выполняться с помощью методов и подпрограмм, предн азначенных для реш е- ния отдельно взятого нелинейного (трансцендентного) уравнения, описанных во второй главе данного пособия. Изложенные методы необходимо применять поочередно к каждому из уравнений системы с контролем погрешности схо ж- дения каждой переменно й к корню по величине заданной погрешности [15]. Программная реализация метода простой итерации для решения кваз и- линейных систем заключается в осуществлении итерационного процесса по следующей формуле: ) ( ) ( ) 1 ( n i i n i X f X = + , применяемой после преобразова ния системы нелинейных уравнений общего вида 0 ) ( = i i X F к виду ) ( i i i X f X = . Здесь i – номер переменной ( n i ,..., 3 , 2 , 1 = ), n – номер итерации. Вычисления ведутся до тех пор, по ка соблюдается усл о- вие e > - + ) ( ) 1 ( n i n i X X , где e – заданная точность. Текст подпрограммы - функции ProstIteratio , иллюстрирующей метод простых итераций для решения систем нелинейных уравнений представлен в листинге 4.1. В качестве формальных входных параметров данной функции используются следующие переменные: n – количество уравнений и соответс т- венно неизвестных в системе; x * – массив, содержащий значения начальн о го приближения и в последу ющем корни решения; func – подпрограмма - функция с двумя входными параметрами, в которой соответствующим образом запис а- 
87 на система нелинейных уравнений; eps – заданная погрешность в ы числения.  Листинг 4.1. void Pro stIteratio( int n, float *x, void (*func)(float *, float *), float eps) { float *f; // описание локальных переменных int i, index=0; f = new float[n] ; // динамическое распределение памяти do{ // основной цикл простых итераций func( x, f); // в ычисление i - х значений функции for(i=0; i<n; i++) // проверка условий сходимости по каждому корню системы { if( fabs( f[i] - x[i] ) < eps ) index = 1; // условие окончание цикла else index = 0; x[i] = f[i] ; // определение значений последующей итерации } }while(index == 0); delete(f); // высвобождение машинной памяти } Программная реализация метода Ньютона (или Ньютона - Рафсона) пр е- дусматривает машинную обработку системы нелинейных уравнений след у ю- щим образом. Первоначально задают абсолютную или относительную п о- грешность E = e , число уравнений n , максимальное число итераций m и ве к- тор начальных приближений 0 i X (с ком понентами 0 30 20 10 ,..., , , n x x x x ). Затем, используя разложение ) ( i i X F в ряд Тейлора, формируют матрицу Якоби [ ] i i X F ᄊ ᄊ , необходимую для расчета приращений ) ( i i X F при малом и з- менении переменных. Матрица Якоб и в развернутом виде записывается сл е- дующим образом:      ↑ ↑ ↑ → ← ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ n n n n n n x F x F x F x F x F x F x F x F x F ... ... ... 2 1 1 2 2 1 2 1 2 1 1 1 Поскольку аналитическое дифференцирование ) ( i i X F в общем случае нежелательно, то частные производные в матрице Якоби заменяют их пр и- ближенными конечно - разност ными значениями i i i i i i i i h X F h X F X F ) ( ) ( - + @ ᄊ ᄊ , 
88 где i h – малое приращение i X , например i i X h e = . Затем составляют и решают систему линейных алгебраических уравн е- ний для малых приращений i X :      ↑ ↑ ↑ → ← - - - =      ↑ ↑ ↑ → ← D D D      ↑ ↑ ↑ → ← ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ ᄊ n n n n n n n F F F x x x x F x F x F x F x F x F x F x F x F 2 1 3 2 1 2 1 1 2 2 1 2 1 2 1 1 1 ... ... ... Решение этой системы позволяет определить 3 2 1 ,..., , x x x D D D , т.е. i X D , п о- сле чего вычисляют уточненные значения i in n i X X X D + = + ) 1 ( . При этом для всех i X D проверяют одно из условий E X i < D или e < D i i X X . Если одно из них в ы- полняется, то считают вектор ) 1 ( + n i X искомым решением [22]. Текст подпр о- граммы функции, иллюстрирующей реализацию метода Ньютона представлен в листинге 4.2. Сп исок формальных входных параметров функции ModifNe w- ton совпадает с аналогичным списком подпрограммы ProstIteratio .  Листинг 4.2. #include<math.h> // директива препроцессора #include " slau .h" // подключение библиотеки методов решения СЛАУ void ModifNewton ( int n, float *x, void (*func)(float *, float *), float eps ) { float *a, *b, *f, h; // описание локальных переменных int i, j, index = 0; a = new float[n*n]; // динамическое распределение памяти под массивы b = new float[n]; f = new float[n]; d o{ // основной итеративный цикл func( x, f); // вычисление значений функции нелинейной системы for(i=0; i<n; i++) { b[i] = - f[i]; // определение значений правых частей } for(j=0; j<n; j++) // вычисление значений конечно - разнос тных приближений { h = eps * fabs( x[j] ); x[j] = x[j] + h; func( x, f ); for(i=0; i<n; i++) { a[i*n+j] = (f[i] + b[i]) / h; } x[j] = x[j] - h; } 
89 Gauss( a, b, n, f); // решение системы уравн ений для малых приращений for(i=0; i<n; i++) { x[i] = x[i] + f[i]; // вычисление уточненных значений if( fabs( f[i] / x[i] ) < eps ) index = 1; // условие нахождения решения else index = 0; } }while(index == 0); // оконч ание основного цикла delete(a); // высвобождение машинной памяти delete(b); delete(f); } Пример использования подпрограмм - функций ProstIteratio и ModifNe w- ton для решения системы, состоящей из двух нелинейных уравнений, пре д- ставлен в листинге 4.3. В д анном случае решается система следующего вида: ○ ■ ↓ = + - - = - + 0 1 5 2 0 lg 3 1 2 1 1 2 2 1 1 x x x x x x x При 2 = n и 10 = m (максимальное число итераций для случая, если реш е- ние расходится), 4 10 1 - ᅲ = = E e , 4 , 3 ) 0 ( 1 10 = = X x и 2 , 2 ) 0 ( 2 20 = = X x , получим 487442788 , 3 1 = x , 261628631 , 2 2 = x .  Листинг 4.3. #include<stdio.h> // директивы препроцессора #include<conio.h> #include "snau.h" // подключение библиотеки подпрограмм для решения СНАУ void main() { void func( fl oat *, float * ); // функция с системой нелинейных уравнений void func2( float *, float * ); float *x, // массив под значение корней системы eps=1E - 04; // точность вычислений int i, n = 2; // количество уравнений x = new float[n]; // динамич еское распределение памяти x[0]=3.4; // начальное приближение к решению x[1]=2.2; ProstIteratio( n, x, func, eps ); // обращение к методу простых итераций clrscr(); // вывод результатов на печать printf(" \ n Решение СНАУ методом простых итераций"); 
90 for(i=0; i<n; i++) { printf(" \ n x[%d]=%f",i+1,x[i]); } ModifNewton( n, x, func2, eps); // обращение к методу Ньютона printf(" \ n Решение СНАУ методом Ньютона"); for(i=0; i<n; i++) { printf(" \ n x[%d]=%f",i+1,x[i]); } getch(); dele te(x); // освобождение памяти } /* подпрограммы содержащие систему нелинейных алгебраических уравнений */ void func( float *x, float *fp) // для метода простых итераций { fp[0] = x [0] + x[0] + 3 * log10( x[0] ) - pow( x[1], 2 ); fp[1] = x[1] + 2 * pow( x[0], 2) - x[0] * x[1] – 5 * x[0] + 1; } void func 2( float * x , float * fp ) // для метода Ньютона { fp[0] = x[0] + 3 * log10( x[0] ) - pow( x[1], 2 ); fp[1] = 2 * pow( x[0], 2 ) - x[0] * x[1] – 5 * x[0] + 1; } С помощью #include " snau .h" выполняется под ключение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм ProstIteratio и ModifNewton , необходимых для решения системы нелинейных алгебраических уравнений. Текст файла snau . h представлен в ли с- тинге 4.4.  Ли стинг 4.4. /* объявление подпрограмм - функций, предназначенных для решения систем нелинейных алгебраических уравнений */ // метод простых итераций void ProstIteratio( int, float *, void (*)(float *, float *), float ); // метод Ньютона void ModifNewton( int, float *, void (*)(float *, float *), float );
91 Глава 5. ЧИСЛЕННЫЕ МЕТОДЫ ВЫЧИСЛЕНИЯ ОПРЕДЕЛЕ Н НЫХ ИНТЕГРАЛОВ § 5.1. Технико - экономическая оценка показателей работы ТЭС В прикладных исследованиях часто возникает необходимость вычисл е- ния зн а чения определенного интеграла: ￲ = b a dx x f I ) ( , где a и b – нижний и верхний пред е лы интегрирования; ) ( x f – непрерывная функция на отрезке [ ] b a , . Этот интеграл можно трактовать как площадь фигуры, объем, работу п е- ременной силы и т.д., ограниченной ординатами a и b , осью абсцисс X и графиком подынтегральной функции ) ( x f (см. рис. 5.1). Так, например, х а- рактерной особенностью режима эксплуатации тепловой электрической ста н- ции является строгое соответствие производства электрической и тепловой энергии ее потреблению [50] . Поэтому для обеспечения надежной и эффе к- т ивной работы электростанции необходимо знать изменение потребления энергии по времени. Изменение потребления энергии по времени обычно из о- бражается диаграммой, которая называется графиком нагрузки . Графики н а- грузки могут быть суточными, месячными и годовым и. На рис. 5.1 изображен пример годовых графиков электрической ( а ) и тепловой ( б ) нагру з ки [57]. Q , кДж Q год 0 8760 t , ч б ) Q( t ) N , кВт Э год 0 8760 t , ч а ) N( t ) Рис.5.1. Примеры интерпретации определенных интегр а лов 
92 На графике по оси абсцисс откладывается продолжительность нагрузки в часах за год (8670 ч), а на оси ординат – соответствующая нагрузка (кВт, кДж). Площад ь, ограниченная кривой годового графика (см. рис. 5.1), пре д- ставляет собой в масштабе количество выработанной станцией за год энергии, т.е. - годовая выработка электроэнергии: ￲ = 8760 0 ) ( dt t N - 3> , - годовая выработка тепловой энергии: ￲ = 8760 0 ) ( dt t Q Q 3> . Аналогично годовому строятся суточные и месячные графики нагрузок. Способы задания или получения зависимостей ) ( t N и ) ( t Q могут быть различны (таблично, аналитически и т.д.), но та и другая функции могут быть и нтерпретированы как непрерывные функции ) ( x f [21]. Если функция ) ( x f непрерывна на отрезке [ ] b a , и ее первообразную уд а- ется выразить через известные функции, то для вычисления интеграла можно воспол ьз о ваться формулой Ньютона - Лейбница: ) ( ) ( a F b F I - = . Однако в большинстве случаев аналитическое выражение для первоо б- разной найти не удается, даже если подынтегральная функция содержит эл е- ментарные функции, а во многих решениях под интегралом содерж атся спец и- альные функции (например, функция Бесселя). В этих случаях приходится прибегать к численному интегрированию. Сущность большинства методов вычисления определенных интегралов состоит в замене подынтегральной функции ) ( x f аппрокс имирующей функц и- ей ) ( x j , для которой можно легко записать первообразную в элементарных функц и ях [3], т.е.: 
93 ￲ ￲ + = + = b a b a R S R dx x dx x f ) ( ) ( j , где S – приближенное значение интеграла; R – погрешность вычисл е- ния инт е грала. Обычно отрезок [ ] b a , разбивается на m частей, в каждой из которых применяется соответствующая простая формула. Таким образом, получают с о- ставные формулы численного интегрирования. Используемые на прак тике м е- тоды численного интегрирования можно классифицировать в зависимости от способа аппроксимации подынтегральной функции на следующие группы: 1 – методы Ньютона - Котеса, основанные на полиномиальной аппроксимации (м е- тод прямоугольников, трапеций, метод С импсона и т. д.); 2 – сплайновые м е- тоды, базирующиеся на аппроксимации подынтегральной функции спла й нами, представляющими собой кусочный полином; 3 – методы наивысшей алгебра и- ческой точности (методы Гаусса – Кристоффеля и др.), использующие нера в- ноценные у злы, расположенные по алгоритму, обеспечивающему минимал ь- ную погрешность интегрирования при заданном количестве у з лов. § 5.2. Метод прямоугольников Метод прямоугольников – простейший прием численного интегриров а- ния, при котором функция ) ( x f y = заменяется интерполяционным многочл е- ном нулевого порядка. Для повышения точности интегрирования отрезок [ ] b a , разбивается на m частей и формула прямоугольника применяется к каждому отрезку. При реализации ме тода прямоугольников возможно три варианта его модификации: метод левых, правых и средних прямоугольников (см. рис. 5.2). Обобщенная формула прямоугольников выглядит следующим о б разом: ¥ - = - ᄏ 1 0 m i i y m a b I . Алгоритм численного интегрирования по методу сре дних прямоугол ь- ников предста в лен на рис. 5.3. 
94 Рис. 5.3. Алгоритм вычисления определенного интеграла м етодом сре д- них прям о угольников начало ввод вывод окончание 0 , , , = i m b a m a b h / ) ( - = 2 / h a x + = ) ( x f y = yh I I + = 1 - < m i h x x + = 1 + = i i I y f(x 1 ) f(x 2 ) f(x 3 ) f(x 4 ) f(x n ) 0 x a = 1 x 2 x 3 x 4 x n x b = x ) ( x f y = а) б) y f(x 0 ) f(x 1 ) f(x 2 ) f(x 3 ) f(x 4 ) ) ( x f y = 0 x a = 1 x 2 x 3 x 4 x n x b = x y f( x 0 +x 1 ) 2 f( x 1 +x 2 ) 2 f( x 2 +x 3 ) 2 f( x 3 +x 4 ) 2 f( x 4 +x n ) 2 ) ( x f y = 0 x a = 1 x 2 x 3 x 4 x n x b = x Рис. 5.2. Численное интегр и- рование методом прямоугольн и- ков: а – метод левых прямоугол ь- ников; б – правых прямоугольн и- ков; в – средних прямоугол ь ников в) 
95 Вследствие низкой точности метод прямоугольников широкого распр о- странения не получил. § 5.3. Метод трапеций Согласно этому методу подынтегральную функцию заменяют на участке [ ] h x x i i + , , где m a b h - = полиномом первой степени. Как и в методах прям о- угольников, такая аппроксимация неоднозначна. Одним из возможных спос о- бов является проведение прямой через значения функции на границах инте р- вала интегрир о вания (рис 5.4). Рис. 5.4. Графическая иллюстрация метода тр а пеций В этом случае приближенное значение интеграла определяется суммой площадей трап е ций: 2 ) ( ) ( ... 2 ) ( ) ( 2 ) ( ) ( 2 ) ( ) ( 1 3 2 2 1 1 0 m m x f x f h x f x f h x f x f h x f x f h I + + + + + + + + = - . Эта формула соответствует приближенной замене площади некоторой криволинейной трапеции площадью фигуры, ограниченной ломаной линией, проходящей через точки ) ( 0 x f , ) ( 1 x f , ) ( 2 x f , … , ) ( m x f : ￷ ￸ ￶ ￧ │ ₩ + + - = ¥ - = 1 1 0 ) ( 2 ) ( ) ( m i i m x f x f x f m a b I . y ) ( x f y = 0 x a = 1 x 2 x 3 x n x b = x ) ( 0 x f ) ( 1 x f ) ( 2 x f ) ( 3 x f ) ( n x f 4 x ) ( 4 x f 
96 § 5.4. Метод Симпсона (метод парабол) Этот метод основан на использовании отрезка раздробления с тремя у з- лами и аппроксимации подынтегральной функции полиномом второй степени по трем равноотстоящим узлам i x , 1 + i x , 2 + i x . На отрезке [ ] h x x i i 2 , + функция ) ( x f заменяется параболой, проходящей через точки ) ( i x f , ) ( 1 + i x f , ) ( 2 + i x f (рис. 5.5). Интеграл от интерполяционного полинома на отрезке [ ] h x x i i 2 , + равен: ￲ + + + + + ᄏ = 2 )) ( ) ( 4 ) ( ( 3 4 ) ( 2 1 i i x x i i i i x f x f x f dx x f I . Рис. 5.5. Метод Симпсона (метод парабол) Считая, что полное число интервалов h a b m - = – четное, и суммируя по всем п а рам интервалов, получим формулу Симпсона: ] ) ( ) ( 4 ... ) 3 ( 4 ) 2 ( 2 ) ( 4 ) ( [( 3 4 ) ( ￲ + - + + + + + + + + = ᄏ b a b f h b f h a f h a f h a f a f dx x f I . Увел ичивая число узлов m в интервалах разбиения и применяя для и н- терполяции подынтегральной функции полиномы более высоких степеней (>2), можно получить еще ряд других квадратурных формул. Однако их и с- пользование ограничено сложностью реа лизации. На рисунке 5.6 изображен алгоритм численного интегрирования по составной формуле Симпс о на. i x 1 + i x 2 + i x ) ( i x f ) ( 1 + i x f ) ( 2 + i x f ) ( x f y x 
97 Рис. 5.6. Алгоритм численного интегрирования по методу Симпсона Учитывая геометрическую интерпретацию формулы Симпсона, ее ин о- гда называ ют формулой парабол. Приведенный выше численный алгоритм справедлив для случая, когда число элементарных отрезков раздробления я в- ляется че т ным числом ( m N 2 = ). § 5.5. Применение сплайнов для численного интегрирования При вычислении инт еграла вида: ￲ = b a dx x f I ) ( с помощью сплайнов необходимо интервал интегрирования ] , [ b a разбить на участки 1 - - = i i x x h , n i ,..., 1 = , на каждом из которых подынтегральную функцию ) ( x f зам еняют кубическим сплайном ) ( x i j : 3 1 2 1 1 ) ( ) ( ) ( ) ( - - - - + - + - + = i i i i i i i i x x f x x e x x d c x j , начало вывод окончание ввод m b a x , , = m a b h 2 / ) ( - = ) ( x f F = 0 ; = = N F I h x x + = ) ( x f F = F I I 4 + = 2 + = N N m N 2 = Нет Да h x x + = ) ( x f F = F I I 2 + = b x = ) ( x f F = 3 ) ( h F I I + = I 
98 где ] , [ 1 i i x x x - ᅫ . Тогда с учетом последнего выражения значение интеграла можно зап и- сать как сумму интегралов от сплайнов ) 4 3 2 ( ) ( 1 1 4 3 2 ¥ ¥ = = + + + = = n i n i i i i i i i i i i h f h e h d h c dx x I j . После некоторых у прощений получим окончательную приближенную формулу вычисления определенного интеграла сплайновым методом: ¥ ¥ = = + - + - - = n i n i i i i i i i e e h x f x f h I 1 1 1 3 1 12 ) ( 2 )) ( ) ( ( . Нетрудно заметить, что первая сумма в полученном выражении есть формула трапеций, а вторая сумма – поправочное слагаемое д ля формулы тр а- пеций, примененной к сплайнам, так как при малых значениях i h коэффицие н- ты i e и 1 + i e близки по величине, следовательно ) ( 1 x e e i i j ᄁ ᄁ ᄏ + + , где ] , [ 1 i i x x x - ᅫ . В связи с этим погрешность сплайн - квадратуры меньше, чем погрешность мет о- да трапеций. Однако алгоритм интегрирования с помощью сплайнов нескол ь- ко сложнее, чем у методов трапеций или Симпсона за счет необходимости р е- шения системы линейных уравнений для определения коэффициентов спла й- нов i e . § 5.6. Методы наивысшей алгебраической точности Методы наивысшей алгебраической точности получают так же, как и методы Ньютона - Котеса путем аппроксимации подынтегральной функции ) ( x f пол иномами различных степеней. Только в отличие от методов Ньютона - Котеса узлы для построения интерполяционного полинома выбирают из усл о- вия обеспечения минимальной погрешности интегрирования. Впервые задача построения квадратурных формул подобного типа была решена Гауссом для интегралов следующего вида: ￲ = b a dx x f I ) ( , 
99 а для интегралов ￲ = b a dx x f x I ) ( ) ( 1 r с произвольной весовой функцией ) ( x r - Кристоффелем [14]. Для того чтобы узлы квадратурных формул не зависели от пределов и н- тегрирования, линейным преобразованием переменной x осуществляется п е- реход к стандартным пределам интегрирования [ - 1, 1], 2 2 b a t a b x + + - = , dt a b dx 2 - = , где t – новая переменная. Тогда фо рмула для вычисления интеграла I принимает вид: ￲ ￲ - - - = + + - - = 1 1 1 1 ) ( 2 ) 2 2 ( 2 dt t a b dt b a t a b f a b I j . Квадратурная формула Гаусса - Кристоффеля для интегралов типа 1 I при n - узлах содержит n 2 параметр ов: ¥ = = = n k k k R x f c I 1 1 ) ( , где k c – весовые коэффициенты; k x – узлы; R – погрешность квадрат у- ры. Полином степени 1 2 - n также имеет n 2 коэффициентов. Следовательно, можно так подобрать параметры k c и k x , чтобы последняя формула была то ч- ной, т.е. 0 = R , для любого полинома степени не выше 1 2 - n . Так, при 1 = n квадратура 1 I будет точной для полиномов нулевой и пе р- вой степени. Этому требованию удовлетворяет метод средних прямоугольн и- ков, который и является простейшим из методов Гаусса - Кристоффеля для в е- совой функции 1 ) ( = x r . В случае двух узловых точек ( 2 = n ) квадратура будет точной для пол и- номов не выше третьей степени ( 3 1 2 = - n ). Пусть подынтегральная функция инт е грала 1 I представима полиномом с коэффициентами k a 3 3 2 2 1 0 ) ( t a t a t a a t + + + = j , тогда интеграл от полинома принимает значение 
100 ￲ - + = 1 1 2 0 ) 3 ( 2 ) ( a a dt t j . Интерполяционный полином Ньютона, совпадающий в узлах 0 t и 1 t со значениями подынтегральной функ ции 0 j и 1 j , будет иметь первую степень (рис. 5.7). Рис. 5.7. Графическая иллюстрация метода Гаусса при 2 = n ) ( ) ( 0 01 0 1 t t t P - + = j j , где 1 0 1 0 01 t t - - = j j j . Если взять интег рал от полинома ) ( 1 t P и подставить в результат значение функции ) ( t j в узлах 0 t и 1 t , получим )) ( ( 2 ) ( 2 ) ( 1 0 1 0 3 1 0 2 0 0 01 0 1 1 1 t t t t a t t a a t dt t P + - - = - = ￲ - j j . Сравнивая правые части полученных выражений, получаем си стему двух уравнений относительно узлов 0 t и 1 t : ○ ■ ↓ = + - = 0 3 1 1 0 1 0 t t t t Решая систему, получаем 3 1 0 - = t , 3 1 1 = t . ) ( t j - 1 1 0 ) ( 1 t P 0 t 1 t t 
101 При таких узлах формула для вычисления 1 I принимает вид: )) ( ) ( ( 2 1 0 t t a b I j j + - = , где ) 2 2 ( ) ( a b t a b f t + + - = j . Узлы 0 t и 1 t являются корнями полиномов Лежандра второй степени. Весовые коэффициенты k c равны единице. С увеличением чи сла узлов их значениями остаются корни полиномов Лежандра степени n , а весовые коэффициенты k c определяются через узлы по формуле [21]: ￲ ᅰ - = - - = 1 1 1 ) )( ( n i i k i k dx x x x x c . Обычно в вычислительной практике весовые коэффици енты и узлы з а- даются в виде констант из справочных таблиц [13]. Данный метод обладает одним существенным свойством: значения вес о- вых коэффициентов всегда положительны. Это свойство гарантирует хорошую обусловленность вычислительной задачи. Более того, число обусловленности равно a b - и не зависит от числа узлов. § 5.7. Программная реализация численных методов интегрир о вания Для численного интегрирования на ЭВМ имеется достаточно обширное программное обеспечение [16, 21]. Разумеет ся, для того чтобы реализовать вычисления по формуле прямоугольников или по формуле трапеций с зада н- ным шагом h , нет необходимости в поиске соответствующей стандартной подпрограммы, так как они достаточно легко поддаются программной р еал и- зации. Ниже в листинге 5.1 в качестве учебного примера приводится подпр о- грамма Trapez _ tabl вычисления определенного интеграла методом трапеций для функции, заданной таблично. К числу ее формальных входных параметров относятся: m – число узлов заданной функции; 0 x и xh соответственно вер х- ний и нижний пределы интегрирования; y – одномерный массив значений 
102 фун к ции.  Листинг 5.1. float Trapez_tabl( int m, float xo, floa t xh, float *y) // заголовок функции { float di, ar, tpa; // описание локальных переменных int i, tm; tm = m - 1; di = (xh - xo) / ( tm * 2.0 ); // определение шага интегрирования tpa = 0.; for(i = 0; i <= m - 2; i++) { ar = di * (y[i] + y[i + 1]); // определение площади трапеции tpa = tpa + ar; } return( tpa ); // оператор возврата } Пример, иллюстрирующий подпрограмму - функцию Simpson реализу ю- щую метод Симпсона для функции, заданной в аналитической форме, пре д- ст авлен в листинге 5.2. Отметим, что среди формальных входных параметров подпрограммы присутствует имя подпрограммы - функции func , задающей п о- дынт е гральное выражение. Параметры a и b – пределы инт егрирования; m – число разбиений отрезка интегрирования ] , [ b a .  Листинг 5.2. float Simpson( float (*func)(float), float a, float b, int m ) // заголовок { float x, i, h, f; // описание локальных переменных int n ; h = ( b – a ) / m / 2.0; // вычисление шага интегрирования x = a; // определение значения начальной точки f = func( x ); // вычисление значения функции в начальной точке i = f; n = 0; a: x = x + h; // вычисление значений интеграла в нечетных то чках f = func( x ); i = i + ( 4 * f ); n = n + 2; if(n == 2 * m ) { x = b; // вычисление значения функции на правой границе интервала f = func( x ); i = ( i + f ) * h / 3.0; } 
103 else{ x = x + h; // в ычисление значений интеграла в четных точках f = func( x ); i = i + ( 2 * f ); goto a; } return( i ); // возврат значения интеграла } В некоторых случаях вопрос выбора квадратурной формулы и шага и н- тегрирования неочев иден. Тогда имеет смысл использовать более сложные программы, в которых автоматически осуществляется выбор шага, а иногда и квадратурной формулы. Такие программы называют адаптивными квадр а- турными программами [9]. В них используется одна или несколько квад р а- турных формул и определяются величины подынтервалов ] , [ h j j x x + так, чтобы вычисленный результат удовлетворял предписанной точности. В разных ча с- тях интервала интегрирования могут использоваться сетки разной густоты. Пользователь такой подпро граммы указывает интервал ] , [ b a , составляет по д- программу - функцию, вычисляющую ) ( x f , и выбирает допустимую погре ш- ность e . Адаптивная подпрограмма пытается вычислить величину интеграла n I так, чтобы выполнялось условие: e ᆪ - ￲ b a n dx x f I ) ( . При этом программа может сделать вывод, что предписанная точность недостижима, получить наилучший возможный для нее результат и выдать оценку реально достигнутой погрешности. Пример такой подпрограммы в в и- де функции Quanc 8 представлен в листинге 5.3. Работа этой подпрограммы основана на использовании квадратурной формулы интерполяционного пол и- нома восьмой степени. Пользователь подпрограммы Quanc 8 должен задать подпрограмму - функцию func для подынтегральной функции ) ( x f ; нижний и верхний пределы интегрирования – a и b ; границы абсолютной и относител ь- ной ош и бок abserr и relerr . 
104  Листинг 5.3. #include <math.h> // директива препроцессора float Quanc8( float (*func)(float ), float a, float b, float abserr, float relerr ) // заголовок подпрограммы - функции { float w0, w1, w2, w3, w4, area, x0, f0, stone, step, cor1 1, temp; float qprev, qnow, qdiff, qleft, esterr, tolerr, result; float errest, flag; float qright[32], f[17], x[17], fsave[9][31],xsave[9][31]; int nofun, levmin, levmax, levout, nomax, nofin, lev, nim, i, j; // присвоение начальных значений переменн ым, не зависящим от интервала // генерирование констант levmin = 1; levmax = 30; levout = 6; nomax = 5000; nofin = nomax - 8 * ( levmax - levout + pow( 2, levout + 1 )); // если nofun достигает значения nofin , то тревога w0 = 3956.0 / 14175.0; w1 = 23552.0 / 14175.0; w2 = - 3712.0 / 14175.0; w3 = 41984.0 / 14175.0; w4 = - 18160.0 / 14175.0; // присвоение нулевых значений переменным суммам flag = 0.0; result = 0.0; cor11 = 0.0; errest = 0.0; area = 0.0; nofun = 0; if( a == b ) return( result ); // возвращает result=0 , если a = b // присвоение начальных значений переменным, зависящим от интервала, // в соответствии с первым интервалом lev = 0; nim = 1; x0 = a; x[16] = b; qprev = 0.0; f0 = func( x0 ); stone = ( b - a ) / 16.0; x[8] = ( x0 + x[16] ) / 2.0; x[4] = ( x0 + x[8] ) / 2.0; x[12] = ( x[8] + x[16] ) / 2.0; x[2] = ( x0 + x[4] ) / 2.0; x[6] = ( x[4] + x[8] ) / 2.0; x[10] = ( x[8] + x[12] ) / 2.0; x[14] = ( x[12] + x[16] ) / 2.0; for( j = 2; j <= 16; j = j + 2 ) { f[j] = func( x[j] ); } nofun = 9; // основные вычисления 
105 while(1) { x[1] = ( x0 + x[2] ) / 2.0; f[1] = func( x[1] ); for( j = 3; j <= 15; j = j + 2 ) { x[j] = ( x[j - 1] + x[j+1] ) / 2.0; f[j] = func( x[j] ); } nofun = nofun + 8; step = ( x[16] - x0 ) / 16.0; qleft = ( w0 * ( f0 + f[8] ) + w1 * ( f[1] + f[7] ) + w2 * ( f[2] + f[6] ) + w3 * ( f[3] + f[5] ) + w4 * f[4] ) * step; qright[lev+1] = ( w0 * ( f[8] + f[16] ) + w1 * ( f[9] + f[15] ) + w2 * ( f[10] + f[14] ) + w3 * ( f[11] + f[13] ) + w4 * f[12] ) * step; qnow = qleft + qright[lev+1]; qdiff = qnow - qprev; area = area + qdiff; // проверка сходимости для интервала esterr = fabs( qdiff ) / 1023.0; if( abserr > relerr * fabs( area ) ) tolerr = abserr * step / stone; else tolerr = relerr * fabs( area ) * step / stone; // сходимости нет, установить следующий интервал if( lev < levmin ) { nim = 2 * nim; lev = lev + 1; // запоминание элементов, относящихся к правой половине интервала, // для будущего использования for( i = 1; i <= 8; i++ ) { fsave[i][lev] = f[i+8]; xsave[i][lev] = x[i+8]; } // сборка элементов, относящихся к левой половине интервала, // для непосредственного использования qprev = qleft; for( i = 1; i<= 8; i++ ) { j = - i; f[2*j+18] = f[j+9]; x[2*j+18] = x[j+9]; } continue; } // *** пожарный раздел *** // число значений функции близко к тому, // чтобы превысить установленный предел if( nofun > nofin ) { nofin = 2 * nofin; levmax = levout; flag = flag + ( b - x0 ) / ( b - a ); } // текущее предельное значение глубины деления поп олам равно levmax if( lev >= levmax ) 
106 { flag = flag + 1.0; } // сходимость для интервала имеет место if ( esterr <= tolerr ) // прибаляются очередные слагаемые к переменным суммам result = result + qnow; errest = errest + esterr; cor11 = cor11 + qdiff / 1023.0; // устанавливается следующий интервал while( nim != 2 * ceil( nim / 2. )) { nim = nim / 2.; lev = lev - 1; } // собираются элементы, необходимые для следующего интервала nim = nim + 1; if( lev > 0 ) { qprev = qright[lev]; x0 = x[16]; f0 = f[16]; for( i = 1; i <= 8; i++ ) { f[2*i] = fsave[i][lev]; x[2*i] = xsave[i][lev]; } continue; } else break; } // заключительные операции result = result + cor11; if( errest == 0.0 ) return( re sult ); // обеспечение, значения переменной errest не меньше уровня округлений while(temp == fabs(result)) { temp = fabs(result) + errest; errest = 2.0 * errest; } return( result ); } Для иллюстрации использования подпрограмм - функций численного и н- тегрирования в листинге 5.4 приведен текст головной функции для вычисл е- ния интегрального синуса ￲ = 2 0 sin ) 2 ( dx x x Si , при заданной абсолютной погрешн о- сти, равной нулю и величине относительной погрешности 10 10 0 , 1 - ᅲ . Результ а- том данной тес товой задачи является значение определенного интеграла ра в- ным 6054129768 , 1 = I . 
107  Листинг 5.4. #include <conio.h> // директивы препроцессора #include <stdio.h> #include <math.h> #include "integral.h" // описание подпрограмм численного интегрировани я void main() // головная функция { float i1, i2; float a, b, m; float func( float ); // подынтегральная функция a = 0; // исходные данные b = 2; m = 8; // Обращение к функции интегрирования по методу Симсона i1 = Simpson( func, a, b, m); // Обр ащение к функции интегрирования по методу интерполяционного полинома i2 = Quanc8( func, a, b, 0.0, 1.0E - 10 ); clrscr(); // вывод результатов на печать printf(" \ n Метод Симпсона: I=%f, при a=%f, b=%f", i1, a, b); printf(" \ n Метод Quanc8: I=%f, при a= %f, b=%f ",i2, a, b); getch(); } float func(float x) // тестовая подынтегральная функция { float f; if( x == 0 ) f = 1; else f = sin( x ) / x; // вычисление значений функции return( f ); } В строке #include " integral .h" выполняется подключ ение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм, необходимых для численного интегрирования. Текст файла int e- gral . h представлен в листинге 5.5.  Листинг 5.5. /* объявление подпрограмм - функций, предназн аченных для вычисления значения определенного интеграла */ float Simpson( float (*)(float), float, float, int ); // м е тод Симпсона // метод интерполяционного полинома 8 - й степени float Quanc8( float (*)(float ), float, fl oat, float, float );
108 Глава 6. МЕТОДЫ ПОИСКА ЭКСТРЕМУМОВ ФУНКЦИЙ ОДНОЙ П Е РЕМЕННОЙ § 6.1. Оптимизация режимных и конструктивных параметров те п- лоэнергетических уст а новок К числу важнейших внешних факторов, оказывающих влияние на пар а- метры и профиль теплоэнергетической установки , относятся условия испол ь- зования установки в энергетических системах. Режим работы оборудования теплоэнергетических установок определяется в основном структурой генер и- рующих мощностей и видом суточных, сезонных и годовых графиков ее н а- грузки. Анализ внов ь появляющихся (при учете режима работы энергоустан о- вок) взаимосвязей между параметрами и характеристиками энергетической у с- тановки показывает, что основной, среди этих связей является зависимость между нагрузкой установки (тепловой или электрической), опр еделяемой си с- темными условиями, и ее тепловой экономичностью. Установление этой зав и- симости по существу сводится к построению энергетической характеристики установки [49]. Для заданного типа оборудования и известных параметров рабочего процесса установки, т.е. для условий эксплуатации, построение энергетич е- ской характеристики является посильной задачей. Иное положение возникает при решении задачи, где тип оборудования и значения параметров рабочего процесса установки являются искомыми (экстремальными) велич инами. В процессе оптимизации параметров теплоэнергетической установки их знач е- ния существенно изменяются. В этом случае вместо одной зависимости тепл о- вой экономичности энергоустановки от нагрузки имеем множество таких з а- висимостей, причем изменение значен ия хотя бы одного из параметров прив о- дит к изменению вида энергетической характеристики. Наиболее рациональным способом построения энергетических характ е- ристик теплоэнергетической установки является разработка расчетного метода определения зависимости теп ловой экономичности установки от нагрузки с
109 целью ее дальнейшей программной реализации и использовании в процессе оптимизации параметров установки. Формальная формулировка такой задачи сводится к оптимизации (поиск минимума или максимума) некоторой техноло гической характеристики ) ( x f [47, 49]. Функцию ) ( x f часто называют целевой функцией. В случае, когда варьируется один скалярный параметр x , возникает задача одномерной мин и- миз а ции. В общем случае функция ) ( x f может иметь несколько экстремумов (рис. 6.1. а). Из них главный (оптимальное решение для пространства проектиров а- ния) называется глобальным. Задача поиска экс тремумов сводится к их лок а- лизации и уточнению значений x и ) ( x f , в точке экстремума. В дальнейшем для функции одной переменной под экстремумом будем подразумевать ма к- симум либо минимум ) ( x f , поск ольку максимуму функции ) ( x f соответствует минимум функции ) ( x f - , то сменив знак у ) ( x f , алгоритмами и программами поиска максимума можно воспользоваться и для поиска минимума функции. Будем также пол агать, что на изменения накладываются ограничения в виде неравенства b x a ᆪ ᆪ , где a и b – границы интервала поиска. В пределах отре з- ка [ ] b a , функцию считаем унимодальной, т. е. содержащей один максимум (см. рис. 6.1. б). f 1 2 3 4 5 0 x f 0 x 1 Рис . 6.1. Функция с несколькими экстремумами (а) и унимодальная фун к- ция с одним экстремумом (b) б ) a b extr x ) ( b f ) ( a f а) a 1 m x 2 m x 3 m x 4 m x 5 m x b
110 В связи с очень большой сложностью экономических и термодинамич е- ских зависимостей, решение задачи оптимизации энергетических установок осуществляют с помощью метода относительного изменения целевой фун к- ции, о пределяя последнюю через известные значения при каком - то базовом варианте (например, номинальный режим). Для базового варианта все соста в- ляющие целевой функции специально рассчитываются при определенном зн а- чении параметра 0 x x = , подлежаще го в дальнейшем оптимизации. В безра з- мерной форме условие экстремума выражается уравнением 0 = ᄊ ᄊ x Y , где Y - о т- ношение значения целевой функции, зависящей от оптимизируемого параме т- ра x , к ее велич ине при базовом варианте [46]. Несмотря на то, что в инженерной практике для решения задачи поиска экстремума энергетических характеристик широкое распространения получ и- ли аналитические методы [56, 64, 66], основанные на установлении непосре д- ственных завис имостей критериев оптимума от искомых параметров, при и с- пользовании приближенных функциональных зависимостей могут быть доп у- щены значительные ошибки, если эти зависимости подвергаются диффере н- цированию. Пример возникновения такой ситуации представлен на ри с. 6.2. Рис. 6.2. Дифференцирование приближенных аналитических зависим о стей B A y x 1 x 2 x 1 a b 2 a
111 В качестве иллюстрации вышеуказанной ситуации показаны две фун к- циональные зависимости – кривая A и прямая B , обобщающие одну и ту же группу точек ) ( y f x = . Максимальное отклонение точек выбрано так, чтобы максимальные погрешности, допускаемые кривой A и прямой B , были сове р- шенно одинаковыми. В этом случае производная указанной зависимости, о п- ределяемая тангенсом угла наклона касательной, в рассматриваемой точке кривой может иметь очень большие отклонения от истинных значений. Дейс т- вительно, при 1 x x = производная зависимости A будет равна 1 a tg , а зависим о- сти B - b tg и b a tg tg > 1 . Взяв производную в точке 2 x , получим противоп о- ложное отклонение производных b a tg tg < 2 . Приведенный пример показывает, что дифференцирование приближе н- ных зависимостей может дать ошибку, в несколько раз превышающую п о- грешность самих зависимостей. Наивысшая точность оптимальных параме т- ров достигается только в том случае, если при ближенные зависимости прим е- няются для определения той или иной величины только в окончательных ра с- четных уравнениях, предварительно полученных на основе общих термодин а- мических и технико - экономических закономерностей. В теплоэнергетических задачах аналитич еские формулы оптимизации обычно используются для н а- хождения абсолютного или относительного внутреннего коэффициентов п о- лезного действия установки, соответственно i h и i 0 h , коэффициента термод и- намической эффективнос ти B h , расчетных приведенных затрат  и др. Опт и- мальное значение искомого параметра определяется по экстремальным знач е- ниям этих критериев. Аналитические зависимости выражаются уравнениями следующего вида [46]: 0 0 = ￷ ￸ ￶ ￧ │ ₩ ᄊ ᄊ j i x h ; 0 = ￷ ￸ ￶ ￧ │ ₩ ᄊ ᄊ j B x h ; 0 = ￷ ￸ ￶ ￧ │ ₩ ᄊ ᄊ j x  , при условии 0 2 0 2 < ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ ᄊ ᄊ j i x h ; 0 2 2 < ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ ᄊ ᄊ j B x h ; 0 2 2 > ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ ᄊ ᄊ j x  .
112 Здесь остальные независимые от x параметры j прин имаются фиксир о- ванными. Опыт расчетов одномерной оптимизации показывает, что обязательно следует учитывать только главные связи между параметрами, существенно влияющие на результат оптимизации. При этом второстепенные зависимости можно опускать, предварите льно убедившись в том, что они практически не влияют на точность расчетов. Например, начальные параметры и вакуум в конденсаторе, давление в регенеративных отборах и скорости теплоносителей в котельной установке практически не влияют друг на друга и их вза имосв я- зью можно пренебречь. Таким образом, при аналитическом исследовании реальных теплоэне р- гетических установок широко применяются как комплексные, так и частные методы оптимизации. Во многих случаях реализация оптимальных режимных и конструкт ивных параметров при проектировании теплоэнергетической уст а- новки оказывается невозможным по причине ряда технических и технологич е- ских ограничений. В этих условиях необходимо рассчитывать величину изм е- нения целевой функции ) ( x f , вызванн ую отклонением искомого параметра от его оптимума. Как правило, такая задача решается следующим образом. Пусть характер зависимости целевой функции от параметра x изображается кривой (см. рис. 6.3). Рис. 6.3. Изменение значения цел евой функции при отклонениях от оптимума ) ( extr x f x extr x * x x D ) ( x f ) ( x f D ) ( * x f ￲ * ) ( x x extr dx x f 2 ) ( ) ( x f x f extr D +
113 При отклонении параметра x от его оптимального значения extr x на нек о- торую величину x D значение целевой функции изменится от ) ( extr x f до ) ( * x f . Если принять в первом приближении эту зависимость линейной, то ￷ ￷ ￷ ￷ ￷ ￷ ￸ ￶ ￧ ￧ ￧ ￧ ￧ ￧ │ ₩ - D = D ￲ ) ( ) ( 2 ) ( * extr x x x f x dx x f x f extr , где ) ( extr x f - величина целевой функции при оптимальном значении и с- следуемого параметра. Последнее выражение одновременно явля ется уравнением для расчета допустимого отклонения искомого параметра от его оптимального значения. Поиск экстремума функции ) ( extr x f разделяется на два эт а па. На первом этапе выделяются интервалы аргумента x , в которых сущ е- ствует единственная точка extr x , где функция ) ( x f принимает экстремальное значение. Этот этап минимизации близок по идеологии к задаче отделения корней уравнений и не поддается строгой алгоритмизации. О бычно интервалы унимодальности находят на основе анализа упрощенных математических м о- делей, исследуемых процессов. Графическое представление минимизируемой функции также помогает решить задачу на первом этапе, хотя и требует зн а- чительных временных затрат, так как шаг изменения аргумента должен быть достаточно малым, чтобы не пропустить возможные минимумы функции. На втором этапе осуществляется уточнение местоположения экстремума на интервалах унимодальности функции. Затем необходимо построить такую последов ательность точек 1 x , 2 x , 3 x , …, n x , чтобы экстремум функции ) ( x f находился в интервале неопределенности [ ] i i x x , 1 - , т. е. i extr i x x x < < - 1 . Алгоритм выбора и сравнения элементов последовательности { } i x называемый страт е- гией поиска положен в основу классификации методов прямого пои с ка [33].
114 § 6.2. Метод оптимального, пассивного поиска экстремума Метод решения поставленной задачи, в котором задается правило в ы- числения сразу всех точек 1 x , 2 x , 3 x , … , n x называется методом пассивного поиска . За extr x принимается такая точка i x для которой )) ( min( ) ( i i x f x f = . Соо т- ветствующая геометрическая иллюстрация приведена на рисунке 6.4. Рис. 6.4. Метод оптимального, пассивного поиска экстремума Традиционно этот ме тод используется в случае табличного способа о п- редел е ния значений аргумента и функции в соответствующих точках. x 1 x 2 x 3 x … 1 - i x i x 1 + i x … n x y 1 y 2 y 3 y … 1 - i y i y 1 + i y … n y В сил у выбора точки i extr x x = справедливы неравенства ) ( ) ( 1 i i x f x f > - и ) ( ) ( 1 + < i i x f x f , поэтому следует, что extr x принадлежит [ ] 1 1 , + - i i x x . Так как пол о- жение точки экстремума extr x н а отрезке [ ] b a , заранее неизвестно, то справе д- ливо следующая гарантированная оценка погрешности мет о да: 1 max + - ᆪ D i i extr x x x Если величина шага между точками 1 x , 2 x , 3 x , … , n x постоянна, то п о- грешность может быть вычислена по выражению: 1 1 + D = + - ᆪ D n n a b x extr f 0 x a b i x 1 - i x 1 + i x n x i y 1 - i y 1 + i y n y
115 § 6.3. Метод деления отрезка пополам Реализация этого метода для поиска экстремума основана на использ о- вании принципа последовательного сокращения о трезка локализации. При этом учитывается следующее предположение: если функция унимодальна на отрезке [ ] b a , , то она унимодальна и на любом отрезке [ ] [ ] b a d c , , ᅫ . Для удобства изложения обозначим отрезок [ ] b a , ч ерез ] , [ 0 0 b a . Поиск экстремума начинают с выбора на отрезке ] , [ 0 0 b a двух симметрично расположенных точек: . 2 ; 2 0 0 0 0 0 0 d b d a + + = - + = b a b a Здесь δ – параметр метода, 2 0 a b - < < d . Далее вычисляют значения функции в точках 0 a и 0 b ᆴ ) ( 0 a f и ) ( 0 b f . Сравнение этих значений в силу сделанного предположения позволяет сократить отрезок локализации сл е дующим образом: если ) ( ) ( 0 0 b a f f < , то ] , [ ] , [ 0 0 1 1 b a b a x extr = ᅫ ; если ) ( ) ( 0 0 b a f f > , то ]. , [ ] , [ 0 0 1 1 b b a x extr a = ᅫ Продолжая далее этот процесс, образуется последовательность сокращающи х- ся отрезков локализации (см. рис. 6.5). Обозначим через i i i a b - = D длину отрезк а ] , [ i i b a тогда погрешность i - го приближения определяется по формуле: d d 2 2 2 + - D = D i i i extr x Заметим, что i D убывает и при ᆬ ᆴ i стремится к величине d 2 . Вычи с- ления следует прекратить, как только окажется выполнимым неравенс т- во: e ᆪ D i . Т о гда за приближение к ответу с точностью e принимают i extr x x = . При реализации этого метода на ЭВМ необходимо учитывать, что в ы- числ ения значений функции f будут производиться с погрешностью. Для того чтобы знак разности ) ( ) ( * * * b a f f n - совпадал со знаком разности ) ( ) ( n n f f b a - , необходимо, чтобы выполнялось условие e d > . В свя зи с этим нельзя задавать значение d слишком малым.
116 Рис. 6.5. Схема поиска экстремума одномерной функции методом деления о т резка пополам § 6.4. Метод золотого сечения Следует отметить, что метод деления отрезка пополам требует на ка ж- дой итерации вычисления двух новых значений функции, так как найденные на предыдущей итерации в точках i a и i b значения далее не используются. О д- на ко одна из этих точек является внутренней для отрезка ] , [ i i b a и поэтому дальнейшее сокращение отрезка можно произвести, вычислив дополнительно значения функции лишь в одной новой точке. К методам, требующим на ка ж- дой итерации (кроме первой) расчета лишь одного нового значения функции – ) ( x f относятся методы зол о того сечения и Фибоначчи. Золотым сечением отрезка называется такое разбиение отрезка на две неравные части, при котором отношение длины всего отрезка к длине его большой части равно отношению длины большей части к длине меньшей ча с- ти о т резка. f 0 x 0 b 0 a 0 a ) ( 0 a f 0 b ) ( 0 b f 1 a 1 b 2 a 2 b 3 a 3 b 1 b 1 a 2 a 2 b 3 a 3 b d - d + d - d - d - d + d + d + ) ( 1 b f ) ( 3 a f ) ( 2 a f ) ( 3 b f extr x extr y ) ( x f y = 1 - е приближ е ние 2 - е приближение 3 - е приближение 4 - е приближ е ние
Соотношения, с помощью которых определяются значения точек ра з биения отрезка в соответствии с правилом золотого сечения. b a x 382 , 0 618 , 0 1 + = b a x 618 , 0 382 , 0 2 + = Затем производят вычисление значений функции в найденных точках - ) ( 1 x f и ) ( 2 x f . Если ) ( ) ( 2 1 x f x f < , то выбирают для дальнейшего деления отр е зок [ ] 2 , x a , если же ) ( ) ( 2 1 x f x f > , то выбирают [ ] b x , 1 . В первом случае одной из двух делящих точек выбранного отрезка будет 1 x , во втором – 2 x . Это следует из свойств золотого сечения (рис. 6.6). Таким образом, из двух значений функции, необход имых на новом этапе приближения, вычисляется всего одно: другое было получено на предыдущем этапе. Итеративные приближения продолжают осуществлять до тех пор, пока e ᆪ - + i i x x 1 (см. рис. 6.7), где e – погрешность вычислений (з аданная то ч ность). При использовании перечисленных выше методов поиска экстремумов функции необходимо понимать, что при наличии погрешности в вычислениях значений функции достижимая точность ограничена снизу величиной радиуса интервала неопределенности, чт о не позволяет найти на 6 – разрядной дес я тичной ЭВМ точку локального экстремума функции с точностью менее чем 2*10 4 . Решение задачи минимизации существенно усложняется, если на знач е ние функции накладываются случайные ошибки. Так бывает, например, тогда, когда значения функции получают в результате измерений какой - либо физ и ческой величины. В том случае, когда ошибки являются случайными велич и нами и обладают определенными вероятностными характеристиками, для п о иска экстремума используют методы статистическ ой аппроксимации [33].
118 Рис. 6.6. Графическая интерпретация метода золотого с е чения Рис. 6.7. Алгоритм поиска минимума функции на отрезке [ a , b ] методом зол о то го сечения f 0 x 0 b 0 a 0 1 x ) ( 0 1 x f 0 2 x ) ( 3 2 x f 1 a 1 b 2 a 2 b 3 a 3 b 1 2 x 1 1 x 2 1 x 2 2 x 3 1 x 3 2 x ) ( 1 2 x f ) ( 3 1 x f ) ( 2 1 x f ) ( 2 2 x f extr x extr y ) ( 1 1 x f ) ( 0 2 x f ) ( x f y = 1 - е приближ е ние 2 - е приближ е ние 3 - е приближ е ние 4 - е приближ е ние начало вывод окончание ввод e , , b a ) ( ; 382 , 0 618 , 0 1 1 1 x f y b a x = + = ) ( ; 618 , 0 382 , 0 2 2 2 x f y b a x = + = e < - i i a b 2 1 y y > Да Нет Нет Да 2 ) ( b a x extr + = 1 2 1 2 2 ; ; y y x x x b = = = 2 1 2 1 1 ; ; y y x x x a = = = b a x 382 , 0 618 , 0 1 + = ) ( 1 1 x f y = b a x 618 , 0 382 , 0 1 + = ) ( 2 2 x f y = extr x
119 § 6.5. Программная реализация численных методов поиска экстр е- мума функции одной переменной Поиск экстремумов функций одной переменной является самостоятел ь- ной и часто встречаемой вычислительной задачей [18 - 20]. Наиболее простым методом оп ределения значения максимума или минимума некоторой функции ) ( x f является метод деления интервала поиска ] , [ b a пополам. Листинг по д- программы - функции DelPol , реализующей этот метод, представлен в листинге 6.1. Подпрограм ма DelPol возвращает значение экстремума аналитической функции func при следующих формальных входных параметрах: a и b соо т- ветственно нижняя и верхняя граница отрезка унимодальности; e - величина задаваемой п о грешности результата.  Листинг 6.1. #include<math.h> // директива препроцессора float DelPol( float (*func)(float), float a, float b, float e ) { float c, d, k, l, x; // описание локальных переменных while( fabs( b – a ) > 2 * e ) { c = ( a + b - e ) / 2.; // вычисление симметрично расположенных абсцисс d = ( a + b + e ) / 2.; x = c; k = func( x ); // вычисление значений функции x = d; l = func( x ); if( k > l ) b = d; // изменение отрезк а унимодальности else a = c; } x = ( a + b ) / 2.; // вычисление корня решения return( x ); } Более эффективным методом поиска экстремума функции является м е- тод золотого сечения. Текст подпрограммы метода золотого сечения Au пре д- ставлен в листин ге 6.2. Список входных параметров этой функции совпадает с с о ответствующим списком подпрограммы DelPol .  Листинг 6.2. #include<math.h> // директива препроцессора
120 float Au(float (*func)(float), float a, float b, float e) { float k, d, c, m, l, x; // опи сание локальных переменных k = ( sqrt( 5 ) – 1 ) / 2.; // коэффициент дробления отрезка унимодальности c = a + (( 1 - k ) * ( b - a )); // абсцисса 1 x x = c; l = func( x ); // вычисление значения функции ) ( 1 x f d = a + ( k * ( b - a )); // абсцисса 2 x x = d; m = func( x ); // вычисление значения функции ) ( 2 x f while( fabs( d – c ) > e ) // основной итеративный цикл { if( l > m ) // изменение диапазона поиска { b = d; d = c; m = l; c = a + ( 1 - k ) * ( b - a ); // вычисление значения приближения x = c; l = func( x ); } else{ a = c; c = d; l = m; d = a + k * ( b - a ); // вычисление значения прибли жения x = d; m = func( x ); } } x = ( c + d ) / 2.; // вычисление значения экстремума return( x ); // оператор возврата } Метод золотого сечения иногда сочетают с одним из методов аппрокс и- мации минимизируемой функции, которую в области экст ремума обычно пр и- ближают параболой, минимум которой определяется по аналитической инте р- поляционной формуле. Текст такой подпрограммы, полученный путем тран с- ляции фортран - программы [9] приведен в листинге 6.3. Входные параметры функции Fmin определяют исход ный интервал ] , [ bx ax на котором определена функция func ; tol - параметр, который задает желаемую длину интервала н е- определенности (величину погрешности). Идеология построения подрограммы Fmin совпадает с ранее приведенной в данном пособии подпрограммой для решения нелинейных уравнений Zeroin . Обе подпрограммы пытаются умен ь- шить длину интервала поиска, пока она не станет меньше заданной границы.
121 Есть, однако, и важное различие между двумя подпрограммами, которое вли я- ет на выбор границ. Если 0 ) ( = x f , а 0 ) ( ᄍ ᄁ x f , то для малых e e e e e c x f x f x f x f ᄏ + ᄁ ᄁ + ᄁ + = + ... 2 ) ( ) ( ) ( ) ( 2 , где ) ( x f c ᄁ = . Малые изменения в x вызывают пропорционально малые изменения в ) ( x f . Разумно, поэтому, выбирать границу погрешности для Zeroin примерно той же величины, что и ошибки в значениях функции. Зачастую эти ошибки имеют порядок ошибки округления в вычислительной машине. Однако если мы разыскива ем точку минимума, где 0 ) ( = ᄁ x f , а 0 ) ( ᄍ ᄁ ᄁ x f , то для малых e 2 2 ) ( ... 2 ) ( ) ( ) ( e e e c x f x f x f x f + ᄏ + ᄁ ᄁ + = + , где 2 / ) ( x f c ᄁ ᄁ = . Изменение порядка e в x теперь вызывает измене ние в ) ( x f порядка 2 e . Другими словами, простые нули функции часто можно найти с почти полной машинной точностью, а точки, где функция достигает минимума – лишь с примерно половинной точностью. Таким образом, Fmin с большей вероятн о- стью, чем Zeroin , игнорирует малые значения параметра tol .  Листинг 6.3. #include<math.h> // директива препроцессора float Fmin( float (*func)(float), float ax, float bx, float tol ) { float a, b, c , d, e, eps, xm, p , q, r, // описание локальных переменных tol1, tol2, u, v, w, fu, fv, fw, fx, x; c = 0.5 * ( 3. - sqrt(5.0)); /* возведенная в квадрат величина, обратная к золотому сечению */ // eps - равно квадратному корню из относительно машинной т очности eps = 1.00; do{ eps = eps / 2.00; tol1 = 1.0 + eps; }while( tol1 > 1.00 );
122 eps = sqrt( eps ); // присвоение начальных значений a = ax; b = bx; v = a + c * ( b - a ); w = v; x = v; e = 0.0; fx = func( x ); fv = fx; fw = fx; // основной цикл поиска экстремума do{ xm = 0.5 * ( a + b ); tol1 = eps * fabs( x ) + tol / 3.0; tol2 = 2.0 * tol1; // построение пораболы if( fabs( e ) > tol1 ) { r = ( x - w ) * ( fx - fv ); q = ( x - v ) * ( fx - fw ); p = ( x - v ) * q - ( x - w ) * r; q = 2.00 * ( q - r ); if( q > 0.0 ) p = - p; q = fabs( q ); r = e; e = d; // приемлима ли парабола if( fabs( p ) < fabs( 0.5 * q * r ) || p > q * ( a - x ) || p < q * ( b - x ) ){ d = p / q; // шаг параболической интерполяции u = x + d; /* не следует вычислять func() слишком близко к ax или bx */ if(( u - a ) < tol2 && x != xm ) d = tol1 * ( xm - x ) / fabs( xm - x ); if(( b - u ) < tol2 && x != xm ) d = tol1 * ( xm - x ) / fabs( xm - x ); } else{ if( x >= xm ) e = a - x; else e = b - x; d = c * e; } } // шаг золотого сечения else{ if( x >= xm ) e = a - x; else e = b - x; d = c * e; } // не следует вычислять func() слишком близко к x if( fabs( d ) >= tol1 ) u = x + d; else u = x + tol1 * d / fabs( d ); fu = func( u ); // присвоить новые значения параметрам a, b, v, w, x
123 if( fu < fx ) { if( u < x ) a = u; else b = u; if( fu <= fw || w == x ) { v = w; fv = fw; w = u; fw = fu; continue; } if( fu <= fv || v == x || v == w ) { v = u; fv = fu; continue; } continue; } if( u >= x ) a = x; else b = x; v = w; fv = fw; w = x; fw = fx; x = u; fx = fu; continue; // проверка условия окончания поиска }while( fabs( x - xm ) > (tol2 - 0.5 * ( b - a ))); // окончание осно вного цикла return( x ); } Программа, иллюстрирующая принцип использования вышеприведе н- ных подпрограмм по определению экстремума некоторой функциональной з а- висимости представлена в листинге 6.4. В качестве тестовой минимизируемой функции взято уравнен ие 5 2 ) ( 3 - - = x x x f , характеризующее квадратный мн о- гочлен. При величине заданной точности вычислений 5 10 0 , 1 - ᅲ значение эк с- тремума составляет 81650 , 0 = extr x .  Листинг 6.4. #include<conio.h> // директивы препроцессора #include <stdio.h> #include "minmax2d.h" // библиотека функций по поиску экстремума
124 void main() // головная функция { float func( float ); // функция содержащая экстремум float e, x0, xn, max, t; // описание локальных переменных x0 = 0; // границы диапазон а унимодальности xn = 5; e = 1.E - 05; // погрешность вычислений clrscr(); // очистка экрана max = DelPol( func, x0, xn, e ); // обращение к методу деления отрезка поп о лам printf(" \ n Метод Дихотомии:"); printf(" \ n Точка максимума X=%f", max); t = f unc( max ); // вычисление значение функции в экстремальной точке printf(" \ n Наибольшее значение функции =%f \ n", t); max = Au( func, x0, xn, e ); // обращение к методу золотого сечения printf(" \ n Метод Золотого сечения:"); printf(" \ n Точка максимума X= %f", max); t = func( max ); // вычисление значение функции в экстремальной точке printf(" \ n Наибольшее значение функции =%f \ n", t); max = Fmin( func, x0, xn, e); // обращение к комбинированному методу printf(" \ n \ n Метод Fmin:"); printf(" \ n Точка макс имума X=%f", max); t = func( max ); // вычисление значение функции в экстремальной точке printf(" \ n Наибольшее значение функции =%f \ n", t); getch(); } float func(float x) // Функция, экстремум которой отыскивается в данном прим е ре { float f; f = x * ( x * x - 2. ) - 5.; // тестовая функция return( f ); // оператор возврата } В строке #include " minmax 2 d .h" выполняется подключение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм, необходимых для поиска значения экстремума некоторой фун к- циональной зависимости. Текст файла minmax 2 d . h представлен в ли с тинге 6.5.  Листинг 6.5. /* объявление подпрограмм - функций предназначенных для определения экстремума некоторой функции */ // метод деления отрезка пополам float DelPol( float (*)(float), float, float, float ); // метод золотого сечения float Au( float (*)(float), float, float, float ); // комбинированный метод float Fmin( float (*)(float), float, float, float );
125 Глава 7. МЕТОДЫ МНОГОМЕРНОЙ ОПТИМИЗАЦИИ § 7.1. Многомерная оптимизация теплоэнергетических установок на ЭВМ Основная цель оптимизации теплоэнергетических установок – опред е- ление значения термодинамических, конструктивных, технологических, ко м- поновочных пар аметров, обеспечивающих наивысшую экономичность и н а- дежность работы этих устройств. Число таких параметров может достигать н е- скольких сотен. Такая задача является одной из наиболее часто встречающи х- ся в инженерной практике и н а учных исследованиях вычислите льных задач – оптимизации функции n переменных ) ,..., , , ( 3 2 1 n x x x x f . Функция f (целевая функция) мин и мизируется на некотором множестве { } m R X = . В случае, когда { } m R X = (т.е. огр аничения на переменные 1 x , 2 x , 3 x , …, n x отсутствуют), пр и- нято говорить о задаче безусловной оптимизации. В противном случае (к о гда { } m R X ᄍ ) говорят о задач е условной оптимизации [47] . При оптимизации теплоэнергетических установок зачастую в качестве критерия оптимальности рассматривается или максимум тепловой экономи ч- ности, или минимум суммарных расчетных затрат. В этих случаях целевой функцией является или выражение удельного расхода теплоты топлива на единицу вырабатываемой электрической и тепловой энергии (к.п.д.), или в ы- ражение суммарных расчетных затрат. В качестве ограничений обычно ра с- сматриваются допустимые значения давлений, температур, скоростей те пл о- носителей, температур стенки, пределов прочности материалов, многие другие факторы. При решении таких задач целевая функция и функции ограничений (все или частично) нелинейны относительно оптимизируемых переменных. Оптимизируемыми переменными могут быть давление пара в регенер а- тивных отборах, начальные или конечные параметры энергоустановки, разм е- ры поверхностей нагрева, количество и расположение поверхностей нагрева, диаметры и шаги труб и т.д. [49].
126 Оптимизация параметров и характеристик оборудования теплоэнергет и- ческих установок очень часто сопряжена со многими техническими огранич е- ниями. Их учет, как правило, не только влияет на оптимальные значения в ы- бираемых параметров, но и может существенно изменить постановку задачи и сам метод или порядок их оп ределения. Технические ограничения могут иметь место в двух характерных случ а- ях: 1 – ограничено изменение самих исследуемых параметров, что возможно учесть при их оптимизации аналитическим методом в явном виде; 2 – огран и- чены промежуточные величины, влияющ ие на выбор исследуемых параме т- ров. В этом случае необходимо вводить дополнительные условия, обеспеч и- вающие соблюдение технических ограничений. Характерными примерами технических ограничений с точки зрения их влияния на методику оптимизации энергоустановок могут являться следу ю- щие ситуации: 1. В отличие от параметров рабочих тел многие характеристики обор у- дования энергоустановок не могут изменяться непрерывно. Так, число выхл о- пов паровой турбины, регенеративных подогревателей, ступеней конденсации отработав шего пара изменяются дискретно от одного целого числа к другому. Однако аналитический расчет оптимальных значений этих величин дает, как правило, их нецелочисленные значения m z n >? < < , где n и m – ц елые полож и- тельные числа. Хотя на экстремум исследуется формально непрерывная фун к- ция, физический смысл имеют лишь различные ее значения, равные ц е лому числу. 2. Переход от одновальной к двух - или трехвальной конструкции турб о- установки вызывает скачкообраз ное увеличение затрат на строительство гла в- ного корпуса и пр. При этом имеются определенные участки, на которых и з- менения искомого параметра не изменяют заданного числа валов турбины. Соответственно критерий оптимума должен исследоваться на экстремум по ка ждому из участков. 
127 3. При несовпадении оптимальных величин давления регенеративного отбора и ближайшего давления пара на выходе из соответствующей ступени турбины приходится их приравнивать по конструктивным условиям. После такого вынужденного отбора на р егенерацию из камеры "ближайшей" ступени это давление отбора, строго говоря, становиться уже не оптимальным, так как появляется дополнительное уравнение связи. 4. Оптимизация характеристик элементов парогенераторов, связанная с выбором параметров турбоуста новки, всегда сопровождается ограничениями по условиям прочности и технологическим условиям. 5. При оптимизации скоростей движения теплоносителей и рабочих сред ограничения возникают по причинам золового заноса или износа, ухудшения надежности охлаждения поверхностей нагрева и др. 6. При расчете оптимального конечного давления пара конденсационных установок следует учитывать возможность достижения его предельного знач е- ния в холодное время года. 7. Существенным видом технического ограничения является необхо д и- мость соблюдения требований унификации оборудования, так как производс т- во серийных энергоблоков заданной мощности с большим числом оптимал ь- ных типоразмеров оборудования экономически не оправдано и технически н е- возможно. 8. В настоящее время все большее з начение приобретают вопросы вли я- ния работы тепловых электростанций на состояние окружающей среды. Пр о- блема необходимости очистки продуктов сгорания от выбросов вредных в е- ществ вынуждает разрабатывать новые технологические схемы, ограничивая при этом технич еские характеристики оборудования. Таким образом, технические ограничения в каждом конкретном случае вынуждают переходить к комплексной оптимизации с независимыми пер е- менными, имеющей свои особые условия, подлежащие обязательному учету. Если для всех { } X x i ᅫ выполняется неравенство ) ( ) ( i extr x f x f < , то точка 
128 { } X x extr ᅫ называется точкой глобального минимума функции f на множестве { } X . В этом случае значение ) ( extr x f называется минимальным значением фун к- ции f на { } X . Точка { } X x extr ᅫ называется точкой локального минимума функции f , если существует такая d – окре стность d x этой точки, что для всех d x x ᅫ и { } X x ᅫ d выполняется неравенство ) ( ) ( x f x f extr ᆪ . Множество точек, для которых целевая функция принимает постоянное значение C x f = ) ( , наз ывается поверхностью уровня . В случае, когда количес т- во переменных 2 = n , это множество называют линией уровня. На рисунке 7.1 показано, как получаются линии уровня для функции двух переменных. Функция ) , ( 2 1 x x f задает в тр ехмерном пространстве некоторую повер х- ность ) , ( 2 1 x x f S = , низшая точка которой и дает решение оптимизации. Для т о- го чтобы изобразить рельеф этой поверхности, проведем несколько равноо т- стоящих плоскостей const S = . Проекции на плоск ость 2 1 X OX линии пересеч е- ния этих плоскостей с поверхностью и дают линии уровня. f 1 x 2 x extr x ) , ( 2 1 x x f S = Рис. 7.1. Графическая интерпретация задачи многомерной оптимизации 
129 Подавляющее большинство методов решения задачи безусловной опт и- мизации в действительности являются методами поиска точки локального о п- тиму ма. К числу таких методов относятся метод покоординатного спуска, гр а- диентный метод, метод оврагов, метод Ньютона и т. д. § 7.2. Понятие о методах спуска. Покоординатный спуск Большинство итерационных методов, применяемых для решения задачи безусловной о птимизации функции многих переменных, относятся к классу методов спуска, т. е. таких методов, для которых каждая итерация (шаг) пр и- водит к уменьшению значения целевой функции: ) ( ) ( 1 i i x f x f < + для всех 0 ᄍ i . Типичная структура ) 1 ( + i - й итерации метода спуска выглядит следу ю- щим образом: 1. Находят нулевой вектор i p , называемый направлением спуска. Этот вектор должен быть таким, чтобы при всех достаточно малых 0 > i a выполн я- лось нерав енство: ) ( ) ( i i i i x f p x f < + a , где i a - шаг спуска. 2. Вычисляют положительное число i a ( шаг спуска) , для которого в ы- полняе т ся вышеприведенное неравенство. 3. За очередное приближение к точке минимума принимают i i i i p x x a + = + 1 . 4. Проверяют выполнение критерия итераций. Если i i x x - + 1 меньше заданной погрешности e , то итерации прекращают и полагают 1 + = i extr x x . В противном случае итерации продолж ают далее. В методе покоординатного спуска в качестве очередного направления спуска выбирают направление одной из координатных осей. Наиболее извес т- ным является метод циклического покоординатного спуска . Алгоритм коо р- динатного спуска заключается в сведени и многомерной задачи к последов а- тельным одномерным задачам, которые в свою очередь решаются методами 
130 минимизации функции одной переменной, например, методом золотого сеч е- ния. Опишем цикл решения задачи этим методом для двумерного варианта (фун к ции двух пе ременных – 1 x и 2 x ). Вначале в прямоугольной области (см. рис. 7.2) фиксируют координату 0 2 2 x x = , тогда функция ) , ( 0 2 1 x x f будет з а висеть только от одной переменной – 1 x . Рис. 7.2. Метод покоординатного спуска на примере рельефа функции двух переменных ) , ( 2 1 x x f составленного из линий уровня Найдем экстремум 1 x функции ) , ( 0 2 1 1 x x f , изменяя координату 1 x , напр и- мер, по методу золотого сечения. На рисунке 7.2 минимум располагается в точке А. Затем фиксируют первый аргумент 1 1 x и находят минимум 1 2 x фун к- ции ) , ( 1 2 1 1 x x f относительно второго ар гумента 1 1 x . Получаем точку В со знач е- нием функции ) , ( 1 2 1 1 x x f . Аналогичным образом переходят последовательно к точкам С, D и т.д. Если в области экстремума функция ) , ( 2 1 x x f достаточно гладкая, то процесс спу ска по координатам будет линейно сходится к оптимуму. В сход я- щемся процессе с приближением к оптимуму функции ) , ( 2 1 x x f рассто я ние между последовательными точками однокоординатных экстремумов будет ) , ( 0 2 0 1 x x f ) , ( 0 2 1 1 x x f A ) , ( 1 2 1 1 x x f B ) , ( 1 2 2 1 x x f C D ) , ( 2 2 2 1 x x f 1 x 2 x extr x 
131 стремиться к нулю. Поэтому в качестве критер иев окончания итерационного процесса координатного спуска выбираются условия: 1 1 1 1 e ᆪ - + i i x x , 2 2 1 2 e ᆪ - + i i x x , где 1 e , 2 e – заданные допустимые абсолютные погрешности определения м е- стоположения опт имального значения по первой и второй координатам. Следует отметить, что при большом числе переменных метод покоорд и- натного спуска может привести к очень большому времени счета. В этом о т- ношении более эффективным является метод градиентного спуска. § 7.3. Градиентный метод Этот метод впервые был предложен в 1845 г. Коши, а в настоящее время его принято называть мет о дом наискорейшего спуска . Известно, что градиент функции ) ,..., , , ( 3 2 1 n x x x x f в каждой точке напра в- лен в сторону наискорейшего, локаль ного возрастания значений этой функции. Именно это свойство использует метод градиентного спуска. Процесс оптим и- зации по градиентному методу заключается в определении направления наи с- корейшего изменения целевой функции и некоторого перемещения по этому нап равлению. Направление наискорейшего изменения целевой функции опр е- деляется направлением вектора - градиента оптимизируемой функции. Если минимизируемая функция дифференцируема и ограничена снизу, а ее град и- ент удовлетворяет условию Липшица, то итерационный п р о цесс i i i k i k p x x a - = + 1 будет сходиться к минимуму функции f из произвольной начальной точки с координатами n x x x x ,..., , , 3 2 1 . Параметр i a определяет длину шага в направлении спуска, i p – град и- ент направления изменения i - го параметра. На рисунке 7.3, изображена ге о- метрическая иллюстрация этого метода для минимизации функции двух пер е- ме н ных. Из начальной точки ) , ( 0 2 0 1 x x перпендикулярно линии уров ня ) ( ) ( 0 x f x f = в направлении 0 0 g p - = продолжают спуск до тех пор, пока не б у- дет достигнуто минимальное вдоль луча 0 0 0 p x a + значение фун к ции f . В 
132 найденной точке ) , ( 1 2 1 1 x x этот л уч касается линии уровня ) ( ) ( 1 x f x f = . Затем из точки 1 x проводят спуск в перпендикулярном направлении линии уровня 1 1 g p - = до тех пор, п о ка соответствующий луч не коснется в точке ) , ( 2 2 2 1 x x про ходящей через эту точку линии уровня и т.д. Градиентный метод сходится достаточно быстро, если поверхности уровня минимизируемой функции бли з- ки к сферам, а линии уровня близки к окружностям. Следует отметить, что на каждой итерации гр а диентного метода выбо р шага i a предполагает решение задачи одномерной минимизации. Рис. 7.3. Схема поиска оптимального значения градиентным методом § 7.4. Метод случайного поиска Рассмотрим суть метода на примере функции двух переменных. Пусть тр е буется найти минимум функции, представленной в виде поверхности. Вначале выбирают произвольную точку из области аргументов ) , ( 0 2 0 1 x x и в ней вычисляют значение функции. Затем в окрестности некоторого радиуса вокруг начальной точки случайным образом берем несколько других точек (например, с помощью генератора случайных чисел). Если в какой - то из них значение функции меньше, чем в исходной, то принимают ее за центр новой ) , ( 0 2 0 1 x x f ) , ( 1 2 1 1 x x f ) , ( 2 2 2 1 x x f 1 x 2 x extr x 0 g 0 p 1 g 1 p 
133 окружности (см. рис. 7.4). Если такой точки не находится, то суж ают радиус окрестности для уточнения координат минимума. Метод не безупречен, но во многих случаях работает удовлетворительно. Конечно, он требует большого объема вычислений, что увеличивает время счета, но при этом не выдвигается никаких специальных требо ваний к виду функции. Генератор псевдослучайных чисел может быть реализован либо с пом о- щью стандартных функций, имеющихся практически в любом современном языке программирования, либо с помощью простого приема. Задается прои з- вольное число между нулем и еди ницей, а затем каждое новое значение сл у- чайной величины вычисляется через предыд у щее по формуле [ ] k k k z z z 10 10 1 - = + , где квадратные скобки обозначают целую часть случайной величины. В алгоритме (рис. 7.5) предусмотрен автоматический останов после «неуд ачных» сравнений, когда все новые значения функции больше старого. Рис. 7.4. Иллюстрация метода случайного поиска Наиболее полный обзор численных методов применительно к решению задачи оптимизации теплоэнергетических установок приведен в рабо тах [47]. f 1 x 2 x extr x ) , ( 2 1 x x f S = 
134 Рис. 7.5. Алгоритм решения задачи многомерной оптимизации методом случайного поиска § 7.5. Программная реализация численных методов многомерной оптимиз а ции Библиотеки подпрограмм для решения задачи многомерн ой оптимиз а- ции классифицируются соответственно тому, решают ли они безусловные з а- начало вывод окончание ввод e , , , , 0 0 2 1 n h x x 0 h h = 0 n n = e < h генерация псевдослучайных чисел 1 1 , h z 1 2 1 2 1 1 1 1 h z h x x h x x i i i i + = + = + + ) , ( ) , ( 2 1 1 2 1 1 i i i i x x f x x f > + + 1 - = n n i i x x 1 1 1 = + i i x x 2 1 2 = + 0 n n = 0 = n 2 h h = Нет Да Да Нет Да Нет 2 1 ` , x x 
135 дачи или задачи с ограничениями, является ли целевая функция суммой ква д- ратов или произвольной нелинейной функцией, требуется или нет вычисление производных. Методы такой опти мизации описаны в [3, 10, 33, 47]. Из всего мн о гообразия методов многомерной оптимизации ограничимся рассмотрением двух относительно простых с точки зрения их программной реализации мет о- дов поиска минимума ) ,..., , , ( 3 2 1 n x x x x f - покоординатного спуска и градиентн о- го метода. Метод покоординатного спуска представлен в листинге 7.1 подпрогра м- мой Spusk 3 d . Данная подпрограмма позволяет выполнить нахождение точки минимума с координатами, хранимыми в массиве [] x и значение функции F в данной точке по следующим входным параметрам: func – подпрограмма - функция, содержащая целевую функцию; n – количество параметров оптим и- зации; h – величина начального шага поиск а; e – заданная точность получа е- мого реш е ния.  Листинг 7.1. #include<math.h> // директива препроцессора void Spusk3d( float (*func)(float *), int n, float h, float e, float x[], float *F ) // заголовок функции { flo at b, s , c, f; // описание локальных переменных int i; s = h; do{ // основной цикл for( i = 0; i < n; i++ ) // поиск значений по отдельной координате { b = 0.9E+98; do{ do{ x[i] = x[i] + h; f = func( x ); c = b; b = f; }while( f - c < 0 ); // погрешность определения минимума h = - h / 3.; // изменение величины шага в случае необходимости }while( fabs( h ) >= fabs( s / 3. ) ); h = s; } s = s / 9.; h = s; }while( e / 9. <= s ); // окончание о сновного цикла *F = func( x ); // вычисление значения функции в точке экстремума } 
136 Метод градиентного спуска оформлен в виде подпрограммы SkSpusk 3 d и представлен в листинге 7.2. Список формальных входных и выходных пар а- метров этой подпрограммы совпада ет с соответствующим списком подпр о- граммы Spusk 3 d .  Листинг 7.2. #include<math.h> // директива препроцессора void SkSpusk3d( float (*func)(float *), int n, float h, float e, float x [], float *F ) // заголовок функции { float b, c, k, f; // описание локальных переменных int i; do{ // основной цикл for( i = 0; i < n; i++ ) // поиск значений по отдельной координате { b = 0.9E+98; do{ x[i] = x[i] + h; f = func( x ); c = b; b = f; }while( f - c < 0); / / погрешность определения минимума } h = - h / 5.; // изменение величины шага в случае необходимости }while(fabs( h ) > e / 5.); // окончание основного цикла *F = func( x ); // вычисление значения функции в точке экстремума } С помощью гр адиентного спуска минимум гладких функций находится значительно быстрее, чем при использовании координатного спуска. Однако наряду с вычислением функции на каждой итерации градиентного метода приходится вычислять составляющие градиента этой функции. Кроме того, сходимость итерационного процесса может быть медленной для функций, имеющих овражный рельеф. В этом случае рекомендуется использовать так называемый овра ж ный метод [33]. Для иллюстрации использования вышеприведенных подпрограмм - функций для нахожде ния экстремумов многомерной функции в листинге 7.3 приведен текст головной программы для примера вычисления функции 3 3 2 2 1 3 2 1 3 2 1 ) exp( ) , , ( x x x x x x x x x f + + = трех переменных. Для начальных значений 5 , 0 30 20 10 = = = x x x , шага 5 , 0 = h и погрешности 4 10 1 - ᅲ = e получают следующие 
137 результаты решения задачи оптимизации: 9999745973 , 0 1 = m x , 999974597 , 1 2 = m x , 999979597 , 2 3 = m x и 735451794 , 3 ) ( = <8 i x f .  Листинг 7.3. #include<conio.h> // директивы препроцессора #include<stdio.h> #in clude<math.h> #include "minmax3d.h" // обращение к библиотеке функций многомерной оптимизации void main() // головная функция { float func( float * ); // оптимизируемая функция float x [3] = { 0.5, 0.5, 0.5 }; // начальное приближение float F, g = 0.15 , /* шаг */ eps = 1.0 E - 04; /* точность вычислений */ int i, n=3; // число переменных Spusk3d( func, n, g, eps, x , &F ); // обращение к методу скоростного спуска clrscr(); printf(" \ nОптимизация многомерной функции методом координатного спуска"); for( i = 0; i < n; i++ ) // вывод результатов { printf(" \ n Min=%f", x [i]); } printf(" \ n F{min}=%f", F); SkSpusk3d( func, n, g, eps, x , &F ); // обращение к методу градиентного спуска printf(" \ nОптимизация многомерной функции методом скоростного спу ска"); for( i = 0; i < n; i++ ) // вывод результатов { printf(" \ n Min=%f", x[i]); } printf(" \ n F{min}=%f", F); getch(); } float func( float a[] ) // минимизируемая функция { float f; f = exp( a[0] + a[1] + a[2]) / ( a[0] * a[1] * a[1] * a[2] * a[2] * a[2] ); return( f ); } В строке #include " minmax 3 d .h" выполняется подключение заголовочного файла, в котором располагается описание используемых в головной функции подпрограмм, необходимых для поиска экстремума многомерной функции. Текст файла minmax 3 d . h пре д ставлен в листинге 7.4.  Листинг 7.4. // Библиотека подпрограмм - функций многомерной оптимизации void Spusk3d( float (*)(float *), int, float, float, float [], float * ); void SkSpusk3d( float (*)(float *), int, float, float, float [], float * );
138 Глава 8. МАТЕМАТИЧЕСКАЯ ОБРАБОТКА И АНАЛИЗ ДАННЫХ § 8.1. Обработка результатов испытаний и эксплуатационных пок а зателей теплоэнергетических установок Результаты испытаний и статистических наблюдений эксплуатации те п- лоэнергетического оборудования и отдельны х его элементов обычно пре д- ставляются в виде таблиц и графиков по типу ) ( x f y = . Поэтому всегда целес о- образно найти математическое выражение, достаточно точно (адекватно) оп и- сывающее эти зависимости. Аналитическая форма зависимостей наряду с удобством представления результатов может оказаться необходимой при дальнейшей оптимизации режимов работы, а также при обработке и использ о- вании экспериментальных зависимостей в ЭВМ для автоматизации процессов и их численного исследования [67]. Важнейшим принципом организации в ы- числительного эксперимента является системный подход, предполагающий рассмотрение всех средств как единой структуры, описываемой соответс т- вующей математической моделью. Математическая модель становится неотъемлемым элементом решения вычислительных задач, без построения которой невозможно осуществить пл а- нирование аналитического эксперимента, его проведение и обработку резул ь- татов. В самом деле, только наличие соотношений, связывающих искомые технико - экономические характеристики энерге тического объекта с его пар а- метрами, позволяет получить обоснованные суждения о перечне необходимых проектных и эксплуатационных мероприятий и их рациональной последов а- тельности. Для построения математической модели исследуемого процесса или устройства нео бходимо иметь весьма четкое представление о его структ у- ре, поведении отдельных элементов, взаимодействии между ними, влиянии различных факторов, а также реакции на изменение условий. Типичное математическое обеспечение решения подобного класса задач включает следующие операции и методы: интерполяцию и экстраполяцию функциональных зависимостей, их аппроксимацию, регрессионный и корр е- 
139 ляционный анализ, сглаживание данных и стат и стический анализ [29 - 32, 35 - 39]. § 8.2. Интерполяция и экстраполяция функциональных зависим о стей Одной из важнейших задач в процессе математического моделирования является вычисление значений функций, входящих в математическое описание модели. Используемые в математических моделях функции ) ( x f задаются ка к аналитическим способом, так и табличным, при котором функции известны только при дискретных значениях аргументов. Ограниченный объем памяти ЭВМ не позволяет хранить подобные таблицы функций, поэтому желательно иметь возможность "сгущать" таблицы, заданн ые с крупным шагом аргумента. Так, интерполяция по узловым точкам термодинамических таблиц является одним из методов определения физических параметров и свойств рабочих тел теплоэнергетических установок [49]. Интерполяция функции ) ( x f од ной п е- ременной x , заданной ) 1 ( + n узлами i x и ) ( i x f , где n i ,..., 3 , 2 , 1 , 0 = , заключается в нахождении значений ) ( x f по значениям x , находящимся в промежутках м е- жду узлами i x . Такие точки выбираются из таблиц согласно условию равн о- точности нелинейной интерполяции значений параметров по всей области их о п ределения. Существенным преимуществом определения параметров п утем прямой интерполяции по узловым точкам является отсутствие итерационных расчетов, зависящих от условий сходимости уравнений и от точности исхо д- ного приближения. Кроме того, при использовании такого подхода имеется возможность быстрого внесения изменени й и дополнений в соответствии с н о- выми данными о соотношениях между параметрами [48]. При реализации указанного метода в его логической части в наиболее общем случае должно быть предусмотрено: 1 – определение направления п о- иска по известным параметрам зна чений неизвестных величин; 2 – определ е- ние фазы (области) состояния рабочего тела, соответствующей значениям и з- вестных параметров; 3 – определение соседних узловых точек для искомой с о- 
140 вокупности параметров; 4 – выполнение интерполяции для определения зн а- че ний неизвестных характеристик по соседним узловым значениям этих пар а- метров. При этом функция в узлах i x заменяется тем или иным приближенным уравнением, например, полиномом ) ( x P , значения которого в узлах совпадают со значениями ) ( x f . Другими словами, ставится задача о построении функции, график которой проходит через заданные точки )) ( , ( i i x f x (см. рис. 8.1). Н е- трудно заметить, что выбор функции ) ( x P неоднозначен, та к как по заданной таблице x 0 x 1 x 2 x … 1 - i x i x 1 + i x … n x ) ( x f ) ( 0 x f ) ( 1 x f ) ( 2 x f … ) ( 1 - i x f ) ( i x f ) ( 1 + i x f … ) ( n x f можно построить бесконечно много интерполирующих функций. На практике, как правило, функц ию ) ( x P выбирают из достаточно узкого класса функций, в котором гарантируется единственность выбора. Весьма важным вопрос о методе интерполяции по узловым точкам та б- лицы является в связи с тем, что он тесно связан с вопросами о необходи мом объеме таблицы и точности определения межузловых значений параметров. Чем выше степень интерполирующего многочлена, тем либо больше допуст и- мый интервал между узловыми точками при данной требуемой точности, либо выше точность определения параметров при данном межузловом интервале. С другой стороны, с повышением степени интерполирующего многочлена тр е- буется учитывать большее число соседних узловых точек, что существенно усложняет алгоритм их выделения, увеличивает объем программы и время счета. Следовател ьно, наилучшее представление вида многочлена должно в ы- бираться с учетом указанных факторов в соответствии с характером изменения соотношений между параметрами в целом по всей области их практического прим е нения. 
141 Наиболее распространенным по дходом для интерполяции функции при ра в номерно расположенных узлах является использование формул Лагранжа, которые обесп е чивают наименьшее время интерполяции [15]: ) ( ) ( ) 1 ( ) ( 1 + + - = i i x pf x f p x f , где i x – начальный узел; 1 + i x – конечный узел; h x x p i - = , где i i x x h - = + 1 – шаг расположения узлов. При этом [ ] 1 , + ᅫ i i x x x – значение узла лежащего в ди а- пазоне [ ] 1 , + i i x x , в котором осуществляется поиск ) ( x f . Обоб щенная формула линейной интерполяции по Лагранжу выглядит следующим образом: i i i i i i x x x f x f x x x f x f - - - + = + + 1 1 )) ( ) ( )( ( ) ( ) ( . В случае, когда функциональная зависимость носит существенно нел и- нейный характер предпочтительно для интер поляции данных использовать квадратичную интерполяцию при числе у з лов равном трем: ) ( 2 ) 1 ( ) ( ) 1 ( ) ( 2 ) 1 ( ) ( 1 2 1 + - + + + + - = i i i x f p p x f p x f p p x f , где 1 1 - + - - = i i i x x x x p . 0 x n x i x 1 - i x 1 + i x 1 - n x ) ( i x f ) ( 1 - i x f ) ( 1 + i x f ) ( 1 - n x f f x ) ( n x f ) ( x P ) ( 0 x f x ? ) ( - x f Рис. 8.1. Интерполяция функционал ь ных зависимостей 
142 Еще более качественная интерполяция достигается использованием к у- бической интерполяции по четырем не равностоящим узл ам: ) ( 2 ) 1 ( ) ( 2 ) 2 )( 1 ( ) ( 2 ) 2 )( 1 ( ) ( 6 ) 2 )( 1 ( ) ( 2 2 1 2 1 + + - - + + - + - - - + - - - = i i i i x f p p x f p p p x f p p x f p p p x f где 1 2 - + - - = i i i x x x x p . Вышеприведенные многочлены Лагранжа, обеспечивающие интерпол я- цию функции ) ( x f при произвольном расположении узлов, могут использ о- ваться и для обратной интерполяции. Обратная интер поляция - процесс н а- хождения значений i x по заданным значениям ) ( i x f . При этом вместо знач е- ний i x вводятся значения ) ( i x f , а вместо ) ( i x f - значения i x . В том случае, к о- гда интерполяция используется для вычисления приближенного значения функции ) ( x f в точке x , не принадлежащей отрезку [ ] n x x , 0 ( отрезку наблюд е- ния ), принято говорить о том , что осуществляется экстраполяция . Экстрап о- ляция выполняется по отмеченным выше формулам, но с существенно бол ь- шей погрешностью. Этот метод приближения часто используют с целью пр о- гноз и рования характера протекания тех или иных процессов при значениях пара метров x , выходящих за пределы отрезков н а блюдения. § 8.3. Аппроксимация (приближение) функций В процессе построения математических моделей теплоэнергетических установок очень часто приходится иметь дело со сложными и громоздкими в ыражениями функциональных зависимостей. Например, учитываемые техн о- логические и материальные характеристики отдельных узлов установки пол у- чаются на основании совместного использования существующих нормативных методов теплового, гидравлического, аэродинамич еского, прочностного и ряда других расчетов. В общем виде они являются различного рода комбинациями алгебраических и трансцендентных уравнений от большого числа параметров. 
143 Использование их в ряде случаев требует значительного объема машинной памяти и врем ени вычислений. При этом некоторые характеристики довольно трудно выразить в виде явной функции от узловых параметров или от их пр о- межуточных функций, что приводит к необходимости использования итерац и- онных методов вычислений. Аналогичная ситуация возникае т при описании теплофизических свойств и параметров теплоносителей, характеристик эл е- ментов тепловых схем, режимных и технико - экономических показателей раб о- ты ТЭС и т.д. Вместе с тем для относительно широких областей технически допуст и- мых значений параме тров теплоэнергетических установок указанные сложные функции дают достаточно плавные монотонные зависимости. Это позволяет применить метод их приближенного аналитического описания более простыми алгебраическими функциями. Приближение функции ) ( x f более простой функцией ) ( x j называется аппроксимацией (от латинского approximo - пр и- ближаюсь). Близости этих функций добиваются путем введения в аппрокс и- мирующую функцию ) ( x j свободных параметров n a a a a ,..., , , 2 1 0 и соответс т- вующим их выбором. В вычислительной математике аппроксимация функций является основой для разр а ботки многих методов и алгоритмов [10, 11]. Пусть функция ) ( x f задана таблицей значений, полученной из экспер и- мента ил и путем вычисления последовательности значений аргумента n x x x x ,..., , , 2 1 0 . Считаем, что узлы в общем случае не являются равноотстоящ и- ми. Введем аппроксимирующую функцию ) ,..., , , , ( 2 1 0 n a a a a x j так, чтобы она совп а дала с табличными значениями заданно й функции ) ( x f во всех точках i x : ) ( ) ,..., , , , ( 2 1 0 i n x f a a a a x = j , где n i ᆪ ᆪ 0 . Свободные параметры n a a a a ,..., , , 2 1 0 определяются по схемам в завис и- мости от сп о соба аппроксимации. 
144 Наиболее распростран енным способом аппроксимации функций являе т- ся полиномиальная аппроксимация каноническим полиномом ) ( x P n n - й степ е- ни: n n n x a x a x a x a a x P x + + + + + = = ... ) ( ) ( 3 3 2 2 1 0 j . Свободными параметрами аппроксимации i a являются ко эффициенты полинома. Аппроксимация полиномами обладает такими преимуществами, как простота вычислений их значений, дифференцирования и интегрирования. Вычисление коэффициентов этого полинома осуществляется решением сист е- мы линейных (относительно коэффициен тов n a a a a ,..., , , 2 1 0 ) уравнений: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ = + + + + + = + + + + + = + + + + + = + + + + + ) ( ... .......... .......... .......... .......... .......... .......... .......... ) ( ... ) ( ... ) ( ... 3 3 2 2 1 0 2 2 3 2 3 2 2 2 2 1 0 1 1 3 1 3 2 1 2 1 1 0 0 0 3 0 3 2 0 2 0 1 0 n n n n n n n n n n n n n x f x a x a x a x a a x f x a x a x a x a a x f x a x a x a x a a x f x a x a x a x a a Система линейных алгебраических уравнений относительно свободных параметров i a имеет решение, если среди узлов i x нет совпадающих. Опред е- литель такой системы, отличный от нуля, называется определителем Ванде р- монда , имеющим аналитическое выражение или для вычисления которого можно использовать любой численный метод, применяемый для решения п о- добных си с тем, например, метод Гаусса, метод Зейделя и т.д. М етод решения задачи аппроксимации с помощью единого для всего о т- резка многочлена ) ( x P n называют глобальной полиномиальной аппроксимацией . Однако существуют весьма веские причины, по которым глобальная интерп о- ляция многочленами высокой сте пени не позволяет приблизить функцию с любой требуемой точностью e . Иногда данная проблема может решаться п у- тем увеличения числа узлов и соответственно степени n - многочлена. Коо р- динальный, альтернативный подход в решении данной задачи состоит в л о- кальной аппроксимации , когда функция ) ( x f аппроксимируется многочленом ) ( x P m невысокой степени m на содержащемся в [ ] n x x , 0 отрезке [ ] b a , малой 
145 длины. Такая аппроксимация называется косучно - полиномиальной аппрокс и- мацией или аппроксимацией с помощью "движущегося" полинома. Правда, при такой аппроксимации результирующая функция может иметь некоторые изломы, соо т ветствующие разрыву пе рвой производной. § 8.4. Регрессионный и корреляционный анализ. Приближение функций по методу на и меньших квадратов Если набор экспериментальных данных получен со значительной п о- грешностью, то не имеет смысла использовать интерполяцию Лагранжа пол и- нома ми и сплайнами для обработки результатов. В этом случае необходимо провести аппроксимирующую кривую, которая не проходит через экспер и- ментальные точки, но в то же время отражает исследуемую зависимость, сглажив а ет возможные выбросы за счет погрешности эксп еримента (рис. 8.2). Рис. 8.2. Регрессионный анализ экспериментальных данных Обозначим узлы исходной таблицы данных через i x , где n i ᆪ ᆪ 0 – н о мер узла. Считаем известными значения э кспериментальных данных в узл о вых точках ) ( i i x f y = . Введем непрерывную функцию ) ( x j для аппроксимации ди с- кретной зависимости ) ( i x f . В узлах функции ) ( x j и ) ( x f будут о тличаться на величину ) ( ) ( i i i x f x - = j e . Отклонения i e могут принимать положительные и y x i x i y b ax y + = i e 
146 отрицательные значения. Чтобы не учитывать знаки, возведем каждое откл о- нение в квадрат и просумм и руем квадраты отклонений по всем узлам: [ ] ¥ ¥ = = - = = n i n i i i i x f x Q 0 0 2 2 ) ( ) ( j e . Метод построения аппроксимирующей функции ) ( x j из условия мин и- мума величины Q называется методом наименьших квадратов (МНК) [34]. На практике наиболее распространен способ выбора функции ) ( x j в виде линейной комбинации: ) ( ... ) ( ) ( ) ( ) ( 2 2 1 1 0 0 x a x a x a x a x n n j j j j j + + + + = , где ) ( ),..., ( ), ( ), ( 2 1 0 x x x x n j j j j – базисные функции; n a a a a ,..., , , 2 1 0 – коэфф и- циенты, определяемые при минимиз а ции величины Q . Математиче ски условия минимума суммы квадратов отклонений Q записывают, приравнивая к нулю частные производные от Q по коэффицие н- там k a , где n k ᆪ ᆪ 0 . [ ] [ ] [ ] [ ] ￯ ￯ ￯ ￯ ￯ ￯ ￯ ○ ￯ ￯ ￯ ￯ ￯ ￯ ￯ ■ ↓ = - + + + = ᄊ ᄊ = - + + + = ᄊ ᄊ = - + + + = ᄊ ᄊ = - + + + = ᄊ ᄊ ¥ ¥ ¥ ¥ = = = = n i i n i i n n i i n n i i i i n n i i n i i i i n n i i n i i i i n n i i x x f x a x a x a a Q x x f x a x a x a a Q x x f x a x a x a a Q x x f x a x a x a a Q 0 1 1 0 0 0 2 1 1 0 0 2 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 ) ( ) ( ) ( ... ) ( ) ( 2 .... .......... .......... .......... .......... .......... .......... .......... .......... .......... 0 ) ( ) ( ) ( ... ) ( ) ( 2 0 ) ( ) ( ) ( ... ) ( ) ( 2 0 ) ( ) ( ) ( ... ) ( ) ( 2 j j j j j j j j j j j j j j j j Из полученной системы линейных алгебраических уравнений определ я- ются все коэффициенты k a . Такая система называется системой нормальных уравнений . Матрица этой системы называется матрицей Грама и имеет сл е- дующий в ид: 
147 ) , ...( ) , ( ) , ( ) , ( ... ... ... ... ) , ...( ) , ( ) , ( ) , ( ) , ...( ) , ( ) , ( ) , ( 2 1 0 1 2 1 1 1 1 0 0 2 0 1 0 0 0 n n n n n n n j j j j j j j j j j j j j j j j j j j j j j j j Элементы матрицы Грама являются скалярными произведениями бази с- ных функций ¥ = = n i i k i i k i x x 0 ) ( ) ( ) , ( j j j j . Отметим основные свойства матрицы Грама, полезные при программной реализации алгоритмов МНК: 1. Матрица симметрична, т.е. ji ij a a = , что позволяет сократить объем в ы- числений при заполнении матрицы. 2. Матрица является положительно опред е ленной, следовательно, при решении системы нормальных уравнений методом исключения Гаусса можно отказаться от процедуры выбора главного эл еме н та. 3. Определитель матрицы будет отличен от нуля, если в качестве базиса выбраны линейно независимые функции ) ( x i j , при этом система имеет еди н- ственное решение. Расширенная матрица системы уравнений получается добавлением справа к матри це Грама столбца свободных членов: ) ( , ( .... .......... ) ( , ( ) ( , ( 1 0 i n i i x f x f x f j j j , где скалярные произведения, являющиеся элементами столбца, опред е- ляются аналогично: ¥ = = n i i i k i k x f x x f 0 ) ( ) ( )) ( , ( j j . При обработке экспериментальных данных, определенных с погрешн о- стью e в каждой узловой точке, обычно начинают с аппроксимации функцией ) ( x j . На практике довольно часто оказывается возможным при обработке эк с- периментальных данных ограничиться построением линейной аппроксим и- 
148 рующей функции bx a x + = ) ( j . Для определения коэффициентов a и b выш е- приведенной формулы из общего алгоритма МНК получим следующие выр а- жения: ￷ ￸ ￶ ￧ │ ₩ - = ¥ ¥ = = n i n i i i x b y n a 1 1 1 ¥ ¥ ¥ ¥ ¥ = = = = = - - = n i n i i i n i n i n i i i i i x n x y x n y x b 1 1 2 2 1 1 1 ) ( , где n – число п ар значений i x и i y . Обычно эффективность аппроксимации оценивается с помощью коэ ф- фициента парной корреляции R или среднеквадратичной погрешности 2 s . Корреляция является признаком, указывающим на взаимосвязь ряда числе н- ных последовательностей. Парная корреляция характеризует взаимосвязь двух последовательностей i x и i y . Коэффициент парной корреляции характеризует степень отклонения связи между i x и i y от линейной. Если R близок к 1, то эта связь линейна, т.е. i i bx a y + = , причем знак R определяет знак коэффицие н- та a . Если 0 > R , то 0 > a и наоборот. Значение коэффициента корреляции определяется по выражению: n y y n x x n y x y x R n i i n i i n i n i i i n i n i n i i i i i ¥ ¥ ¥ ¥ ¥ ¥ ¥ = = + = = + + - - - = 1 2 1 2 1 1 2 2 1 1 1 ) ( ) ( . Величина среднеквадратичной погрешности определяется:    ↑ → ← - - = ¥ ¥ ¥ = = - n i n i n i i i i n i y x a y b y n 1 1 1 2 1 s . Довольно часто в прикладных исследованиях возникает задача нелине й- ной парной аппроксимации, заключающаяся в получении нелинейной завис и- 
149 мости ) ( x f (например, b ax y = или ) exp( bx a y = ), приближающей совокупность чисел i x и i y с наименьшей квадр а тичной погрешностью. Сведение нелинейной задачи к линейной выполняется с помощью л и- неаризующих преобразований в ходе ввода i x и i y и при выводе коэффицие н- тов a и b [15]. Значительно больший практический интерес представляет математич е- ское описание многофакторных зависимостей вида ) ,..., , , ( 3 2 1 n x x x x f y = методом множественной регрессии, позволяющее определить стат истическую связь между факторами и степень влияния факторов на исследуемую характерист и- ку, найти вид множественной регрессии, оценить адекватность полученного мат е матического описания. Теоретически возможно использование двух подходов к проведению любого численного эксперимента: активный и пассивный [36, 38] . Перед проведением активного эксперимента составляется так называ е- мый план, в котором заранее рассчитываются определенным образом комб и- нации варьируемых факторов в нескольких заданных точках, а затем после проведения опытов при этих значениях факторов известными приемами дост а- точно просто по полученным значениям исследуемой характеристики рассч и- тываются коэффициенты множественной регре с сии. Указанный подход при промышленных испытаниях теплоэнергетич е- ского оборудования практически исключается из - за большого количества внутренних и внешних ограничений, накладываемых на значения режимных факторов. В связи с этим для нахождения математических описаний реальных процессов остается путь пассивного эксперимен та, заключающегося в уст а- новлении значений варьируемых факторов в каждом опыте на наиболее те х- нически удобных и интересующих уровнях и "фиксации" получающихся при этом режимов. Для случая совместного нормального распределения факторов наиболее простой фор мой множественной регрессии является следующая зависимость: 
150 n n x a x a x a a y + + + + = ... 2 2 1 1 0 . Оценка тесноты статистической связи между факторами (независимыми переменными) производится вычислением коэффициентов парной коррел я- ции: ¥ ¥ ¥ = = = - - - - = n i n i m mi k ki n i m mi k ki m k x x x x x x x x x x R 1 1 2 2 1 ) ( ) ( ) )( ( ) , ( , где m k ᄍ ; n x x n i ki k ¥ = = 1 ; n x x n i mi m ¥ = = 1 – средние значения k - го и m - го фа к- торов; n – количество опытов. Если факторы n x x x x ,..., , , 3 2 1 допускают неза висимое варьирование, то к о- эффициенты парной корреляции близки к нулю или, во всяком случае, знач и- тельно меньше единицы (вследствие погрешностей измерений и обработки р е- зультатов). Если, например, коэффициент ) , ( 1 k x x R получен равным 0,5 - 0,6, то один из этих факторов функционально связан с другим; необходимо найти эту связь и уменьшить количество факторов на единицу, исключив 1 x или k x . Коэффициенты парной корреляции исследуемой характеристики y (н а- пример, к.п.д. энергоустановки) и определяющих факторов n x x x x ,..., , , 3 2 1 пок а- зывают влияние каждого фактора на характеристику. Например, степень (те с- нота) статистической связи между фактором k x и характеристик ой y опред е- ляется коэффициентом: ¥ ¥ ¥ = = = - - - - = n i k ki n i i n i ki i k x x y y x x y y x y R 1 2 2 1 1 ) ( ) ( ) )( ( ) , ( , где n y y n i i ¥ = = 1 – среднее значение исследуемой характеристики. После предварительного отбора факторов на основе коэффициентов парной корреляции определение коэффици ентов n a a a a ,..., , , 2 1 0 уравнения мн о- 
151 жественной регрессии производится методом наименьших квадратов, т.е. от ы- скив а ется зависимость, удовлетворяющая условию: ¥ = = - = n i i i Q y y Q 1 2 min ) ~ ( , где i y – опытное значение характеристики в i - м опыте; i y ~ – вычисле н- ное по уравнению множественной регрессии значение характеристики при i x x 1 1 = ; i x x 2 2 = ;…; ni n x x = . Вычисляя в последнем уравнении, в котором i y ~ з а- дается уравнением регрессии, величины 0 a Q ᄊ ᄊ , 1 a Q ᄊ ᄊ , 2 a Q ᄊ ᄊ ,…, n a Q ᄊ ᄊ и, прира в нивая их к нулю, получают систему ( 1 + n ) уравнений, которая затем пр еобр а зуется к следующему виду: ￯ ￯ ￯ ○ ￯ ￯ ￯ ■ ↓ = + + + + + = + + + + + = + + + + + = + + + + + n n n n n n n n n n n n n x y x a x x a x x a x x a x a x y x x a x x a x a x x a x a x y x x a x x a x x a x a x a y x a x a x a x a a 2 3 3 2 2 1 1 0 2 2 3 2 3 2 2 2 2 1 1 2 0 1 1 3 1 3 2 1 2 2 1 1 1 0 3 3 2 2 1 1 0 ... .......... .......... .......... .......... .......... .......... .......... ... ... ... Решая эту систему, например, методом Гаусса, получают значения к о- эффициентов n a a a a ,..., , , 2 1 0 , определяющих уравнение множественной регре с- сии. В качестве меры функциональной связи между эмпириче ским значением характеристики y и вычисленным по полученному уравнению множественной регрессии ее значениями ) ,..., , , ( ~ 3 2 1 ni i i i i x x x x f y = служит множественный коэ ф- фициент корреляции: ¥ ¥ = = - - - - - - = n i i i n i i i m y y y y l n n R 1 2 1 2 ) ( ) ~ ( 1 1 1 , где l – к оличество членов уравнения множественной регрессии. Уравнение множественной регрессии представляет собой уравнение н е- которой поверхности в ( ) 1 + n - мерном пространстве, называемой поверхностью отклика. Адекватность представления реальной по верхности отклика уравн е- 
152 нием регрессии проверяют так называемым F - отношением ( критерием Ф и- шера или F - коэффициентом эффективности ): 2 2 D F s = , где ) 1 ( ) ( 1 2 2 - - = ¥ = n y y n i i s – дисперсия относительно сре днего значения характеристики; ) 1 ( ) ~ ( 1 2 2 - - - = ¥ = l n y y D n i i i – остаточная дисперсия (дисперсия н е адекватности). Величину F обычно сравнивают с табличным значением B0 F при пр и- нятом уровне доверительной вероятности P (обычно P =95%) и числе степ е- ней свободы 1 1 - = n n для большей дисперсии ( 2 s ) и 1 2 - - = l n n для меньшей дисперсии ( 2 D ). Если при этом B0 F F > , то описание поверхности отклика п о- лученным уравнением множественной регрессии адекватно и это уравнение может использоваться в качестве формальной математической модели иссл е- дуемого объекта или процесса. Если B0 F F < , то описание н еадекватно. В этом случае следует попытаться использовать более сложные уравнения множес т- венной регрессии, например, квадратичное: 2 2 2 2 22 2 1 21 1 2 12 1 11 0 ... ... n n n n x a x a x a x a x a x a a y + + + + + + + + = или степенное: n a n a a a x x x x a y ... 3 2 1 3 2 1 0 = . Естественно, что изложенная оценка адекватности в полной ме ре отн о- сится и к рассмотренным выше однофакторным зависимостям вида ) ( x f y = как к частному случаю. § 8.5. Статистический анализ данных Совокупность n некоторых величин i x (например, эксплуатационн ые данные или данные эксперимента) характеризуется следующей совокупностью статистических характеристик (одномерная статистика) [29]: 
153 Начальные моменты k - го порядка ¥ = = n i k i k x n x m 1 1 ) ( . Обычно k =1, 2, 3 и 4 ( точность вычисления k m при 4 > k очень низкая). Центральные моменты k - го порядка ¥ + - = n i k i k x m x n x M 1 1 )] ( [ 1 ) ( . Момент 0 ) ( 1 = x M . Связь центральных моментов с начальными устанавливается с леду ю- щими соотношениями (аргументы x в скобках опущены) 2 1 2 2 m m M - = , 2 1 2 1 3 3 2 3 m m m m M + - = , 4 1 2 2 1 3 1 4 4 3 6 4 m m m m m m M - + - = , которые позволяют вычислять k M по мере ввода i x . Среднее знач ение ¥ = = = n i i x n m x 1 1 1 есть наиболее вероятное значение числа в исходном массиве. Дисперсия смещенная ¥ = - = n i i x x n S 1 2 ) ( 1 является наиболее вероятной степенью отклонения i x от среднего значения x . Стандартное отклонение смещенное S = s определяет среднеквадр а- тичную погрешность i x , если за точное значение принять x . Дисперсия несмещенная ¥ = - - = - = n i i x x n n n M D 1 2 2 0 ) ( 1 1 1 приме няется при статистической обработке чисел i x с нормальным распред е- лением. Стандартное отклонение несмещенное 0 0 D = s . 
154 Коэффициент асимметрии ¥ = = - = n i i M M x x nD A 1 2 3 2 3 3 2 3 ) ( 1 характеризует скошенность графической функции плотн ости распределения вероятностей ) ( x p . При 0 = A она симметрична, при 0 > A вытянут правый, а при 0 < A – левый участок спада кривой ) ( x p (рис. 8.3. а). Коэффициент эксцесса ¥ = - = - = n i i M M x x nD E 1 2 2 4 2 3 ) ( 1 характеризует степень остроты пика кривой ) ( x p в сравнении с ) ( x p для но р- мального распределения. Если 0 > E , то ) ( x p имеет более острый пик, чем п ри нормальном распределении, если 0 < E – пик менее острый (рис. 8.3. б). Вспомогательные коэффициенты ) 3 )( 1 ( ) 1 ( 6 3 3 + + - = = n n n U a , ) 5 )( 3 ( ) 1 ( ) 3 )( 2 ( 24 2 4 4 + + - - - = = n n n n n U a служат для приближенной проверки гипотезы о нормальном распределении i x . Если 3 2 3 ᄌ < a A и 3 2 4 ᄌ < a E , то распределение ) ( x p для массива i x можно считать нормальным. Для наиболее часто встречаемого нормального закона значения 0 =  и 0 = E . x x p x x 0 <  0 = E 0 > E p 0 = A 0 > A 0 < A а) б) Рис.8.3. Функции плотности распределения при разной асимметрии (а) и эксцессе (б) 
155 § 8.6. Сглаживание данных Сглаживание эмпирических данных является специальной операцией у с- реднения с помощью интерполяционных полиномов, обеспечивающей пол у- чение уточненного значения i y ~ по заданному значению i y и ряду близлеж а- щих значений (…, 1 - i y , i y , 1 + i y ,…), известных со случайной погрешностью. В практике инженерных расчетов наибольшее распространение п олучили мет о- ды линейного сглаживания по трем и пяти соседним точкам и нелинейное сглажив а ние по семи точкам [12]. Линейное сглаживание по трем точкам осуществляется с помощью следующих интерполяционных формул: 6 ) 2 5 ( ~ 2 1 0 0 y y y y - + = , 3 ) ( ~ 1 1 + - + + = i i i i y y y y , 6 ) 2 5 ( ~ 2 1 - - - + = n n n n y y y y , где 1 1 - ᆪ ᆪ n i ; n – номер последней точки (ординаты i y ). Линейное сглаживание по пяти точкам проводится с использованием следующих формул: 5 ) 2 3 ( ~ 4 2 1 0 0 y y y y y - + + = , 10 ) 2 3 4 ( ~ 3 2 1 0 1 y y y y y + + + = , 5 ) ( ~ 2 1 1 2 + + - - + + + + = i i i i i i y y y y y y , 10 ) 4 3 2 ( ~ 1 2 3 1 n n n n n y y y y y + + + = - - - - , 5 ) 2 3 ( ~ 4 2 1 - - - - + + = n n n n n y y y y y , где 2 2 - ᆪ ᆪ n i . Нелинейное сглаживание по семи точкам обеспечивает усреднение на основе применения полинома третьей степени и реализует ся посредством применения следующих соотношений: 42 ) 2 ) ( 4 8 39 ( ~ 6 5 4 3 2 1 0 0 y y y y y y y y - + - + - + = , 42 ) 4 7 4 6 16 19 8 ( ~ 7 5 4 3 2 1 0 1 y y y y y y y y + - - + + + = , 42 ) 4 2 12 19 16 4 ( ~ 6 5 4 3 2 1 0 2 y y y y y y y y + - + + + + - = , 
156 21 )) ( 2 ) ( 3 ) ( 6 7 ( ~ 3 3 2 2 1 1 - + - + - + + - + + + + = i i i i i i i i y y y y y y y y , 42 ) 4 16 19 12 2 4 ( ~ 1 2 3 4 5 6 2 n n n n n n n n y y y y y y y y - + + + + - = - - - - - - - , 42 ) 8 19 16 6 4 7 4 ( ~ 1 2 3 4 5 6 1 n n n n n n n n y y y y y y y y + + + + - - = - - - - - - - , 42 ) 39 8 4 4 4 2 ( ~ 1 2 3 4 5 6 n n n n n n n n y y y y y y y y + + - - + + - = - - - - - - , где 3 3 - ᆪ ᆪ n i . § 8.7. Программная реализация методов интерполяции и аппрокс и мации функциональных зависимостей Наиболее универсальным способом интерполяции, аппроксимации и экстраполяции функциональных зависимостей является использование сплайн - функций [15]. Спла йн ( splain ) в переводе с английского языка означает "гибкая линейка". Сплайн - функцию можно наглядно трактовать как линию, которую образует гибкая линейка, будучи закрепленной в ряде точек – узлах интерполяции. Математически сплайн – специальный многочлен, принима ю- щий в узлах значения ) ( ) ( i i x y y x y = = и обеспечивающий непрерывность в них производных. Обычно достаточно обеспечить непрерывность первой и второй производных, для чего достаточно использовать сплайн - многочлены третьего порядка (куб и ческие с плайны) [9]. Для каждого отрезка ] , [ 1 + i i x x изменения x кубическая сплайн - функция записывается в виде:    ↑ → ← - - + - - + - + - = + + + + + ) )( 6 ( ) )( 6 ( 1 ) ( ) ( [ 6 1 ) ( 2 1 1 1 2 3 1 3 1 i i i i i i i i i i i i i i i x x h m y x x h m y h x x m x x m h x f , где i i i x x h - = + 1 ; ) ( ) ( x y x f i = ; ) ( i i x f m ᄁ ᄁ = ; n i ,..., 3 , 2 , 1 = ( n – число узлов). При известных значениях i x , i y и i m эта формула задает сплайн - аппроксимацию. Если потребовать выполнения условия i i y x f = ) ( , то приведенное выше выражение для кубических полиномов - сплайнов приводит к системе лине й- ных уравнений, из которых находятся i m : 
157 ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ - - - = + + + + + + + + + + + i i i i i i i i i i i i i h y y h y y m h m h h m h 1 1 1 2 2 1 1 1 6 ) ( 2 . Однако эта система не полностью определяет значения i m . Чтобы о пр е- делить все i m , необходимо задать дополнительные граничные условия. Если они заданы в виде 0 1 = m и 0 = n m , получают нормальные сплайн - функции; при n m m = 1 и 1 2 + = n m m и меют периодические сплайн - функции и т.д. Приведенный ниже в листинге 8.1 текст подпрограммы Spline 2 d для та б- лично заданных значений i x и i y иллюстрирует возможность вычисления по вышеизложенному алгоритму значений коэффициентов ) ( i i x f m ᄁ ᄁ = нормальн о- го кубического сплайна и при ] , [ 1 n x x x ᅫ обеспечивает интерполяцию с пом о- щью сплайн - функции. Если 1 x x < , то выполняется линейная экстраполяция по фо р муле: ) ))( ( ) ( 6 ) (( ) ( 1 1 2 1 2 2 1 2 1 x x x x y y m x x y x f - - - + - - = , а при n x x > – экстраполяция по формуле: ) ))( ( ) ( 6 ) (( ) ( 1 1 1 1 n n n n n n n n n x x x x y y m x x y x f - - - + - - = - - - - . При экстраполяции предполагается, что наклон линейного участка ) ( x f равен первой производной сплайн - функции в точке ) , ( 1 1 y x при экстрапол яции для 1 x x < и в точке ) , ( n n y x при n x x > .  Листинг 8.1. #include <math.h> // директива препроцессора void Splain2d( float x[], float y[], int n, int n_new, float x_new[], float y_new[] ) // заголовок функции { float *l, *m, *r, *s; // описание локальных переменных float d, e, h, f, p, r1, dy; float hag, dx; int i, j, k; l = new float[n]; // динамическое распределение памяти m = new float[n]; r = new float[n]; s = new fl oat[n]; n = n - 1; d = x[1] - x[0]; e = ( y[1] - y[0] ) / d; 
158 for( k = 1; k <= n - 1; k++ ) { h = d; d = x[k+1] - x[k]; f = e; e = ( y[k+1] - y[k] ) / d; l[k] = d / ( d + h ); r[k] = 1. - l[k]; s[k] = ( 6 . * ( e - f )) / ( h + d ); } for( k = 1; k <= n - 1; k++ ) { p = 1. / (( r[k] * l[k - 1] ) + 2. ); l[k] = - 1. * l[k] * p; s[k] = ( s[k] - ( r[k] * s[k - 1] )) * p; } m[n] = 0; // поиск значений коэффициентов i m l[n - 1] = s[n - 1]; m[n - 1] = l[n - 1]; for( k = n - 2; k >= 0; k -- ) { l[k] = ( l[k] * l[k+1] ) + s[k]; m[k] = l[k]; } hag = ( x[n] - x[0] ) / ( n_new - 1 ); dx = x[0]; for(k=0; k< n_new; k++) { i = 0; if ( dx > x[n] ) // экстраполяция при n x x > { d = x[n] - x[n - 1]; dy = d * m[n - 1] / 6. + ( y[n] - y[n - 1] ) / d; dy = dy * ( dx - x[n] ) + y[n]; } else if ( dx < x[0] ) // экстраполяци я при 1 x x < { d = x[1] - x[0]; dy = - d * m[1] / 6 + ( y[2] - y[1] ) / d; dy = dy * ( dx - x[0] ) + y[0]; } else { // интерполяция функциональной зависимости while ( dx > x[i] ) { i = i + 1; } j = i - 1; d = x[i] - x[j]; h = dx - x[j]; r1 = x[i] - dx; p = d * d / 6.; dy = ( m[j] * pow( r1, 3 ) + m[i] * pow( h, 3 )) / 6. / d; dy = dy + (( y[j] - m[j] * p ) * r1 + ( y[i] - m[i] * p ) * h ) / d; } 
159 x_new[k] = dx; // формирован ие новых массивов y_new[k] = dy; dx = dx + hag; // изменение значения аргумента } delete(l); // освобождение динамической памяти delete(m); delete(r); delete(s); } В качестве формальных входных параметров у подпрограммы Spline 2 d используют ся одномерные массивы [] x и [] y выражающие вид фун к- циональной зависимости и переменная n , характеризующая количество знач е- ний в этих массивах. Также в качестве входного параметра используется пе р е- менная new n _ , позволяющая задать новое значение узлов интерполяции. При этом значение этой переменной будет определять содержимое выходных ма с- сивов [] _ new x и [] _ new y . Пример головной функции, использующе й подпрограмму Spline 2 d , представлен в листинге 8.2.  Листинг 8.2. #include <stdio.h> // директивы препроцессора #include <conio.h> #include "intextr.h" // описание библиотеки интерполяционных функций void main() // головная функции { float x[7] = { 0 , 0.3, 0.5, 0.8, 1, 1.3, 1.5 }; float y[7] = { 0, 0.299401, 0.4923442, 0.7228442, 0.779834, 0.6385505, 0.4452612}; /* тестовые данные */ int i, n = 7, n_new = 4; float x_n[4], y_n[4]; // резул ьтирующие массивы Splain2d( x, y, n , n_new, x_n, y_n ); // обращение к сплайн - интерполяции for( i = 0; i < n_new; i++) // вывод результатов на печать { printf(" \ n x[%d]=%f y[%d]=%f",i, x_n[i], i, y_n[i] ); } getch(); } В данной головной фу нкции выполняется сплайн - аппроксимация для интеграла Френеля ) ( x ! , заданного таблицей из 7 = n пар i x и i y . Задав исхо д- 
160 ные данные, получим: 0 1 = m , 5 0887786252 , 0 2 - = m , 5547268737 , 0 3 - = m , 019378004 , 2 4 - = m , 563639669 , 3 5 - = m , 902729099 , 1 6 - = m , 0 7 = m . Согласно пол у- ченным значениям коэффициентов i m , интерполяция и экстраполяция знач е- ний даст следую щий результат: 2000938813 , 0 ) 2 , 0 ( = y , 4737408625 , 0 ) 48 , 0 ( = y , 3422741197 , 0 ) 6 , 1 ( = y и т.д. Хотя сплайн - интерполяция осуществима при переменном шаге i i i x x h - = + 1 , значительное изменение ) 4 / ( > i i i h h h нецелесообразно, поскол ь- ку в э том случае преимущества сплайн - интерполяции теряются, и погре ш- ность ее заметно возрастает. Содержимое заголовочного файла intextr .h , в котором располагается описание используемой в головной функции подпрограммы Spline 2 d , необх о- димой для выполнения интерп оляции, аппроксимации и экстраполяции фун к- циональных зависимостей, представлено в ли с тинге 8.3.  Листинг 8.3. /* объявление подпрограммы - функции, предназначенной для интерполяции, аппроксимации и экстраполяции функциональных зависимостей */ voi d Splain2d( float *, float *, int, int, float *, float * );
161 Глава 9. ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ЗАДАЧ КОШИ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВН Е НИЙ § 9.1. Математическое моделирование нестационарных тепловых процессов в энергоустановках Расчет нестационарного теплового режима какой - либо теплоэнергетич е- ской установки по моделям с сосредо точенными параметрами сводится к р е- шению систем уравнений теп лового баланса с некоторыми начальными усл о- виями, т. е. к решению задачи Коши для систем обыкновенных дифференц и- альных уравнений первого порядка [63]. В случа е линейных уравнений реш е- ние удается представить в аналитическом виде при числе урав нений n < 4. Для нелинейных задач и в случае n > 4 точное реше ние в аналитическом виде п о- лучить не удается, за исключением не которых частных случаев. Поэтому при расчетах нестационарных тепловых режимов систем тел широко прим е няют численные методы, которые для начала целесообразно рассматривать прим е- нительно к о д ному уравнению вида ) , ( T f d dT t t = , где max 0 t t ᆪ < с начальным условием 0 0 T T = = t . В дальнейшем методы, изложенные на примере поставленной задачи, будут обобщены для системы n - уравнений. При численном решении задачи непрерывную область изменения нез а- висимой пере менной [0, max t ] заменяют множеством значений { } J j j 1 = t , которые называют узлами сетки. В случае равномер ной сетки t t D = j j , где J j ,..., 1 = ; J / max t t = D – шаг по времени. Вмес то зад ачи отыскания непрерывной функции ) ( t T ставится задача определения дискретного множества значений функции в узлах сетки: ) ( j j T T t = . Величину j T называют сеточной функцией точного решения. Как будет пока зано далее, точные значения j T найти не уда ется, а
162 вместо них в результате численного решения задачи получаются приближе н- ные значения искомой функции в узлах сетки, которые обозначают, как j u и называют сеточной ф ункцией разностного решения или просто разностным (численным) решением. Погреш ность численного решения определяют как разность сеточных функций точного и разностного решений: j j j u T - = e . Для нахождения разностного решения вместо задачи диффер енциров а- ния рассматривают задачу решения системы алгебраических урав нений отн о- сительно искомых значений { } J j j u 1 = . Такую систему алгебраических уравнений называют разностной схемой. При из мельчении сетки (при 0 ᆴ D t ) погре ш- ность численного решения должна в случае адекватной схемы стремиться к нулю, т.е. 0 lim 0 = ᆴ D j e t . Это требование к разностной схеме называют условием сходимости. Для сходимости разностной схемы необходимо и достаточно в ы- полне ния двух других услов ий – аппроксимации и устойчивости, ко торые б у- дут пояснены ниже на примере схем Эйлера. Если при достаточно малых t D начинает выполняться нераве н ство p j j j A u T t e D ᆪ - = , где const A = , то говорят, что разностная схе ма сходится со скоростью 0 ( p t D ) или числе н- ный метод имеет порядок точности p , т. е. порядок точности характеризует скорость убывания погрешности при измельчении се т ки. К числу наиболее распространенных ме тодов чи сленного решения зад а- чи дифференцирования относятся: методы, основанные на разложении фун к- ции ) ( t T в ряд Тейлора (наиболее распространенная схема этого вида – схема Эйл е ра); методы Рунге - Кутта; линейные многошаговые методы [23]. § 9.2. Метод Эйлера Используя разложение решения ) ( t T в ряд Тей лора в точке j t , можно записать следующее выражение для значения решения в точке t t t D + = + j j 1 : ... 2 ) ( ) ( 1 + D ᄁ ᄁ + D ᄁ + = + t t t t j j j j T T T T
163 Пренебрегая в последнем выраж ении членами порядка 0 ( 2 t D ) и выше и учитывая, что согласно исходному уравнению производная ) ( j T t ᄁ равна ) , ( j j T f t , п о лучим следующую схему: ) , ( 1 j j j j u f u u t t D + = + , называемую схемой Эйлера. При этом сл едует обратить внимание, что вместо j T , записано j u , так как отбросив члены порядка 0 ( 2 t D ), мы уже не получим то ч ное решение ) ( j j T T t = . Из полученного уравнения вытекает, что знач ение 1 + j u вычисляется на основе зна чения j u для предыдущего момента времени по явной фо р муле. По - добные схемы называются явными. Зная из начального условия значение 0 0 T u = в момент времени 0 = t , достаточно легко последовательно вычислить значения J u u u u ,..., , , 3 2 1 во все посл е дующие моменты времени. Кроме явных существуют неявные схемы, в которых значение искомой функции на новом временном слое 1 + j u находит ся в результате решения ура в- нения, включающего это значение и значения для предыдущих моментов вр е- мени. Неявную схему Эйлера можно получить, если использовать разложение в ряд Тейлора в точке 1 + j t : t t D - ᄏ + + ) ( 1 1 j j j T T T . Тогда получают следующую схему ) , ( 1 1 1 + + + D + = j j j j u f u u t t , при реализации которой на каждом шаге необходимо решать в общем случае нелинейное уравнение относительно 1 + j u . Сопоставление явной и неявной схем Эйлера показывает, что с точки зрения объема выч ислений для одного шага явная схема имеет пре имущество. Только в случае, когда функция ) , ( T f t линейна относи тельно T , т. е. ) ( ) ( ) ( t t t b T a f + = , вычисления по неявной схеме не сложней, чем по явной, п о- скол ь ку то гда уравнение разре шается относительно 1 + j u : ] ) ( 1 /[ ] ) ( [ 1 1 1 t t t t D - D + = + + + j j j j a b u u .
164 Если же ) , ( T f t – нелинейная функция T , то приходится решать на ка ж- дом шаге это уравнение каким - либо итерационным методом. Рассм отрим теперь вопрос о погрешностях численных решений, пол у- чаемых по явной и неявной схемам Эйлера. Для этого введем по нятия аппро к- симации и устойчивости. Вернемся к разностному уравнению, переписав его в виде ) , ( 1 j j j j u f u u t t = D - + . Поскольку это уравне ние получается из соотношения для j T путем о т- брасывания малых членов, точное сеточное решение j T не удовлетворяет п о- следнему уравнению. Величину j y , характеризующую "степень неудовлетв о- рения" ф ункции j T разностному аналогу дифференциального уравнения, оч е- видно, можно определить как рассогласование (невязку) между левой и пр а вой частями, кот о рое возникает при замене j u на j T : ) , ( 1 j j j j j T f T T t t y - D - = + . Эта величина j y называется погрешностью аппроксимации ис ходного дифференциального уравнения разностным уравнением. Из разложения в ряд Тейлора нетрудно найти, что ... 6 2 2 2 3 2 2 - D ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ ᄊ ᄊ - D ￷ ￷ ￸ ￶ ￧ ￧ │ ₩ ᄊ ᄊ - = t t t t y T T j т. е. при достаточно малых t D погрешность аппроксимации убывает пропо р- ционально первой степени t D : t y D ᆪ B j , const B = или ) ( 0 t y D = j . В этом случае говорят, что разностная схема имеет первый порядок а п- проксимации. Нетрудно убедиться, что неявная схема Эйлера также имеет первый порядок аппроксимации.
165 Погрешность аппроксимации j y характеризует различие между уравн е- ниями для точного и разностного решений. Но малые зна чения j y еще не г а- рантируют, что сами решения j T и j u также будут мало отличаться, т. е. что погрешность j e будет мала. Возможны ситуации, когда при выполнении усл о- вия аппроксимации погре ш ность численного решения j e неограниченно во з- растает по мере про движения по оси с фиксированным t D , т. е. при увелич е- нии номера временного слоя j . Для анализа этого вопроса исследуем повед е- ние погрешности численного решения простейшего линейного уравнения те п- лового бала н са 0 0 = + T m d dT t , при 0 0 T T = = t где 0 m – темп охлаждения [60], а T имеет смысл перегрева над тем - пературой окружающей среды. Точное решение зад а чи имеет вид: t t m e T T - = 0 ) ( . Разностное решение, найденное по явной схеме Эйлера, можно за писать в виде j j j m u m u u ) 1 ( ) 1 ( 0 0 0 1 t t D - = D - = + , а по неявной схеме Эйлера – в виде j j j m u m u u ) 1 /( ) 1 /( 0 0 0 1 t t D + = D + = + . Точное решение ограничено: 0 ) ( T T ᆪ t и 0 ) ( = ᆬ ᆴ t T . Для явной схемы разностное решение будет огра ниченным только при 1 1 0 ᆪ D - t m или 0 2 m ᆪ D t . При 0 2 m > D t разностное решение j u бу дет представлять собой осци л- лирующую функцию, амплитуда колебаний которой неогра ниченно возрастает с увеличением j при движении вдоль оси t . Таким образом, погрешность р е- шения по явной схеме также неограниченно возрастает. Такое явление назыв а- ется неусто й чивостью разностной схемы.
166 Разностное решение j u , найденное по неявной схеме, мо нотонно убыв а- ет с увеличением j , и погрешность j j j u T - = e остается ограниче нной при л ю- бом ш а ге t D . Условие устойчивости разностной схемы для решения задачи дифф е- ренцирования может быть сформулировано в одном из вариантов, как треб о- вание ограниченности погрешности решения j e для любых j t , при ᆬ ᆴ j : C j ᆪ e , где const C = . Более подробно с проблемой устойчивости разностных схем для реше - ния обыкновенных дифференциальных уравнений можно ознакомить ся в [1 - 3]. Таким образом, неявная схема Эйлера устойчива при любых зна чениях t D , или безусловно устойчива. Явная схема устойчива лишь при выполнении ограничения на значение шага, или условно устойчива. При попытках пров о- дить расчеты с шагами t D , превы шающими предельно допустимые из условия устойчивости значения, происходит "раскачка" ("разболтка") разностного р е- шения, приводя щая к абсурдным числовым результатам или даже к машинн о- му оста нову из - за переполнения разрядной сетки. Возникает вопрос, насколько затрудняет проведение расчетов огранич е- ние, накладываемое на шаг t D в явной схеме. Разумеется, при численном р е- шении одного однородного уравнения абсурдно пытаться вести интегриров а- ние с шагом t D , вдвое превышающим по стоянную времени тела. Однако при решении системы уравнений теплового баланса, описывающей нестациона р- ный тепловой режим системы тел с сильно отличающимися постоянными вр е- мени, такая ситуация может возникнуть. Если время переходного п роцесса всей системы определяется телами с большой тепловой инерцией, то может появиться необходимость проводить расчет с шагом t D , который превышает постоянные времени тел с малой тепловой инерцией. Дейст вительно, если в ы- брать шаг из условия max 2 m ᆪ D t , где max m – максимальный из темпов охлажд е- ния отдельных тел, то может потребоваться чрезвычайно большое число шагов для расчета всего нестационарного процесса.
167 Рассмотренные схемы Эйлера имеют первый поря док аппрок симации. Для построения схем с более высоким порядком в разложении 1 + j T нужно о с- тавить члены более высокого порядка малости по t D . Например, удерживая чл е ны второго порядка и учитывая, что t t t t t t t ᄊ ᄊ ᄊ ᄊ + ᄊ ᄊ = = ￷ ￸ ￶ ￧ │ ₩ = T T f f T f d d d dT d d d T d )] , ( [ 2 2 , получаем     ↑ ↑ → ← ￷ ￸ ￶ ￧ │ ₩ ᄊ ᄊ + ￷ ￸ ￶ ￧ │ ₩ ᄊ ᄊ D + D + = + j j j j j j j j u f T f f u f u u , ( 2 ) , ( 2 1 t t t t t . Использование схем, подобных полученному выражению, затруднено тем, что требу ется вычислять производные от функции ) , ( T f t , и в настоящее вре мя для численных исследований они применяются редко. Поэтому возн и- кает необходимость в построении схем с высоким порядком точности, которые не содержа ли бы производных от ) , ( T f t . К таким схемам относятся схемы Рунге - Кутта . § 9.3. Методы Рунге - Кутта Для получения схем Рунге - Кутта приращен ие сеточной функции точн о- го решения на проме жутке ] , [ 1 + j j t t записывают в виде: 1 , 1 1 ) , ( + + = = - ￲ + j j j j I d T f T T j j t t t t . Схемы Эйлера можно трактовать как полученные путем замены инт е- грала в правой части простейшими формулами ) , ( 1 , j j j j u f I t t D ᄏ + или ) , ( 1 1 1 , + + + D ᄏ j j j j u f I t t . Порядок точности разностной схемы можно повысить, если ис - пользовать более сложные квадратурные формулы, в которых про изводная ) , ( T f t вычисляется не в одной, а в нескольких точках от резка ] , [ 1 + j j t t . П ри т а- ком подходе возникает задача определения приближений f и соответственно
168 решения u в этих промежуточных точках. Эти приближения вычисляются п о- следовательно по мере про движения по отрезку ] , [ 1 + j j t t от точки j t , к точке 1 + j t . Так как при этом функция ) , ( T f t равна производной от решения ) ( t T , то приближения для решения u строятся на основе оценок зна ч ений его прои з- водной – значений функции ) , ( u f t . Поэтому в окон чательных формулах пр и- ближение для ) , ( T f t в определенной точке выражается через приближения ) , ( T f t в предыдущих то ч ках. Рассмотрим в качестве примера простейшую схему, в которой для вы - числения интеграла используют две точки: j t и 1 + j t . Для ее реализации нео б- ходимо сначала построить первое приближение зна чения ) ( t T в точке u j ~ 1 - + t . Его находят, используя значения ) , ( j j u f t , по явной формуле Эйлера, ) , ( ~ j j j u f u u t t D + = . Следует подчеркнуть, что это первое приближение носит промежуто ч- ный характер. Далее для определения окончательного значения 1 + j u вы - числяют и н теграл по формуле трапеций с учетом u ~ :    ↑ → ← + D + = + + ) ~ , ( 2 1 ) , ( 2 1 1 1 u f u f u u j j j j j t t t . Нетрудно доказать, что погрешность аппроксимации построенной схемы равна ) ( 0 2 t y D = j . Рассмотренная схема является простейшей двухэта пной схемой Рунг е - Кутта. В ней интеграл определяется по двум точкам интер вала ] , [ 1 + j j t t и и с- пользуются два вычисления функции ) , ( u f t на одном шаге по времени. В о б- щем случае при использовании для оп ределения интеграла 1 , + j j I точек на и н- тервале ] , [ 1 + j j t t получается m - этапная схема Рунге - Кутта. Первая точка для вычисления оцен ки производной ) , ( u f t всегда совпадает с j t , а остальные расп олага ются оптимальным образом с точки зрения обеспечения наивысшего при данном т порядка аппроксимации.
169 В настоящее время широкое распространение получили четырех этапные схемы Рунге - Кутта, имеющие четвертый порядок аппрок симации и называ е- мые в связи с э тим схемами Рунге - Кутта четвер того порядка. Наиболее ра с- простр а ненная из них имеет вид: ) 2 2 ( 6 4 3 2 1 1 f f f f u u j j + + + D + = + t , ) , ( 1 j j u f f t = , ) 2 , 2 ( 1 2 f u f f j j t t t D + D + = , ) 2 , 2 ( 2 3 f u f f j j t t t D + D + = , ) , ( 3 1 4 f u f f j j t t D + = + . Здесь оценки производной вычисляются 4 раза: в точке j t , дваж ды в точке 2 t t D + j и в точке 1 + j t , а для вычисления интеграла ис пользуется ква д- ратурная фо р мула Симпсона. Схемы Рунге - Кутта явные и обладают условной устойчивостью. Напр и- мер, у схемы четвертого порядка условие ус тойчивости, проверяемое на м о- дельной задаче, выполняется только при 0 8 , 2 m < D t . Рассмотренные два вида схем обладают общей чертой – при оп - ределении значения 1 + j u в узле 1 + j t используется только значение j u в пред ы- дущем узле j t . Такие схемы называют одношаговыми. Ясно, что в общем сл у- чае возможно для определения 1 + j u использо вать не только j u , но и 1 - j u , 2 - j u и т.д. В этом случае задача сводится к многошаговым методам, среди которых наибольшее распростра нение п о лучили линейные. § 9.4. Линейные многошаговые методы При построении многошаговых схем, как и в схемах Рунге - Кутта, исх о- дят из равенства для j j T T - + 1 . Однако для приближенного вычисления интегр а- ла применим другой прием, а именно на основе значений функции ) , ( u f t в k точках 1 1 ,..., , + - - k j j j t t t , строят интерполяционный полином, который принимает
170 в этих точках уже известные значения ) , ( ),..., , ( 1 1 + - + - k j k j j j u f u f t t . Далее, испол ь- зуя продолжение построенного полинома за точку j t , (экстраполяцию на отр е- зок ] , [ 1 + j j t t , м ожно вычислить интеграл и получить выражение для 1 + j u , в ко - тором используются найденные ра нее значения 1 ,..., + - k j j u u : ¥ = + - + - + D = - k m m j m j m j j u f u u 1 1 1 1 ) , ( t b t , где m b – постоянные коэффициенты, зависящие от числа точек и нтерп о- ляции. Например, если на основе значений j u и 1 - j u построить линейную фун к- цию (рис. 9.1), продолжить ее на интервал ] , [ 1 + j j t t и провести интегрирование выраж е ния, то получим следующую двухшаговую схему: t t t D    ↑ → ← - = - - - + ) , ( 2 1 ) , ( 2 3 1 1 1 j j j j j j u f u f u u . Рис. 9.1. Графическая интерпретация линейных многошаговых методов Полученные схемы явного вида. Однако несложно получить и неявные схемы. Для этого следует использовать полином, проходящий не только через известные точки 1 ,..., + - k j j u u , но и через неизвест ную точку 1 + j u . Тогда, инте г- рируя, получают уравнение неявной схемы о т носительно 1 + j u : 1 - j f f j f 1 - j t j t 1 + j t 1 , + j j I t
171 ¥ = + - + - + D = - k m m j m j m j j u f u u 0 1 1 1 ) , ( t b t . Достаточно часто применяют следующую явную схему при 4 = k : ] 9 37 59 55 [ 24 3 1 1 1 - - - + - + - D = - j j j j j j f f f f u u t и неявную при 3 = k : ] 5 19 9 [ 24 2 1 1 1 - - + + + - + D = - j j j j j j f f f f u u t ; здесь ) , ( j j j u f f t = . Таким образом, в общем случае линейную k - шаговую схему можно з а- писать в виде: ¥ ¥ = = + - + - + - D = k m k m m j m j m m j m u f u 0 0 1 1 1 ) , ( t b t a . В последнем уравнении предполагается, что значение 1 + j u вычисляется на основе k известных значений 1 ,..., + - k j j u u . Если 0 0 = b , то уравнение разр е- шается относительно 1 + j u – схема явная. Ес ли 0 ᄍ b , то 1 + j u входит и в левую, и в правую части, получается в общем случае нелинейное уравнение относ и- тельно 1 + j u – схема неявная. Остановимся на ряде особенност ей многошаговых (при 2 ᄈ k ) методов по сравнению с одношаговыми ( 1 = k ). За счет введения в разностную схему значений функции ) , ( u f t в k то ч- ках, предшествующих искомой ( 1 + j ) - й точке, удается повысить порядок а п- проксимации. Похожий прием используется для повы шения порядка аппро к- симации в методе Рунге - Кутта, но там вы числение значений ) , ( u f t провод и- лось в точках интервала ] , [ 1 + j j t t . С точки зрения сокращения затрат машинн о- го времени для одного шага новый способ предпочтительнее, поскольку в сх е- мах Рунге - Кутта вычисленные на промежутке ] , [ 1 + j j t t значения ) , ( u f t не бу - дут использованы на следующем шаге от 1 + j t до 2 + j t , а основные за траты вр е-
172 мени связаны с вычислением этих значений. В многошаго вом же методе при вычислении 2 + j u нельзя использовать толь ко значение ) , ( 1 1 + - + - k j k j u f t в наиб о- лее уд аленной точке, участ вовавшей в определении значения 1 + j u . Остальные значения функ ции f в точках 2 ,..., + - k j j t t можно использовать и при вычисл е- нии 2 + j u . Однако в целом сопоставление зат рат машинного времени нужно проводить, учитывая общее число шагов J , необходимое для достижения з а- данной погрешн о сти. В отличие от одношаговых методов многошаговые не являются са - мостартующими. Действительно, в одношаговых методах выч исления можно начать с 0 0 T u = , получить на его основе 1 u , затем на основе 1 u найти 2 u и т.д. При использовании же многошаговых методов при 2 ᄈ k вычисления мо гут н а- чаться только лишь с k u при условии, что каким - то образом определены 1 2 1 0 ,..., , , - k u u u u . Эти стартовые значе ния находят с помощью какого - либо о д- ношагового метода, в качестве которого обычно используют одну из схем Ру н- ге - Ку т та. С точки зрения ограничения на шаг t D , связанного с требованием нал и- чия у схем устойчивости, явные многошаговые методы не имеют преимуществ по сравнению с явными методами Рунге - Кутта. Рассмотрим особенности реализации неявных многош аговых методов. Перепишем схему последнего полученного выражения в виде: i j j j g u f u + D = + + + ) , ( 1 1 0 0 1 t a t￰ , где величина i g зависит от уже найденных значений 1 ,..., + - k j j u u и извес т- на. Для решения этого уравнения применяют два метода: метод про стой итерации и метод Ньютона. Рассмотрим первый метод. В этом случае 1 + j u находят с помощью итерационного пр о цесса j s j j s j g u f u + D = - + + + ) ) ( , ( ) ( 1 1 1 0 0 1 t a t￰ , где ,..., 2 , 1 = s
173 где s j u ) ( 1 + – начальное приближение к иск омому значению функ ции. Для быстрой сходимости итерационного процесса необходимо удачно выбрать начальное приближение 0 1 ) ( + j u . Обычно его получают с помощью я в- ной многошаговой формулы. Тогда в целом алгоритм расчета на каждом шаге выглядит так: сначала предсказывается зна чение 0 1 ) ( + j u , а затем проводится одно или несколько уточнений на чального значения, т. е. получается предск а- зывающе - исправляющий метод, который часто называют методом предик тор - корректор. На практике испо льзуют два способа реализации этого метода. В первом слу чае итерации проводят до тех пор, пока два последовательно полу ченных значения 1 1 ) ( - + s j u и s j u ) ( 1 + не станут достаточно близки. Тогда число итераций может меняться от ш ага к шагу. Во втором случае на каждом шаге испра в- ляющая формула применяется фикси рованное число раз. Обычно метод пр е- дикто р - коррек тор применяется с числом итераций не более трех. Наиболее часто из линейных k - шаговых схем используют схемы j j u u - + 1 , называемые схемами Адамса . Можно доказать, что яв ная схема Адамса имеет порядок аппроксимации, равный k , а неяв ная – ( 1 + k ). При и с- пользовании метода предиктор - корректор обычно прим еняют предсказыва ю- щую и исправляющую схемы одного порядка точности. В частности, широко применяется метод предик тор - корректор со схемами Адамса четвертого п о- рядка, в котором предсказание делается по формуле явной схемы при 4 = k , а уточн ение – по формуле неявной схемы при 3 = k . § 9.5. Выбор шага дифференцирования и оценка погрешности чи с ленного решения Обычно при реализации на ЭВМ большинства численных схем решения обыкновенных дифференциальных уравнений предус матр ивается автоматич е- ский выбор величины шага t D для обеспече ния определенной погрешности расчета. Этот выбор основан на оцен ке локальной погрешности численного
174 решения на шаге, т. е. погрешности численного решения в точке 1 + j t , оцен и- ваемой в пред положении, что в начале шага в момент времени j t значение и с- комой функции было известно точно. Для одношаговых методов существуют два основных способа оценки локальной погрешности на шаге. При первом – ин тегриро вание от точки j t до точки 1 + j t осуществляется по схеме одного и то го же порядка точности p дв а- жды: с шагом t D и с шагом 2 t D . Можно доказать, чт о в этом случае для л о- кальной погрешности 1 + j ;> e реше ния, найденного с шагом 2 t D , справедлива следующая пр и ближенная оценка: ) 1 2 /( )] ( ) 2 ( [ 1 1 1 - D - D = + + + p j j j ;> u u t t e , где ) 2 ( 1 t D + j u , ) ( 1 t D + j u – решения в то чке 1 + j t , найденные на основе о д- ного и того же решения j u в точке j t с шагами 2 t D и t D соответстве н но. При втором способе интегрирование на отрезке ] , [ 1 + j j t t также вы - полняется дважды: с помощью схемы порядка точности p и схемы по рядка точности ( 1 + p ) при одном и том же шаге t D , и находятся со ответственно два решения в точке 1 + j t : ) ( 1 p u j + и ) 1 ( 1 + + p u j . В этом случае локальная погре ш- ность оценив а ется по формуле ) 1 ( ) ( 1 1 1 + - ᄏ + + + p u p u j j j ;> e . Обычно при расчетах указывается допустимое значение абсолют ной или относительной локальной погрешно сти, в соответствии с ко торой автоматич е- ски подбирается величина шага. Например, при первом способе оценки п о- грешности это делается так. В ходе расче тов сначала из некоторой точки j t делается шаг t D , затем два ша га длиной 2 t D , и на основе двух решений ) ( 1 t D + j u и ) 2 ( 1 t D + j u оценивается погрешность 1 + j ;> e в точке 1 + j t . Ес ли погре ш- ность не превосходит допустимого значения, то ) 2 ( 1 t D + j u принимается в кач е- стве найденного значения сеточной функции, и из точки 1 + j t продолжается
175 расчет с шагами t D и 2 t D . Если оценка локальной погрешности превосходит допустимое значен ие, то из точки j t делают два шага длиной 4 t D и оценив а- ют погрешность в точке 2 t t D + j . При достижении требуемого уровня п о- грешности расчет из точки 2 t t D + j продолжается с шагами 2 t D и 4 t D . В противном случае проводится дальнейшее измельчение шага. В том случае, когда при первой проверке погрешность оказывается сущест венно ниже д о- пустимого значения, обычно шаг ув е личивают путем его удвоения. Опис анные приемы оценки локальной погрешности внешне вы глядят очень просто. Сложности начинаются при их программной реализации с уч е- том минимизации затрат машинного времени. Алго ритм стремятся построить таким образом, чтобы при проведении вспо могательных ша гов использовать по возможности большее число уже вычисленных значений функции ) , ( u f t и нах о дить сравнительно не большое число ее новых значений. При использовании многошаговых схем по методу предиктор - корректор оценку локальной погрешност и на шаге обычно удается выразить через в ы- числяемые при реализации схемы предсказываемые и исправленные значения искомой функции. Таким образом, в этом случае для оценки погрешности не требуется дополнительных вычис лений функции ) , ( u f t , ч то является преим у- ществом по сравнению с одношаговыми методами. Однако у многошаговых методов сложнее реализуется процедура изменения шага. При уменьшении шага не обходимо либо путем интерполяции определить значения искомой функции в новых предшествующих т очках, либо получать по одно шаговой схеме новые "разго н ные" точки. При любой стратегии, основанной на оценке локальной погреш ности, не учитывается накопление погрешности в ходе всего расчета и, следовательно, фа к тическая погрешность численного решения ос та ется неизвестной. Более надежный путь оценки погрешности – сравнение двух решений ) ( ᄁ j u и ) ( ᄁ ᄁ j u , полученных во всей расчетной области ] , 0 [ max t при двух сетках
176 разной густоты – с шагами t ᄁ D и t ᄁ ᄁ D . В этом случае полная погрешность ) ( ᄁ ᄁ - = j j j u T e оценивается по следую щей фо р муле: ] 1 ) / /[( ] ) ( ) [( - ᄁ ᄁ D ᄁ D ᄁ - ᄁ ᄁ ᄏ p j j j u u t t e , где p – порядок точности схемы. Наиболее часто сравнивают реше ния на сетках, шаги которых отличаются вдвое. Следует подчеркнуть, что, несмотря на внешнее сходство с оценкой 1 + j ;> e для локальной погрешности, последнее соотношение справедливо для полной погрешности численного решения, так как сравниваются ре шения, получ е н- ные путем расчета всего процесса от начального мо мента 0 0 = t до момента j t на двух разных сетках. § 9.6. Решение систем обыкновенных дифференциальных уравнений Большинство рассмотренных выше схем решения одного ди фферен - циального уравнения первого порядка может быть легко обобщено для реш е- ния системы n уравнений: ) ,..., , , ( 2 1 n i i T T T f d dT t t = , 0 0 i i T T = = t , где n i ,..., 1 = . Разностные схемы записывают для системы уравнений т ак же, как и для одного уравнения. Отличие заключается лишь в том, что вместо одного знач е- ния сеточных функций j u и ) , ( j j u f t в каждом узле вычисляют векторные с е- точные функции с n компонентами: { } j n j j j u u u U ,..., , 2 1 = , { } j n j j j f f f f ,..., , 2 1 = , где ) ,..., , , ( 2 1 j n j j j i j i u u u f f t = . Например, явная схема Эйлера записывается для системы двух уравн е- ний в виде: ￯ ○ ￯ ■ ↓ D + = D + = + + ) , , ( ) , , ( 2 1 2 2 1 2 2 1 1 1 1 1 j j j j j j j j j j u u f u u u u f u u t t t t
177 Таким образом, запись какой - либо схемы для системы обыкновен ных дифференциа льных уравнений не вызывает дополнительных за труднений. Сложности могут возникнуть при ее численной реализа ции. Они обусловлены двумя обстоятельствами. Первое связано с не обходимостью при применении неявных схем решения на каждом шаге систем алгебраичес ких уравнений. Вторая особенность численного решения систем обыкновенных дифференц и- альных уравнений связана с достаточно широким распро странением в практ и- ческих задачах особого класса систем, называе мых жесткими [5] . Рассмотрим понятие жестких систем и специфические трудности их р е- шения на примере все той же задачи расчета нестационарного теплового р е- жима системы тел. Пусть име ется следующая задача расчета нагрева двух тел внутренними источ никами: 1 1 2 1 12 1 1 1 ) ( T T T P d dT ! c s s t - - - = , 10 0 1 T T = = t , 2 2 1 2 12 2 2 2 ) ( T T T P d dT ! c s s t - - - = , 20 0 2 T T = = t . Точное аналитическое решение этой задачи имеет вид AB n n n n T D D T + + = ) exp( ) exp( ) ( 2 2 1 1 t m t m t , ,... 2 , 1 = n где AB n T – стационарный перегрев над средой n - го тела; n D 1 , n D 2 – п о- стоянные, определяемые из начальных условий; 2 1 , m m – соб ственные числа з а- дачи, ра в ные 2 / 1 2 1 2 2 , 1 2 2 1 2 1 2 , 1 ] 4 / ) [( 2 ) ( C C m m m m ᄁ + - ᄆ + - = s m , 1 1 12 1 ) ( C m c s s + = , 2 2 12 2 ) ( C m c s s + = – параметры, имеющие смысл темпов о х- лаждения каждого из тел. Из структуры зависимости для 2 , 1 m видно, что может возникнуть ситу а- ция, когда отрицательные показатели экспонент 1 m и 2 m сильно отличаются по абсолютной величине, т. е. 2 1 m m <￰ . Это неравен ство будет выполнено, н а- пример, если 1 2 m m >￰ , т. е. тело 2 обладает существенно меньшей тепловой
178 инерцией; или в случае 2 1 m m = , 2 1 C C = , c c 2 1 s s = и 12 1 s s <￰ c (тепловая связь между телами на много сильнее связи со средой), тогда 1 1 1 C c s m - = , 1 1 12 2 ) 2 ( C c s s m + - = . При условии 2 1 m m <￰ в поведении решения ) ( t n T можно выде лить два временных интервала : начальный и основной, причем дли тельность первого значительно меньше, чем длительность второго. На начальном интервале пр о- исходит быстрое изменение второго сла гаемого в решении, имеющем эксп о- ненциальный множитель с боль шим по абсолютной величине показ ателем. К началу основного этапа "быстрая" экспонента практически полностью затух а- ет и процесс определяется первым слагаемым с большой постоянной времени. Проблема численного решения системы уравнений с сильно разли - чающимися собственными числами n m возникает в том случае, когда необх о- димо получить искомые функции на временном интервале, дли тельность к о- торого значительно превышает начальный этап. Дей ствительно, при использ о- в а нии какой - либо из рассмотренных выше явных схем или схем про гноза - коррекции нельзя выбирать шаг по времени большим, чем это допустимо по условию устойчивости. Ти пичное ограничение на шаг по времени для решения системы уравне ний имеет вид: max max m t t b = D ᆪ D , где постоянная b зависит от используемой схемы, а max m – макси мальное по модулю собственное число. При реализации численной схемы на начальном этапе процесса огран и- чение на шаг t D не является обременительным, поскольку для расчета быс т- рого пр оцесса, определяемого членом ) exp( max t m , из условия получения тр е- буемой погрешности расчета значение ша га t D , как правило, все равно дол ж- но быть меньше, чем max t D . Не удобства возникают после выхода на о сновную стадию. "Быстрый" экспоненциальный множитель в точном решении затухает и возника ет потребность увеличения шага по времени для "отслеживания"
179 медленно меняющегося процесса. Однако из - за свойств разностной схемы шаг увеличивать нельзя, поскольку сра зу же начинает разви ваться неустойчивость. В результате вся длительная основная ста дия процесса рассчитывается с м а- лым шагом по времени. Это приводит к недопустимому увеличению затрат машинного времени и накопле нию погрешностей округления, которое может существенно исказить око н чательные результаты. Рассмотренный пример позволяет отметить две особенности жест ких систем. Во - первых, в решении таких систем входят два вида функций: быстр о- убывающие функции, которые полностью "затуха ют" в начальной стадии, и медленно изменяющиеся функции, которые определяют процесс на основной стадии с длительностью, намного превышающей начальную. Во - вторых, и н- тервал, на котором тре буется получить решение, значительно превышает н а- чальную ст а дию. Таким образом, жесткость сист ем определяется как структурой решения, так и интервалом, на котором необходимо его получить. Строгое математич е- ское о п ределение понятия жесткости дано в пособиях [3, 6, 23]. Из приведенного выше примера вытекает наиболее распространенный критерий, позволя ющий выявить жест кую систему в случае, когда ее собс т- венные числа вещественные и отрицательные. Критерий заключается в сопо с- тавлении по модулю максимально го max m и минимального min m – собственных чисел линейной или л инеа ризованной системы. Если эти собственные числа сильно различаются по абсолютной величине ( 1 / min max >￰ m m ), а промежуток времени, на котором нужно получить решение, значительно превосходит и н- тер вал затухания ) exp( max t m , то систем а является жесткой, и при ее численном решении по явным схемам возникнут проблемы с выбо ром шага. Для решения жестких систем применяют специальные неявные разнос т- ные схемы, при реализации которых возникает ряд труднос тей. Во - первых, при решении систем не линейных разностных урав нений применение метода пр о- стой итерации неэффективно. Необхо димо применять метод Ньютона. Во -
180 вторых, линейные системы раз ностных уравнений, получающиеся либо неп о- средственно в процессе решения линейных систем обыкновенных диффер е н- циальных урав нений, либо при реализации метода Ньютона в случае нелине й- ных систем, являются часто плохо обусловленными. Для их решения при - меняют специал ь ные приемы. § 9.6. Программная реализация методов численного дифференцир о вания С самого начала следует отметить, что достаточно трудно сконструир о- вать такую программу, которая бы эффективно решала любую задачу Коши для обыкновенных дифференциальных уравнений или систем таких уравн е- ний. Помимо прочего, необходимо принимать во внимание специальные сво й- ства конкретной прикладной задачи: жесткость, сложность и стоимость в ы- числения правых частей, ожидаемую точность, желаемый вид выходной и н- формации, легкость, с которой пользователь может читать, использовать и, е с- ли необх о димо, модифицировать программу. Из многих имеющихся подпрограмм было принято решение включить в учебное пособие Си - функции, основанные на методах Рунге - Кутта. Такой в ы- бор был обусловлен необходимостью различия вычислительного метода и его программной реализации. В некоторых случаях метод может быть описан н е- сколькими простыми формулами, однако программа, полностью решающая эту задачу, является гораздо более сложным объектом. Она должна пред у- сматр и вать множество деталей, таких, как выбор величины шага, контроль ошибок, управление машинной памятью, взаимодействие с другими програ м- мами, выявление возможных разрывов и особенностей. Поэтому две разли ч- ные программы, выполняющие один и тот же численный метод, могут сущес т- венно различаться своими характеристиками. Пользователь, возможно, знает т очность, требуемую в решении, но он может не иметь представления о величине шага дифференцирования, необх о- димого, для ее достижения и наоборот. Более того, требования, предъявляемые
181 к величине шага, обычно изменяются в процессе решения задачи. В связи с эт им, желательно, чтобы подпрограмма - функция общего назначения имела возможность автоматического выбора длины шага и контроля ошибки дискр е- тизации. В данном пособии преимущественно рассматриваются нежесткие з а- дачи. Качественная программа с автоматическим выб ором шага и контроля ошибки обычно работает и для жестких задач, но она может быть не очень эффективной в этом случае. Хорошо написанную программу, основанную на методах Рунге - Кутта, можно довольно легко читать, понимать, использовать и модифицировать в с лучае необходимости. Автоматическое изменение шага в ходе решения систем дифференц и- альных уравнений необходимо, если решение требуется получить с заданной точностью. При высокой точности (погрешность 3 10 0 , 1 - ᅲ = = E e ) и решении в виде кривых с силь но различающейся крутизной автоматическое изменение шага обеспечивает уменьшение общего числа шагов в несколько раз, резко снижает вероятность возникновения числовой неустойчивости, дает более равномерное расположение точек графика решений при их выводе на печать. Метод Рунге - Кутта с автоматическим изменением шага заключается в том, что после вычисления ) 1 ( + i j Y с шагом h все вычисления выполняются п о- вторно с шагом 2 h . Полученный результат * ) 1 ( + i j Y сравнивается с ) 1 ( + i j Y . Если e < - + + * ) 1 ( ) 1 ( i j i j Y Y , вычисления продолжают с шагом h , в противном случае шаг уменьшают. Если это неравенство слишком сильное, шаг, напротив, увелич и- вают. При той же погр ешности 5 h R ᄏ лучшие результаты позволяет получить описанный ниже метод. Метод Рунге - Кутта - Мерсона с автоматическим изменением шага обеспечивает приближенную оценку погрешности на каждом шаге интегрир о- вания. Погрешность интегрирования им еет порядок 5 h . Этот метод реализуе т- ся сл е дующим алгоритмом.
182 После задания исходных данных с помощью пяти циклов с управля ю- щей переменной n j ,..., 3 , 2 , 1 = вычисляют значения коэффициентов ij K : ) ; ( 0 ji i j j Y x hF K = ; ￷ ￸ ￶ ￧ │ ₩ + + = j ji i j j K Y h x hF K 0 1 3 1 ; 3 1 ; ￷ ￸ ￶ ￧ │ ₩ + + + = j j ji i j j K K Y h x hF K 1 0 2 6 1 6 1 ; 3 1 ; ￷ ￸ ￶ ￧ │ ₩ + + + = j j ji i j j K K Y h x hF K 2 0 3 8 3 8 1 ; 2 1 ; ￷ ￸ ￶ ￧ │ ₩ + - + + = j j j ji i j j K K K Y h x hF K 3 2 0 4 2 2 3 2 1 ; . Затем в последнем цикле находят значение 6 / ) 4 ( 4 3 0 ) 1 ( j j j ji i j K K K Y Y + + + = + и погрешность 30 / ) 8 9 2 ( 4 3 2 0 ) 1 ( j j j j i j K K K K R + - + - = + . После чего проверяется вы полнение условий E R i j ᆪ + ) 1 ( , 30 / ) 1 ( E R i j ᄈ + . Если первое условие не выполняется, то делят шаг h на два и повторяют вычисления, восстановив начальные значения ji Y . Если это условие выполн я- ется и выполняется второе условие, то значения h x x i i + = + 1 и ) 1 ( + i j Y выводятся на печать. Если второе условие не выполняется, шаг h увеличивается вдвое и в ы числения повторяют опять. Таким образом, ) 1 ( + n j Y выводится на печать тол ь- ко при одновременном выполнении двух условий. Текст подпрограммы - функции, реализующей метод Рунге - Кутта - Мерсона с автоматическим изменением шага, представлен в листинге 9.1.  Листинг 9.1. #include <math.h> // директива препроцессора void RKM( void (*func)( float, float *, float *), int n, float x, float xn, float h, float *y , float *delx, float *ff, int *k2) { float *l, *a, *b, *c, *d, *e, *f, *w; // описание локальных переменных float eps1 = 1.0E - 07; // пог решность вычислений float eps2, eps3, q, s; int j, dx, i, k;
183 l = new float[n]; // выделение динамической машинной памяти a = new float[n]; b = new float[n]; c = new float[n]; d = new float[n]; e = new float[n]; f = new float[n]; /* результаты на первом шаге дифференцирования */ k = 0; for(i=0; i<n; i++) { w[i] = y[i]; ff[k*n+i] = y[i]; // вычисление значения oj K } while( x <= xn ) { eps3 = 0; func( x, y, f ); dx = 0; for(j = 0; j < n; j++) { a[j] = f[j] * h; y[j] = w[j] + a[j] / 3.0; // вычисление значения j K 1 } x = x + h / 3.0; func( x, y, f ); for(j = 0; j < n; j++) { y[j] = w[j] +( a[j] + f[j] * h ) / 6.0; // вычисление значения j K 2 } func( x, y, f ); for(j = 0; j < n; j++) { c[j] = f[j] * h; y[j] = w[j] + a[j] / 8.0 + 0.375 * c[j]; // вычисление значения j K 3 } x = x + h / 6.0; func( x, y, f ); for(j = 0; j < n; j++) { d[j] = h * f[j] ; y[j] = w[j] + a[j] / 2.0 - 1.5 * c[j] + 2 * d[j]; // вычисление значения j K 4 } x = x + h / 2.0; func( x, y, f );
184 for(j = 0; j < n; j++) { e[j] = h * f[j]; y[j] = w[j] + ( a[j] + 4 * d[j] + e[j]) / 6.0; // вычисле ние значения ) 1 ( + i j Y eps2 = fabs( - 2 * a[j] + 9 * c[j] – 8 * d[j] + e[j] ) / 30.0; // погрешность if( eps2 <= eps1 ) { if( eps2 < eps1 / 20.0 ) dx = dx + 1; } else { eps3 = 1.0; } } if( eps3 == 0.0 ) { if( dx == n ) { h = h + h; } for(i = 0; i < n; i++) { w[i] = y[i]; } k = k + 1; // пошаговое присваивание производной for(i=0; i<n; i++) { ff[k*n+i] = y[i]; } delx[k] = x; } else { x = x - h; for(i = 0; i < n; i++) { y[i] = w[i]; } h = h / 2.0; } } *k2 = k; delete( l ); // освобождение динамической машинной памяти delete( a ); delete( b ); delete( c ); delete( d ); de lete( e ); delete( f ); return; /* окончание подпрограммы численного дифференцирования */ } При использовании подпрограммы RKM необходимо в качестве фо р- мальных входных параметров передать функцию func , составленную польз о-
185 вателем для конкретной задачи и вычисляющую правые части системы ура в- нений; переменную n , характеризующую количество уравнений дифференц и- альной системы; x , xn – соответственно нижний и верхний пределы измен е- ния параметра, по которому выполняется дифференцирование; h – начальное зн а чение шага интегрирования; y * – массив начальных значений параметров дифференцирования. Все остальные параметры из заголовка подпрограммы rkm являются в ыходными, в частности delx * – результирующий массив соде р- жащий набор аргументов; ff * – указатель на содержимое двумерного ма с сива со значениями результатов интегрирования по каждой из n – переменн ых ji Y ; 2 k – к о личество записей в массивах delx и ff . Как отмечалось выше, погрешность ) 1 ( + i j R на каждом шаге метода Рунге - Кутта - Мерсона оценивается приближен но. При решении нелинейных дифф е- ренциальных уравнений истинная погрешность может отличаться в несколько раз от заданной E . Метод Рунге - Кутта - Фельберга с автоматическим изменением шага п о- зволяет получить более точную оценку погрешнос ти на каждом шаге и реал и- зуется последовательным циклическим вычислением по следующим форм у- лам [23]: ) ; ( 0 ji i j j Y x hF K = ; ￷ ￸ ￶ ￧ │ ₩ + + = j ji i j j K Y h x hF K 0 1 9 2 ; 9 2 ; ￷ ￸ ￶ ￧ │ ₩ + + + = j j ji i j j K K Y h x hF K 1 0 2 4 1 12 1 ; 3 1 ; ￷ ￸ ￶ ￧ │ ₩ + - + + = j j j ji i j j K K K Y h x hF K 2 1 0 3 64 135 128 143 128 69 ; 4 3 ; ￷ ￸ ￶ ￧ │ ₩ + - + - + = j j j j ji i j j K K K K Y h x hF K 3 2 1 0 4 15 16 5 27 4 27 12 17 ; ; ￷ ￸ ￶ ￧ │ ₩ + + + - + + = j j j j j ji i j j K K K K K Y h x hF K 4 3 2 1 0 5 144 5 27 4 16 13 16 5 432 65 ; 6 5 .
186 Затем в последнем цикле находят значение j j j j ji i j K K K K Y Y 4 3 2 0 ) 1 ( 12 1 45 16 20 9 9 1 + + + + = + и погрешность j j j j j i j K K K K K R 5 4 3 2 0 ) 1 ( 25 6 20 1 75 16 100 3 150 1 - + + - = + . В этом методе – разность приращений ) 1 ( + i j Y , вычисленных по двум фо р- мулам: порядка 4 = n и порядка 1 + n . Последняя формула не приводится, но используется для вычисления ) 1 ( + i j R . Если E R i j > + ) 1 ( , то шаг интегрирования уменьшают вдвое, если 20 / ) 1 ( E R i j < + , его значение увеличивают вдвое. Этот метод имеет четвертый порядок. Программная реализация метода Рунге - Кутта - Фельберга в виде подпрограммы - функции RKF представлена в листи н- ге 9.2.  Листинг 9.2. #include <math.h> // директива препроцессора void RKF( void (*func)(float, float *, float *), int n, float x, float xn, float h, float *y , float *delx, float *ff, int *k2) { float *l, *a, *b, *c, *d, *e, *f, *w; // описание локальных переменных float eps1 = 1.0E - 07; // погрешность вычислений float eps2, eps3, q, s; int j, dx, i, k; l = new float [n]; // динамическое распределение машинной памяти a = new float[n]; b = new float[n]; c = new float[n]; d = new float[n]; e = new float[n]; f = new float[n]; k = 0; // результаты на первом шаге дифференцирования for(i=0; i<n; i++) { w[i]=y[i ]; ff[k*n+i]=y[i]; // вычисление значения oj K } while( x <= xn ) { eps3 = 0.0; func( x, y, f );
187 dx = 0; for( j = 0; j < n; j++ ) { a[j] = f[j] * h; y[j] = w[j] + 2 * a[j] / 9.0; // вычисление значения j K 1 } x = x + 2 * h / 9.0; func( x, y, f ); for( j = 0; j < n; j++ ) { b[j] = h * f[j]; y[j] = w[j] + a[j] / 12.0 + b[j] / 4.0; // вычисление значения j K 2 } x = x + h / 9.0; func( x, y, f ); for( j = 0; j < n; j++ ) { c[j] = h * f[j]; // вычисление значения j K 3 y[j] = w[j] + ( 34.5 * a[j] - 121.5 * b[j] + 135.0 * c[j] ) / 64.0; } x = x + h / 2.4; func( x, y, f ); for( j = 0; j < n; j++ ) { d[j] = h * f[j]; q = w[j] - 17.0 * a[j] / 12.0 + 6.75 * b[j]; y[j] = q - 5.4 * c[j] + 16.0 * d[j] / 15.0; // вычисление значения j K 4 } x = x + h / 4.0; func( x, y, f ); for( j = 0; j < n; j++ ) { e[j] = h * f[j]; // вычисление значения j K 5 q = w[j] + 65.0 * a[j] / 432.0 - 0.3125 * b[j]; y[j] = q + 0.8125 * c[j] + 4.0 * d[j] / 27.0 + 5.0 * e[j]/ 144.0; } x = x - h / 6.0; func( x, y, f ); for( j = 0; j < n; j++ ) { l[j] = h * f[j]; // вычисление зн ачения ) 1 ( + i j Y y[j] = w[j] + a[j] / 9.0 + 0.45 * c[j] + 16.0 * d[j] / 45.0
188 + e[j] / 12.0; q = a[j] / 150.0 - 0.03 * c[j] + 16.0 * d[j] / 75.0 + e[j] / 20.0; eps2 = fabs( q - 0.24 * l[j] ); // расчетная погрешност ь if( eps2 <= eps1 ) // условия изменения шага интегрирования { s = eps1 / 20.0; if( eps2 < s ) dx = dx + 1; } else { eps3 = 1.0; } } x = x + h / 6.0; func( x, y, f ); if( eps3 == 0.0 ) { if( dx = = n ) { h = h + h; } for(i = 0; i < n; i++) { w[i] = y[i]; } k = k + 1; for(i=0; i<n; i++) // пошаговое присваивание производной { ff[k*n+i] = y[i]; } delx[k] = x; } else { x = x - h; for(i = 0; i < n; i++) { y[i] = w[i]; } h = h / 2.; } } *k2 = k; delete(l); // освобождение динамической машинной памяти delete(a); delete(b); delete(c); delete(d); delete(e); delete(f); return; /* окончание подп рограммы численного дифференцирования */ }
189 Список входных и выходных параметров подпрограммы - функции RKF совпадает с аналогичным списком функции RKM . Пример головной функции, иллюстрирующий принцип использования подпрограмм RKM и RKF , представлен в лис тинге 9.3 для случая решения си с- темы дифференциальных уравнений следующего вида: ￯ ￯ ○ ￯ ￯ ■ ↓ - - + + - = = - + - + = = 7 4 2 4 2 2 2 2 1 2 2 2 2 1 1 1 x x y y dx dy F x x y y dx dy F при 2 = n , 1 , 0 = h , 7 10 0 , 1 - ᅲ = E , 0 0 = x , 0 10 = y и 2 20 = y получают следующие р е- зультаты: x 1 y 2 y 05 , 0 3 10 499985857 , 2 - ᅲ 049999950 , 2 1 , 0 3 10 999968178 , 9 - ᅲ 099999890 , 2 15 , 0 2 10 249994626 , 2 - ᅲ 149999819 , 2 2 , 0 2 10 999991927 , 3 - ᅲ 199999736 , 2 25 , 0 2 10 249988623 , 6 - ᅲ 249999637 , 2  Листинг 9.3. #include <stdio.h> / / директивы препроцессора #include <conio.h> #include " diffur .h" // подключение библиотеки численного дифференцирования // описание функции, в которой находятся дифференциальные уравнения void func( float, float *, float * ); void main( void ) // голов ная функция программы { float delx[100], f[100][2]; // описание локальных переменных float *y, h, x, xn; int i, j, n, k; y = new float[n]; // динамическое выделение машинной памяти /* ввод исходных данных */ n = 2; // число дифференциальных урав нений clrscr(); // очистка экрана printf(" \ n Задайте значения начальных параметров дифференцирования:"); printf(" \ n Введите начальное X0 ="); scanf( "%f", &x ); printf(" \ n Задайте значениe конечного параметра дифференцирования:"); printf(" \ n Введит е конечное XN="); scanf( "%f", &xn );
190 printf(" \ n Задайте начальный шаг дифференцирования, h ="); scanf( "%f", &h ); puts(" \ n Введите начальные Y10 =, Y20 =, Y30 =....и т.д.:"); for( i = 0; i < n; i++ ) { printf(" Y[%d] =", i ); scanf( "%f", &y [i] ); } // обращение к подпрограмме Рунге - Кутта - Фельберга RKF( func, n, x, xn, h, y, delx, &f[0][0], &k); // вывод результатов интегрирования на печать for( j = 0; j <= k; j++ ) { printf(" \ n Для Х = %f ", delx[j]); for(i=0; i<n ; i++) { printf(" Y[%d][%d] = %f ", j, i, f[j][i] ); } } getch(); } /* окончание головной программы */ В строке #include " diffur .h" выполняется подключение заголовочного файла, в котором располагается описание используемых в головной функци и подпрограмм, необходимых для решения систем дифференциальных уравн е- ний. Текст файла diffur . h представлен в листинге 9.4.  Листинг 9.4. /* объявление подпрограмм - функций предназначенных для решения систем дифференциальных уравнений */ // метод Рунге - Кутта - Мерсона void RKM( void (*)( float, float *, float * ), int, float, float, float, float *, float *, float *, int *); // метод Рунге - Кутта - Фельберга void RKF( void (*)( float, float *, float * ), int, float, float, float, float *, float *, float *, int *); Текст подпрограммы func , содержащей систему дифференциальных уравнений, приведен в листинге 9.5.  Листинг 9.5. #include <math.h> // директива препроцессора /* подпрограмма содержащая блок диф ференциальных уравнений */ void func( float x, float *y, float *fp ) { fp[0] = y[0] + y[1] - pow( x, 2) + x - 2; fp[1] = - 2 * y[0] + 4 * y[1] + 2 * pow( x, 2 ) – 4 * x - 7; } /* окончание подпрограммы *func() */
191 ЗАКЛЮЧЕНИЕ Завершая учебное пособие, считаю целесообразным привести ряд соо б- ражений по постановке и методике преподавания курса "Математическое м о- делирование теплоэнергетических задач на ЭВМ", которые основаны на опыте преподавания этой дисциплины авторо м на кафедре "Тепловые электрические станции" Красноярского государственного технического университета (КГТУ). Рассмотренный в пособии теоретический материал рассчитан на 30 – 40 часов аудиторных занятий. Для получения студентами теплоэнергетических специ альностей практических навыков работы с программами, реализующими численные решения задач, а также умений и навыков самостоятельно разраб о- тать вычислительную программу, в курсе необходимо предусмотреть лабор а- торный практикум на ЭВМ в количестве не менее 40 – 50 часов и домашние задания. Проводимые в КГТУ лабораторные работы на ЭВМ представляют собой вычислительные практикумы, выполняемые на базе среды программирования Borland C ++ 3.1 , каждый из которых позволяет решить о п ределенный класс практических задач теплоэнергетики с помощью нескольких численных мет о- дов. При выполнении лабораторных работ студенты получают индивидуал ь- ные задания, различающиеся не только численными значениями параметров, но и особенностями постановки задачи. Как правило, целью выполнен ия лаб о- раторной работы является математическая формулировка инженерной тепл о- энергетической задачи, ее решение на ЭВМ с помощью нескольких вычисл и- тельных методов с последующим анализом погрешностей и скорости числе н- ного решения, сопровождаемые изучением осо бенностей их пр и менения. При этом работа сводится к разработке собственных программных модулей и и с- пользованию пакетов стандартных библиотек. Домашние задания заключаются в самостоятельном составлении алг о- ритмов и программ численного решения с последующим их тестированием посредством выполнения расчетов "вручную". При самостоятельном составл е-
192 нии программ целесообразно использовать рекомендации и практические приемы, разработанные в учебном пособии на примере приведенных фрагме н- тов вычислительных программ. Разработанный лабораторный практикум на ЭВМ включает 8 работ и охватывает рассмотренный в пособии учебный материал. Для их выполнения на ЭВМ имеются пакеты прикладных программ на языке программирования Си по численным методам, теплофизическим свойствам те плоносителей и коммерческой графике. С комплексом лабораторных работ и их программным сопровождением можно ознакомиться на кафедре "Тепловые электрические станции" КГТУ (660074, г. Красноярск, ул. Борисова, 26, ТЭС, КГТУ, e - mail : boikoe @ fivt . krasn . ru ) или на сайте в И н тернете www . kgtu . tef . runnet . ru .
193 ЛИТЕРАТУРА 1. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: Наука, 1987. – 475 с. 2. Самарский А.А., Гулин А.В. Численные методы. – М.: Наука, 1989. – 625 с. 3. Амосов А.А., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров: Уч еб. пособие. – М.: Высшая школа, 1994. – 544 с. 4. Боглаев Ю.П. Вычислительная математика и программирование. – М.: Высшая школа, 1990. – 358 с. 5. Самарский А.А., Герасимов Б.П., Мажукин В.И. Математическое моделирование – новая методология научных исследований . – М.: МЭИ, 1990. – 32 с. 6. Хемминг Р.В. Численные методы для научных работников и инженеров. – М.: Наука, 1972. – 417 с. 7. Иванов В.В. Методы вычислений на ЭВМ. Справочное пособие. – Киев: Наукова думка, 1986. – 325 с. 8. Горинштейн А.М. Практика решения инжене рных задач на ЭВМ. – М.: Радио и связь, 1984. – 287 с. 9. Форсайт Дж., Мальком М., Моулер К. Машинные методы математических вычислений. – М.: Мир, 1980. – 280 с. 10. Шуп Т. Решение инженерных задач на ЭВМ. – М.: Мир, 1982. – 238 с. 11. Справочное пособие по приближе нным методам решения задач высшей математики / Бородач Л.И., Герасимович А.И., Кеда Н.П. и др. – Минск: Высшая школа, 1986. – 189 с. 12. Карнов В.Я., Корягин Д.А. Пакеты прикладных программ. – М.: Знание, 1983. – 380 с. 13. Мак - Кракен Д., Дорн У. Численны е методы и программирование на Фортране. – М.: Мир, 1977. – 584 с. 14. Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. – Томск: Раско, 1992. – 270 с.
194 15. Дьяконов В.П. Справочник по алгоритмам и программам на языке Бейсик для персональны х ЭВМ. – М.: Наука, 1987. – 240 с. 16. Гринчишин Я.Т., Ефимов В.И., Ломанович А.Н. Алгоритмы и программы на Бейсике. – М.: Просвещение, 1988. – 160 с. 17. Брябин В.М. Программное обеспечение персональных ЭВМ. – М.: Наука, 1988. – 272 с. 18. Вирт Н. Алгоритмы + структу ра данных = программы / Пер. с англ. М.: Мир, 1985. – 378 с. 19. Тректон К. Программы на Бейсике для инженерно - технических расчетов. – М.: Радио и связь, 1985. – 320 с. 20. Очков В.Ф., Пухначев Ю.В. 24 этюда на Бейсике. – М.: Финансы и статистика, 1988. – 124 с. 21. В ерлань А.Ф., Сизиков В.С. Методы решения интегральных уравнений с программами для ЭВМ. – Киев: Наукова думка, 1978. – 285 с. 22. Ортега Дж., Рейнболдт В. Итерационные методы решения нелинейных систем уравнений со многими неизвестными. – М.: Мир, 1975. – 245 с. 23. Современные численные методы решения обыкновенных дифферен - циальных уравнений / Под. ред. Дж. Холла, Дж. Уайта. – М.: Мир, 1979. – 347 с. 24. Фарлоу С. Уравнения с частными производными для научных работников и инженеров. Пер. с англ. – М.: Мир, 1985. – 384 с. 25. Джонсон К. Численные методы в химии / Пер. с англ. – М.: Мир, 1983. – 504 с. 26. Никс Дж. Решение производственных задач на Бейсике / Пер. с англ. – М.: Машиностроение, 1987. – 256 с. 27. Эберт К., Эдерер К. Компьютеры. Применение в химии / Пер. с нем. – М.: Мир, 1988. 475 с. 28. Болч Б., Хуань К. Многомерные статистические методы для экономики / Пер. с англ. – Под ред. С.А. Айвазяна. М.: Статистика, 1979. – 317 с.
195 29. Ивченко Г.И., Медведев Ю.Н. Математическая статистика. – М.: Высшая школа, 1984. – 248 с. 30. Гутер Р.С. , Овчинский Б.В. Элементы численного анализа и математической обработки результатов опыта. – 2 - е изд., доп. и перераб. – М.: Наука, 1970. – 432 с. 31. Планирование эксперимента в исследовании технологических процессов. Хартман К., Лецкий Э., Шефер В. и др. / П од ред. Э. Лецкого. М.: Мир, 1977. – 552 с. 32. Ермаков С.М., Михайлов Г.А. Статистическое моделирование. – М.: Наука, 1982. – 296 с. 33. Банди Б. Методы оптимизации. Вводный курс / Пер. с англ. – М.: Радио и связь, 1988. – 214 с. 34. Линник Ю.В. Метод наименьших квад ратов и основы теории обработки данных. М.: Физматгиз, 1958. – 425 с. 35. Пустыльник Е.И. Статистические методы анализа и обработки наблюдений. М.: Наука, 1968. – 236 с. 36. Ферстер Э., Ренц Б. Методы корреляционного и регрессионного анализа / Пер. с нем. – М.: Фи нансы и статистика, 1983. – 339 с. 37. Цветков А.Н. Анализ и интерпретация экспериментальных данных. Радиоэлектроника. Изв. вузов. – Т. 27. – 1984. – №8 , С. 12 - 19. 38. Дрейпер И., Смит Г. Прикладной регрессионный анализ. – М.: Статистика, 1973. – 425 с. 39. Вапник В. Н. Восстановление зависимостей по эмпирическим данным. – М.: Наука, 1979. – 448 с. 40. Мелентьев Л.А. Системные исследования в энергетике. Элементы теории, направления развития. – 2 - е изд. – М.: Наука, 1983. – 454 с. 41. Мухачев Г.А., Щукин В.К. Термодинамика и те плопередача. – 3 - е изд., доп. и перераб. – М.: Высшая школа, 1991. – 480 с.
196 42. Каганович Б.М., Филипов С.П., Анциферов Е.Г. Моделирование термодинамических процессов . – Новосибирск: Наука. Сиб. отд - ие, 1993. – 100 с. 43. Каганович Б.М., Филипов С.П. Равновесная термодинамика и математическое программирование. – Новосибирск: Наука. Сиб. отд - ие, 1995. – 236 с. 44. Ривкин С.Л., Александров А.А. Теплофизические свойства воды и водяного пара. М.: Энергия, 1980. – 424 с. 45. Юза Я. Уравнения термодинамических свойств воды и во дяного пара, предназначенные для вычислительных машин // Теплоэнергетика. – 1967. – №1. С. 80 - 86. 46. Андрющенко А.И. Основы термодинамики циклов теплоэнергетических установок. – 3 - е изд. – М.: Высшая школа, 1985. – 213 с. 47. Левенталь Г.Б., Попырин Л.С. Оптими зация теплоэнергетических установок. – М.: Энергия, 1970. – 352 с. 48. Вульман Ф.А., Корягин А.В.,. Кривошей М.З. Математическое моделирование тепловых схем паротурбинных установок на ЭВМ. – М.: Машиностроение, 1985. – 112 с. 49. Попырин Л.С. Математическое модели рование и оптимизация теплоэнергетических установок. – М.: Энергия, 1978. – 416 с. 50. Рыжкин В.Я. Тепловые электрические станции / Под ред. В.Я. Гиршфельда. – 3 - е изд., перераб. и доп. – М.: Энергоатомиздат, 1987. – 328 с. 51. Боровков В.М., Демидов О.И., Каза ров С.А. и др. Тепловые схемы ТЭС и АЭС / Под ред. С.А. Казарова. – СПб.: Энергоатомиздат, 1995. – 392 с. 52. Промышленные тепломассообменные процессы и установки / Бакластов А.М., Горбенко В.А., Данилов О.Л. и др. – М.: Энергоатомиздат, 1986. – 327 с. 53. Палаги н А.А. Автоматизация проектирования тепловых схем турбоустановок. – Киев: Наукова думка, 1983. – 160 с.
197 54. Попырин Л.С., Самусев В.И., Эпельштейн В.В. Автоматизация математического моделирования теплоэнергетических установок. – М.: Наука, 1981. – 236 с. 55. Вульм ан Ф.А., Хорьков Н.С. Тепловые расчеты на ЭВМ теплоэнергетических установок / Под. об. ред. В.Я. Рыжкина. – М.: Энергия, 1975. – 200 с. 56. Шляхин П.Н. Паровые и газовые турбины. – М.: Энергоатомиздат, 1987. – 423 с. 57. Денисов В.И. Технико - экономические расчеты в энергетике. – М.: Энергоатомиздат, 1985. – 216 с. 58. Мигай В.К. Моделирование теплообменного энергетического оборудования. – Л.: Энергоатомиздат. Ленингр. отд - ие, 1987. – 264 с. 59. Патанкар С. Численные методы решения задач теплообмена и динамики жидкости / Пе р. с англ. – М.: Энергоатомиздат, 1984. – 475 с. 60. Ши Д. Численные методы в задачах теплообмена / Пер с англ. – М.: Мир, 1988. – 544 с. 61. Пасконов В.М., Полежаев В.И., Чудов Л.А. Численные методы в задачах тепло - и массообмена. – М.: Наука, 1984. – 425 с. 62. Бажа н П.И., Каневец Г.Е., Селиверстов В.М. Справочник по теплообменным аппаратам. – М.: Машиностроение, 1989. – 365 с. 63. Дульнев Г.Н., Парфенов В.Г., Сигалов А.В. Применение ЭВМ при решении задач теплообмена: Учеб. пособ. для теплофизич. и теплоэнергетич. спец. вузов. - М.: Высшая школа, 1990. – 207 с. 64. Применение ЭВМ для термодинамических расчетов металлургических процессов / Синяров Г.Б., Ватолин М.А., Трусов Б.Г., Моисеев Г.К. – М.: Наука, 1982. – 263 с. 65. Паршин А.А., Митор В.В., Безгрешнов А.Н. и др. Тепловые сх емы котлов. – М.: Машиностроение, 1987. – 224 с.
198 66. Тепловой расчет котельных агрегатов: Нормативный метод / Под ред. Кузнецова Н.В., Митора В.В., Дубовского И.Е., Карасиной Э.С.. - М.: Энергия, 1973. – 296 с. 67. Парилов В.А., Ушаков С.Г. Испытание и наладка па ровых котлов: Учеб. пособие для вузов. – М.: Энергоатомиздат, 1986. – 320 с. 68. Рихтер Л.А., Волков Э.П., Покровский В.Н. Охрана водного и воздушного бассейнов от выбросов ТЭС / Под ред. П.С. Непорожнего. – М.: Энергоиздат, 1981. – 296 с. 69. Сигал. И.Я. Защита в оздушного бассейна при сжигании топлива. – Л.: Недра, 1988. – 312 с. 70. Элис М., Строуструп Б. Справочное руководство по языку программирования С++ с комментариями. – М.: Мир, 1992. – 365 с.
199 СОДЕРЖАНИЕ П редисловие . . . . . . . . . . . . . . . . . . . . . . . . 3 Г лава 1 . М атематическое моделирование и системный подход при решении теплоэнергетических з а дач 8 § 1.1. Общая характеристика методов м оделирования теплоэнергет и- ческих установок . . . . . . . . . . . . . . . . . . . . . . . 8 § 1.2. Иерархия задач и уровней математического моделирования . . 10 § 1.3. Основные положения математического моделирования и пр о- цесс создания математической модели . . . . . . . . . . . . . . 15 § 1.4. Основные этапы решения инженерной задачи с применением ЭВМ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 § 1.5. Вычислительный эксперимент . . . . . . . . . . . . . . 21 § 1.6. Вопросы точности и эквивалентирования при построении м а- темати ческих моделей . . . . . . . . . . . . . . . . . . . . 23 § 1.7. Корректность вычислительной задачи . . . . . . . . . . . 25 § 1.8. Обусловленность вычислительной задачи . . . . . . . . . . 26 § 1.9. Вычислительные методы . . . . . . . . . . . . . . . . . 28 § 1.10. Требования к вычислительным алгоритмам и их программным реализациям . . . . . . . . . . . . . . . . . . . . . . . . . 30 Глава 2 . Методы поиска решений нелинейных уравнений 33 § 2.1. Математическое моделирование теплофизических свойств те п- лоносителей на ЭВМ . . . . . . . . . . . . . . . . . . . . . 33 § 2.2. Метод бисекции . . . . . . . . . . . . . . . . . . . . 37 § 2.3. Метод хорд . . . . . . . . . . . . . . . . . . . . . . 38 § 2.4. Метод касательн ых . . . . . . . . . . . . . . . . . . . 41 § 2.5. Метод простых итераций . . . . . . . . . . . . . . . . . 42 § 2.6. Программная реализация методов решений нелинейных ура в- нений . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Глава 3 . Методы решения систем линейных алгебраических
200 уравнений 53 § 3.1. Принцип построения балансовых уравнений на примере расч е- та элемент ов тепловой схемы ТЭС . . . . . . . . . . . . . . . 53 § 3.2. Метод Крамера . . . . . . . . . . . . . . . . . . . . . 63 § 3.3. Метод Гаусса . . . . . . . . . . . . . . . . . . . . . . 64 § 3.4. Итерационные методы решения систем линейных алгебраич е- ских уравнений . . . . . . . . . . . . . . . . . . . . . . . 66 § 3.5. Программная реализация мет одов решения систем линейных алгебраических уравнений . . . . . . . . . . . . . . . . . . . 68 Глава 4 . Методы решения систем нелинейных уравнений 78 § 4.1. Моделирование на ЭВМ тепломеханического оборудования энергоу становок . . . . . . . . . . . . . . . . . . . . . . . 78 § 4.2. Метод последовательных приближений . . . . . . . . . . 79 § 4.3. Метод Ньютона . . . . . . . . . . . . . . . . . . . . . 84 § 4.4. Программная реализация методов решения систем нелинейных уравнений . . . . . . . . . . . . . . . . . . . . . . . . . 86 Глава 5 . Численные методы вычислен ия определенных интегр а- лов 91 § 5.1. Технико - экономическая оценка показателей работы ТЭС . . . 91 § 5.2. Метод прямоугольников . . . . . . . . . . . . . . . . . 93 § 5.3. Метод трапеций . . . . . . . . . . . . . . . . . . . . 95 § 5.4. Метод Симпсона . . . . . . . . . . . . . . . . . . . . 96 § 5.5. Применение сплайнов для численного интегрирования . . . . 97 § 5.6. Методы наивысшей алгебраической точности . . . . . . . . 98 § 5.7. Программная реализация численных методов интегрирования . 101 Глава 6 . Методы поиска экстремумов функции одной переменной 108 § 6.1. Оптимизация режимных и конструктивных п араметров тепл о- энергетических установок . . . . . . . . . . . . . . . . . . . 108 § 6.2. Метод оптимального, пассивного поиска . . . . . . . . . . 114
201 § 6.3. Метод деления отрезка пополам . . . . . . . . . . . . . . 115 § 6.4. Метод золотого сечения . . . . . . . . . . . . . . . . . 116 § 6.5. Программная реализация численных методов поиска экстрем у- ма функции одной переменной . . . . . . . . . . . . . . . . . 119 Глава 7 . Методы многомерной оптимизации 125 § 7.1. Многомерная оптимизация теплоэнергетических установок на ЭВМ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 § 7.2. Понятие о методах спуска. Покоординатный спуск . . . . . . 129 § 7.3. Градиентный метод . . . . . . . . . . . . . . . . . . . 131 § 7.4. Метод случайного поиск а . . . . . . . . . . . . . . . . 132 § 7.5. Программная реализация методов многомерной оптимизации . 134 Глава 8 . Математическая обработка и анализ данных 138 § 8.1. Обработка результатов испытаний и эксплуатаци онных показ а- телей теплоэнергетических установок . . . . . . . . . . . . . . 138 § 8.2. Интерполяция и экстраполяция функциональных зависим о стей 139 § 8.3. Аппроксимация функций . . . . . . . . . . . . . . . . . 142 § 8.4. Регрессионный и корреляционный анализ. Приближение фун к- ций по методу наименьших квадратов . . . . . . . . . . . . . . 145 § 8.5. Статистический анализ данных . . . . . . . . . . . . . . 152 § 8.6. Сглаживание данных . . . . . . . . . . . . . . . . . . 155 § 8.7. Программная реализация методов интерполяции и аппрокс и- мации функциональных зависимостей . . . . . . . . . . . . . . 156 Глава 9 . Численные методы решения задач Коши для обыкн о венных дифференциальных уравнений 161 § 9.1. Математическое моделирование нестационарных тепловых процессов в энергоустановках . . . . . . . . . . . . . . . . . 161 § 9.2. Метод Эйлера . . . . . . . . . . . . . . . . . . . . . 162 § 9.3. Методы Рунге - Кутта . . . . . . . . . . . . . . . . . . . 167 § 9.4. Лине йные многошаговые методы . . . . . . . . . . . . . 169
202 § 9.5. Выбор шага дифференцирования и оценка погрешности чи с- ленного решения . . . . . . . . . . . . . . . . . . . . . . . 173 § 9.6. Решение систем обыкновенных дифференциальных уравн е ний . 176 § 9.7. Программная реализация методов численного дифференцир о- вания . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Зак лючение . . . . . . . . . . . . . . . . . . . . . . . . 191 Литература . . . . . . . . . . . . . . . . . . . . . . . . . 193
Учебное издание Бойко Евгений Анатольевич ПРИМЕНЕНИЕ ЭВМ ДЛЯ РЕШЕНИЯ ТЕПЛОЭНЕРГЕТИЧЕСКИХ ЗАДАЧ Редактор Г. И. Сысоева Технический редактор Н. Н. Черная Корректор З. Н. Кошелькова Подписано в печат ь 15.03.2001. Формат 60  88 1 /16. Бумага офсетная № 2. Печать офсетная. Усл. печ. л. 12,74. Тираж 100 экз. Заказ № 2217. Издательство «Сибирский промысел». 660075. Красноярск, ул. Республики, 51. Лиц. ИД № 02414 от 20.07.2000 г. Отпечатано на ПИК «ОФСЕТ». 660075. Красноярск, ул. Республики, 51. Тел. (3912) 23 - 36 - 81. E - mail: marketing@ofset.krsn.ru