ДАЛЬНЕВОСТОЧНЫЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТИХООКЕАНСКИЙ ИНСТИТУТ ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ И ТЕХНОЛОГИЙ
П. Н. Корнюшин
ЧИСЛЕННЫЕ МЕТОДЫ
© Издательство Дальневосточного университета 2002 ВЛАДИВОСТОК 2002 г.
2
СОДЕРЖАНИЕ СОДЕРЖАНИЕ ........................................................................................................................................................... 1 Аннотация.................................................................................................................................................................... 4 Рецензия на учебное пособие П.Н. Корнюшина «Численные методы»................................................................. 4 Методические указания для студентов ..................................................................................................................... 4 Модуль 1. Введение. Разностные уравнения............................................................................................................ 5 1.0. Введение ............................................................................................................................................................... 5 1.1. Разностные уравнения ....................................................................................................................................... 10 1.1.1. Сеточные функции...................................................................................................................................... 10 1.1.1.1. Сеточные функции и действия над ними........................................................................................... 10 1.1.1.2. Разностные аналоги формул дифференцирования произведения и интегрирования по частям .. 10 1.1.2. Разностные уравнения ................................................................................................................................ 11 1.1.2.1. Разностные уравнения ......................................................................................................................... 11 1.1.2.2. Уравнение первого порядка ................................................................................................................ 12 1.1.2.3. Неравенства первого порядка ............................................................................................................. 12 1.1.2.4. Уравнение второго порядка с постоянными коэффициентами........................................................ 12 1.1.2.5. Примеры................................................................................................................................................ 14 1.1.2.6. Разностное уравнение второго порядка с переменными коэффициентами. Задача Коши и краевая задача.................................................................................................................................................................. 15 1.1.3. Решение разностных краевых задач для уравнений второго порядка.................................................... 16 1.1.3.1. Решение разностных краевых задач методом прогонки................................................................... 16 1.1.3.2. Устойчивость метода прогонки .......................................................................................................... 17 1.1.3.3. Другие варианты метода прогонки..................................................................................................... 18 Модуль 2. Решение уравнений и задачи интерполяции ........................................................................................ 20 2.2. Численное решение алгебраических и трансцендентных уравнений ........................................................... 20 2.2.1. Задача отделения корней ............................................................................................................................ 20 2.2.2. Вычисление значений корня с заданной точностью. Метод итераций .................................................. 21 2.2.3. Метод итераций для системы уравнений.................................................................................................. 24 2.2.4. Принцип сжатых отображений .................................................................................................................. 26 2.2.5. Об одном принципе нахождения сходящихся итерационных процессов.............................................. 27 2.2.6. Метод хорд (секущих) и метод деления пополам .................................................................................... 27 2.2.7. Метод Ньютона (метод касательных) ....................................................................................................... 29 2.2.8. Вычисление значений алгебраического полинома .................................................................................. 30 2.2.9. Метод Лобачевского нахождения корней алгебраических многочленов .............................................. 31 2.3. Теория интерполирования................................................................................................................................. 33 2.3.1. Задача интерполирования в линейном пространстве .............................................................................. 33 2.3.2. Интерполяционный полином Лагранжа.................................................................................................... 35 2.3.3. Формула остаточного члена полинома Лагранжа.................................................................................... 36 2.3.4. Оценка остаточного члена формулы Лагранжа ....................................................................................... 36 2.3.5. Понятие о разделенных разностях............................................................................................................. 37 2.3.6. Интерполяционная формула Ньютона ...................................................................................................... 38 2.3.7. Основные задачи в теории интерполирования ......................................................................................... 38 2.3.8. Сплайн-интерполяция................................................................................................................................. 39 Модуль 3. Численное интегрирование и решение систем алгебраических уравнений ...................................... 42 3.4. Численное интегрирование ............................................................................................................................... 42 3.4.1. Задача приближенного вычисления определенного интеграла .............................................................. 42 3.4.1.1. Квадратурные формулы с наилучшей точностью для данного класса функций............................ 42 3.4.1.2. Квадратурные формулы с наилучшей степенью точности .............................................................. 42 3.4.1.3. Интерполяционные квадратурные формулы ..................................................................................... 43 3.4.1.4. Замечания к использованию квадратурных формул......................................................................... 44 3.4.2. Квадратурные формулы Ньютона-Котеса ................................................................................................ 44 3.4.3. Частные случаи формулы Ньютона-Котеса.............................................................................................. 45 3.4.3.1. Формула прямоугольников ................................................................................................................. 45 3.4.3.2. Формула трапеций ............................................................................................................................... 45 3.4.3.3. Формула парабол (Симпсона) ............................................................................................................. 46 3.4.4. Квадратурные формулы Гаусса ................................................................................................................. 46 3.5. Численное решение систем линейных алгебраических уравнений............................................................... 49 3.5.1. Системы линейных алгебраических уравнений ....................................................................................... 49 3.5.1.1. Системы уравнений ............................................................................................................................. 49
3 3.5.1.2. Частные случаи систем ........................................................................................................................ 49 3.5.1.3. Прямые и итерационные методы........................................................................................................ 50 3.5.2. Прямые методы ........................................................................................................................................... 51 3.5.2.1. Метод Гаусса ........................................................................................................................................ 51 3.5.2.2. Метод квадратного корня.................................................................................................................... 53 3.5.2.3. Связь метода Гаусса с разложением матрицы на множители.......................................................... 54 3.5.3. Итерационные методы................................................................................................................................ 55 3.5.3.1. Метод итераций для решения системы линейных алгебраических уравнений.............................. 55 3.5.3.2. Метод простой итерации ..................................................................................................................... 56 3.5.3.3. Метод Зейделя ...................................................................................................................................... 56 3.5.3.4. Метод релаксации ................................................................................................................................ 58 Модуль 4. Линейное программирование ................................................................................................................ 60 4.6. Основы линейного программирования ............................................................................................................ 60 4.6.1. Основы математического программирования .......................................................................................... 60 4.6.1.1. Оптимальное планирование и линейное программирование........................................................... 60 4.6.1.2. Математическая модель задачи линейного программирования ...................................................... 61 4.6.1.3. Классификация задач линейного программирования....................................................................... 66 4.6.2. Графический способ решения задачи линейного программирования ................................................... 68 4.6.2.1. Геометрический смысл линейных неравенств .................................................................................. 68 4.6.2.2. Геометрический смысл задачи линейного программирования........................................................ 71 4.6.2.3. Задачи.................................................................................................................................................... 73 4.6.2.4. Обобщение геометрической интерпретации на многомерный случай ........................................... 80 4.6.2.5. Алгебраическая характеристика вершины многогранника ограничений ....................................... 82 4.6.3. Симплексный метод.................................................................................................................................... 84 4.6.3.1. Геометрическая подготовка ................................................................................................................ 84 4.6.3.2. Жордановы исключения ...................................................................................................................... 86 4.6.3.3. Опорное решение, опорный план ....................................................................................................... 91 4.6.3.4. Улучшение опорного плана ................................................................................................................ 93 Глоссарий................................................................................................................................................................. 102 Литература............................................................................................................................................................... 104
4
Аннотация Учебное пособие содержит основные положения численных методов, относящихся к решению разностных и алгебраических уравнений, приближению функций, интегрированию, задачам алгебры и оптимизации, решению обыкновенных дифференциальных уравнений. Пособие предназначено для студентов вузов, изучающих основы вычислительной математики.
Рецензия на учебное пособие П.Н. Корнюшина «Численные методы» Написать учебное пособие по численным методам при наличии трудов таких классиков вычислительной математики, как Н.С. Бахвалов, И.С. Березин, Н.П. Жидков, А.А. Самарский и др. – задача очень неблагодарная, поскольку все основные методы вычислений описаны с различными уровнями подробности. Правда, пока еще не встречалось учебного пособия, предназначенного для дистанционного обучения. К тому же, данное учебное пособие предназначено для студентов, только начинающих освоение элементов вычислительной математики. Поэтому перед автором стояла непростая задача при сохранении относительной строгости изложения сделать материал в достаточной мере доступным для понимания. Поэтому, по-видимому, не следует требовать в каждом конкретном случае строгости при доказательстве теорем существования и единственности, если задача изложена на понятном качественном уровне. Цель, поставленная автором пособия, на мой взгляд, достигнута. Пособие написано достаточно понятным языком. Изложены Основные методы вычислений. К тому же, по сравнению с традиционным содержанием, в курс включены разделы линейного программирования, что особенно важно для студентов экономических специальностей. В целом, издание учебного пособия, в особенности в электронном виде (с учетом дефицита именно такой продукции), – необходимо и актуально.
Методические указания для студентов 1) Консультации можно получить по адресу: г. Владивосток, ул. Суханова 8, ДВГУ, ауд. 76 или по электронной почте:
[email protected]. 2) Форма аттестации по курсу – компьютерное тестирование в соответствии с прилагаемыми тестами. 3) Нормы аттестации: сдача каждого из 4-х тестирований, соответствующих 4-м модулям, не менее чем на «удовлетворительно».
5
Модуль 1. Введение. Разностные уравнения 1.0. Введение Бурное развитие средств вычислительной техники привело к подлинно революционному преобразованию науки вообще и математики в особенности. Увеличение возможностей теоретического изучения привело к изменению технологии научных исследований. Решение крупных научно-исследовательских проблем, таких как проблемы овладения ядерной энергией и освоения космоса, стало возможным лишь благодаря применению математического моделирования и новых численных методов, предназначенных для компьютеров. В настоящее время можно говорить о появлении нового способа теоретического исследования сложных процессов, допускающих математическое описание, – вычислительный эксперимент, т.е. исследование проблем средствами вычислительной математики. Существо этого способа можно пояснить на примере решения некоторой проблемы. На первом этапе формулируется задача, которую надо решать. Сначала выбирается некоторое приближение или содержательная модель процесса (физического, биологического, экономического и т.п.), решается вопрос о том, какие факторы надо учесть, а какими можно пренебречь. Содержательной модели ставится в соответствие математическая модель, т.е. математическое описание процесса с помощью алгебраических, дифференциальных, интегральных и других уравнений. Полученную математическую модель необходимо исследовать соответствующими математическими методами. Надо установить, правильно ли поставлена задача, хватает ли исходных данных, не противоречат ли они друг другу, существует ли решение поставленной задачи и единственно ли оно. На этом этапе используются методы классической математики. Второй этап вычислительного эксперимента состоит в построении приближенного численного метода решении задачи, т.е. в выборе вычислительного алгоритма. Под вычислительным алгоритмом понимают последовательность арифметических и логических операций, при помощи которых находится приближенное численное решение математической задачи, сформулированной на первом этапе. На третьем этапе осуществляется программирование вычислительного алгоритма и на четвертом этапе – проведение расчетов на компьютере. Разработка конкретных численных алгоритмов и их программирование на компьютере достаточно тесно связаны. Наконец, в качестве пятого этапа вычислительного эксперимента можно выделить анализ полученных численных результатов и последующее уточнение математической модели. Может оказаться, что модель слишком груба – результат вычислений не согласуется с экспериментом, или что модель слишком сложна, и решение с достаточной точностью можно получить при более простых моделях. Тогда следует начинать работу с первого этапа, т.е. уточнять математическую модель, и снова пройти все этапы. Следует отметить, что вычислительный эксперимент – это, как правило, не разовый счет по стандартным формулам, а, прежде всего, расчет серии вариантов для различных математических моделей. Вычислительные алгоритмы имеют некоторые характерные особенности, что определяет ряд предъявляемых к ним требований. Разработка и исследование вычислительных алгоритмов и их применение к решению конкретных задач составляют содержание очень большого раздела современной математики – вычислительной математики. Вычислительную математику в широком смысле этого термина определяют в настоящее время как раздел информатики, изучающей круг вопросов, связанных с использованием компьютера, и в узком смысле – как теорию численных методов и алгоритмов решения поставленных математических задач. В данном курсе будем иметь в виду вычислительную математику в узком смысле слова. Общим для всех численных методов является сведение математической задачи к конечномерной. Это чаще всего достигается дискретизацией исходной задачи, т.е. переходом от функций непрерывного аргумента к функциям дискретного аргумента. После дискретизации исходной задачи надо построить вычислительный алгоритм, т.е. указать последовательность
6
арифметических и логических действий, выполняемых на компьютере и дающих за конечное число действий решение дискретной задачи. Полученное решение дискретной задачи принимается за приближенное решение исходной математической задачи. При решении задачи на компьютере мы всегда получаем не точное решение исходной задачи, а некоторое приближенное решение. Чем же обусловлена возникающая погрешность? Можно выделить три основные причины возникновения погрешности при численном решении исходной математической задачи. Прежде всего, входные данные исходной задачи (начальные и граничные условия, коэффициенты и правые части уравнений) всегда задаются с некоторой погрешностью. Погрешность численного метода, обусловленную неточным заданием входных данных, принято называть неустранимой погрешностью. Далее, при замене исходной задачи дискретной задачей возникает погрешность, называемая погрешностью дискретизации или погрешностью метода. Например, заменяя производную u’(x) разностным отношением (u(x+∆x)u(x))/∆x, мы допускаем погрешность дискретизации, имеющую при ∆x → 0 порядок ∆x. Наконец, конечная разрядность чисел, представляемых в компьютере, приводит к погрешностям округления, которые могут нарастать в процессе вычислений. Естественно требовать, чтобы погрешности в задании начальной информации и погрешность, возникающая в результате дискретизации, были согласованы с погрешностью решения на компьютере дискретной задачи. Сказанное означает, что основное требование, предъявляемое к вычислительному алгоритму, – это требование точности. Оно означает, что вычислительный алгоритм должен давать решение исходной задачи с заданной точностью ε >0 за конечное число Q(ε) действий. Алгоритм должен быть реализуемым, т.е. обеспечивать решение задачи за допустимое машинное время или, в силу конечной скорости вычислений на компьютере, – за допустимое число действий. Для большинства алгоритмов время решения задачи (объем вычислений) Q(ε) возрастает при повышении точности, т.е. при уменьшении ε. Конечно, можно задать ε настолько малым, что время счета задачи станет недопустимо большим. Важно знать, что алгоритм дает принципиальную возможность получить решение задачи с любой точностью. Однако на практике величину ε выбирают, учитывая требование точности и возможность реализуемости алгоритма на данном компьютере. Для каждой задачи, алгоритма и машины есть свое характерное значение ε. Естественно добиваться, чтобы число действий (и тем самым машинное время решения задачи) Q(ε) было минимальным для данной задачи. Для любой задачи можно предложить много алгоритмов, дающих одинаковую по порядку (при ε → 0) точность ε>0, но за разное число действий Q(ε). Среди этих эквивалентных по порядку точности алгоритмов надо выбрать тот, который дает решение с затратой наименьшего машинного времени (числа действий Q(ε)). Такие алгоритмы будем называть оптимальными. Остановимся еще на одном требовании, предъявляемом к вычислительному алгоритму, а именно – требовании отсутствия аварийного останова (авоста) компьютера в процессе вычислений. Следует иметь в виду, что компьютер оперирует с числами, имеющими конечное число значащих цифр и принадлежащих (по модулю) не всей числовой оси, а некоторому интервалу (М0,М∞), М0>0, М∞<∞, где М0 – машинный нуль, М∞ – машинная бесконечность. Если условие │М│<М∞ в процессе вычислений нарушается, то происходит аварийный останов вследствие переполнения разрядной сетки, и вычисления прекращаются. Возможность авоста зависит как от алгоритма, так и от исходной задачи. Если решение исходной задачи выражается через очень большие (очень малые) числа │М│>М∞ (│М│<М0), то, как правило, путем изменения масштабов можно привести задачу к виду, содержащему только величины, принадлежащие (по модулю) заданному интервалу (М0,М∞). Часто возможность авоста может быть устранена путем изменения порядка действий. Поясним это на простом примере. Пример 1. Пусть М∞=10р, М0=10-р, р=2n, n – целое число. Требуется вычислить произведение чисел 10p/2,10p/4,10-p/2,103p/4,10-3p/4. 1-й способ. Перенумеруем числа в порядке убывания: q1=103p/4, q2=10p/2, q3=10p/4, q4=10-p/2, -3p/4 q5=10 и образуем произведения Sk+1=Skqk+1, S1=q1. Тогда уже на первом шаге мы получим авост, т.к. S2=q1q2=105p/4>M∞. 2-й способ. Перенумеруем числа в порядке возрастания: q1=10-3p/4, q2=10-p/2, q3=10p/4, p/2 q4=10 , q5=103p/4. В этом случае мы получим на первом шаге S2 = q1q2 =10-5p/4<M0, т.е. S2 – машинный нуль; нулю равны и все последующие произведения S3, S4, S5; таким образом, здесь происходит полная потеря точности.
7
3-й способ. Перемешаем эти числа, полагая, q1=10-3p/4, q2=10p/2, q3=103p/4, q4=10-p/2, q5=10p/4. Тогда последовательно найдем: S2=q1q2=10-p/4, S3=S2q3=10p/2, S4=S3q4=100, S5=S4q5=10p/4, т.е. в процессе вычислений не появляются числа, большие 10p/2 и меньшие 10-p/4. Такой алгоритм является безавостным. При каждом акте вычислений появляются погрешности округления. В зависимости от алгоритма эти погрешности округления могут либо нарастать, либо затухать. Если в процессе вычислений погрешности округления неограниченно нарастают, то такой алгоритм называют неустойчивым (вычислительно неустойчивым). Если же погрешности округления не накапливаются, то алгоритм называется устойчивым. Пример 2. Пусть требуется найти yi (0
значение y i = y i + δ i . Тогда вместо точного значения yi+1 получим приближенное значение ~
y i +1 = ( y i + δ i ) + d = y i +1 + δ i .
Таким образом, погрешность, допущенная на любом промежуточном шаге, не увеличивается в процессе вычислений. Алгоритм устойчив. Пример 3. Рассмотрим уравнение yi+1=qyi (i≥0, y0 и q заданы). Пусть, как и в примере 2, ~
вместо yi получено значение y i = y i + δ i . Тогда вместо yi+1 получим приближенное значение ~
~
y i +1 = q ( y i + δ i ) = y i +1 + qδ i . Таким образом, погрешность δi+1= y i +1 − y i +1 , возникающая при вычислении yi+1, связана с погрешностью δi уравнением δi+1=qδi, i=0,1,2,…. Следовательно, если q > 1 , то в процессе вычислений абсолютное значение погрешности будет возрастать (алгоритм
q ≤ 1 , то погрешность не возрастает, т.е. алгоритм устойчив.
неустойчив). Если же
Неустойчивость обычно связывают со свойством экспоненциального нарастания ошибки округления. Если же погрешность округления нарастает по степенному закону при переходе от одной операции к другой («от шага к шагу»), то алгоритм считают условно устойчивым (устойчивым при некоторых ограничениях на объем вычислений и требуемую точность). Процесс вычислений можно трактовать так: при переходе от шага к шагу происходит искажение (за счет погрешностей округления) последних значащих цифр (от последних значащих цифр справа налево движется «волна погрешности округления»). Нам нужно обычно сохранить верными несколько первых значащих цифр (4-5 знаков), и поэтому вычисления должны быть закончены до того, как до них дойдет «волна погрешности округления». Если погрешность округления ε0 нарастает от шага к шагу по экспоненциальному закону, то это приводит, как правило, к авосту на i
промежуточном этапе вычислений, если (как в примере 3) q ε 0 ≥ M ∞ . Если М∞=10р, ε0=10-k 0 , то авост наступает при i0>(p+k0)/lg q . Иначе обстоит дело при степенном росте погрешности округления. Пусть δy i ≈ inε0 (n≥1); тогда авост наступит при
1 i ε 0 ≥ M ∞ , т.е. при i0 ≥ M ∞ ε 0 n 0
1/ n
=10(p+k 0 )/n. Ясно, что при n=1 авоста не будет в силу
очевидного ограничения i<М∞=10р. Неравенство δy i ≤ ε , где ε=10-k – заданная точность,
ε справедливо при i ≤ ε0
1/ n
= 10 ( k 0 − k ) / n = i 0 . Если заданы ε и ε0, то это неравенство означает
ограничение на число уравнений i≤i0. Так, при k0=12, k=6 имеем i≤106/n, так что i≤103 при n=2. Ясно, что можно указать такое большое n, что допустимое число уравнений i0 очень мало. Однако на практике обычно встречаются случаи небольшого n. При решении любой задачи необходимо знать какие-то входные (исходные) данные – начальные, граничные значения искомой функции, коэффициенты или правую часть уравнения и др. Для каждой задачи ставятся одни и те же вопросы: существует ли решение задачи, является ли оно единственным и как зависит решение от входных данных? Возможны два случая. В первом
8
случае задача поставлена корректно (задача корректна). Это значит, что 1) задача разрешима при любых допустимых входных данных; 2) имеется единственное решение; 3) решение задачи непрерывно зависит от входных данных (малому изменению входных данных соответствует малое изменение решения) – иными словами, задача устойчива. Во втором случае задача поставлена некорректно (задача некорректна). Такой вариант возникает, если, например, решение задачи неустойчиво относительно входных данных (малому изменению входных данных может соответствовать большое изменение решения). Примером корректной задачи может служить задача интегрирования, а примером некорректной задачи – задача дифференцирования. Пример 4. Задача интегрирования. Дана функция f(x); найти интеграл J= ~
~
Заменим f на f и рассмотрим J =
1~
∫
0
~
1
∫
0
f ( x)dx .
~
1
f ( x)dx и разность δJ= J − J = ∫ δfdx , где δf= f (x)-f(x). 0
Ясно, что δJ ≤ max δf ( x ) , δJ ≤ ε , если δf ≤ ε , т.е. J непрерывно зависит от f. Для вычисления 0 ≤ x ≤1
интеграла J воспользуемся квадратурной формулой: N
JN=
∑ c k f ( x k ), ck>0, k =1
N
∑c k =1
k
= 1.
Повторяя рассуждения, приведенные выше, получим ~
δJN= J N − J N =
N
∑c k =1
~
N
N
k =1
k =1
k ( f k − f k ) = ∑ c k δf k , δJ N ≤ ∑ c k max δf k = max δf k . 1≤ k ≤ N
1≤ k ≤ N
Таким образом, задача вычисления интеграла по квадратурной формуле корректна. Пример 5. Задача дифференцирования. Задача дифференцирования функции u(x), заданной приближенно, является некорректной. В самом деле, пусть u (x)=u(x)+
1 sinN2x, где N достаточно N
велико.
0≤x≤δ
~
Тогда ~
в
метрике
С
(на
некотором
отрезке
(δ>π/N2))
имеем
~
δu c = u − u = 1 / N ≤ ε при N≥1/ε. Для погрешности производных δu'= u '-u'=NcosN2x имеем c
δu ' c =N≥1/ε. Таким образом, малому изменению O(ε) в С функции u(x) соответствует большое изменение O(1/ε) в С ее производной. Поэтому численное дифференцирование некорректно. Чтобы найти приближенное значение производной по формуле разностной производной с некоторой точностью ε>0 при условии, что функция задана с погрешностью δi ( δ i ≤ δ 0 ), необходимо выполнение условий согласования ε, δ0 и шага h сетки, например, вида ε≥k δ 0 (k=const>0 не зависит от h, δ0, причем шаг сетки ограничен как снизу, так и сверху. Таким образом, достижимая точность численного дифференцирования лимитируется точностью задания самой функции. В данном курсе рассматриваются только корректные задачи и численные методы, ориентированные на использование компьютеров. Численные методы дают приближенное решение задачи. Это значит, что вместо точного решения u (функции или функционала) некоторой задачи мы находим решение y другой задачи, близкое в некотором смысле к искомому. Как уже указывалось, основная идея всех методов – дискретизация или аппроксимация (замена, приближение) исходной задачи другой задачей, более удобной для решения на компьютере, причем решение аппроксимирующей задачи зависит от некоторых параметров, управляя которыми можно определить решение с требуемой точностью. Например, в задаче численного интегрирования такими параметрами являются узлы и веса квадратурной формулы. Далее, решение дискретной задачи является элементом конечномерного пространства. Остановимся на этом подробнее. Рассмотрим, например, дискретизацию пространства H={f(x)} функций f(x) непрерывного _
аргумента x ∈ [a,b]. На отрезке a ≤ x ≤ b введем конечное множество точек ω ={xi, i=0,1,…,N, _
x0=a, xN=b, xi<xi+1}, которое назовем сеткой. Точки xi будем называть узлами сетки ω . Множество
9
_
ω без узлов x0 и xN будем обозначать ω. Если расстояние hi=xi-xi-1 между соседними узлами постоянно (не зависит от i), hi=h для всех i=1, 2,…, N, то сетку ω называют равномерной (с шагом h), в противном случае – неравномерной. Вместо функции f(x), определенной для всех x ∈ [a,b], будем рассматривать сеточную функцию yi=f(xi) целочисленного аргумента i (i=0, 1,…, N) или _
узла xi сетки ω , а H={f(x), x ∈ [a,b]} заменим конечномерным (размерности N+1) пространством HN+1={yi, 0≤i≤N} сеточных функций. Очевидно, что сеточную функцию yi=f(xi) можно рассматривать как вектор y=(y0, y1,…, yN). Можно провести также дискретизацию и пространства функций f(x) многих переменных, когда x=(x1, x2,…, xp) – точка р-мерного евклидового пространства (р>1). Так, на плоскости (x1, x2) можно ввести сетку ω={xi=(i1h1, i2h2), i1, i2 =0, ± 1,±2,...} как множество точек (узлов) пересечения перпендикулярных прямых x1 1 = i1 h1 , x 2 2 = i 2 h2 , h1 > 0, h2 > 0, i1 , i 2 = 0,±1,±2,... , где h1 и h2 – шаги сетки по направлениям x1 и x2 соответственно. Сетка ω, очевидно, равномерна по каждому из переменных в отдельности. Вместо функции f(x)=f(x1, x2) будем рассматривать сеточную функцию (i )
y i1i2 = f (i1 h1 , i 2 h2 ) . Если сетка
(i )
_
ω
содержит
только
те
узлы,
которые
принадлежат
прямоугольнику (0≤x1≤l1, 0≤x2≤l2), так что h1=l1/N1, h2=l2/N2, то сетка имеет конечное число N=(N1+1)(N2+1) узлов, а пространство HN сеточных функций yi= y i1i2 является конечномерным. Мы всюду рассматриваем только конечномерное пространство сеточных функций. Заменяя пространство H={f(x)} функций непрерывного аргумента и исходную задачу пространством H сеточных функций и дискретной аппроксимацией исходной задачи, мы должны быть уверены, что будем лучше приближаться к решению исходной задачи при увеличении числа узлов. Оценка качества приближения и выбор способа аппроксимации – главная задача теории численных методов. Основное содержание курса в той или иной степени связано с применением разностных методов для решения дифференциальных уравнений. Выделим два главных вопроса: 1) получение дискретной (разностной) аппроксимации дифференциальных уравнений и исследование получающихся при этом разностных уравнений; 2) решение разностных уравнений. При получении дискретной аппроксимации (разностные схемы) важную роль играет общее требование, чтобы разностная схема как можно лучше приближала (моделировала) основные свойства исходного дифференциального уравнения. Такие разностные схемы можно получать, например, при помощи вариационных принципов и интегральных соотношений. Оценка точности разностной схемы сводится к изучению погрешности аппроксимации и устойчивости схемы. Изучение устойчивости – центральный вопрос теории численных методов и ему уделяется большое внимание в данном курсе. Алгоритмы для сложных задач можно представить как последовательность (цепочку) простых алгоритмов (модулей). Поэтому многие принципиальные вопросы теории числовых методов можно выяснить на простых алгоритмах. В первой главе рассматриваются одномерные (зависящие от одного целочисленного аргумента) разностные уравнения. Вторая глава посвящена численному решению алгебраических и трансцендентных уравнений. В третьей главе излагаются основы теории интерполирования. Четвертая глава содержит основные методы численного интегрирования. В пятой главе рассматривается численное решение систем линейных алгебраических уравнений. Шестая глава дает основные сведения классификации, постановки и решения задач линейного программирования.
10
1.1. Разностные уравнения В этой главе изучаются сеточные функции целочисленного аргумента и разностные уравнения второго порядка. Излагается простейший математический аппарат для изучения сеточных функций и разностных операторов. Для решения разностных уравнений второго порядка применяется метод исключения, называемый методом прогонки.
1.1.1. Сеточные функции 1.1.1.1. Сеточные функции и действия над ними Как уже упоминалось, в приближенных методах обычно функции непрерывного аргумента заменяются функциями дискретного аргумента – сеточными функциями. Сеточную функцию можно рассматривать как функцию целочисленного аргумента: y(i)=yi, i=0, ± 1, ± 2,…. Для y(i) можно ввести операции, являющиеся дискретным (разностным) аналогом операций дифференцирования и интегрирования. Аналогом первой производной являются разности первого порядка: ∆yi=yi+1-yi – правая разность; ∇ yi=yi-yi-1 – левая разность;
1 1 (∆yi+ ∇ yi)= (yi+1-yi-1) – центральная разность; 2 2 следует заметить, что ∆yi= ∇ yi+1. δyi=
Далее можно определить разности второго порядка: ∆2yi=∆(∆yi)=∆(yi+1-yi)=yi+2-2yi+1+yi, ∆ ∇ yi=∆(yi-yi-1)=(yi+1-yi)-(yi-yi-1)=yi+1-2yi+yi-1, так что ∆2yi=∆ ∇ yi+1. Аналогично определяется разность m-го порядка: ∆myi=∆(∆m-1yi), содержащая значения yi, yi+1,…,yi+m. Очевидно, что i
∑ ∆y j =1
i
j
=yi+1-yk,
∑ ∇y j =k
j
=yi-yk-1.
1.1.1.2. Разностные аналоги формул дифференцирования произведения и интегрирования по частям Пусть yi, vi – произвольные функции целочисленного аргумента. Тогда справедливы формулы: ∆(yivi)=yi∆vi+vi+1∆yi=yi+1∆vi+vi∆yi, (1) ∇ (yivi)=yi-1 ∇ vi+vi ∇ yi=yi ∇ vi+vi-1 ∇ yi, (2) которые проверяются непосредственно. Например, ∆(yivi)=yi+1vi+1-yivi; yi∆vi+vi+1∆yi=yi(vi+1-vi)+vi+1(yi+1-yi)=yi+1vi+1-yivi=∆(yivi). При выводе формулы для ∇ (yivi) достаточно учесть, что ∇ (yivi)=∆(yi-1vi-1). Формулы (1), (2) представляют собой аналоги формулы дифференцирования произведения (y(x)v(x))'=yv'+vy'. Аналогом формулы интегрирования по частям является формула суммирования по частям: N −1
N
i =0
i =1
∑ yi ∆vi = −∑ vi∇yi + ( yv) N − ( yv)0 , которую записывают также в виде
(3)
11 N −1
N −1
i =1
i =1
N −1
N
N −1
i =0
i =1
∑ yi ∆vi = −∑ vi∇yi + yN −1vN − y0v1.
(4)
Для вывода формулы (3) воспользуемся формулой (1). Поскольку ∆yi= ∇ yi+1, из формулы (1) следует yi∆vi=∆(yivi)-vi+1∆yi=∆(yivi)-vi+1 ∇ yi+1, отсюда получаем
∑ y i ∆vi + ∑ vi ∇y i =
N −1
N
i =0
i =1
∑ ∆( y i vi ) − ∑ vi +1∇y i +1 + ∑ vi ∇y i = i =0
N
N
i =1 N
i =1
= y N v N − y 0 v 0 − ∑ v i ∇y i + ∑ v i ∇y i = ( yv) N − ( yv) 0 . N −1
Если y0=0, yN=0, то
∑ y ∆v i =0
i
i
= − ∑ v i ∇y i . i =1
Формулу суммирования по частям можно использовать для вычисления сумм. Пример 1. Вычислить сумму SN=
∑
N i =1
i 2 i . Положим vi=i, ∇ yi=2i, так что
yi=yi-1+2i=y0+
i
∑2
i
=y0+2i+1-2.
j =1
Выберем y0=2-2
N+1
; тогда yN=0. Так как v0=0, ∆ vi=1, то из (3) следует
N
N −1
N −1
N −1
i =0
i =0
i =0
S N = ∑ v i ∇y i = − ∑ y i ∆v i = − ∑ y i = N ( y 0 − 2) − ∑ 2 i +1 = N 2 N +1 − (2 N +1 − 2), i =1
так что SN=(N-1)2
N+1
+2.
Пример 2. Вычислить SN=
∑
N i =1
i (i − 1) = ∑i =1 i (i + 1) . Положим yi=i, ∇ vi=i+1. Тогда N −1
vi+1=vi+(i+1)=v1+(2+3+…+(i+1))=(v1-1)+(i+1)(i+2)/2, vi=v1-1+i(i+1)/2. Выберем v1 из условия vN=0, т.е. v1=1-N(N+1)/2. Применяя формулу (3) и учитывая, что y0=0, vN=0, ∇ yi=1, находим N −1
SN=
N −1
∑ i(i + 1) = ∑ y ∆v i =1
i =0
i
i
N
N −1
i =1
i =1
= −∑ v i ∇y i = −∑ v i = −( N − 1)(v1 − 1) − =−
1 N −1 ∑ i(i + 2) = 2 i =1
( N − 1) N ( N + 1) 1 SN + , 2 2
так что SN=(N-1)N(N+1)/3. Отсюда следует, что N
N
i =1
i =1
∑ i 2 = 12 + 2 2 + ... + N 2 = S N + ∑ i =
N ( N + 1)(2 N + 1) . 6
1.1.2. Разностные уравнения 1.1.2.1. Разностные уравнения Линейное уравнение относительно сеточной функции yi=y(i) (i=0, 1, 2,…) a0(i)y(i)+a1(i)y(i+1)+…+am(i)y(i+m)=f(i), (1) где ak(i) (k=0, 1, …, m), f(i) – заданные сеточные функции, a0(i) ≠ 0, am(i) ≠ 0, называется линейным разностным уравнением m-го порядка. Оно содержит m+1 значение функций y(i). Пользуясь формулами для разностей ∆yi, ∆2yi,…, ∆m-1yi, можно выразить значения yi+1, yi+2,…, ym+1 через yi и указанные разности: yi+1=yi+∆yi, yi+2=∆2yi+2yi+1-yi=∆2yi+2∆yi+yi и т.д. В результате из (1) получим новую запись разностного уравнения m-го порядка:
a 0 (i)yi+ a1 (i)∆yi+…+ a m (i)∆myi=f(i), i=0, ± 1,±2,...
(2)
12
(чем и объясняется термин «разностное уравнение»). Если коэффициенты a0, a1,…, am не зависят от i, a0 ≠ 0, am ≠ 0, то (1) называется линейным разностным уравнением m-го порядка с постоянными коэффициентами. При m=1 из (1) получаем разностное уравнение первого порядка a0(i)yi+a1(i)yi+1=f(i), a0(i) ≠ 0, a1(i) ≠ 0, (3) при m=2 – разностное уравнение второго порядка a0(i)yi+a1(i)yi+1+a2(i)yi+2=f(i), a0(i) ≠ 0, a2(i) ≠ 0. Мы ограничимся изучением разностных уравнений первого и второго порядков.
1.1.2.2. Уравнение первого порядка Рассмотрим разностное уравнение первого порядка (3). Подставляя yi+1=yi+∆yi, получим a 0(i)yi+a1(i) ∆yi=f(i), a 0=a0+a1. Простейшими примерами разностных уравнений первого порядка могут служить формулы для вычисления членов арифметической прогрессии yi+1=yi+d и геометрической прогрессии yi+1=qyi. Запишем уравнение (3) в виде yi+1=qiyi+ϕi, (4) где qi=-a0(i)/a1(i), ϕi=f(i)/a1(i). Отсюда следует, что решение y(i) определено однозначно при i>i0, если задано значение y(i0). Пусть при i=0 задано y0=y(0). Тогда можно определить y1, y2,…, yi,…. Последовательно исключая yi, yi-1,…, y1 по формуле (4), получим yi+1=qiqi-1…q0y0+ϕi+qiϕi-1+qiqi-1ϕi-2+…+qiqi-1…q1ϕ0, или i −1 i i yi+1= ∏ q k y 0 + ∑ ∏ q s ϕ k + ϕ i . k = 0 s = k +1 k =0
(5)
Для уравнения с постоянным коэффициентом, когда qi=q из (5) получаем yi+1=qi+1y0+
i
∑q k =0
i −k
ϕ k , i = 0,1,2,...,
(6)
т.е. решение разностного уравнения (4) с постоянными коэффициентами.
1.1.2.3. Неравенства первого порядка Если в выражениях типа (1) или (2) знак равенства заменить знаками неравенства <, >, ≤ , ≥ , то получим разностные неравенства m-го порядка Пусть дано разностное неравенство первого порядка
yi+1 ≤ qyi+fi, i=0, 1, 2,…; q ≥ 0. (7) Не ограничивая общности, далее всегда считаем q>0 (y0,, q, fi известны). Найдем его решение. Пусть vi – решение разностного уравнения vi+1=qvi+fi, i=0, 1,…; v0=y0. (8) Тогда справедлива оценка yi ≤ vi. (9) В самом деле, вычитая (8) из (7), находим yi+1-vi+1 ≤ q(yi-vi) ≤ q2(yi-1-vi-1) ≤ ... ≤ qi+1(y0-v0)=0. Подставив в (9) явное выражение для vi получим yi ≤ qiy0+
i −1
∑q k =0
i −1− k
f k , i=0, 1, 2,…,–
(10)
решение неравенства (7).
1.1.2.4. Уравнение второго порядка с постоянными коэффициентами
13
Рассмотрим разностное уравнение второго порядка byi+1-cyi+ayi-1=fi, i=0, 1,…; a ≠ 0, b ≠ 0, (11) коэффициенты которого не зависят от i. Если fi =0, то уравнение byi+1-cyi+ayi-1=0, i=0, 1,…, (12) называется однородным. Его решение может быть найдено в явном виде. Пусть y i – решение однородного уравнения (12), y i* – какое-либо решение неоднородного уравнения (11). Тогда их сумма yi= y i+ y i* также является решением неоднородного уравнения: b( y i+1+ y i*+1 )-c( y i+ y i* )+a( y i-1+ y i*−1 )=[b y i+1-c y i+a y i-1]+[b y i*+1 -c y i* +a y i*−1 ]=fi. Это свойство – следствие линейности уравнения (11); оно сохраняет силу для разностного уравнения (1) любого порядка. Очевидно, что если y i является решением однородного уравнения (12), то и c y i, где с – произвольная постоянная, также удовлетворяет этому уравнению. Пусть y i(1) и y i( 2 ) – два решения уравнения (12). Они называются линейно независимыми, если равенство c1 y i(1) +c2 y i( 2 ) =0, i=0, 1, 2,…, возможно только при с1=с2=0. Это эквивалентно требованию, что определитель системы
c1 yi(1) (1) c1 yi + m
+ c2 yi( 2) = 0, + c2 yi(+2m) = 0,
m= ± 1,±2,...,
отличен от нуля для всех i, m. В частности,
∆ i ,i +1
y i(1) = (1) y i +1
y i( 2) ≠ 0. y i(+21)
Так же, как и в теории дифференциальных уравнений, можно ввести понятие общего решения разностного уравнения (12) и показать, что если решения y i(1) , y i( 2 ) линейно независимы, то общее решение уравнения (12) имеет вид yi= c1 y i(1) + c 2 y i( 2 ) , где c1 и c2 – произвольные постоянные. Общее решение неоднородного уравнения (11) можно представить в виде (13) yi= c1 y i(1) + c 2 y i( 2 ) + y i* , где y *i – какое-либо (частное) решение уравнения (11). Для определения c1 и c2, как и в случае дифференциальных уравнений, надо задать дополнительные условия – начальные или краевые. Общее решение уравнения (12) можно найти явно. Будем искать линейно независимые решения уравнения (12) в виде yi=qi, где q ≠ 0 – неизвестное пока число. После подстановки yk=qk в (12) получим квадратное уравнение bq2–cq+a=0, имеющее корни q1=
y k(1)
c − c 2 − 4ab c + c 2 − 4ab , q2= . 2b 2b
(14)
В зависимости от значений дискриминанта D=c2–4ab возможны три случая. 1) D=c2–4ab>0. Корни q1 и q2 действительны и различны. Им соответствуют два решения = q1k , y k( 2) = q 2k , которые линейно независимы, т.к. отличен от нуля определитель
∆ k ,k +1 =
qik q 2k
q1k +1 = q1k q 2k (q 2 − q1 ) ≠ 0. k +1 q2
Заметим, что q1 ≠ 0 и q2 ≠ 0 , иначе a=0, и уравнение (12) не является разностным уравнением второго порядка. Общее решение уравнения (12) имеет вид (15) yk= c1 q1k + c 2 q 2k . 2 2) D=c –4ab<0. Квадратное уравнение имеет комплексно-сопряженные корни
14
q1 =
c+i D 2b
, q2 =
c−i D 2b
,
где i – мнимая единица. Эти корни удобно представить в виде q1=ρeiϕ, q2=ρe-iϕ, ρ=
D a . , ϕ=arctg c b
Линейно независимыми решениями являются не только функции: q1k =ρkeikϕ=ρk(coskϕ+isinkϕ),
q 2k =ρke-ikϕ=ρk(coskϕ-isinkϕ), но и функции
y k(1) = ρ k cos kϕ , y k( 2 ) = ρ k sin kϕ , которые также линейно независимы в силу линейной независимости функций sinkϕ и coskϕ. Общее решение имеет вид yk=ρk(c1coskϕ+c2sinkϕ). (16) 3) D=c2 –4ab=0. Корни действительны и равны: q1=q2=c/(2b)=q0. Линейно независимыми являются решения y k(1) = q 0k , y k( 2) = kq 0k . (17) Покажем, что y k( 2 ) есть решение уравнения (12):
by k2+1 − cy k( 2) + ay k( 2−)1 = b(k + 1)q 0k +1 − ckq0k + a (k − 1)q0k −1 = = k (bq 0k +1 − cq 0k + aq 0k −1 ) + (bq 02 − a)q 0k −1 = 0, c2 D −a = = 0. 2 4b 4b q 0k kq0k Поскольку ∆ k ,k +1 = k +1 = q 02 k +1 ≠ 0 , то решения (17) линейно независимы, и k +1 q0 (k + 1)q 0
т.к. bq 02 − a = b
общее решение имеет вид
y k = c1 q 0k + c 2 kq 0k . 1.1.2.5. Примеры Рассмотрим примеры решения разностных уравнений второго порядка (11). 1. Найти общее решение уравнения yk+1-2pyk+yk-1=0, a=b=1, c=2p>0. Возможны три случая: 1) p<1. Положим p=cosα; тогда D=4(cos2α-1)=-4sin2α<0. Линейно независимые решения имеют вид y k(1) = cos kα , y k( 2 ) = sin kα . 2) p>1. Полагая p=chα, получим для q квадратное уравнение q2–2qchα+1=0; его дискриминант равен D=4(ch2α-1)=4sh2α, а корни имеют вид q1,2=chα ± shα=e ± α . Линейно независимыми решениями являются функции y k(1) = chkα , y k( 2 ) = shkα . 3) p=1. В этом случае q2 –2q+1=0, q1,2 =1, линейно независимые решения имеют вид
y k(1) = 1, y k( 2 ) = k . Во всех трех случаях общее решение рассматриваемого однородного уравнения будет иметь вид y k = c1 y k(1) + c 2 y k( 2 ) . 2. Найти решение уравнения yk+2-yk+1-2yk=0. Дискриминант равен D=1+8=9, корнями будут q1,2=(1 ± 3)/2, q1=2, q2=-1. Общее решение имеет вид yk=c12k+c2(-1)k.
15
3. Найти общее решение уравнения yk+1-yk-6yk-1=2k+1.
(18)
Общее решение неоднородного уравнения есть сумма y k = y k + y k* общего решения y k однородного уравнения и частного решения y k* неоднородного уравнения. Найдем сначала общее решение однородного уравнения. Дискриминант равен D=1+24=25>0, и корни квадратного уравнения q2-q-6=0 равны q1=3, q2=-2, так что y k(1) = 3 k , y k( 2 ) = (−2) k . Частное решение y k* будем искать в виде y k* = c 2 k , где c=const. Подставляя y k* = c 2 k в (18), получим c(2k+1-2k-6*2k-1)=c2k-1(4)=2k+1, c=-1. Общее решение уравнения (18) имеет вид yk=c13k+c2(-2)k-2k.
1.1.2.6. Разностное уравнение второго порядка с переменными коэффициентами. Задача Коши и краевая задача Рассмотрим теперь разностное уравнение с переменными коэффициентами biyi+1-ciyi+aiyi-1=fi, ai ≠ 0, bi ≠ 0, i=0, 1, 2,… (19) Так как bi ≠ 0, то из (19) получаем следующее рекуррентное соотношение
y i +1 =
ci y i − ai y i −1 + f i , bi ≠ 0. bi
(20)
Выразим yi+1 и yi-1 через yi и разности первого и второго порядков. Тогда уравнение (19) перепишется в виде ∆∇ yi+(bi-ai)∆yi-(ci-ai-bi)yi=fi, ai ≠ 0, bi ≠ 0. Решение разностного уравнения первого порядка зависит от произвольной постоянной и определяется однозначно, если задано одно дополнительное условие, например, y0=c0. Решение уравнения второго порядка определяется двумя произвольными постоянными и может быть найдено, если заданы два дополнительных условия. Если оба условия заданы в двух соседних точках, то это задача Коши. Если же два условия заданы в двух разных (но не соседних) точках, то получаем краевую задачу. Для нас основной интерес будут представлять краевые задачи. Введем обозначение Lyi=biyi+1-ciyi+aiyi-1 и сформулируем эти задачи более подробно. Задача Коши: найти решение уравнения Lyi=fi, i=1, 2,… при дополнительных условиях y0=µ1, y1=µ2.
(21) (22)
Второе условие (22) можно записать иначе: ∆y0=y1-y0=µ2-µ1= µ 1 и говорить, что в случае задачи Коши заданы в одной точке i=0 величины y0=µ1, ∆y0= µ 1 . Краевая задача: найти решение уравнения Lyi=fi, i=1, 2,…N-1 при дополнительных условиях y0=µ1, yN=µ2, N ≥ 2. (23) В граничных узлах i=0 и i=N можно задать не только значения функций, но и комбинации их с разностями, т.е. выражения α 1 ∆y 0 + β 1 y 0 при i=0 и α 2 ∇y N + β 2 y N при i=N. Такие условия можно записать в виде y0=λ1y1+µ1, yN=λ2yN-1+µ2. (24) Если λ1=λ2=0, то отсюда получаем условия первого рода; при λ1=λ2=1 имеем условия второго рода ∆y0=-µ1, ∇y N = µ 2 . (25) Если λ1,2 ≠ 0,1 , то (24) называют условиями третьего рода:
− λ1 ∆y 0 + (1 − λ1 ) y 0 = µ 1 , λ 2 ∇y N + (1 − λ 2 ) y N = µ 2 .
(26) Кроме того, возможны краевые задачи с комбинацией этих краевых условий: при i=0 – условия одного типа, при i=N – условия другого типа.
16
Решение задачи Коши находится непосредственно из уравнения (21) по рекуррентной формуле (20) с учетом начальных данных y0=µ1, y1=µ2. Решение краевых задач находится более сложным методом – методом исключения – и будет изложено ниже. Для уравнения с постоянными коэффициентами решение краевой задачи может быть найдено в явном виде. Пример. Найти решение краевой задачи ∆2yi-1=1, i=1, 2,…, N-1, y0=0, yN=0. (27) _
Однородное уравнение ∆2yi-1=yi-1-2yi+yi-1=0 имеет общее решение y i = c1 + c2 i . Частное решение yi* неоднородного уравнения ∆2yi-1=yi+1-2yi+yi-1=1 ищем в виде yi* =ci2. Подставляя это выражение в уравнение (27), находим ∆2y *i −1 =c((i+1)2-2i2+ +(i-1)2)=1, т.е. c=1/2, так что _
yi= y i + yi* = c1 + c2 i + i 2 / 2 . Для определения c1 и c2 служат краевые условия при i=0, i=N: y0=c1=0, yN=c2N+N2/2=0, c2=-N/2. Таким образом, yi=-iN/2+i2/2=-i(N-i)/2 есть решение задачи (27).
1.1.3. Решение разностных краевых задач для уравнений второго порядка 1.1.3.1. Решение разностных краевых задач методом прогонки Краевая задача aiyi-1-ciyi+biyi+1=-fi, ai ≠ 0, bi ≠ 0, i=1, 2,…, N-1, y0=λ1y1+µ1, yN=λ2yN-1+µ2 (1) представляет собой систему линейных алгебраических уравнений с трехдиагональной матрицей размера
1 a1
− λ1
...
0 ... b1 ...
0
0
0
...
0
0
0
0
0
0
...
0
0
0
...
... ... ...
...
... ...
...
...
...
A= 0
0
0
... ai
− ci
bi
...
0
0
0 .
...
...
... ... ...
...
... ...
...
...
...
0
0
0
...
0
0
0
... a N −1
− c N −1
bN −1
0
0
0
...
0
0
0
...
− λ2
1
− c1
0
Вместо (1) можно написать Ay=f, y=(y0, y1,…, yN), f=(µ1, -f1,…, -fN-1, µ2). (2) В случае первой краевой задачи соответствующая матрица имеет размер (N-1)*(N-1). Для решения краевой задачи (1) можно использовать следующий метод исключения, называемый методом прогонки. Предположим, что имеет место соотношение yi=αi+1yi+1+βi+1 (3) с неопределенными коэффициентами αi+1 и βi+1, и подставим yi-1=αiyi+βi в (1): (aiαi-ci)yi+biyi+1=-(fi+αiβi). Сравнивая это тождество с (3), находим
bi , i = 1,2,..., N − 1, c i − a iα i α β + fi = i i , i = 1,2,...N − 1. c i − a iα i
ai +1 =
(4)
β i +1
(5)
Используем краевое условие при i=0 для определения α1, β1. Из формул (1) и (3) для i=0 находим α1=λ1, β1=µ1. (6) Зная α1 и β1 и переходя от i к i+1 в формулах (4) и (5), определим αi и βi для всех i=2, 3,…, N. Вычисления по формуле (3) ведутся путем перехода от i+1 к i (т.е. зная yi+1, находим yi), и для
17
начала этих вычислений надо задать yN. Определим yN из краевого условия yN=λ2yN-1+µ2 и условия (3) при i=N-1: yN-1=αNyN+βN. Отсюда находим
yN =
µ 2 + λ2 β N . 1 − α N λ2
(7)
Соберем все формулы прогонки и запишем их в порядке применения →
bi , i = 1,2,..., N − 1,α 1 = λ1 ; (8) ci − aiα i a β + fi = i i , i = 1,2,..., N − 1, β1=µ1; (9) c i − a iα i
α i +1 = →
β i +1 yN =
µ 2 + λ2 β N ← , y i = α i +1 y i +1 + β i +1 , i = N − 1, N − 2,...,2,1,0. (10) 1 − α N λ2
Стрелки показывают направление счета: (→) от i к i+1, (←) - от i+1 к i. Таким образом, краевая задача для уравнения второго порядка сведена к трем задачам Коши для уравнений первого порядка.
1.1.3.2. Устойчивость метода прогонки Формулы прогонки можно применять, если знаменатели дробей (8) и (10) не обращаются в нуль. Достаточными условиями этого являются неравенства
c i ≥ a i + bi , i = 1,2,..., N − 1, λ1 ≤ 1, λ 2 ≤ 1, λ1 + λ 2 < 2,
(11)
причем одно из первых двух неравенств второй строки должно быть строгим. Покажем, что при условиях (11) знаменатели ci-aiαi и 1-αNλ2 не обращаются в нуль и α i ≤ 1, i = 1,2,..., N . (12) Предположим, что α i ≤ 1 и покажем, что α i +1 ≤ 1 ; тогда отсюда и из условия
α i = λ1 ≤ 1
будет
следовать
(12).
Рассмотрим
c i − a iα i − bi ≥ c i − a i α i − bi ≥ a i (1 − α i ≥ 0 ,
разность то
c i − a i α i − bi .
Поскольку
c i − a iα i ≥ bi > 0
и
α i +1 = bi / c i − a iα i ≤ 1. Заметим, что если c i0 > a i0 + bi0 хотя бы в одной точке i=i0, то α i < 1 для всех i>i0 и в том числе для i=N: α N < 1 . Тогда 1 − α N λ 2 ≥ 1 − α N λ 2 ≥ 1 − α N > 0 , и условие λ1 + λ 2 < 2 является лишним. Если λ1 < 1 , то α N < 1 . Если же λ1 = 1 , то λ 2 < 1 и α N ≤ 1 , и мы имеем
1 − α N λ 2 ≥ 1 − α N λ 2 ≥ 1 − λ 2 > 0 . Таким образом, при выполнении условий (11) задача (1) имеет единственное решение, которое мы находим по формулам прогонки (8) – (10). Вычисления по формулам (8) – (10) ведутся на компьютере приближенно, с конечным числом значащих цифр. В результате погрешностей округления фактически находится не функция ~
yi – решение задачи (1), а y i – решение той же задачи с возмущенными коэффициентами ~
~
~
~
~
~
~
~
a i , b i , c i , λ 1 , λ 2 и правыми частями f i , µ 1 , µ 2 . Возникает естественный вопрос: не происходит ли в ходе вычислений возрастание погрешности округления, что может привести как к потере точности, так и к невозможности продолжать вычисления из-за роста определяемых величин? Примером может служить нахождение yi по формуле yi+1=qyi при q>1. Поскольку yn=qny0, для любого y0 можно указать такое n0, при котором y n0 будет машинной бесконечностью. Фактически ~
в силу погрешностей округления определяется не точное значение yi, а значение y i из уравнения
18
~
~
~
y i +1 = q y i + η , где η – погрешность округления. Для погрешности δyi= y i − yi получим уравнение δyi+1=qδyi+η (i=0, 1,…, δy0=η). Из формулы δyi=qiη+η(q1-1)/(q-1) следует, что погрешность δyi при
q>1 экспоненциально растет с ростом i. Вернемся к методу прогонки и покажем, что при α i ≤ 1 погрешность δyi не нарастает. В ~
~
самом деле, из y i = α i +1 y i +1 + β i +1 , yi=αi+1yi+1+βi+1 следует δyi=αi+1δyi+1, δyi ≤ α i +1 δyi +1 ≤ δyi +1 , так как α i +1 ≤ 1. Если учесть, что в ходе вычислений возмущаются и коэффициенты αi+1, βi+1, то можно показать, что погрешность δyi пропорциональна квадрату числа узлов N: max δyi ≤ ε 0 N 2 , где ε0 – 1≤i ≤ N
погрешность округления. Отсюда видна связь между требуемой точностью ε решения задачи, числом N уравнений и числом значащих цифр компьютера, поскольку ε0N2 ≈ ε .
1.1.3.3. Другие варианты метода прогонки Рассмотренный выше метод прогонки (8) – (10), при котором определение yi производится последовательно справа налево, называют правой прогонкой. Аналогично определяются формулы левой прогонки:
ai , i = N − 1, N − 2,...,2,1,ξ N = λ2 , (13) ci − biξ i +1 ← bη + f η i = i i +1 i , i = N − 1, N − 2,...,2,1,η N = µ 2 , (14) ci − biξ i +1 → µ +λη y i +1 = ξ i +1 yi + η i +1 , i = 0,1,..., N − 1, y0 = 1 1 1 . (15) 1 − ξ1λ1 В самом деле, предполагая, что yi+1=ξi+1yi+ηi+1 и исключая из (1) yi+1, получим -fi=aiyiai f + biη i +1 . Сравнивая с формулой yi=ξiyi-1+ηi, yi = y i −1 + i 1+(biξi+1-ci)yi+biηi+1 или ci − biξ i +1 ci − biξ i +1 получим (13) и (14). Значение y0 находим из условия y0=λ1y1+µ1 и формулы y0=ξ1y1+η1. Из неравенств ci − biξ i +1 ≥ ci − bi ξ i +1 ≥ ai + bi (1 − ξ i +1 ), 1 − ξ1λ1 ≥ 1 − ξ1 λ1 следует, что условия ←
ξ =
(11) гарантируют применимость формул левой прогонки и их вычислительную устойчивость, т.к. ξ i ≤ 1 (i=1, 2,…, N). Комбинация левой и правой прогонок дает метод встречных прогонок. В этом методе в области 0 ≤ i ≤ i0 + 1 по формулам (8), (9) вычисляются прогоночные коэффициенты αi, βi, а в области i0 ≤ i ≤ N по формулам (13), (14) находятся ξi и ηi. При i=i0 производится сопряжение решений в форме (10) и (15). Из формул yi0 = α i0 +1 yi0 +1 + β i0 +1 , yi0 +1 = ξ i0 +1 yi0 + η i0 +1 находим yi0 =
β i +1 + α i +1η i +1 . Эта 1 − α i +1ξ i +1 0
0
0
формула имеет смысл, т.к. хотя бы одна из величин
ξi
0
+1
0
0
или α i0 +1 в силу (11) меньше
единицы, и, следовательно, 1 − α i0 +1ξ i0 +1 > 0 . Зная yi0 , можно по формуле (10) найти все yi при i
i0. Вычисления при i>i0 и i
19
20
Модуль 2. Решение уравнений и задачи интерполяции 2.2. Численное решение алгебраических и трансцендентных уравнений Задача численного решения уравнения распадается на две: 1) задача отделения корней – нахождение областей, которым принадлежат корни уравнений; 2) задача численного нахождения приближенных значений корня (с заданной степенью точности).
2.2.1. Задача отделения корней Существует несколько методов отделения корней уравнения. 1. Главный метод – знание свойств функций, входящих в уравнение. Например, в выражении
x 2 − 3x + 5 5 + ∑k =1 x 2 k 25
=0
нет необходимости рассматривать знаменатель, т.к. он никогда не обращается в нуль. 2. Графические методы отделения корня а) На вещественной оси (построение таблицы значений функции). Пусть дана функция
P ( x) = 0,−∞ < x <+ ∞ . Т.к. ось бесконечна, необходимо построение провести в два этапа. На первом разбивают сегмент [-1,1] на сколь угодно малые части и получают значения функции в точках разбиения. На втором этапе осуществляют замену переменной t = 1 / x , что приводит к следующему преобразованию интервалов: [1,+ ∞ ) → [1,0) и (- ∞ ,-1] → (0,-1], т.е. снова получаем сегмент [1,1], возвращаясь к первому этапу. б) Функция комплексной переменной P ( z ) = 0. Поскольку z = x + iy , выделяют действительную и мнимую части функции P ( z ) : P ( z ) = Q( x, y ) + iL( x, y ), где Q и L вещественны. Комплексное число равно нулю тогда и только тогда, когда Q = 0 и L = 0 , т.е. задача свелась к поиску корней вещественных функций. Эти кривые строятся в декартовой системе координат, где выделяются области пересечения кривых Q( x, y ) = 0 и L( x, y ) = 0, как показано на рис.2.1.
3. Метод малого параметра
21
Пусть P ( z ) = 0 можно представить в виде
P ( z ) = Q( z ) + ε ( z ), где ε ( z ) << Q( z ) и пусть значения корней Q( z ) известны. Тогда корни P ( z ) должны находиться вблизи корней Q( z ). Пример.
0,001x 3 + x 2 − 5 x + 6 = 0 . Обозначив Q( x) = x 2 − 5 x + 6, ε ( x) = 0,001x 3 , получим (как следует из анализа рисунка 2.2) небольшой сдвиг корней.
2.2.2. Вычисление значений корня с заданной точностью. Метод итераций Будем считать, что первая задача (задача отделения корней) решена, т.е. выделена область, в которой P( z ) = 0. Требуется найти в ней корень с любой точностью. Уравнение преобразуем к виду z = ϕ ( z ), (1) например, с помощью следующего приема:
z = z + cP( z ), c = const ≠ 0. В выделенной области назначим приближение z 0 – нулевое приближение корня.
Следующие приближения корня находим так:
z1 = ϕ ( z 0 ), z 2 = ϕ ( z1 ),..., z n = ϕ ( z n −1 ).
(2)
Предположим, что последовательность {z n }n = 0 сходится к некоторому z * , и что функция ∞
ϕ ( z ) непрерывна. Перейдем в (2) к пределу: z * = lim z n = lim ϕ ( z n −1 ) = ϕ (lim z n −1 ) = ϕ ( z * ). n →∞
n→∞
n→∞
Если указанный итерационный процесс сходится, то предел последовательности является решением исходного уравнения. При рассмотрении задачи в комплексной плоскости областью отделения корня является круг радиуса δ , а z o – центром этого круга.
Теорема. Пусть уравнение z = ϕ ( z ) и радиус области отделения корня δ удовлетворяют следующим условиям: 1) для любых двух точек z ' и z ' ' , находящихся в области | z − z 0 |≤ δ , имеет место неравенство
| ϕ ( z ' ) − ϕ ( z ' ' ) |≤ q | z '− z ' ' |,
22
где q – вещественное число из интервала (0,1); 2) имеет место неравенство
m ≤ δ , где m =| z 0 − ϕ ( z 0 ) | . 1− q
Тогда последовательность приближенных значений корня {z n } сходится, и предел последовательности принадлежит заданной области отделения корня. Кроме того, скорость сходимости определяется следующим неравенством:
| z n − z * |≤
mq n . 1− q
Доказательство Формально доказательство сводится к доказательству справедливости следующей формулы: | z k − z k −1 |≤ mq k −1 для любого k = 1,2,.... Проведем доказательство по индукции. 1. База индукции. Покажем, что формула справедлива при k = 1 :
| z1 − z 0 |=| ϕ ( z 0 ) − z 0 |= m. 2. Индукционный шаг. Пусть формула верна для k = n. Докажем, что она верна для k = n + 1, т.е. | z n +1 − z n |≤ mq n . Из справедливости формул для k = 1,2,..., n следует, что все
{z k }nk =1 находятся в круге выделения корня. Докажем это для любого k , например, для k = n : | z n − z 0 |=| z n − z n −1 + z n −1 − z n − 2 + z n − 2 − ... − z1 + z1 − z 0 |≤ ≤| z n − z n −1 | + | z n −1 − z n − 2 | +...+ | z1 − z 0 |≤ mq n −1 + mq n − 2 + ... + m ≤ m
1 ≤δ. 1− q
Итак, любая точка z k , k = 1,2,..., n ,не выходит из круга выделения корня. Рассмотрим
| z n +1 − z n |=| ϕ ( z n ) − ϕ ( z n −1 ) |≤ q | z n − z n −1 |≤ mq n . Индукция закончена. Доказали, что неравенство | z k +1 − z k |≤ mq k справедливо при любых
k. Покажем теперь, что для последовательности
{z k }∞k =0
выполняются необходимый и
достаточный признаки Коши существования предела: ∀ε > 0∃N : n > N , ∀p ⇒| z n + p − z n |< ε , т.е. последовательность, сходящаяся в себе, сходится. Оценим разность
| z n + p − z n |=| z n + p − z n + p −1 + z n + p −1 − ... + z n +1 − z n |≤| z n + p − z n + p −1 | +...+ | z n +1 − z n |≤ ≤ m(q n + p −1 + q n + p − 2 + ... + q n ) ≤
m n m N q ⇒ q ≤ε . 1− q 1− q
Признак Коши выполняется, т.е. существует такая точка z * , что z * =
lim z n →∞
n
. Т.к. все
элементы последовательности принадлежат кругу | z − z 0 |≤ δ , то предел также лежит внутри этого круга. Докажем справедливость формулы скорости сходимости:
lim | z p →∞
n+ p
− z n |≤ lim p →∞
m n m n q ⇒| z n − z * |≤ q . 1− q 1− q
Покажем, что уравнение имеет единственное решение в круге радиуса δ . Проведем доказательство от противного. Пусть, кроме решения z * существует решение
z ≠ z * . Тогда | z − z * |=| ϕ ( z ) − ϕ ( z * ) |≤ q | z − z * |, что приводит к противоречию, т.к. q < 1. Итак, решение единственно. Обсудим условия теоремы. При | z − z 0 |≤ δ ⇒| ϕ ( z ' ) − ϕ ( z ' ' ) |≤ q | z '− z ' ' | .
23
Это условие называется условием Липшица. Оно является более широким, чем условие дифференцируемости функций, т.е. функции, имеющие производную, входят в класс функций, удовлетворяющих условию Липшица. Если функция дифференцируема и ее производная ≤ q, то она удовлетворяет условию Липшица. Действительно, применяя формулу Тейлора, можно записать
ϕ ( z ' ) − ϕ ( z ' ' ) = ϕ ' [ z '+Θ( z ' '− z ' )]( z ' '− z ' ),0 < Θ < 1,
или, переходя к модулю в левой и правой частях, и, обозначая максимум модуля производной через q, получаем условие Липшица. Качественно процесс нахождения корня методом итераций продемонстрирован на следующих рисунках 2.3 и 2.4, на которых представлены функции, имеющие соответственно положительное и отрицательное значения производных.
При ϕ ' ( x) > 0 последовательность x 0 , x1 ,... монотонно сходится к корню x * , а при
ϕ ' ( x) < 0 итерационный процесс "закручивается" вокруг корня x * . Корень находится между двумя соседними значениями x k , x k +1 . На рисунке 2.5 продемонстрировано, каким образом сказывается невыполнение условия Липшица.
24
Обсудим второе условие теоремы. Оно говорит о том, что разность | ϕ ( x 0 ) − x 0 | не может
быть сколь угодно велика: она ограничена величиной δ (1 − q ). Скорость сходимости существенно зависит от величины q, что иллюстрируется следующими рисунками.
При q ≈ 0 итерационный процесс сходится к значению корня x * очень быстро, при q ≈ 1 – медленно.
2.2.3. Метод итераций для системы уравнений Рассмотрим итерационный метод для решения системы k уравнений с k неизвестными:
25
P1 (ξ 1 , ξ 2 ,..., ξ k ) = 0, P (ξ , ξ ,..., ξ ) = 0, 2 1 2 k .................... Pk (ξ 1 , ξ 2 ,..., ξ k ) = 0.
(3)
Преобразуем эту систему к виду, удобному для использования итерационного метода:
ξ 1 ξ 2 ξ k
= ϕ 1 (ξ 1 , ξ 2 ,..., ξ k ), = ϕ 2 (ξ 1 , ξ 2 ,..., ξ k ), .................... = ϕ k (ξ 1 , ξ 2 ,..., ξ k ).
(4)
Выбрав начальное приближение (ξ 1( 0 ) , ξ 2( 0 ) ,..., ξ k( 0 ) ) , первое приближение будем искать в соответствии с выражением
ξ 1(1) (1) ξ 2 ξ k(1)
= ϕ 1 (ξ 1( 0) , ξ 2( 0 ) ,..., ξ k( 0) ), = ϕ 2 (ξ 1( 0) , ξ 2( 0 ) ,..., ξ k( 0) ), ..........................
(5)
= ϕ k (ξ 1( 0 ) , ξ 2( 0 ) ,..., ξ k( 0) ).
Аналогично получаем следующие приближения. Покажем, что, используя понятие функционального метрического пространства, можно данную задачу свести к задаче, рассмотренной в предыдущем разделе. Пусть R – полное метрическое пространство, каждый элемент которого x задается упорядоченным набором k чисел (действительных или комплексных) x(ξ 1 , ξ 2 ,..., ξ k ). Введем в пространстве метрику следующего вида: для любых двух элементов ' ' ' '' '' '' x' = {ξ 1 , ξ 2 ,..., ξ k }, x' ' = {ξ 1 , ξ 2 ,..., ξ k }, пространства R
ρ ( x1 , x 2 ) = max | ξ 'j' − ξ 'j | .
(6)
1≤ j ≤ k
Эта метрика хороша тем, что дает максимальную "невязку" между левой и правой частями уравнения. Введем вектор-функцию ϕ (x), являющуюся элементом пространства R. Координаты этой функции определятся следующим образом: ϕ ( x) = {ϕ 1 ( x), ϕ 2 ( x),..., ϕ k ( x)}, где ϕ j ( x) = ϕ j (ξ 1 , ξ 2 ,..., ξ k ). Используя введенное обозначение в метрическом пространстве, систему уравнений (4) можно переписать в следующем виде: x = ϕ (x). (7) Зададим нулевое приближение x 0 = {ξ 1( 0 ) , ξ 2( 0) ,..., ξ k( 0 ) }, а также число δ > 0. Теорема. Пусть уравнение (7), нулевое приближение x 0 и δ удовлетворяют следующим условиям: 1) для любых x' , x' ' , принадлежащих области отделения корня радиуса δ, справедливо ρ (ϕ ( x' ), ϕ ( x' ' )) ≤ ρ ( x' , x' ' ), где 0
ρ ( x n , x * ) ≤ mq n /(1 − q). Доказательство этой теоремы в точности повторяет доказательство предыдущей с заменой | x'− x' ' | на ρ ( x' , x' ' ).
26
2.2.4. Принцип сжатых отображений Пусть R – полное метрическое пространство и пусть для всех элементов этого пространства определен оператор А "в себя" (результат действия этого оператора – отображение элементов в элементы того же пространства). Тогда говорят, что оператор А осуществляет сжатое отображение, если для любых двух элементов x', x'' этого пространства и любого действительного числа 0
ρ ( Ax' , Ax' ' ) ≤ qρ ( x' , x' ' ),
т.е. образы элементов ближе, чем их прообразы. В таких случаях говорят, что оператор А сжимает. Теорема. Пусть в полном метрическом пространстве R оператор А осуществляет сжатие отображения "в себя". Тогда оператор А имеет единственную неподвижную точку, т.е. уравнение Ax=x имеет единственное решение, которое может быть получено как предел последовательности итераций вида x n = Ax n −1 (Точка является неподвижной для оператора, если он переводит ее саму в себя). Доказательство ∞ Покажем, что последовательность значений xn }n = 0 , полученная итерированием,
{
сходится в себе, т.е. ρ ( xn , xm ) → 0. Будем считать n>m и запишем следующую n, m →∞ последовательность неравенств:
ρ ( xn , xm ) = ρ ( Axn −1, Axm −1 ) ≤ qρ ( xn −1 , xm −1 ), ρ ( xn −1 , xm −1 ) ≤ qρ ( xn − 2 , xm − 2 ), ………………………………
ρ ( xn − m +1 , x1 ) ≤ qρ ( xn − m , x0 ).
Перемножив эти неравенства, получим
ρ ( xn , xm ) ≤ q m ρ ( xn − m , x0 ). Оценим ρ ( xn − m , x0 ), применив n-m раз правило треугольника:
ρ ( xn − m , x0 ) ≤ ρ ( xn − m , xn − m −1 ) + ρ ( xn − m −1 , xn − m − 2 ) + ... + ρ ( x1 , x0 ) ≤ ρ ( x1 , x0 ) . ≤ (q n − m −1 + ... + q 2 + q + 1) ρ ( x1 , x0 ) < 1− q
Окончательно получаем
qm ρ ( x1 , x0 ), 1− q т.е. при n>m критерий Коши доказан: ρ ( xn , xm ) → 0. В силу полноты пространства R (для n, m → ∞
ρ ( xn , xm ) ≤
любой последовательности в пространстве R, сходящейся в себе, найдется предельный элемент, принадлежащий этому пространству) существует такой элемент x*, что lim x n = x * . Используя то n →∞
обстоятельство, что оператор А – сжимающий, получим
ρ ( Axn , Axm ) ≤ qρ ( xn , xm )
→ 0, т.е. существует и, следовательно, ρ ( Axn , Axm ) n , m→∞
lim Ax . n→∞ *
n
Но Axn = xn +1 , поэтому,
переходя в последнем равенстве к пределу, получаем Ax* = x , т.е. x* – решение уравнения, а значит – неподвижная точка оператора. Покажем, что эта точка единственная. Проведем доказательство от противного. Предположим, что существует еще одна неподвижная точка x' ≠ x* и Ax’=x’. Поскольку ρ ( x* , x' ) = ρ ( Ax* , Ax' ) ≤ qρ ( x* , x' ), а q<1, то получили противоречие, т.е. x’ не может быть неподвижной точкой.
27
2.2.5. Об одном принципе нахождения сходящихся итерационных процессов Пусть имеется уравнение f ( x) = 0, где x – действительная переменная и пусть на [a,b] отделен единственный корень x* этого уравнения. Пусть на этом сегменте задана некоторая непрерывная функция ψ ( x). Тогда уравнение вида x = x − ψ ( x) f ( x) также имеет корень x*. Принцип получения сходящихся итерационных процессов состоит в следующем. Нужно уметь так подобрать непрерывную функцию ψ ( x), чтобы получившееся уравнение x = ϕ ( x), где ϕ ( x) = x − ψ ( x), давало сходящийся итерационный процесс.
2.2.6. Метод хорд (секущих) и метод деления пополам Данный метод является одним из методов, реализующих принцип получения сходящегося итерационного процесса. Пусть единственный корень x* уравнения f ( x) = 0 отделен на [a,b]. Предположим, что f ( x) изменяется на [a,b] монотонно.
Заменим кривую y = f ( x) хордой, проходящей через точки (a, f (a )) и (b, f (b)). В качестве первого приближения корня уравнения f ( x) = 0 возьмем точку пересечения этой хорды с осью x. Запишем уравнение этой хорды:
y − f (a) x−a = , f (b) − f (a) b − a
откуда получаем
f (b) − f (a) ( x − a) + f (a). b−a Подставляя в последнем выражении x = x1 , y = 0, получаем b−a x1 = a − f (a). f (b) − f (a) Полагая теперь x 0 = a и учитывая, что f ( x i ) < 0, f (b) > 0, имеем b − x n −1 x n = x n −1 − f ( x n −1 ). (8) f (b) − f ( x n −1 ) y=
28
Теперь ясно, что роль функции ψ (x) выполняет выражение
ψ (x)
оператор. Возьмем для определенности f (a) < 0, f (b) > 0, f ' ( x) > 0, f ' ' ( x) > 0. Этим знакам соответствует чертеж (рис. 2.8). Для
что
–
b−x . Надо доказать, f (b) − f ( x)
сжимающий
сходимости последовательности {x n } , значения элементов которой даются соотношением (8), важно, что все эти значения ограничены по величине и не превосходят b. Т.к.
b − x n −1 f ( x n −1 ) < 0, то последовательность {xn} по признаку Вейерштрасса имеет предел f (b) − f ( x n −1 )
(как монотонно возрастающая и ограниченная)
lim x n→∞
корнем уравнения
n
= x * . Выясним, является ли этот предел
f ( x) = 0 ? С этой целью перейдем в (8) к пределу при n → ∞ :
b − x* b − x* * f ( x ). Поскольку ≠ 0, то f ( x * ) = 0, т.е. x* является f (b) − f ( x * ) f (b) − f ( x * ) корнем уравнения f ( x) = 0. При других соотношениях знаков f (a ), f (b), f ' ( x), f ' ' ( x) x* = x* −
доказательство аналогично. Оценим разность между x n (приближенным значением корня) и истинным значением x * , полагая при этом, что f ' ( x) сохраняет постоянный знак на [a,b]. По формуле Лагранжа
f ( x n ) − f ( x * ) = f ' (ξ )( x n − x * ), где x n ≤ ξ ≤ x * или x n ≥ ξ ≥ x * . Учитывая, что f ( x * ) = 0 и полагая f ' (ξ ) ≥ m =
min | f ' ( x) |, получаем оценку x∈[ a , b ]
| x n − x |≤ f ( x n ) / m. *
Формула тем точнее, чем меньше сегмент [a,b] отделения корня.
Из геометрии задачи вытекает, что первое приближение значения корня x1 делит сегмент [a,b] в соответствии со следующим соотношением:
x1 − a | f (a ) | , = b − x1 | f (b) |
в силу чего метод хорд часто называют методом пропорциональных частей. Если метод хорд "угрубить" и делить отрезок не на пропорциональные, а на две равные части, то получим метод нахождения корня делением сегмента пополам. При этом каждый раз после деления в качестве рабочей части выбирается та ее половина, на границах которой f(x) имеет противоположные знаки. Теоретическим основанием для сходимости этого метода служит лемма о вложенных интервалах. Каждый интервал содержится в другом, и при достаточно большом числе делений их длины стремятся к нулю. Тогда найдется только одна точка, которая принадлежит всем интервалам.
29
2.2.7. Метод Ньютона (метод касательных) Пусть функция f(x) имеет на [a,b] единственный корень, и значения f(a), f(b) – противоположных знаков, существуют непрерывные f'(x), f''(x), которые сохраняют знак на [a,b]. Пусть некоторое значение x 0 ∈ (a, b). Заменим f(x) некоторой линейной функцией, используя формулу Лагранжа: f ( x) = f ( x 0 ) + f ' (ξ )( x − x 0 ), где x < ξ < x 0 ∨ x 0 < ξ < x. Поскольку значение ξ неизвестно, выберем в качестве ξ точку x0: f ( x) ≈ f ( x 0 ) + f ' ( x 0 )( x − x 0 ). (9) Исходя из последнего соотношения, интересующее нас уравнение f(x)=0 заменим уравнением f(x0)+f'(x0)(x-x0)=0, корень которого примем за первое приближение значения корня уравнения f(x)=0:
x1 = x 0 −
1 f ( x 0 ). f ' ( x0 )
(10)
Обобщая уравнение (10), получаем следующий итерационный процесс:
x n = x n −1 −
1 f ( x n −1 ). f ' ( x n −1 )
(11)
x = x −ψ ( x) f ( x) при Получили частный случай итерационного процесса ψ ( x) = 1 / f ' ( x) . С другой стороны, уравнение (9) является уравнением касательной к кривой в точке x0. На каждом шаге итерационного процесса функция f(x) заменяется касательной к этой функции, проведенной в точке предыдущего приближенного значения корня. Из геометрии задачи вытекает, что первую касательную удобно проводить с того конца сегмента, в котором выполняется условие f ( x) f ' ' ( x) > 0.
Теорема. Если функция f(x) имеет единственный корень на [a,b], непрерывные f'(x), f''(x), которые не меняют знака на этом сегменте, то если начинать итерационный процесс со значения x 0 ∈ [a, b], для которого выполняется условие f ( x 0 ) f ' ' ( x 0 ) > 0, то итерационный процесс монотонно сходится к некоторому значению корня x*. Рассмотрим упрощенный метод Ньютона. Он заключается в том, что итерационный процесс строится на основе следующей формулы: x n = x n −1 + f ( x n −1 ) / f ' ( x 0 ), (12) т.е. на каждом шаге используется одно и то же значение производной в начальной точке x0, что упрощает вычисления, но несколько уменьшает скорость сходимости итерационного процесса.
30
2.2.8. Вычисление значений алгебраического полинома Пусть задан алгебраический полином n-й степени с действительными коэффициентами Pn ( x) = a 0 x n + a1 x n −1 + ... + a n −1 x + a n. (13) Требуется определить значение этого полинома в точке x0. Подсчитаем число операций, необходимых для решения этой задачи. Операций умножения: n+(n-1)+(n-2)+…+1=n(n+1)/2; операций сложения: n. Нельзя ли предложить метод, сокращающий число операций? Рациональный процесс подсчета значения многочлена основан на теореме Безу. Теорема. Остаток от деления многочлена Pn (x) на двучлен (x-x0) равен значению многочлена в точке x0. Доказательство Запишем результат деления Pn (x) на ( x − x 0 ) в виде суммы остатка от деления R и многочлена (n-1)-й степени Q n−1 ( x), т.е.
Pn ( x) = ( x − x 0 )Q n −1 ( x) + R. .
(14)
Положим в этом выражении x=x0:
Pn ( x 0 ) = ( x 0 − x 0 )Q n −1 ( x 0 ) + R = R. .
Вычислим Q n−1 ( x) :
Q n −1 ( x) = b0 x n =1 + b1 x n − 2 + ... + bn − 2 x + bn −1 .
(15)
Подставив этот результат в (14), получим
Pn ( x) = ( x − x 0 )(b0 x n −1 + b1 x n − 2 + ... + bn − 2 x + bn −1 ) + R. . Выразим коэффициенты многочлена Qn-1 через коэффициенты Pn. Теорема. Два многочлена тождественно равны тогда и только тогда, когда их коэффициенты при одинаковых степенях x совпадают. Имеем: a 0 = b0 , a1 = b1 − b0 x 0 , a 2 = b2 − b1 x 0 ,..., a k = bk − bk −1 x 0 ,..., a n = bn − bn −1 x 0 , откуда
b0 = a 0 , b1 = a1 + b0 x 0 , b2 = a 2 + b1 x 0 ,..., bk = a k + bk −1 x 0 ,..., bn = a n + bn −1 x 0 . Преобразование коэффициентов удобно представить в виде так называемой схемы Горнера (таблица 1).
Таблица 1 a0 x0
b0
a1
a2
…
ak
…
an
b0x0
b1x0
…
bk-1 x0
…
bn-1x0
b1
b2
…
bk
…
bn
В соответствии с теоремой Безу bn = R = Pn ( x 0 ). При этом выполнено n действий умножения и n действий сложения. Пример. P ( x) = 3 x 5 − 4 x 4 + 2 x 2 − x + 10, P(2) − ?
Таблица 2 3 2
3
-4
0
2
-1
10
6
4
8
20
38
2
4
10
19
48
31
2.2.9. Метод Лобачевского нахождения корней алгебраических многочленов Главное достоинство этого метода состоит в том, что он не требует знания о приближенных значениях корней. Он применяется в тех случаях, когда многочлен имеет различные действительные корни. Метод реализуется в два этапа. Если корни многочлена удовлетворяют неравенству | x1 |>>| x 2 |>> ... >>| x n |, (16) то приближенные значения корней выражаются через коэффициенты многочлена a 0 x n + a1 x n −1 + ... + a n по обобщенной теореме Виета:
x1 + x 2 + ... + x n = −a1 / a 0 , x x + x x + ... + x x = a / a , n −1 n 1 3 2 0 1 2 x1 x 2 x 3 + ... + x n − 2 x n −1 x n = −a 3 / a 0 , ............................................ x1 x 2 ...x n = (−1) n a n / a 0.
(17)
Из (17) с учетом (16) последовательно получаем:
x x 2 x3 a a + + ... + n ] = − 1 ⇒ x1 ≈ − 1 ; x1 x1 x1 a0 a0 xx x x a a x1 x 2 [1 + 1 3 + ... + n −1 n ] = 2 ⇒ x 2 ≈ − 2 ;... x1 x 2 x1 x 2 a0 a1 a x i ≈ − i ∀x i , i = 1,2,..., n. (18) a i −1 Пример. x1 = 100; x 2 = −10; x 3 = 1. x1 [1 +
( x − 100)( x + 10)( x − 1) = x 3 + + (−1 + 10 − 100) x 2 + (−10 + 100 − 1000) x + 1000 = x 3 − 91x 2 − 910 x + 1000. Применяя формулу (18), получаем x1 ≈ 91; x 2 ≈ −10; x 3 ≈ 1,1. Если соотношения (16) не выполняются, то необходимо выполнить предварительный этап, называемый процессом квадрирования и суть которого состоит в следующем. Запишем разложение многочлена на сомножители a 0 ( x − x1 )( x − x 2 )( x − x 3 )...( x − x n ). (19) Запишем многочлен, корни которого отличаются от корней данного многочлена знаками: a 0 ( x + x1 )( x + x 2 )( x + x 3 )...( x + x n ). (20) Перемножим многочлены (19), (20):
a 02 ( x 2 − x12 )( x 2 − x 22 )( x 2 − x 32 )...( x 2 − x n2 ). Сделаем замену переменных x 2 = − z. Получим многочлен n-й степени, корни которого равны корням в квадрате исходного многочлена, взятых со знаком "минус", т.е. − x i2 }. Основная идея процесса квадрирования в том, что если корни различны, то разница по модулю при квадрировании существенно возрастает. Выразим коэффициенты многочлена, полученного в результате квадрирования через коэффициенты исходного многочлена. Итак, пусть задан многочлен a 0 x n + a1 x n −1 + a 2 x n − 2 + ... + a n −1 x + a n. (21) Заменим х на -х:
{
a 0 (−1) n x n + a1 (−1) n −1 x n −1 + ... + a n −1 (−1) x + a n. Домножим последнее соотношение на (-1)n:
a 0 x n − a1 x n −1 + a 2 x n − 2 + ... + (−1) n a n . Перемножая (21) и (22), получаем:
(22)
32
a 02 x 2 n + (− a12 + 2a 0 a 2 ) x 2 n − 2 + (a 22 − 2a1 a 3 + 2a 0 a 4 ) x 2 n − 4 + ... + a n2 . Сделаем замену переменной x=-x2:
a 02 (−1) n x n − (−1) n −1 (a12 − 2a 0 a 2 ) x n −1 + (−1) n − 2 (a 22 − 2a1 a 3 + 2a 0 a 4 ) x n − 2 + ... + a n2 . Домножим получившееся выражение на (-1)n:
a 02 x n + (a12 − 2a 0 a 2 ) x n −1 + (a 22 − 2a1 a 3 + 2a 0 a 4 ) x n − 2 + ... Правило получения коэффициентов после квадрирования: коэффициент bk при xn-k равен bk = a k2 − 2a k −1 a k +1 + 2a k − 2 a k + 2 + ... до тех пор, пока не будет достигнут коэффициент a 02 или
a n2 . Процесс квадрирования можно повторить сколь угодно раз. Каков же критерий останова? Пусть многочлены b0 x n + b1 x n −1 + ... + bn , (23)
c 0 x n + c1 x n −1 + ... + c n
(24) являются результатами квадрирования, т.е. (24) получается из (23) в результате очередного квадрирования. Пусть корни многочлена (23) уже настолько по модулю отличаются друг от друга, что можно применить (18), т.е.
x i(1) ≈ −
{
Тогда корни x i( 2 )
bi . bi −1
} многочлена (24) тем более могут быть получены с применением (18),
т.е.
x i( 2) ≈ −
ci . c i −1
Поскольку x i( 2 ) = −( x i(1) ) 2 , i = 1,2,..., n, то c i / c i −1 ≈ bi2 / bi2−1 . Итак, с учетом того, что
c 0 = b02 , для каждого i получаем: c i ≈ bi2 .
(25) Следовательно последовательность процессов квадрирования следует заканчивать тогда, когда соотношение (25) выполняется с заданной степенью точности. Между корнями {x i } исходного многочлена и корнями существует простая связь:
{x } (k ) i
многочлена, получающегося после k итераций, k
| x i |= (| x i( k ) |) 1 / 2 .
(26)
33
2.3. Теория интерполирования Пусть на некотором сегменте [a,b] вещественной оси заданы точки {x i }i =1 , причем x1=a; m
xm=b, и в этих точках заданы некоторые действительные значения { f ( x i )}i =1 . Требуется найти такую непрерывную на [a,b] функцию φ(x), которая удовлетворяла бы следующим условиям: φ(xi)=f(xi), i=1, 2,…,m. Задача нахождения функции φ(x), т.е. задача нахождения значений функции между заданными точками и есть задача интерполирования. При этом функция φ(x) называется m
интерполирующей (интерполяционной), а точки {x i }i =1 – узлами интерполяции. Интерполяция применяется во многих задачах, связанных с вычислениями. Укажем некоторые из этих задач. Обработка результатов физического эксперимента – построение приближенных формул для характерных величин по табличным данным, полученным экспериментально. Построение приближенных формул по данным вычислительного эксперимента. Здесь возникают нестандартные задачи интерполяции, т.к. обычно пишутся формулы возможно более простой структуры. Субтабулирование, т.е. сгущение таблиц. Применяется в тех случаях, когда непосредственное вычисление функции затруднено или когда имеется мало экспериментальных данных. В машину вводится наибольшая таблица, а нужные при расчетах значения функции находятся по мере необходимости по интерполяционной формуле. Интерполяция применяется также в задаче обратного интерполирования: задана таблица yi=y(xi); найти xi как функцию от yi. Примером обратного интерполирования может служить задача о нахождении корней уравнения. Интерполяционные формулы используются также при вычислении интегралов, при написании разностных аппроксимаций для дифференциальных уравнений на основе интегральных тождеств. m
2.3.1. Задача интерполирования в линейном пространстве Пусть R – линейное пространство непрерывных действительных функций {f(x)} на [a,b]. Пусть конечная или счетная система функций {φj(x)} ⊂ R такова, что любой конечный набор из n этих функций линейно независим. Рассмотрим функции ϕ j ( x) j = 0 . Любое выражение вида
{
}
A(x)=a0φ0(x)+a1φ1(x)+…+anφn(x), где {aj} – действительные числа, называется "обобщенным" n n полиномом по системе функций ϕ j ( x) j = 0 . Пусть на [a,b] заданы n+1 точка {x i }i = 0 , и пусть в
{
}
этих точках заданы значения f(xi), i=0, 1,…, n. Требуется построить "обобщенный" многочлен А(х)
{
}
по системе функций ϕ j ( x)
n j =0
такой, чтобы выполнялись условия A(xi)=f(xi), i=0,1,…,n.
{
}
Определение. Система функций ϕ j ( x)
n j =0
. называется системой Чебышева (Т-системой)
на [a,b], если любой полином А(х) по этой системе функций имеет на сегменте [a,b] не более n нулей, в предположении, что хотя бы один из коэффициентов полинома отличен от нуля. Теорема. Необходимое и достаточное условие того, чтобы существовал обобщенный
{
}
интерполяционный полином по заданной системе функций ϕ j ( x) точках
{x i }in=0 ,
n j =0
при любых различных
заданных на [a,b], и при любых значениях f(xi)=αi, заключается в том, чтобы
система функций
{ϕ
( x)} j = 0 , была Т-системой. При этом интерполяционный полином n
j
единственный. Утверждение теоремы эквивалентно следующему утверждению: каковы бы ни были числа n {x i }i =0 и каковы бы ни были числа αi, система уравнений вида
34
a0ϕ 0 ( x0 ) + a1ϕ1 ( x0 ) + ... + anϕ n ( x0 ) = α 0 , a ϕ ( x ) + a ϕ ( x ) + ... + a ϕ ( x ) = α , 0 0 1 1 1 1 n n 1 1 .......... .......... .......... .......... .......... ......... a0ϕ 0 ( xn ) + a1ϕ1 ( xn ) + ... + anϕ n ( xn ) = α n с неизвестными a0, a1,…, an должна иметь решение. Последняя задача эквивалентна тому, что главный определитель этой системы
ϕ 0 ( x 0 ) ϕ 1 ( x 0 ) ... ϕ n ( x 0 ) ϕ 0 ( x1 ) ϕ 1 ( x1 ) ... ϕ n ( x1 ) ........... ............ ... ........... ϕ 0 ( x n ) ϕ 1 ( x n ) ... ϕ n ( x n )
≠0
(1)
должен быть отличен от нуля при любых различных {x i }i = 0 на [a,b]. Покажем, что необходимое и достаточное условие того, чтобы выполнялось (1) n
{
}
заключается в следующем: система функций ϕ j ( x)
{
}
Пусть ϕ j ( x)
n j =0
n j =0
должна быть системой Чебышева.
есть Т-система. Покажем, что выполняется (1). Предположим противное.
Тогда между столбцами определителя существует линейная зависимость, т.е. найдутся числа
{bi }in=0
n
такие, что
∑b i =0
2 i
≠ 0, т.е. хотя бы одно bi ≠ 0, и выполняются следующие равенства:
b0φ0(xi)+b1φ1(xi)+…+bnφn(xi)=0, i=0,1,…,n. Последнее эквивалентно тому, что существует полином, который обращается в 0 в n+1 точках. Поскольку Т-система имеет n нулей, то получили противоречие, которое и доказывает справедливость выполнения соотношения (1). Пусть теперь выполнено (1). Докажем, что
{ϕ
( x)} j = 0 – Т-система. Предположим n
j
противное. Тогда найдутся n+1 различных точек {x i }i = 0 на [a,b] таких, что некоторый полином n
C(x)=
∑
n k =0
c k ϕ k ( x) имеет n+1 нулей в точке xi (при этом
∑
n i =0
c i2 ≠ 0) . Тогда имеет место
система уравнений c0φ0(xi)+c1φ1(xi)+…+cnφn(xi)=0, i=0,1,…,n. n Но это однородная система уравнений, и она имеет отличные от нуля решения {c i }i = 0 тогда и только тогда, когда главный определитель приведенной системы уравнений отличен от нуля. Поскольку этим определителем является определитель (1), то опять пришли к
{
}
противоречию. Предположение не подтвердилось, поэтому ϕ j ( x)
n j =0
– Т-система.
Итак, интерполяционный полином существует. Единственность существующего полинома вытекает из того, что система уравнений вида n
∑a ϕ k =0
k
k
( xi ) = α i , i=0,1,…,n
с неизвестными {ak} может иметь только одно решение, т.к. главный определитель этой системы отличен от нуля, и система является определенной. Пример. Пусть ϕ i ( x) = x i , i=0,1,…,n. Показать, что система функций система на всей вещественной оси. Пусть
{x }
n
j
j =0
{x }
i n i =0
есть Т-
– множество различных точек на действительной оси. Необходимое
доказательство сводится к доказательству следующего факта:
35
1
x0
x 02
... x 0n
1
x1
x12
... x1n
...
...
...
...
xn
2 n
1
x
...
... x
= ∏ ( x j − xi ) ≠ 0 . j >i
n n
Получившийся определитель является хорошо известным в линейной алгебре определителем Вандермонда. Из предыдущей теоремы вытекает, что обобщенный интерполяционный полином A(x)=
∆=
∑
n
∆k ϕ k ( x), где ∆ ϕ 0 ( x0 ) ... ϕ k −1 ( x0 ) α 0 ϕ k +1 ( x0 ) ... ϕ n ( x0 )
a k ϕ k ( x) может быть представлен в виде A( x) = ∑k = 0 n
k =0
ϕ 0 ( x0 ) ϕ1 ( x0 ) ... ϕ n ( x0 ) ϕ 0 ( x1 ) ϕ1 ( x1 ) ... ϕ n ( x1 ) ........... ............ ... ........... ϕ 0 ( x n ) ϕ1 ( x n ) ... ϕ n ( x n )
, ∆k =
ϕ 0 ( x1 ) ... ϕ k −1 ( x1 ) α 1
ϕ k +1 ( x1 ) ... ϕ n ( x1 )
... ... ... ... ϕ 0 ( x n ) ... ϕ k −1 ( x n ) α n
... ... ... ϕ k +1 ( x n ) ... ϕ n ( x n )
.
При решении задачи интерполяции значения функции f(xi)=αi достаточно произвольны.
Гораздо более важным является расположение узлов интерполяции {x i }i =1 . Поэтому преобразуем ∆k следующим образом. Разложим определитель ∆k по элементам столбца α0,…,αn: m
∆k=
∑
n j =0
α j ∆ kj , где ∆kj – алгебраические дополнения соответствующих элементов (с точностью
до знака). Тогда выражение для A(x) может быть преобразовано следующим образом:
A( x) = ∑k = 0 n
где Φ j ( x) =
∑
∆k 1 n ϕ k ( x) = ∑k = o ∆ ∆
∆ kj
n k =0
∆
(∑
n j =0
)
α j ∆ kj ϕ k ( x) = ∑ j = 0 α j Φ j ( x), n
ϕ k ( x).
Существенная особенность многочленов Фj(x) состоит в том, что коэффициенты этих n многочленов не зависят от значений f(xi)=αi, а зависят только от расположения точек {x i }i = 0 на [a,b]. Многочлены Фj(x) носят название фундаментальных многочленов для заданной системы точек. Поскольку (что достаточно просто показать)
Φ j ( xi ) = то
1, i = j , 1 n ϕ k ( xi )∆ kj = ∑ ∆ k =0 0, i ≠ j ,
A( xi ) = ∑ j =0 α j Φ j ( xi ) = α i . Это свойство фундаментальных многочленов в n
дальнейшем будет широко использоваться.
2.3.2. Интерполяционный полином Лагранжа Пусть ϕ i ( x) = x i , i=0,1,…,n. Требуется построить алгебраический интерполяционный полином Ln(x), удовлетворяющий условиям Ln(xi)=f(xi), i=0,1,…,n, где заданные
на
[a,b]
точки.
Можно
записать
Ln(x)=
∑
{x i }in=0
n i =0
– различные
f ( x i )Φ j ( x),
где
x = xj 1, Φ j ( x) = Из данного свойства Фj(xi) следует, что можно Фj(xi) представить в x x p j 0 , , . = ≠ p следующем виде: Фj(xi)=a(x-x0)(x-x1)…(x-xj-1)(x-xj+1)…(x-xn).
36
Определим старший коэффициент этого многочлена. Обозначим ω n +1 =
n
∏ (x − x
j
). Тогда
j =0
Φ j ( x) = a
ω n +1 ( x) x − xj 1= a
. Воспользовавшись равенством Фj(xj)=1, определим значение коэффициента a:
ω n +1 x − xj
x= x j
Поэтому Φ j ( x) =
= a lim
ω n +1 ( x) − ω n +1 ( x j ) x − xj
x→ x j
= aω n' +1 ( x j ) ⇒ a =
1 . ω (x j ) ' n +1
ω n +1 ( x) 1 , что приводит к выражению ω (x j ) x − x j ' n +1
n
Ln ( x ) = ∑ f ( x j ) j =0
ω n +1 ( x) 1 , ω (x j ) x − x j
(2)
' n +1
которое представляет собой формулу интерполяционного полинома Лагранжа.
2.3.3. Формула остаточного члена полинома Лагранжа Если о функции известно только то, что она непрерывна, то никаких оценок интерполяции n сделать нельзя. Предположим, что функция f(x), значения которой заданы в точках {x i }i = 0 на [a,b] непрерывно дифференцируема, и при этих условиях на функцию выведем формулу остаточного члена Rn(x)=f(x)-Ln(x), где Ln(x) – интерполяционный полином Лагранжа по системе функций
{x }
j n j =0
. Введем в рассмотрение функцию, заданную на [a,b]:
φ(z)=f(z)-Ln(z)-K(z-x0)(z-x1)…(z-xn), где K – некоторая константа, значение которой требуется определить. Найдем R(x) в некоторой фиксированной точке x ≠ xj, j=0,1,…,n, и подберем K таким образом, чтобы в этой точке φ(z) обращалась в ноль, т.е. φ(x)=f(x)-Ln(x)-K(x-x0)(x-x1)…(x-xn)=0 ⇒ K =
f ( x ) − Ln ( x ) . ( x − x 0 )( x − x1 )...( x − x n )
При полученном значении K функция φ(z) обращается в ноль не менее, чем в n+2
различных точках: x, {x i }i = 0 ; тогда φ'(z) имеет не менее (n+1) действительных корней (нулей); φ''(z) – не менее n нулей и т.д., φ(n+1)(z) – не менее одного. Пусть ξ – действительный корень φ(n+1)(z), т.е. φ(n+1)(ξ)=0. Из формулы для φ(z) вытекает, что в любой точке z выполняется n
соотношение φ(n+1)(z)=f(n+1)(z)-K(n+1)!, откуда, полагая z=ξ, получаем K =
f ( n +1) (ξ ) , что, с учетом (n + 1)!
соотношений Rn(x)=f(x)-Ln(x), ωт+1(x)=(x-x0)(x-x1)…(x-xn), приводит к формуле остаточного члена полинома Лагранжа
f ( n +1) (ξ ) R n ( x) = ω n +1 ( x), ξ ∈ [a,b]. (n + 1)!
2.3.4. Оценка остаточного члена формулы Лагранжа Полиномы Чебышева. Пусть по-прежнему функция f(x), значения которой заданы в точках непрерывно дифференцируема n+1 раз. Пусть M n +1 = max f [ a ,b ]
члена в формуле Лагранжа имеем следующую оценку:
( n +1)
{x i }in=0
на [a,b]
( x) . Тогда для остаточного
37
R n ( x) = f ( x) − Ln ( x) ≤
M n +1 ω n +1 ( x) , x ∈ [a,b]. (n + 1)!
Представляют интерес ответы на следующие вопросы: каково влияние выбора корней в
{x i }in=0
заданном интервале, каким образом нужно расположить точки
на [a,b], чтобы
обеспечивалось как можно меньшее значение max ω n+1 ( x) ? Ответ на эти вопросы следует искать, изучая свойства полиномов Чебышева. Полиномы Чебышева задаются следующим соотношением: Tn(x)=cos(narccosx). Получим рекуррентное соотношение для вычисления значений полиномов Чебышева, для чего проведем следующие расчеты: T0(x)=1; T1(x)=cos(arccosx)=x; T2(x)=cos(2arccosx)=2cos2(arccosx)-1=2x2-1. Обозначая θ=arccosx (или x=cos), имеем cos(n-1)θ+cos(n+1)θ=2cosθcosnθ ⇒ cos(n+1)θ=2cosθcosnθ-cos(n-1)θ, или Tn+1(x)=2xTn(x)-Tn-1(x). (3) Найдем корни многочлена Tn(x) и его производной T'n(x). В принятых обозначениях имеем: Tn(x)=cos(narccos(cosθ))=cosnθ; cosnθ=0; θk=π(2k+1)/(2n); xk=cos[π(2k+1)/(2n)], k=0,1,…,n-1. T'n(x)=nsin(narccosx)/ 1 − x 2 ; sin(arccosx)=0; xj=cos(jπ/n), j=1,2,…,n-1. Итак, все n корней многочлена Чебышева Tn(x) расположены на сегменте [-1,1]; экстремальные значения многочлена Tn[cos(jπ/n)]=cos(jπ)=(-1)j, j=1,2,…,n-1; на концах сегмента Tn(1)=1, Tn(-1)=(-1)т. Поэтому многочлен Чебышева n+1 раз достигает на [-1,1] экстремальное значение (-1)i с последовательным чередованием знаков. Возьмем в качестве многочлена ωn+1(x) на [-1,1] следующий:
ω n +1 ( x) =
1 Tn +1 ( x) . 2n
(4)
Анализ формулы (3) приводит к выводу, что старший коэффициент многочлена Tn(x) равен 2n-1. Тогда многочлен ωn+1(x) имеет единичный старший коэффициент, т.е. ωn+1(x) на [-1,1] уклоняется от нуля не более, чем на 1/2n. Несложно доказать [1], что никакой другой многочлен Pn+1(x) с единичным старшим коэффициентом не уклоняется от нуля на [-1,1] менее, чем на 1/2n. Таким образом, среди всех многочленов ωn+1(x) наименее уклоняется от нуля многочлен 1/2nTn+1(x), который на сегменте [1,1] не превосходит величины 1/2n. Итак, если в качестве узлов интерполяции выбрать корни многочлена Чебышева, то остаточный член формулы Лагранжа принимает следующий вид:
f ( x) − Ln ( x) ≤
M n +1 (n + 1)!2 n
, где M n +1 = max f ( n +1) ( x) . [ −1,1]
2.3.5. Понятие о разделенных разностях Пусть дана непрерывная на [a,b] функция f(x) и узлы интерполирования Разделенными разностями первого порядка называются следующие величины:
f [ x j −1 , x j ] =
f ( x j ) − f ( x j −1 ) x j − x j −1
, j = 1,2,..., n + 1.
Разделенные разности второго порядка суть
f [ x j −1 , x j , x j +1 ] =
f [ x j , x j +1 ] − f [ x j −1 , x j ] x j +1 − x j −1
.
Тогда по индукции разделенная разность (k+1)-го порядка есть
f [ x j −1 , x j ,..., x j + k ] =
f [ x j , x j +1 ,..., x j + k ] − f [ x j −1 , x j ,..., x j + k −1 ] x j + k − x j −1
.
{x }
n +1
j
j =1
.
38
Свойства разделенных разностей: 1) для разделенных разностей k-го порядка имеет место формула j+k
f[xj,xj+1,…,xj+k]=
j+k
f ( xi )
∑ ω ' ( x ) , где ω ( x) = ∏ ( x − x ), ω ' ( x i
i= j
p) =
i= j
i
j +k
∏ (x
p
− x i );
i = j ,i ≠ p
2) разделенная разность k-го порядка f[xj, xj+1,…, xj+k]=Fk(f) есть линейный функционал, т.е. Fk[f(x) ± g(x)]=Fk[f(x)] ± Fk[g(x)], Fk[af(x)]=aFk[f(x)]; 3) разделенная разность есть симметричная функция своих аргументов, т.е. аргументы можно переставлять, например, f[xj, xj+1,…,xj+k]= f[xj+1, xj,…,xj+k]; 4) разделенные разности k-го порядка от функции xn есть однородные многочлены своих аргументов порядка (n-k), разделенные разности n-го порядка тождественно равны 1, а выше nго порядка равны 0; 5) учитывая, что алгебраический многочлен есть сумма степенных функций, получаем, что для любого алгебраического многочлена степени n разделенные разности n-го порядка равны const, а разделенные разности (n+1)-го порядка равны 0.
2.3.6. Интерполяционная формула Ньютона
{ }
Пусть дана непрерывная на [a,b] функция f(x) и узлы интерполяции x j
n j =0
. Пусть Lk(x) –
интерполяционный полином Лагранжа для функции f(x), построенный по узлам
{x }
k
j
j =0
.
Рассматривая преобразование Ln(x)=L0(x)+[L1(x)-L0(x)]+[L2(x)-L1(x)]+…+[Ln(x)-Ln-1(x)], где Lk(x)-Lk1(x)=A(x-x0)(x-x1)…(x-xk-1), определим значение старшего коэффициента A, положив для этого x=xk:
A=
Lk ( x k ) − Lk −1 ( x k ) k −1
∏ (x
k
=
− xj)
j =0
k −1
∑ f (x −
j =0
j
)
f ( xk ) k −1
∏ (x
k
−
− xj)
j =0
( x k − x 0 )(( x k − x1 )...( x k − x j −1 )( x k − x j +1 )...( x k − x k −1 ) ( x j − x 0 )( x j − x1 )...( x j − x j −1 )( x j − x j +1 )...( x j − x k −1 ) k −1
∏ (x
k
=
− xj)
j =0
k
f (x j )
j =0
ω' (x j )
=∑
k
= f [ x 0 , x1 ,..., x k ], где ω ( x) = ∏ ( x − x j ). j =0
Интерполяционная формула Ньютона имеет следующий вид: Hn(x) ≡ Ln(x)=f(x0)+(x-x0)f[x0, x1]+(x-x0)(x-x1)f[x0, x1, x2]+ +…+(x-x0)(x-x1)…(x-xk)f[x0, x1,…xk+1]+…+(x-x0)(x-x1)…(x-xn-1)f[x0, x1,…xn]. Эта формула очень удобна, т.к. при добавлении новых точек интерполирования надо лишь добавлять новые слагаемые, не меняя старой записи. Используя тот факт, что разделенные разности – симметричные функции своих аргументов, новые узлы интерполирования можно брать в любом порядке, в том числе и в промежутках между старыми. Особенно удобна формула Ньютона при составлении таблиц.
2.3.7. Основные задачи в теории интерполирования В теории интерполирования можно выделить две основные задачи. Первую назовем "задачей приближения функции в точке". Для поиска решения этой задачи характерно стремление
{ }
по заданным значениям функции f(x) в точках x j
n +1 j =1
на [a,b] получить возможно более точное
значение функции в некоторой фиксированной точке x ∈ [a,b]. Такая задача возникает при вычислении значения функции по таблице, когда значение x не совпадает с узлом таблицы.
39
Вторая задача состоит в "равномерном приближении функции на сегменте". При решении этой задачи стремятся получить возможно меньшее по модулю максимальное уклонение функции от интерполяционного полинома на всем сегменте [a,b]. При решении этой задачи большую роль играют оценки остаточных членов интерполяционных формул. Прежде чем воспользоваться интерполяционной формулой, необходимо ответить на следующие вопросы. 1) Какие следует выбрать узлы? В качестве узлов лучше всего брать корни многочлена Чебышева. Этот подход справедлив для равномерного приближения на отрезке. Если речь идет о таблицах, в подавляющем большинстве случаев выбирают равномерное распределение узлов. 2)Какой выбирается класс функций для интерполирования? Чаще всего используются следующие системы функций:
sin jx {x }; cos , {e } . Все эти jx αjx
j
системы функций переходят сами в себя при замене переменной x на x+a, т.е. эти системы функций не зависят от начала отсчета. Кроме того, система степенных функций переходит сама в себя и при замене переменной x на ax, т.е. она не зависит от масштаба. 3)Какова желаемая точность результатов? Точность выбирается исходя из задачи. Вычислительная практика показывает, что вопрос о необходимой точности решения надо рассматривать не только перед вычислительным процессом, но и в ходе его, особенно на том этапе, когда полученные результаты преобразуются к виду, поставленному алгоритмистом. 4)Каким критерием согласия следует руководствоваться? Классический критерий согласия, который используется в теории интерполирования следующий: требование точного совпадения интерполяционного многочлена со значениями функции в заданных точках. Если же рассматривать интерполирование более широко (например, использование интерполяционных формул при численном интегрировании), то можно использовать и другие критерии согласия: Приведем три таких критерия: • минимизация суммы квадратов уклонений от значений функции в заданных точках, т.е. минимизация ошибки; • минимизация уклонения интерполяционного полинома от функции на всем сегменте задания функции; • совпадения в заданных точках значений интерполяционной функции не только со значениями функции, но и совпадение в этих точках значений их производных (сплайн-интерполяция).
2.3.8. Сплайн-интерполяция Рассмотрим случай кусочно-полиномиальной интерполяции, когда между любыми соседними узлами интерполяции строится кубический полином (кубическая сплайнинтерполяция). Коэффициенты полинома на каждом интервале определяются из условий сопряжения в узлах:
f i = yi , f ' ( x − 0) = f ' ( x + 0), i i f ' ' ( x i − 0) = f ' ' ( x i + 0), i = 1,2,..., n − 1.
(1)
Кроме того, на границе при x=x0 и x=xn ставятся условия f''(x0)=0, f''(xn)=0. (2) Будем искать кубический полином в виде f(x)=ai+bi(x-xi-1)+ci(x-xi-1)2+di(x-xi-1)3, x ∈ [xi-1, xi]. (3) Из условия fi=yi имеем f(xi-1)=ai=yi-1, f(xi)=ai+bihi+cih i2 +dih 3i =yi, hi=xi-xi-1, i=1, 2,…, n-1.
(4)
40
Вычислим производные
f'(x)=bi+2ci(x-xi-1)+3di(x-xi-1)2, f''(x)=2ci+6di(x-xi-1), x ∈ [xi-1, xi] и потребуем их непрерывности при x=xi. Это требование после несложных преобразований приводит к следующим соотношениям: bi+1=bi+2cihi+3dih i2 , ci+1=ci+3dihi, i=1, 2,…, n-1. (5) Общее число неизвестных коэффициентов, очевидно, равно 4n, число уравнений (4), (5) равно 4n-2. Недостающие два уравнения получаем из условий (2) при x=x0 и x=xn: с1=0, cn+3dnhn=0. Выражая из (5) di=(ci+1-ci)/(3hi), подставляя это выражение в (4) и исключая ai=yi-1, получим bi=(yi-yi-1)/hi-hi(ci+1+2ci)/3, i=1, 2,…, n-1, bn=(yn-yn-1)/hn-2hncn/3. Подставив теперь выражения для bi, bi+1 и di в первую формулу (5), после несложных преобразований получаем для определения ci разностное уравнение второго порядка
y − y i y i − y i −1 , i=1, 2,…, n-1 hi ci + 2(hi + hi +1 )ci +1 + hi +1ci + 2 = 3 i +1 hi hi +1
(6)
с краевыми условиями c1=0, cn+1=0. (7) Условие cn+1=0 эквивалентно условию cn+3dnhn=0 и уравнению ci+1=ci+3dici при i=n. Разностное уравнение (6) с условиями (7) решаются методом прогонки. Можно ввести понятие сплайна порядка m как функции, которая является полиномом степени m на каждом из отрезков сетки и во всех внутренних узлах сетки удовлетворяет условиям непрерывности функции и производных до порядка m-1 включительно. Обычно для интерполяции используются случаи m=3 (рассмотренный выше кубический сплайн) и m=1 (линейный сплайн, соответствующий аппроксимации графика функции y(x) ломаной, проходящей через точки (xi, yi)).
41
42
Модуль 3. Численное интегрирование и решение систем алгебраических уравнений 3.4. Численное интегрирование 3.4.1. Задача приближенного вычисления определенного интеграла Пусть дан интеграл J =
∫
b
a
f ( x)dx , где a, b < ∞ . На практике часто встречаются
следующие ситуации, требующие применения численного интегрирования: для заданного интеграла не существует первообразной («не берущийся» интеграл); первообразная сложна, и ее вычисление связано со значительными трудностями. В качестве приближенных значений интегралов в этих случаях естественно воспользоваться оценками по формулам, напоминающим интегральные суммы, т.е. линейные комбинации конечного числа значений подынтегральной функции на заданном сегменте:
b
J = ∫ f ( x)dx ≅ ∑k =1 ck( n ) f ( xk( n ) ) . Формулы такого типа
называются квадратурными. Значения
n
a ( n) k
{x } называются узлами, а {c } – коэффициентами
квадратурных формул. Число Rn ( f ) =
∫
b
a
(n) k
f ( x)dx − ∑k =1 c k( n ) f ( x k( n ) ) называется остаточным n
членом квадратурной формулы. При такой постановке возникают две задачи: 1) нужно определить, каким образом разбивать сегмент [a,b], и как выбирать узлы, чтобы получить возможно более точное значение интеграла; 2) необходимо решить проблему увеличения скорости сходимости интегральных сумм. Часто рассматривают вычисление интегралов более общего вида b
J = ∫ p ( x) f ( x)dx,
(1)
a
где p(x) – весовая функция. Можно строить квадратурные формулы из разных соображений. Рассмотрим некоторые из них.
3.4.1.1. Квадратурные формулы с наилучшей точностью для данного класса функций Обозначим через R некоторый класс функций, интегрируемых по Риману. Пусть _
R n = sup Rn ( f ) , где Rn(f) – остаточный член некоторой квадратурной формулы для функции f ∈R
f ∈ R . Ставится задача такого выбора узлов и коэффициентов квадратурной формулы, чтобы _
величина R n , т.е. точная верхняя грань по остаточным членам всех функций этого класса, была наименьшей. Такую формулу н6азывают формулой с наилучшей точностью для данного класса функций.
3.4.1.2. Квадратурные формулы с наилучшей степенью точности Пусть {ϕ k ( x)}k =0 – базисное множество в некотором пространстве функций, причем ∞
множество функций {ϕ k ( x)}k =0 . Где n – фиксированное число, образует систему Чебышева порядка n (многочлен по этой системе имеет не более n корней). Обозначим через Фm(x) n
множество всех многочленов вида
∑
m k =0
α k ϕ k ( x) , где α0, α1,…, αm – действительные числа.
43
Зафиксируем число узлов квадратурной формулы n и будем подбирать ее коэффициенты и расположение узлов так, чтобы эта формула была точна для многочленов как можно более высокой степени m. Порядок многочлена m, для которого формула еще точна (при условии, что она уже не точна для многочлена порядка m+1) и называется степенью точности квадратурной формулы такого типа. Говорят, что это формула наилучшей степени точности m. Чаще всего в качестве системы функций {ϕ k ( x)}k =0 выбираются степенные функции n
{x }
k ∞ k =0
. 3.4.1.3. Интерполяционные квадратурные формулы Пусть {ϕ k ( x)}k =0 – система функций Чебышева на сегменте [a,b], на котором также задана n
функция f(x). Рассмотрим интеграл
∫
b
a
p ( x) f ( x)dx и построим на [a,b] по узлам
интерполяционный полином Лагранжа Ln(x)=
∫
b
a
b
a
j =0
f ( x j )Φ j ( x). Поскольку f(x)=Ln(x)+Rn(x), то
b
b
a
a
n
= ∑ j =0 c
∫
j =0
n
j
p ( x) f ( x)dx = ∑ j =0 f ( x j ) ∫ p ( x)Φ j ( x)dx + ∫ p ( x) Rn ( x)dx = n
где c (jn ) =
∑
n
{x }
f ( x j ) + R( f ),
(n) j
b
p ( x)Φ j ( x)dx (j=0, 1,…, n) – коэффициенты, а R ( f ) = ∫ p ( x) Rn ( x)dx – a
остаточный член квадратурной формулы интерполяционного типа. Коэффициенты c (jn ) не зависят от f(x), а определяются только весовой функцией и узлами интерполяции. Установим связь между квадратурной формулой интерполяционного типа и квадратурными формулами определенного порядка точности по отношению к определенному виду многочлена. Теорема. Необходимое и достаточное условие того, чтобы квадратурная формула с n узлами была интерполяционной для системы функций {ϕ k ( x)}k =0 , которая является системой Чебышева, заключается в следующем: эта формула должна иметь порядок точности не ниже n-1 n −1
для системы обобщенных многочленов вида
∑
n −1 j =0
α jϕ j ( x) , где αj – любые действительные числа.
Доказательство. Необходимость.
Дано:
соотношение
∫
b
a
p ( x) f ( x)dx ≈ ∑ j =1 c (jn ) f ( x j ) n
является
интерполяционной формулой. Следовательно, эта формула точна, если в качестве функции f(x) взять некоторый многочлен вида
∑
n −1 j =0
α jϕ j ( x) . Действительно, функция совпадает со своим
интерполяционным многочленом, и остаточный член полинома Лагранжа равен нулю, а поэтому равен нулю и остаточный член квадратурной формулы. Достаточность. Пусть квадратурная формула является точной по заданной системе функций для многочленов порядка не ниже n-1. В частности, эта формула будет точна для фундаментальных многочленов Φj(x), обладающих свойством
1, p = j Φ j (x p ) = , ∀j , p = 1,2,..., n . Тогда 0, p ≠ j
∫
b
a
p ( x)Φ j ( x)dx = ∑ p =1 c (pn ) Φ j ( x p ) = c (jn ) , j=1,2,…,n. n
Итак, коэффициенты данной квадратурной формулы выражаются как коэффициенты интерполяционной формулы. Следовательно, данная квадратурная формула является интерполяционной. Следствие. Интерполяционная квадратурная формула с n узлами по системе функций
{ϕ k ( x)}nk−=10
имеет порядок точности по этой системе функций не ниже, чем n-1.
44
3.4.1.4. Замечания к использованию квадратурных формул 1) При использовании квадратурных формул для вычисления интегралов основной объем работы содержится в вычислении значений функции в узлах интерполяционной формулы, т.к. значения коэффициентов c (jn ) табулированы. Следовательно, надо выбирать квадратурную формулу с минимальным числом узлов при обеспечении необходимой точности. 2) Если каждое из значений функции в квадратурной формуле вычисляется с погрешностью δ, то неустранимая погрешность квадратурной формулы может достичь величины δ
∑
n j =1
c (jn ) .
Отсюда вытекает, что необходимо при вычислениях использовать квадратурные формулы, которые имеют малые по абсолютной величине коэффициенты.
3.4.2. Квадратурные формулы Ньютона-Котеса Такое название носят квадратурные формулы интерполяционного типа, построенные по равноотстоящим узлам. Различают формулы двух видов. 1) Формулы открытого типа. В этих формулах границы сегмента интегрирования [a,b] не входят в число узлов квадратурной формулы. 2) Формулы замкнутого типа. В этом случае точки a и b являются узлами квадратурной формулы. Рассмотрим формулы второго типа. Разобьем сегмент интегрирования [a,b] на n равных частей и в качестве узлов интерполирования возьмем точки деления и границы сегмента. Получим
xj = a +
b−a j , j = 0,1,..., n . n
Вводя
обозначение
x0=a,
(b-a)/n=h,
получаем
xj=x0+jh.
Интерполяционный полином Лагранжа для функции f(x) по этим узлам для системы степенных функций имеет вид n
( x − x0 )( x − x1 )...( x − x j −1 )( x − x j +1 )...( x − xn )
j =0
( x j − x0 )( x j − x1 )...( x j − x j −1 )( x j − x j +1 )...( x j − xn )
Ln ( x) = ∑ f ( x j )
.
Введем q=(x-x0)/h ⇒ x=x0+qh; тогда n
Ln ( x) = ∑ f ( x j ) j =0
h n q (q − 1)(q − 2)...(q − (q − 1))(q − (q + 1))...(q − n) n (−1) n − j q [ n+1] = f x ( ) , ∑ j q− j h n j!(n − j )!(−1) n − j j = 0 j!( n − j )!
поскольку x-xj-1=x0+hq-x0-h(j-1)=h(q-(j-1))=h(q-(j-1)); xj-xj-1=x0+hj-x0-h(j-1)=h. Здесь введено обозначение q[n+1]=q(q-1)…(q-j)…(q-n). Вычислим коэффициенты квадратурной формулы интерполяционного типа. Полагая p(x) ≡ 1, с учетом x=x0+hq; dx=hdq; x=x0 ⇒ q=0; x=b ⇒ q = n получим b
c (jn ) = ∫ p ( x)Φ j ( x)dx = a
b
n
(−1) n− j q [ n +1] (−1) n − j h q [ n+1] dx dq. = j!(n − j )! ∫a q − j j!(n − j )! ∫0 q − j
Вводя в рассмотрение c (jn ) = (b − a ) H (j n ) , получим выражение, называемое формулой для коэффициентов Котеса n
H (j n ) =
(−1) n − j q [ n +1] dq, j = 0,1,..., n. j!(n − j )!n ∫0 q − j
Приведем свойства коэффициентов Котеса. 1)
H (j n ) = H n( n−)j , j=0, 1,…, n.
2) Поскольку формула является точной для многочлена нулевой степени, то 3) При возрастании n коэффициенты Котеса безгранично возрастают.
∑
n j =0
H (j n ) = 1.
45
Следствие. Из свойств коэффициентов Котеса нецелесообразно применять при больших значениях n.
вытекает,
что
эти
формулы
3.4.3. Частные случаи формулы Ньютона-Котеса 3.4.3.1. Формула прямоугольников Рассмотрим формулу Ньютона-Котеса открытого типа с одним узлом. Эта формула верна для алгебраических многочленов нулевой степени. Выберем в качестве узла интерполяции середину заданного интервала интегрирования [a,b]. Тогда, применяя формулу Котеса, получаем соотношение, называемое формулой прямоугольников: b
a+b + R( f ) . 2
∫ f ( x)dx = (b − a) f a
(2)
Это название следует из того, что искомое значение интеграла приближенно оценивается площадью прямоугольника, имеющего высоту, равную значению подынтегральной функции в точке (a+b)/2, а его длина равна длине отрезка [a,b] (см. рис. 4.1).
Если функция f(x) имеет ограниченную вторую производную, то для остаточного члена имеется следующая оценка:
(b − a ) 3 R( f ) ≤ M 2 , M 2 = sup f ' ' ( x) . 24 [ a ,b ]
(3)
На практике применяют обобщенную формулу прямоугольников. Она получается следующим образом. Отрезок интегрирования [a,b] разбивается на m равных частей и к каждому элементарному сегменту применяется формула прямоугольников: b
∫ f ( x)dx = a
b−a b−a b−a b − a f a + + f a + 3 + ... + f a + (2m − 1) + Rn ( f ), m 2m 2m 2m
Rm ( f ) ≤
(b − a) 3 (b − a) 3 mM M 2. = 2 24m 3 24m 2 3.4.3.2. Формула трапеций
(4)
(5)
Формула трапеций. Так называется формула Ньютона-Котеса замкнутого типа с двумя узлами. Интерполяционная формула точна для многочленов первой степени, т.е. для линейных функций. Запишем эту формулу с оценкой остаточного члена:
46
b
∫ a
b−a (b − a ) 3 ( f (a) + f (b) ) + R( f ), R( f ) ≤ M 2. f ( x)dx = 2 12
(6)
Аналогично предыдущему случаю разбив [a,b] на m частей и применив на каждой из них формулу трапеции, получим обобщенную формулу трапеции: b
∫ a
(b − a ) (b − a ) 3 M2, f ( x)dx = [ y 0 + 2 y1 + 2 y 2 + ... + y m ] + Rm ( f ), Rm ( f ) ≤ 2m 12n 2
(7)
где введены следующие обозначения: yi=f(xi), i=0, 1,…, m.
3.4.3.3. Формула парабол (Симпсона) Рассмотрим формулу Ньютона-Котеса замкнутого типа с тремя узлами. Эта формула является точной для любого многочлена степени не больше двух. Построим функцию y=Ax2+Bx+C по трем равноотстоящим точкам (x=a, x=(a+b)/2, x=b), значения которой в этих точках равны значениям заданной функции y0, y1, y2. Сделав замену переменной t=x-(a+h/2), где h=b-a, получим следующую систему уравнений
y 0 = y (−h / 2) = Ah 2 / 4 − Bh / 2 + C , y1 = y (0) = C , y = y (h / 2) = Ah 2 / 4 + Bh / 2 + C. 2
(8)
Сложив уравнения этой системы, предварительно домножив второе уравнение на 4, получим следующее соотношение: Ah2/2+6C=y0+4y1+y2. (9) Вычислим
S=∫
h/2
−h / 2
( Ax 2 + Bx + C )dx = Ax 3 / 3 h− h/ 2/ 2 +Ch = Ah 3 / 12 + Ch = h( Ah 2 / 2 + 6C ) / 6 ,
или, с учетом (9) S=h(y0+4y1+y2)/6=(b-a)(y0+4y1+y2)/6. Если теперь подынтегральную функцию f(x) заменить функцией y, то получим в качестве частного случая формулы НьютонаКотеса формулу парабол (Симпсона): b
∫ f ( x)dx = a
b−a ( y 0 + 4 y1 + y 2 ) + R ( f ). 6
(10)
Для остаточного члена в случае существования ограниченной четвертой производной функции f(x) справедлива следующая оценка:
(b − a ) 5 R( f ) ≤ M 4 , M 4 = sup f ( 4) ( x) . 32 * 90 [ a ,b ]
(11)
Разделив далее отрезок на 2m частей, обозначая значения функции f(x) в точках деления yi, применяя к двум последовательным сегментам формулу Симпсона (всего m раз) и складывая, получим: b
∫ f ( x)dx = a
b−a [ y 0 + y 2 m + 2( y 2 + y 4 + ... + y 2 m −2 ) + 4( y3 + y5 + ... + y 2 m−1 )] + R ( f ), (12) 6m
R( f ) ≤
(b − a) 5 M 4. 32 * 90m 4
(13)
3.4.4. Квадратурные формулы Гаусса Квадратурные формулы Гаусса. Такое название носят квадратурные формулы с наивысшим порядком точности относительно алгебраических многочленов. Пусть дан интеграл
47
∫
b
a
p ( x) f ( x)dx . Требуется таким образом выбрать n узлов на [a,b] и n коэффициентов
квадратурной формулы, чтобы эта формула была точна для алгебраических многочленов как можно более высокой степени. Пусть формула точна для многочленов степени m: f(x)=a0+a1x+…+amxm. Тогда имеем b
b
b
b
∫ p( x) f ( x)dx = a ∫ p( x)dx + a ∫ p( x) xdx + ... + a ∫ p( x) x 0
a
a
С другой стороны
∫
b
a
m
1
a
m
dx.
(14)
a
p ( x) f ( x)dx = ∑k =1 ck( n ) f ( xk ). Учитывая, что последняя формула по n
предположению верна для любого многочлена степени m, т.е. для любых наборов коэффициентов a0, a1,…,am, в силу произвольности этих коэффициентов (полагая отличным от нуля только ai в i-м уравнении, а значения остальных m-1 коэффициентов в i-м уравнении принимая равными нулю) получим следующую систему уравнений b c1( n ) + c2( n ) + ... + cn( n ) = ∫ p ( x)dx = µ 0 , a c ( n ) x + c ( n ) x + ... + c ( n ) x = b p ( x) xdx = µ , 1 n n ∫a (15) 1 1 2 2 .......... .......... .......... .......... .......... .. c ( n ) x m + c ( n ) x m + ... + c ( n ) x m = b p ( x) x m dx = µ . 2 2 n n m 1 1 ∫a Введенная в системе уравнений величина, обозначенная µk, k=0, 1,…, m называется
моментом функции p(x). Поскольку имеется m+1 уравнение, а неизвестных 2n (n переменных и n коэффициентов), то из равенства m+1=2n следует максимальная степень многочлена, для которого квадратурная формула еще точна: m=2n-1. Для доказательства существования решения системы уравнений (15) введем в рассмотрение многочлен ωn(x) с единичным старшим коэффициентом, корнями которого являются искомые узлы: ωn(x)=(x-x1)(x-x2)…(x-xn). Теорема. Необходимое и достаточное условие того, чтобы квадратурная формула с n узлами имела алгебраический порядок точности 2n-1 заключается в следующем: узлы этой функции должны быть корнями многочлена ωn(x), ортогонального с весом p(x) к любому многочлену степени не выше n-1, т.е. для любого многочлена q(x) степени не выше n-1 должно иметь место равенство b
∫ p( x)ω
n
( x)q ( x)dx = 0.
(16)
a
Доказательство. Необходимость. Пусть формула является точной для любого многочлена степени не выше 2n-1. Требуется доказать, что имеет место равенство (16). Учитывая, что степень q(x) не выше n-1, получаем, что ωn(x)q(x) имеет степень не выше, чем 2n-1. Следовательно, для многочлена ωn(x)q(x) эта квадратурная формула точна, т.е. имеет место точное равенство b
n
a
k =1
( n) ∫ p( x)ω n ( x)q( x)dx = ∑ ck ϖ n ( xk )q( xk ) =0,
Равенство нулю следует из того, что ωn(xk)=0. Достаточность. Пусть имеет место (15). Докажем, что квадратурная формула интерполяционного типа, построенная по корням ωn(x), точна для любого многочлена степени не выше 2n-1. Пусть f(x) – многочлен степени не выше 2n-1. Тогда можно его представить в виде f(x)=ωn(x)q(x)+r(x), где q(x), r(x) – многочлены степени не выше n-1. Поскольку узлы квадратурной формулы одновременно являются корнями многочлена ωn(x), то во всех этих узлах выполняется соотношение f(xj)=r(xj) j=1, 2,…,n. (17)
48
Тогда, применяя к функции f(x) квадратурную формулу, получим b
b
b
n
a
a
a
k =1
(n) ∫ p( x) f ( x)dx = ∫ p( x)ϖ n ( x)q( x)dx + ∫ p( x)r ( x)dx = ∑ ck r ( xk ).
Последнее равенство является точным в силу того, что интерполяционная формула с n узлами имеет алгебраический порядок точности не ниже, чем n-1, а степень полинома r(x) не выше, чем n-1. Учитывая (17), окончательно получаем равенство b
n
a
k =1
(n) ∫ p( x) f ( x)dx =∑ ck f ( xk ).
Гаусс, рассматривая случай p(x) ≡ 1, предложил в качестве ωn(x) использовать полиномы Лежандра, корни которых и следует использовать в качестве узлов квадратурной формулы. В этом случае показано, что для остаточного члена справедлива следующая оценка:
R( f ) ≤
(b − a) 2 n+1 (n!) 4 M 2 n , M 2 n = sup f ( 2 n ) ( x) . 3 [(2n)!] (2n + 1) [ a ,b ]
В настоящее время составлены таблицы узлов и весов квадратурной формулы Гаусса при n=1, 2,…, 512.
49
3.5. Численное решение систем линейных алгебраических уравнений В этой главе изучаются методы численного решения систем линейных алгебраических уравнений, т.е. численные методы линейной алгебры. Существуют два типа методов – прямые и итерационные. Эффективность прямых методов зависит от порядка системы и структуры матрицы коэффициентов. При изучении итерационных методов система уравнений трактуется как операторное уравнение первого рода Au=f и излагается общая теория итерационных методов для операторных уравнений при минимальных предположениях относительно оператора A. Общая теория позволяет доказать сходимость итераций для метода Зейделя и метода релаксации при минимальных ограничениях на оператор A.
3.5.1. Системы линейных алгебраических уравнений 3.5.1.1. Системы уравнений Основная задача линейной алгебры – решение системы уравнений Au=f,
(1)
где u=(u1,…, uN) – искомый вектор, f=(f1,…, fN) – известный вектор размерности N, A=(aij) (i, j=1,…, N) – квадратная матрица размера N*N с элементами aij. Будем предполагать, что матрица A невырождена; detA ≠ 0, так что уравнение Au=0 имеет только тривиальное решение, и система (1) имеет единственное решение u=A-1f. В курсе линейной алгебры решение системы (1) обычно выражают по формулам Крамера в виде отношений определителей. Для численного решения системы (1) эти формулы непригодны, т.к. они требуют вычисления N+1 определителей, для чего необходимо осуществление порядка N! арифметических операций. Даже при выборе наилучшего метода вычисление одного определителя требует такого же времени, что и решение системы линейных уравнений современными численными методами. Кроме того, вычисления по формулам Крамера часто ведут к большим погрешностям округления. Особенность большинства численных методов для решения системы уравнений (1) состоит в отказе от нахождения обратной матрицы. Основное требование к методу решения – минимум числа арифметических действий, достаточных для отыскания приближенного решения с заданной точностью ε>0 (экономичность численного метода).
3.5.1.2. Частные случаи систем Несложно решить систему (1) в перечисленных ниже частных случаях. Пусть матрица A – диагональная, т.е. aij=0, j ≠ i, aii ≠ 0 (i, j=1,…, N). Тогда система имеет вид aiiui=fi, откуда находим ui=fi/aii, i=1,…, N. Если A – нижняя треугольная матрица, т.е. aij=0 при j>i (i, j=1,…, N), aii ≠ 0,
a11 a A = 21 ... a N 1
0 a 22 ... aN 2
0 ... 0 , ... ... ... a NN ...
то система уравнений (1) имеет вид
a11u1 a 21u1 + a 22 u 2 ........................... a N 1u1 + ... + a NN u N
= f1 , = f2 , ...... = fN .
50
Компоненты вектора u находятся последовательно при переходе от n к n+1, начиная с n=1:
u1 =
n f1 1 1 , u2 = ( f 2 − a 21u1 ),..., u n +1 = f n +1 − ∑ a n +1,k u k , n = 2,3,..., N − 1. a11 a 22 a n+1,n+1 k =1
Чтобы найти вектор u=(u1,…, uN), требуется 1+3+…+2N-1=N2 арифметических действий. Если A – верхняя треугольная матрица, т.е. aij=0 при j
a11 0 A= ... 0
... a1N ... a 2 N , ... ... ... a NN
a12 a 22 ... 0
то система (1) имеет вид
a11u1 + a12 u 2 + ... + a1N u N a22 u 2 + ... + a 2 N u N ........................... a NN u N
= f1 , = f2 , ...... = fN .
Компоненты вектора u=A-1f определяются последовательно при переходе от n+1 к n по формулам
uN =
N fN 1 ,..., u n = f n − ∑ ank u k ,..., n=N-1, N-2,…, 2, 1, a NN a nn k = n +1
(2)
что требует также N2 действий. Выбор метода и его экономичность зависят от вида матрицы A, а также от типа компьютера. Для многих задач A является разреженной матрицей, большинство элементов которой – нули. Такие матрицы часто появляются при разностной аппроксимации дифференциальных уравнений. Элементы этой матрицы обычно вычисляются по заданным формулам, и их можно не хранить в оперативной памяти ЭВМ. Это очень важно, т.к. порядок таких матриц может достигать нескольких десятков и даже сотен тысяч. Частным случаем разреженной матрицы является ленточная матрица; все ее ненулевые элементы находятся вблизи главной диагонали, т.е. aij=0, если i − j > l , где l
− c1 a A= 2 ..... 0
b1 − c2 ..... ...
0 0 . ..... ..... ..... 0 aN − cN 0 b2
... ...
Соответствующая система (1) имеет вид
− c1u1 + b1u 2 = f1 , ................................ ai ui −1 − ci ui + bi ui +1 = f i , ................................. a N u N −1 − c N u N = f N , i = 2,3,..., N − 1.
Это разностное уравнение второго порядка, которое решается методом прогонки.
3.5.1.3. Прямые и итерационные методы
51
Численные методы решения системы (1) условно разбивают на две группы, выделяя прямые и итерационные методы (имеются, естественно, и гибридные методы). Прямые методы позволяют за конечное число действий получить точное решение системы уравнений, если входная информация (правая часть уравнения f и элементы aij матрицы A) задана точно, и вычисления ведутся без округления. Простейший пример прямого метода – метод прогонки. Конечно, прямые методы также дают решение с определенной точностью, которая зависит от погрешностей округления, т.е. от машины, и от характера вычислительной устойчивости, что зависит от самого метода. Итерационный метод позволяет найти приближенное решение системы путем построения последовательности приближений (итераций), начиная с некоторого начального приближения. Само приближенное решение является результатом вычислений, полученным после конечного числа итераций. Выбор того или иного численного метода зависит от многих обстоятельств – от имеющихся программ, от вида матрицы, от типа расчета и др. Поясним слова «тип расчета». Возможны разные постановки задачи: 1) найти решение одной конкретной задачи (1); 2) найти решение нескольких вариантов задачи (1) с одной и той же матрицей A и разными правыми частями f. Может оказаться, что неоптимальный для одной задачи (1) метод является весьма эффективным для многовариантного расчета. При многовариантном расчете можно уменьшить среднее число операций для одного варианта, если хранить некоторые величины, а не вычислять их заново для каждого варианта. Это, конечно, зависит от машины, от объема ее оперативной памяти. Из сказанного ясно, что выбор алгоритма должен зависеть от типа расчета, от объема оперативной памяти машины и, конечно, от порядка системы. Качество алгоритма определяется тем машинным временем, которое требуется для нахождения решения системы (1). Естественно выбирать тот метод, для которого время решения минимально по сравнению с другими методами. Однако время расчета зависит от многих факторов: от числа арифметических и логических действий, которые нужно затратить для получения решения с заданной точностью, от быстродействия и объема оперативной памяти машины, от качества программы. При теоретических оценках качества алгоритмов их сравнение приводится по числу Q(ε) арифметических действий, достаточных для нахождения решения задачи с заданной точностью ε>0.
3.5.2. Прямые методы 3.5.2.1. Метод Гаусса Имеется несколько вычислительных вариантов метода Гаусса, основанного на идее последовательного исключения. Процесс решения системы линейных алгебраических уравнений Ax=f, или N
∑a j =1
ij
x j = f j , i=1, 2,…, N,
(1)
по методу Гаусса состоит из двух этапов. Первый этап (прямой ход). Система (1) приводится к треугольному виду B+x=ϕ, (2) где x=(x1,…, xN) – неизвестный, ϕ=(ϕ1,…, ϕN) – известный вектор, B+ – верхняя треугольная матрица. Второй этап (обратный ход). Неизвестные xN, xN-1,…, x1 определяются по формулам (2) п.3.5.1. Перейдем к подробному изложению метода. Первый шаг метода Гаусса состоит в исключении из всех уравнений, кроме первого, неизвестного x1. Предположим, что a11 ≠ 0, разделим первое уравнение (1) (i=1) на a11 и запишем систему (1) в виде x1+b12x2+…+b1NxN=ϕ1, b1j=a1j/a11, j=2, 3,…, N, ϕ1=f1/a11, (3)
52
ai1x1+ai2x2+…+aiNxN=fi, i=2, 3,…, N. (4) Умножим уравнение (3) на ai1, где i – любое из чисел 2, 3,…, N, и вычтем полученное уравнение из I-го уравнения (4): (ai2-ai1b12)x2+…+(aiN-ai1b1N)xN=fi-ai1ϕ1, i=2, 3,…, N. Вводя обозначения aij(1) = aij − ai1b1 j , f i (1) = f i − ai1ϕ1 , i, j=2, 3,…, N, (5) перепишем полученную систему уравнений (эквивалентную системе (1)) в виде x1+b12x2+…+b1NxN=ϕ1, (1) ai 2 x2 + ... + aiN(1) x N = f i (1) , i=2, 3,…, N. Первый столбец матрицы этой системы состоит из нулей, кроме первого элемента, равного единице при i=j=1. Второй шаг состоит в исключении x2 из системы (1) a22 x2 + ... + a2(1N) x N = f 2(1) , ..................................
a x + ... + a (1) N2 2
(1) NN
xN = f
(1) N
(6)
.
(1) : Для этого разделим первое уравнение на a 22 x2+b23x3+…+b2NxN=ϕ2,
(1) (1) ϕ 2 = f 2(1) / a 22 , b2 j = a 2(1j) / a 22 , j = 3,..., N ,
умножим его затем на (- ai(21) ) и сложим с уравнением
ai(21) x2 + ai(31) x3 + ... + aiN(1) x N = f i (1) , i = 3,4,..., N . В результате получим систему x2+b23x3+…+b2NxN=ϕ2,
aij( 2)
ai(32) x3 + ... + aiN( 2 ) x N = f i ( 2) , = aij(1) − ai(21) b2 j , f i ( 2 ) = f i (1) − ai(21)ϕ 2 , i = 3,4,..., N .
(7) (8)
Для x3, x4,…, xN имеем систему (N-2)-го порядка, аналогичную системе (6) (N-1)-го порядка для x2, x3,…, xN. Продолжая рассуждения, после (N-1)-го шага (т.е. после исключения x1, x2,…, xN-1) получим ( N −1) ( N −1) (9) a NN x N = f N( N −1) , или xN=ϕN, ϕ N = f N( N −1) / a NN . В итоге приходим к системе (2) с верхней треугольной матрицей:
x1 + b12 x2 + b13 x3 + ... + b1N x N = ϕ1 , x2 + b23 x3 + ... + b2 N x N = ϕ 2 , .......................................... x N −1 + bN −1, N x N = ϕ N −1 , xN = ϕ N .
(10)
Обратный ход метода Гаусса состоит в определении всех xi из системы (10) с верхней треугольной матрицей. Нетрудно показать, что изложенный выше метод Гаусса можно применять в том случае, когда все главные миноры матрицы отличны от нуля. Подсчитаем число умножений и делений в методе Гаусса. Рассмотрим сначала прямой ход. На первом шаге требуется Q1=N2 делений и умножений, второй шаг требует Q2=(N-1)2 действий и т.д. Всего надо сделать N шагов прямого хода, затратив на это
∑
( N − k + 1) 2 = ∑s =1 s 2 = N ( N + 1)(2 N + 1) / 6 умножений и делений. Для обратного хода, k =1 N
N
очевидно, нужно сделать N(N-1)/2 умножений. Таким образом, для решения системы уравнений (1) требуется Q=N(N2+3N-1)/3 умножений и делений. Примерно столько же потребуется сложений. Рассмотрим в качестве примера систему трех уравнений
53
2x1+4x2+3x3=4, (11) 3x1+x2-2x3=-2, (12) 4x1+11x2+7x3=7. (13) Прямой ход. Первый шаг. Разделим первое уравнение на a11=2: x1+2x2+1,5x3=2. (14) Умножим (14) на -3 и сложим с (12), затем умножим (14) на -4 и сложим с (13): -5x2-6,5x3=-8, (15) 3x2+x3=1. (16) Мы получили систему второго порядка. Второй шаг. Разделим (15) на -5: x2+1,3x3=1,6. (17) Умножим (17) на -3 и сложим с (16): -2,9x3=-5,8. (18) Третий шаг. Делим (18) на -2,9: x3=2. В результате получили систему x1+2x2+1,5x3=2, x2+1,3x3=1,6, x3=2 с верхней треугольной матрицей
1 2 1,5 0 1 1,3. 0 0 1 Обратный ход. Из системы последовательно находим: x3=2; x2=1,6-1,3*2=-1; x1=2-2x21,5*x3=1. Таким образом, решение системы (11) – (13) найдено: x1=1, x2=-1, x3=2.
3.5.2.2. Метод квадратного корня Этот метод пригоден для систем Au=f (19) с симметричной матрицей A. Матрица A разлагается в произведение A=SDS*, (20) где S=(sij) – нижняя треугольная (sij=0 при j>i), D=(dij) – диагональная матрицы (dij=diδij, δij – символ Кронекера, δij=0, i ≠ j, δii=1); без ограничения общности можно положить sii=1 для всех i=1, 2,…, N. Решение уравнения Au=f сводится к последовательному решению двух систем: Sdy=f, S*u=y. В силу (20) имеем ai1=d1si1, i ≥ 1, (21) i −1
aii = d i s ii + ∑ d k sik , i = 2,3,..., N , 2
(22)
k =1
j −1
_
aij = d j s ij + ∑ d k sik s jk , i ≥ j + 1, j = 2,3,..., N − 1,
(23)
k =1
_
_
где s ik – комплексно сопряженное к sik число, т.к. S*=( s ji ) . Положим ^
s ik = d k sik
(24)
и выберем d1=a11, d i = a ii −
i −1 ^
∑s k =1
_
ik
s ik , i = 2,3,.., N .
(25)
54
Тогда условия (22) будут выполнены, а условия (21) – выполнены для i=1. Запишем оставшиеся соотношения следующим образом: ^
s i1 = ai1 , i = 2,3,..., N , j −1 ^
^
_
aij = s ij + ∑ s ik s jk , i = 3,4,..., N ; j = 2,3,..., i − 1, k =1
^
и из (24) найдем s ij = s ij / d j . Отсюда следует алгоритм. Находим сначала d1=a11. Для i от 2 до N выполняем действия:
→ begin ^
^
1. s i1 = ai1 , si1 = s i1 / d1 . 2.if i = 2 then go to3, else for j = 2 to i − 1 do : ^
j −1 ^
_
k =1 i −1 ^
_
^
s ij = aij − ∑ s ik s jk , sij = s ij / d j . 3.d i aii − ∑ s ik s ik k =1
→ end .
Замечание. Вычисляемые элементы sij и di могут быть размещены на месте aij и aii, если элементы матрицы A не нужно сохранять. Дополнительная память требуется для размещения при ^
фиксированном i чисел s ij (j=1, 2,…, i-1); очевидно, нужно не более N-1 ячеек памяти для их хранения. Алгоритм SDS*-разложения может оказаться численно неустойчивым даже при выборе главного элемента. Однако в двух случаях можно гарантировать устойчивость алгоритма – для положительно определенных матриц A и матриц с диагональным преобладанием. Определитель матрицы равен N
det A = ∏ d ii sii2 .
(26)
i =1
Метод квадратного корня требует порядка N3/3 арифметических действий, т.е. при больших N он вдвое быстрее метода Гаусса и занимает вдвое меньше ячеек памяти. Это обстоятельство объясняется тем, что метод использует информацию о симметрии матрицы.
3.5.2.3. Связь метода Гаусса с разложением матрицы на множители Пусть дана невырожденная матрица A размера N*N. Представим ее в виде произведения A=BC, A=(aij), B=(bij), C=(cij), (27) где B и C – треугольные матрицы вида
0 b11 b 21 b22 B = b31 b32 .... .... bN 1 bN 2
0
...
0
...
b33 ....
... ...
bN 3 ...
0 1 c12 c13 0 1 c 0 23 0 , C = 0 0 1 .... .... .... .... 0 0 bNN 0
т.е. bik=0 при k>i, cik=0 при k
... c1N ... c 2 N ... c3 N , ... .... ... 1
∑
N k =1 ik
b c kj . Преобразуем эту
55
N
i −1
N
i −1
k =1 N
k =1 j −1
k =i +1 N
k =1 j −1
k =1
k = j +1
∑ bik ckj = ∑ bik ckj + bii cij + ∑b k =1
c = ∑ bik ckj + bij c jj +
ik kj
∑ bik ckj = ∑ bik ckj + bii cij , ∑b
c = ∑ bik ckj + bij c jj .
ik kj
k =1
Отсюда находим i −1
bij = aij − ∑ bik c kj при i ≥ j , b11 = a11 , c11 = 1, k =1
cij =
1 bii
i −1 − a ij ∑ bik ckj при i<j. k =1
Матрицы B и C найдены. Решение уравнения Au=Bcu=f сводится к последовательному решению уравнений Bϕ=f, Cu=ϕ. Построение матриц B и C и нахождение ϕ=B-1f соответствует прямому ходу, а решение уравнения Cu=ϕ соответствует обратному ходу метода Гаусса.
3.5.3. Итерационные методы 3.5.3.1. Метод итераций для решения системы линейных алгебраических уравнений Пусть дана система линейных алгебраических уравнений Au=f. (1) Для ее решения выберем некоторое начальное приближение y0 ∈ H и последовательно найдем приближенные решения (итерации) уравнения (1). Значение итерации yk+1 выражается через известные предыдущие итерации yk, yk-1,…. Если при вычислении yk+1 используется только одна предыдущая итерация yk, то итерационный метод называют одношаговым методом; если же yk+1 выражается через две итерации yk и yk-1, то метод называется двухшаговым. Будем считать, что A: H → H – линейный оператор, отображающий конечномерное пространство H (с заданным скалярным произведением) в себя. Важную роль играет запись итерационных методов в единой (канонической) форме. Любой двухслойный итерационный метод можно записать в следующей канонической форме:
B
y k +1 − y k
τ k +1
+ Ay k = f , k = 0,1,... для всех y0 ∈ H,
(2)
где A: H → H – оператор исходного уравнения (1), B: H → H – линейный оператор, имеющий обратный B-1, k – номер итерации, τ1, τ2,…, τk+1,… – итерационные параметры, τk+1>0. Оператор B может, вообще говоря, зависеть от номера k; для простоты изложения мы предполагаем всюду, что B не зависит от k. Если B=E – единичный оператор, то метод
y k +1 − y k
τ k +1
+ Ay k = f , k = 0,1,... для всех y0 ∈ H
(3)
называют явным: yk+1 находится по явной формуле yk+1=yk-τk+1(Ayk-f). В общем случае, при B ≠ E, метод (2) называется неявным итерационным методом: для определения yk+1 надо решить уравнение Byk+1=Byk-τk+1(Ayk-f)=Fk, k=0, 1,… (4) Естественно требовать, чтобы объем вычислений для решения системы Byk+1=Fk был меньше, чем объем вычислений для прямого решения системы Au=f.
56
Точность итерационного метода (2) характеризуется величиной погрешности zk=yk-u, т.е. разностью между решением yk уравнения (2) и точным решением u исходной системы линейных алгебраических уравнений. Подстановка yk=zk+u в (2) приводит к однородному уравнению для погрешности:
B
z k +1 − z k
τ k +1
+ Az k = 0, k = 0,1,... , z0=y0-u.
(5)
Говорят, что итерационный метод сходится в HD, если lim z k D = 0, где z = ( Dz, z ) , D = D * > 0, D : H → H . k →∞
D
Обычно задают некоторую относительную погрешность ε>0, с которой надо найти приближенное решение yk, и прекращают вычисления, как только выполняется условие (6) yn − u D ≤ ε y0 − u D . Если n=n(ε) – наименьшее из чисел, для которых (6) выполняется, то общее число арифметических действий, затрачиваемых для нахождения приближенного решения уравнения (1), равно Qn(ε)=n(ε)q0, где q0 – число действий, затрачиваемых для нахождения одной итерации, т.е. для решения уравнения (4). Задача состоит в минимизации Qn(ε) путем выбора B и параметров
{τ k }.
3.5.3.2. Метод простой итерации Для решения системы уравнений (1) может быть использован метод простой итерации
N y k( i+)1 = y k(i ) − τ ∑ aij y k( j ) − f ( i ) , i = 1,2,..., N , j =1
(7)
где τ>0 - итерационный параметр. Запишем (7) в операторной форме:
y k +1 − y k
τ
+ Ay k = f , k = 0,1,..., для всех y0 ∈ H.
(8)
Сравнение (8) с (3) показывает, что метод простой итерации задается явной одношаговой схемой с постоянным параметром τ k ≡ τ . Существуют и другие варианты метода простой итерации, например, такой:
y k( i+)1 =
1 N ( j) (i ) a y f − ∑ ij k . aii j =1 j ≠i
Подставляя сюда N
∑a j =1
ij
y
( j) k
j ≠i
N
=∑ aij y k( j ) − aii y k( i ) = ( Ay k ) ( i ) − ( Dy k ) ( i ) , j =1
где D=(aiiδij) – диагональная матрица, получаем
y k( i+)1 = y k(i ) − или, в каноническом виде,
D
y k +1 − y k
τ
1 N ( j) (i ) a y f − ∑ ij k , aii j =1
+ Ay k = f , k = 0,1,...,τ = 1.
Хотя формально эта схема является неявной (B=D ≠ E), однако D=(aiiδij) – диагональная матрица и потому yk+1 определяется по явным формулам.
3.5.3.3. Метод Зейделя
57
Широкое распространение на практике (в особенности в тех случаях, когда информации о матрице A недостаточно) получил итерационный метод Зейделя в одной из двух форм: i
∑a j =1
ij
y k( +j )1 +
N
∑a
j =i +1
i −1
N
j =1
j =i
ij
y k( j ) = f ( i ) , aii ≠ 0, i = 1,2,..., N ,
∑ aij y k( j ) + ∑ aij yk( +j )1 = f (i ) , i = 1,2,..., N .
(9) (10)
Из обеих формул компоненты вектора yk+1 находятся последовательно. Так, из (9) последовательно определяем y k(1+)1 , y k( 2+)1 ,..., y k( N+1) :
y k(1+)1 = y k( i+)1 =
1 aii
1 (1) N f − ∑ a1 j y k( j ) , a11 j =2
i −1 (i ) N f − ∑ aij y k( j ) − ∑ aij y k( +j )1 , i = 2,..., N . j =i +1 j =1
Пользуясь (10), находим последовательно для i=N, N-1,…, 1
( N ) N −1 ( j) f , − a y ∑ Nj k j = 1 i −1 N − ∑ aij y k( j ) − ∑ aij y k( +j )1 , i = N − 1,...,1. j =1 j =i +1
y k( N+1) = y k(i+)1 =
1 aii
(i ) f
1 a NN
Запишем этот метод в матричной (операторной) форме. Для этого представим матрицу A в виде суммы A=A–+D+A+, где D=(aiiδij) – диагональная матрица размера N*N, A–=( aij− ) – нижняя треугольная (поддиагональная) матрица с нулями на главной диагонали, aij− =0 при i ≥ j , aij− =aij при ji. Из определения A–, D, A+, следует i −1
( Dy ) (i ) = a ii y (i ) , ( A − y ) ( i ) = ∑ aij y ( j ) , j =1
( A + y ) (i ) =
N
N
j =i +1
j =i
∑ aij y ( j ) , (( A + + D) y) (i ) = ∑ aij y ( j ) .
Поэтому уравнение (10) можно записать−в виде ((A++D)yk+1)(i)+ (A yk)(i)=f(i), i=1, 2,…, N, или, в векторной форме, − (A++D)yk+1+ A yk=f. После очевидных преобразований − − (A++D)yk+1+ A yk=(A++D)(yk+1-yk)+ (A +(A++D))yk=(A++D)(yk+1-yk)+Ayk запишем метод Зейделя (10) в каноническом виде (A++D)(yk+1-yk)+Ayk=f, k=0, 1, 2,… (11) Сравнивая (11) с (2), видим, что метод Зейделя (10) соответствует B=D+A+, τ ≡ 1, Т.е. схема (11) является неявной. Однако, т.к. B=D+A+ – треугольная матрица, то итерация yk+1 находится по явным формулам. Аналогично записывается и другой вариант метода Зейделя: (12) (A − +D)(yk+1-yk)+Ayk=f, k=0, 1, 2,…, − когда B=D+ A – нижняя треугольная матрица. Можно показать, что метод Зейделя сходится, если A –симметричная положительно определенная матрица.
58
3.5.3.4. Метод релаксации Чтобы ускорить итерационный процесс, запишем метод Зейделя в виде итерационной схемы (2), введя параметр ω, так что
( D + ωA − )
y k +1 − y k
ω
+ Ay k = f , k=0, 1,…, для всех y0 ∈ H. (13)
Сравнивая (13) с (2), видим, что
B=D+ω A–, τ=ω. Преобразуем уравнение (13) к расчетному виду. Учитывая, что
y k +1 − y k
1 D + Ak = A − + D y k +1 + A − A − − y k = ω ω ω 1 1 = A − + D y k +1 + A + + 1 − D y k , ω ω
( D + ωA − )
имеем
+ 1 − 1 A + D y k +1 + A + 1 − D y k = f . ω ω Отсюда находим
y k( i+)1 = y k( i ) +
ω
i −1 N (i ) ( j) − − f a y aij y k( j ) , i = 1,2,..., N , ∑ ∑ ij k +1 aii j =1 j =i
т.е. при ω=1 получили формулу метода Зейделя. Скорость сходимости метода релаксации зависит от параметра ω. Для сходимости метода требуется, чтобы 0<ω<2. При 0<ω<1 итерационный процесс (13) называют методом нижней релаксации, а при 1<ω<2 – методом верхней релаксации.
59
60
Модуль 4. Линейное программирование 4.6. Основы линейного программирования Во многих областях знания часто возникают задачи оптимизационного типа, когда из многих вариантов возможного использования технических средств или других ресурсов желательно выбрать наилучший в некотором смысле. Такие задачи обычно выражают стремление достигнуть максимума или минимума некоторого, наперед обусловленного показателя, характеризующего в желательном смысле качество выполняемой работы. Например, задача может выражать стремление достигнуть максимума производительной способности, минимума себестоимости производства и т.д. Постановке и методам решения такого рода задач и посвящена настоящая глава.
4.6.1. Основы математического программирования 4.6.1.1. Оптимальное планирование и линейное программирование Теоретической основой оптимизационных задач является относительно молодая область науки, называемая математическим программированием или оптимальным планированием. Она изучает методы отыскания таких количественных значений некоторых параметров (так называемых параметров управления), которые обеспечивают достижение оптимума выбранного показателя качества. Эти значения параметров управления составляют оптимальный план. Разумеется, оптимизационная задача по существу возникает из-за ограниченности ресурсов, так что оптимальный план разыскивается среди тех планов, которые не нарушают ограничений, наложенных наличными ресурсами на параметры управления. Несмотря на наличие многих ограничивающих условий, почти всегда существует большое число допустимых вариантов решения задачи, т.е. различных возможных планов. Естественно, что конечная цель должна состоять не просто в построении какого-нибудь допустимого (совместного с ограничениями) плана, а в выборе из всех возможных вариантов оптимального (в некотором смысле) плана. При ближайшем рассмотрении оказалось, что во многих оптимизационных задачах показатель качества, который также называют целевой функцией или критерием оптимальности, достаточно хорошо выражается линейной зависимостью от параметров управления. Кроме того, ограничения, наложенные запасами ресурсов, также выражаются линейными зависимостями от параметров управления. Оптимизационная задача при таких линейных условиях называется задачей линейного программирования, а методы решения этой задачи составляют предмет математической дисциплины, которую называют линейным программированием. Принято выделять пять этапов постановки и решения задач математического программирования. Первый этап – выбор параметров управления. Известно, что управление и планирование – сложные процессы, на их развитие оказывает влияние множество факторов, связанных между собой. Задача исследователя состоит в том, чтобы выделить основные, определяющие факторы и второстепенные. Конечно, в математическую модель не следует стремиться вводить все факторы, т.к. она станет слишком громоздкой, и исследование будет затруднительным, а подчас и невозможным. Важно выбрать только те параметры, которые существенны для конечной цели планирования, управления. Что касается прочих, малосущественных параметров, то достаточно иметь общее представление об их возможном влиянии. Второй этап – выбор показателя качества (целевой функции). При выборе целевой функции следует исходить из конкретной обстановки, в которой рассматривается данная задача. То, что выгодно оптимизировать в одних условиях, может быть невыгодно в других. Например, обстановка может подсказать, что оптимизировать следует объем выполняемой работы (выпускаемой продукции, перевозок и др.). Но в других условиях может потребоваться
61
минимизация расхода ресурсов (когда, например, они остро дефицитны) или времени, затрачиваемого на выполнение срочной работы, и т.д. Первый и второй этапы не могут выполняться последовательно и в указанном порядке. Выбор параметров управления тесно связан с выбором показателя качества, оба эти этапа выполняются одновременно. Третий этап – подготовка и обработка исходной информации. В настоящее время сбор и накопление необходимой для планирования и управления информации находятся в недостаточно удовлетворительном состоянии. Многие сведения неточны, иногда даже мало достоверны, некоторые данные оказываются ненужными для организации исследований, другие, необходимые для исследований, отсутствуют. Предстоит значительная работа по совершенствованию сбора, накопления и хранения исходной информации. Четвертый этап – выбор численного метода для решения задачи математического программирования. Точные методы обычно связаны с необходимостью затратить больше труда, приближенные – менее трудоемки. Чтобы определить, какой метод решения более подходит для данной задачи, надо учитывать качество созданной математической модели и исходной информации. Если, например, модель задачи значительно упрощена, исходные данные недостаточно достоверны, то для решения задачи нет смысла применять точные, но трудоемкие численные методы. И, наконец, пятый этап – анализ полученных результатов и составление рабочей программы. Этот этап наступает после того, как задача уже решена тем или иным методом, и оптимальный план получен. Но следует иметь в виду, что оптимальный план не всегда может быть реализован на практике. Для практического использования в него часто необходимо вносить поправки, что приводит к рабочей программе. Каков характер этих поправок? Во-первых, надо в какой-то мере учесть ограничения, которые по тем или иным мотивам не были введены в математическую модель. Затем может оказаться, что оптимальный план привел к большому дроблению ресурсов по отдельным звеньям производственного процесса. Могут возникнуть и другие, специфические для данной задачи требования, которым полученный оптимальный план не удовлетворяет. Все это приводит к необходимости подвергнуть оптимальный план некоторому анализу. В результате обнаруживается необходимость внести поправки, после учета которых возникает рабочая программа, которую и рекомендуют к реализации.
4.6.1.2. Математическая модель задачи линейного программирования Рассмотрим процесс образования математической программирования на нескольких конкретных примерах.
модели
задачи
линейного
1. Задача производственного планирования Пусть некоторое предприятие (или группа предприятий) выпускает однородную продукцию. Изготовление этой продукции связано с затратами ряда производственных факторов: различного вида сырья, энергии, топлива, работы различного типа оборудования, рабочей силы разной квалификации и т.д. Пусть этих факторов всего будет m. Присвоим им имена Ф1, Ф2,…, Фь. Каждый из них имеется в ограниченном количестве: запас факторов Ф1 составляет b1 единиц, запас фактора Ф2 составляет b2 единиц и т.д., запас фактора Фm составляет bm единиц. Допустим далее, что предприятие располагает n отработанными технологическими способами, которые обозначим T1, T2,…, Tn (наименования разных способов). Известно, что при работе предприятия в течение единицы времени по способу Tj затрачивается aij единиц фактора Фi; в обозначении aij индекс i соответствует номеру производственного фактора, а индекс j – номеру технологического способа. Таким образом, работа предприятия в течение единицы времени по способу T1 требует затраты a11 единиц фактора Ф1, a21 единиц фактора Ф2 и т.д., am1 единиц фактора Фm. Запишем эти данные в столбец, который можно назвать вектором производственных затрат за единицу времени при работе по способу T1:
62
a11 a21 ... ai1 ... am1 Если записать векторы производственных затрат за единицу времени рядом (для всех технологических способов), то получится прямоугольная таблица (матрица), содержащая n столбцов и m строк:
T1 a11 a 21 ... ai1 ... a m1
T2
...
a12
... a1 j
a 22 ...
... a 2 j ... ...
ai 2
...
aij
...
...
...
am 2
Tj
... a mj
...
Tn
... a1n Φ 1 ... a 2 n Φ 2 ... ... ... ... ain Φ i ... ... ... ... a mn Φ m
Эту таблицу называют матрицей технологических коэффициентов aij. Каждый столбец этой матрицы содержит данные о расходе всех производственных факторов при работе предприятия в течение единицы времени по способу, указанному над столбцом, а каждая строка содержит данные о расходе одного из производственных факторов, указанного сбоку, при работе в течение единицы времени по всем технологическим способам. Допустим, что работа предприятия по способу Tj (j=1, 2,…, n) в течение единицы времени приводит к выпуску cj (j=1, 2,…, n) единиц готовой продукции, так что числа c1 , c2 ,…, cn показывают, сколько единиц готовой продукции можно получить за единицу времени по каждому из технологических способов T1, T2,…, Tn. Если мы хотим планировать работу предприятия так, чтобы добиться максимального объема выпускаемой продукции, то в качестве параметров управления следует взять числа, показывающие, сколько времени отводится на работу по каждому из способов Tj (j=1, 2,…, n). Предположим, что мы принимаем план (x1, x2,…, xn), т.е. назначаем работать x1 единиц времени по способу T1, x2 единиц времени по способу T2 и т.д. Тогда мы выпустим продукцию в объеме Z=c1x1+c2x2+…+cnxn. Величина Z, т.е. объем готовой продукции при плане x1, x2,…, xn и будет показателем качества или целевой функцией при условии, что целью планирования является получение максимального объема продукции. План x1, x2,…, xn (при этой целевой функции) будет тем лучше, чем больше величина Z, и, значит, математически задача заключается в том, чтобы найти такой план, при котором величина Z достигает максимума. На первый взгляд, выгоднее всего планировать больше времени на тот способ Tk, для которого ck имеет наибольшее значение. Но это, конечно, не так, ибо каждый способ связан с производственными затратами, и если они велики для способа Tk, то может оказаться более выгодным применение и других способов. Ясно, что задача требует более тщательного анализа в области производственных затрат. Поэтому рассмотрим, сколько единиц каждого из факторов будет затрачено при исполнении плана x1, x2,…, xn. Для первого фактора Ф1 это будут затраты, равные a11x1+a12x2+…+a1n xn единиц этого фактора. Для второго фактора Ф2 это будут затраты a21x1+a22x2+…+a2nxn единиц второго фактора и т.д. Но так как факторы Фi (i=1, 2,…, m) ограничены запасами bi (i=1, 2,…, m), то планировать надо так, чтобы затраты не превышали запасов, т.е. чтобы удовлетворялись неравенства:
63
a11 x1 + a12 x 2 + ... + a1n xn ≤ b1 ; a 21 x1 + a 22 x 2 + ... + a 2 n xn ≤ b2 ; ...................................... a m1 x1 + a m 2 x2 + ... + amn x m ≤ bm . Наконец, числа x1, x2,…, xn, выражающие намеченный план, должны быть неотрицательными, что достаточно очевидно, но должно быть отмечено отдельно для полноты и точности математической формулировки поставленной задачи. Итак, мы пришли к следующей математической задаче: найти такие числа x1, x2,…, xn, при которых достигается максимум линейной функции Z=c1x1+c2x2+…+cnxn → max, (1) удовлетворяются линейные неравенства
a11 x1 + a12 x2 + ... + a1n xn ≤ b1 ; a 21 x1 + a 22 x2 + ... + a 2 n xn ≤ b2 ; ...................................... a m1 x1 + am 2 x 2 + ... + a mn xm ≤ bm .
(2)
и все переменные неотрицательны:
x1 ≥ 0, x2 ≥ 0,..., xn ≥ 0.
(3) Эта задача (1) – (3) и составляет математическую модель линейного программирования. Она возникла на примере из области производственного планирования. Замечание 1. Можно было бы поставить целью планирования получение максимального дохода. При этом получалась бы та же модель (1) – (3), но символы, обозначающие заданные переменные величины, уже имели бы другой смысл. Во-первых, необходимо иметь данные о доходности каждого технологического способа при выпуске единицы готовой продукции; пусть это будут величины cj для способа Tj (j=1, 2,…, n), т.е. cj будет теперь обозначать доход на одно готовое изделие, созданное по способу Tj. Во-вторых, за параметры управления x1, x2,…, xn, составляющие намечаемый план, следует теперь взять числа, показывающие, сколько единиц продукции планируется выпустить по каждому из способов Tj. В-третьих, в качестве технологических коэффициентов теперь следует иметь данные о затратах каждого из производственных факторов Фi при выпуске одной единицы готовой продукции по способу Tj , так что теперь aij будет обозначать число единиц фактора Фi, затраченное при выпуске одного изделия по способу Tj. При этом новом значении букв cj, xj, aij математическая схема, как легко видеть, получится та же самая, но теперь модель (1) – (3) уже будет выражать стремление к максимальной доходности. Замечание 2. Мы рассматривали наиболее простую задачу из области производственного планирования. Задача сразу усложняется, если готовая продукция составляется из нескольких компонентов (изделий), которые должны входить в каждую единицу продукции в соответствующих пропорциях. В этом случае возникают дополнительные требования, относящиеся к комплектности, ассортиментности и т.д. Задача усложняется и тогда, когда предприятие выпускает продукцию разного вида. Однако математическая модель в этих более сложных задачах получается, по существу, такая же. Замечание 3. Первой практической задачей, заложившей основы линейного программирования, была так называемая «задача фанерного треста». Она была решена академиком Л.В. Канторовичем, который затем в 1939 г. выступил с основополагающей работой по линейному программированию под названием «Математические методы организации и планирования производства» (ЛГУ, 1939). 2. Транспортная задача Имеется m пунктов отправления A1, A2,…, Am, из которых надо вывезти однородный груз в количествах a1, a2,…, am тонн (соответственно). Этот груз предназначен для n пунктов назначения B1, B2,…, Bn, потребности которых составляют соответственно b1, b2,…, bn тонн. Известно, что
64
расход по перевозке 1 т груза из пункта Ai в пункт Bj составляет cij руб. Требуется составить такой план перевозок, при котором обеспечивается полная разгрузка всех пунктов отправления, полное удовлетворение потребностей всех пунктов назначения и при котором суммарные расходы по перевозке были бы наименьшими. Заметим, что в указанной постановке решение задачи возможно лишь при условии, что количество груза во всех пунктах отправления равно общей потребности во всех пунктах назначения: a1+a2+…+am= b1+b2+…+bn. Будем считать, что это условие выполняется. В этой постановке задачу называют классической транспортной задачей. Представим математическую модель задачи. Допустим, что принят такой план, при котором из пункта Ai в пункт Bj перевозится xij тонн (i=1, 2,…, m; j=1, 2,…, n). Тогда суммарные расходы по перевозке составят:
Z = c11 x11 + c12 x12 + ... + c1n x1n + + c21 x21 + c22 x22 + ... + c2 n x 2 n + + ..................................... + + cm1 x m1 + cm 2 xm 2 + ... + cmn xmn . Минимизируем это выражение:
Z = c11 x11 + c12 x12 + ... + c1n x1n + + c21 x21 + c22 x22 + ... + c2 n x2 n + + ..................................... + + cm1 x m1 + cm 2 xm 2 + ... + cmn xmn → min,
(4)
т.е. потребуем, чтобы суммарные расходы по перевозке были минимальными. Это будет целевая функция задачи. Надо найти такой план xij (i=1, 2,…, m; j=1, 2,…, n), который минимизирует функцию Z. Запишем теперь ограничения. Их здесь будет две группы. В одной выразим требование, состоящее в том, что все пункты отправления полностью разгружаются, что даст уравнения:
x11 + x12 + ... + x1n = a1 ; x 21 + x22 + ... + x 2 n = a 2 ; .......................... xm1 + xm 2 + ... + x mn = am .
(5)
Далее, выразим требование, состоящее в том, что потребности во всех пунктах назначения полностью удовлетворяются; это даст уравнения
x11 + x21 + ... + xm1 = b1 ; x12 + x22 + ... + xm 2 = b2 ; .......................... x1n + x2 n + ... + xmn = bn .
(6)
Наконец, следует записать, что все перевозки неотрицательны:
x11 ≥ 0, x12 ≥ 0,..., x1n ≥ 0; x21 ≥ 0, x22 ≥ 0,..., x 2 n ≥ 0; ................................. xm1 ≥ 0, xm 2 ≥ 0,..., x mn ≥ 0.
(7)
Таким образом, соотношения (4) – (7) составляют математическую модель транспортной задачи. Она отличается от моделей предыдущих задач, во-первых, тем, что для параметров управления, составляющих план, введены двойные индексы. Но это несущественно; можно было и здесь пользоваться одиночными индексами, но это было бы менее наглядно. Существенно то, что ограничения выражаются здесь равенствами (5) – (6), а не неравенствами, как в предыдущих задачах. Кроме того, эти равенства имеют специфическую структуру. Благодаря этому для транспортной задачи линейного программирования удается создать и специфические методы решения. Следует, однако, иметь в виду, что общее строение математической модели
65
транспортной задачи остается прежним: 1) имеется целевая функция (линейная относительно параметров управления), которую нужно оптимизировать подбором соответствующего плана; 2) имеются ограничения, выражаемые линейными зависимостями от параметров управления (от переменных, составляющих план); 3) от параметров управления требуется, чтобы они были неотрицательными. Замечание. Транспортную задачу можно ставить на минимум времени. Она приобретает тогда несколько иную структуру, но сводится к задаче линейного программирования. 3. Расстановочная (распределительная) задача Пусть имеется m типов автомашин, которые должны осуществлять грузоперевозки на n линиях. Пусть объем перевозок на этих линиях составляет соответственно Q1, Q2,…, Qn тоннокилометров. Известно, что если автомобиль i-го типа использовать на j-й линии, то его провозная способность составит Pij тонно-километров за весь планируемый период (если автомобиль какогото типа нельзя использовать на некоторой линии, то его провозная способность на этой линии полагается равной нулю). Можно поставить различные оптимизационные задачи при расстановке автомобилей. Поставим, например, задачу о такой расстановке, при которой достигается минимум эксплуатационных расходов при выполнении заданных объемов перевозок на линиях. В качестве параметров управления примем доли эксплуатационного периода, отведенные для работы имеющегося парка автомобилей на тех или иных линиях. Пусть xij –доля эксплуатационного периода, отведенная для работы i-го типа автомобиля на j-й линии (i=1, 2,…, m; j=1, 2,…, n). Эти mn дробей xij (они безразмерные) и составляют план расстановки (далее будем полагать во всех обозначениях с двумя индексами: на первом месте – номер типа автомобиля, на втором – номер линии). Если эксплуатация i-го типа автомобиля на j-й линии в течение всего периода требует расхода Rij руб., то в течение отведенного по плану времени он составит Rijxij руб. Значит, эксплуатационные расходы при намеченном плане составят сумму
Z = R11 x11 + R12 x12 + ... + R1n x1n + + R21 x21 + R22 x22 + ... + R2 n x2 n + + ..................................... + + Rm1 x m1 + Rm 2 x m 2 + ... + Rmn xmn .
(8)
Эта линейная функция Z от mn переменных xIJ и есть целевая функция задачи. Запишем математические соотношения, выражающие ограничения. Их будет две группы. В первую группу запишем требования, состоящие в том, что сумма долей планируемого периода, намеченных для работы каждого типа автомобиля на разных линиях, не может быть больше единицы:
x11 + x12 + ... + x1n ≤ 1; x21 + x22 + ... + x2 n ≤ 1; .......................... xm1 + xm 2 + ... + xmn ≤ 1.
(9)
Затем следует математически выразить требование, предъявленное заданными объемами перевозок Q1, Q2,…, Qn на каждой линии. Получим:
P11 x11 + P21 x21 + ... + Pm1 xm1 = Q1 ; P12 x12 + P22 x22 + ... + Pm 2 xm 2 = Q2 ; .......................... P1n x1n + P2 n x2 n + ... + Pmn xmn = Qn .
Наконец, запишем, что все величины xij неотрицательны:
(10)
66
x11 ≥ 0, x12 ≥ 0,..., x1n ≥ 0; x21 ≥ 0, x22 ≥ 0,..., x 2 n ≥ 0; ................................. xm1 ≥ 0, xm 2 ≥ 0,..., x mn ≥ 0.
(11)
Таким образом, (8) – (11) составляют математическую модель расстановочной задачи. Она совершенно аналогична предыдущим моделям. Несущественное отличие здесь заключается в том, что часть ограничений (9) выражается неравенствами, а другая часть (10) – равенствами. Если бы Q1, Q2,…, Qn представляли нижние границы объемов перевозок на линиях (надо выполнить не меньше чем Q1, Q2,…, Qn тонно-километров на данных линиях), то ограничения (10) также выразились бы неравенствами: P1jx1j+P2jx2j+…+Pmjxmj ≥ Qj (j=1, 2,…, n). Замечание. В литературе по линейному программированию расстановочная задача встречается под названием «обобщенная транспортная задача». Задачу, приводящую к модели (8) – (11), называют обобщенной транспортной, т.к. структура ее ограничений (9) – (10) аналогична структуре ограничений (5) – (6). Обобщение заключается в том, что коэффициенты в группе ограничений (10) могут принимать любые значения, тогда как в группе ограничений (6) они все равны единице. Расстановочная задача является частным случаем распределительной задачи. Распределительная задача заключается в рациональном распределении m видов изделий для изготовления их на n скооперированных предприятиях с целью, например, достижения максимума выпускаемой продукции.
4.6.1.3. Классификация задач линейного программирования Практические вопросы, приводящие к задаче линейного программирования разнообразны. Но и приведенных выше примеров достаточно для понимания математической структуры задачи линейного программирования и ее значения на практике. Проведем классификацию этих задач. Во-первых, различают общую задачу математического программирования и специальные задачи. При этом имеют в виду, что в некоторых задачах структура матрицы технологических коэффициентов (т.е. коэффициентов в ограничениях) имеет специфические особенности. Так, например, в транспортной задаче, если выписать столбец коэффициентов, относящихся к некоторой переменной xij , то он состоит из одних нулей, кроме i-го и (m+j)-го места, где стоят единицы. Специфично также строение матрицы технологических коэффициентов расстановочной задачи. Для таких задач можно, используя указанные особенности, создать специальные методы решения, и поэтому задачи называют специальными. Если не принимается во внимание структура матрицы технологических коэффициентов, то говорят об общей задаче линейного программирования. В первую очередь надо, конечно, изучить общую задачу, т.к. методы ее решения имеют общий характер, и они только специализируются при рассмотрении задач с особенностями. Во-вторых, в настоящее время разработаны методы решения общей задачи линейного программирования при некоторых отклонениях от рассмотренных нами моделей или при некоторых дополнительных требованиях. Так, разработаны методы решения общей задачи линейного программирования с учетом следующих обстоятельств: а) коэффициенты целевой функции не являются постоянными, а меняются линейно в зависимости от некоторого дополнительного параметра, так что целевая функция имеет вид Z=(c1+d1t)x1+(c2+d2t)x2+…+(cn+dnt)xn, где t – дополнительный параметр (например, время). В этом случае говорят о задаче параметрического линейного программирования; б) ограничения, наложенные ресурсами, выражаются двусторонними неравенствами. Они имеют вид ai ≤ ai1x1+ai2x2+…+ainxn ≤ bi (i=1, 2,…, m)
67
В этом случае говорят о задаче с двусторонними ограничениями. Конечно, задачу с двусторонними ограничениями можно рассматривать как обычную, записывая отдельно оба неравенства, составляющие двойное неравенство. Но так как созданы специальные приемы, упрощающие решение, то эту задачу принято выделять при изучении теории линейного программирования; в) от решения задачи дополнительно требуют, чтобы оно выражалось в целых числах. В этом случае говорят о целочисленном программировании. Происхождение такого дополнительного требования очевидно: числа, выражающие получаемое решение, могут означать физически неделимые величины – число рейсов, число экземпляров, количество перевозочных средств (судов, вагонов, автомобилей и др.) и т.д. Если поставить вопросы классификации задач шире, например, в объеме всего множества оптимизационных задач, то можно наметить такие области. Прежде всего, следует отличать область линейных задач от области нелинейных задач. В последнем случае говорят о нелинейном программировании. В области нелинейного программирования в настоящее время разработаны методы решения таких задач: а) задачи, в которых целевая функция выражается отношением двух линейных функций
Z=
c1' x1 + c2' x2 + ... + cn' xn . c1'' x1 + c 2'' x 2 + ... + cn'' xn
К таким задачам приводит установка оптимизировать какой-то относительный (удельный) показатель качества, например: себестоимость перевозок, рентабельность продукции и т.д. В этом случае говорят о дробно-линейном программировании; б) задачи, в которых целевая функция выражается квадратичной функцией
Z = c1 x12 + c2 x22 + ... + c n xn2 + c12 x1 x2 + c13 x1 x3 + ... + c n−1 xn −1 xn , содержащей квадраты и попарные произведения параметров управления. Эти задачи называют задачами квадратичного программирования; в) задачи, в которых целевая функция является так называемой выпуклой функцией от параметров управления. Не будем здесь разъяснять математического содержания понятия выпуклой функции многих переменных; в случае же одной переменной представление о выпуклой функции дает выпуклая на некотором участке кривая линия. В частности, линейная функция есть выпуклая функция. Оптимизационная задача, в которой целевая функция и ограничения описываются выпуклыми функциями от параметров управления, называется задачей выпуклого программирования. Отметим, наконец, весьма важную для задач оптимального управления область задач динамического программирования. Само название говорит о содержании предмета. Речь идет о таких оптимизационных задачах, в которых параметры управления связаны с состоянием оптимизируемой системы на данный момент времени (на данном этапе). Эта область менее исследована, чем область статических задач, к которой относится то, что сейчас излагается в теории линейного программирования. Обычно здесь пользуются многошаговыми методами, т.е. весь рассматриваемый динамический процесс разбивают на этапы; при этом конечные результаты на одном этапе служат исходными для другого и т.д. Мы будем рассматривать модель общей задачи линейного программирования. Выше было продемонстрировано, что ограничения задачи линейного программирования могут выражаться только неравенствами (задача производственного планирования) или только равенствами (транспортная задача). В случае, когда все ограничения выражаются неравенствами, говорят о стандартной форме задачи линейного программирования. Когда все ограничения выражаются равенствами, то говорят о канонической форме задачи линейного программирования. Встречается и смешанная задача линейного программирования (расстановочная задача). Надо иметь в виду, что эти различия несущественны, т.к. одна форма легко преобразуется в другую. Действительно, пусть, например, задано ограничение 2x1 +3x2–x3 ≤ 8. Введем дополнительную неотрицательную переменную x4 ≥ 0, такую, чтобы было 2x1+3x2–x3+x4=8. Благодаря этому ограничение, заданное неравенством, приобрело вид равенства. В общем виде система ограничений-неравенств ai1x1+ai2x2+…+ainxn ≤ bi (i=1, 2,…, m)
68
переходит в систему ограничений-равенств ai1x1+ai2x2+…+ainxn+xn+i=bi (i=1, 2,…, m), где дополнительные переменные все неотрицательны: xn+1 ≥ 0, xn+2 ≥ 0,…, xn+m ≥ 0. Эти дополнительные переменные можно считать содержащимися и в целевой функции (с нулевыми коэффициентами). При неравенствах вида “ ≥ ” дополнительные переменные xn+i следует вычитать из левых частей. Можно показать, что и от ограничений-равенств несложно перейти к неравенствам. Принимая это во внимание, будем исходить из стандартной формы задачи, которая особенно удобна для геометрической интерпретации. Таким образом, будем рассматривать модель и методы решения общей задачи линейного программирования в стандартной форме, т.е. задачи, которая математически выражается так: найти те значения переменных x1, x2,…xn, при которых имеют место следующие соотношения: Z=c1x1+c2x2+…+cnxn → max (min);
a11 x1 + a12 x2 + ... + a1n xn ≤ b1 ; a 21 x1 + a 22 x2 + ... + a 2 n xn ≤ b2 ; ...................................... a m1 x1 + a m 2 x2 + ... + a mn x m ≤ bm ; x1 ≥ 0, x 2 ≥ 0,..., xn ≥ 0.
4.6.2. Графический способ решения задачи линейного программирования 4.6.2.1. Геометрический смысл линейных неравенств Задачу линейного программирования и численный метод ее решения можно истолковать геометрически. Геометрическое изображение дает ясное представление о ходе решения задачи линейного программирования и приводит к простому графическому способу решения для того случая, когда число независимых параметров управления сводится к двум. Приступая к изложению геометрической интерпретации, заметим, что прежде всего необходимо геометрически осмыслить те три звена, из которых состоит задача линейного программирования: 1) целевую функцию; 2) систему линейных ограничений; 3) требования неотрицательности искомых параметров. С этой целью будем далее рассматривать геометрические образы, возникающие на координатной плоскости двух переменных. Обычно в этом случае оси координат обозначают буквами x и y, но, имея в виду дальнейшее обобщение на многомерные пространства, будем обозначать оси координат буквами x1 и x2 (рис.6.1).
69
Как известно, линейное уравнение a1x1+a2x2=b изображается на плоскости x1Ox2 прямой линией (l), все точки которой имеют координаты x1 и x2, удовлетворяющие этому уравнению. Прямая (l) делит плоскость x1Ox2 на две полуплоскости. Для точек одной из этих полуплоскостей a1x1+a2x2b, а если причислять прямую (l) (границу этих полуплоскостей) к ним самим, то для точек одной из них a1x1+a2x2 ≤ b, а для точек другой a1x1+a2x2 ≥ b. Как узнать, с какой стороны от прямой (l) выражение a1x1+a2x2 (как говорят, линейная форма a1x1+a2x2) меньше, чем b и с какой стороны оно больше, чем b? Для этого достаточно в форму a1x1+a2x2 вместо x1 и x2 подставить координаты какой-нибудь определенной точки, не лежащей на прямой (l). Например, пусть имеем неравенство 3x1+2x2 ≥ 6. Соответствующая прямая (l), уравнение которой есть 3x1+2x2=6, легко строится по отрезкам, которые она отсекает на осях координат. Т.к. при x2=0 будет x1=2, а при x1=0 будет x2=3, то (l) отсекает на оси x1 отрезок OA1 =2, а на оси x2 отрезок OA2=3 (рис.6.2). С какой же стороны будет 3x1+2x2 ≥ 6? Для ответа на этот вопрос возьмем, например, точку M с координатами x1=2,5; x2=0, тогда 3x1+2x2=3*2,5+2*0=7,5>6. Значит 3x1+2x2 ≥ 6 для точек той полуплоскости, ограниченной прямой (l), в которой лежит точка M и которая показана на рис.6.2 штриховкой вдоль прямой (l). Если в качестве точки M взять начало координат, то получим 3x1+2x2=3*0+2*0=0, откуда следует вывод о том, что 3x1+2x2 ≥ 6 с другой стороны от прямой (l), нежели начало координат. Итак, всякое линейное неравенство a1x1+a2x2 ≤ b ( ≥ b) изображается на плоскости x1Ox2 некоторой полуплоскостью, которую можно найти, построив прямую a1x1+a2x2=b (границу этой полуплоскости) и подставив в левую часть ее уравнения координаты какой-нибудь точки, не лежащей на этой прямой. Например, неравенство 4x1–2x2 ≤ 3 изображается полуплоскостью, показанной на рис.6.3 (граничная прямая отсекает на осях отрезки OA1=0,75 и OA2=-1,5, а изображающая полуплоскость расположена с той стороны от этой прямой, с которой расположена штриховка).
Пусть теперь имеем систему двух линейных неравенств:
70
a11 x1 + a12 x2 ≤ b1 ; a 21 x1 + a 22 x2 ≤ b2 . Каждое из этих неравенств изображается некоторой полуплоскостью, а система обоих неравенств, очевидно, изображается общей частью этих двух полуплоскостей (заполняющей соответствующий угол между ними). Например, система неравенств
x1 + x2 ≤ 7; x1 + 3 x 2 ≤ 9 изображается областью, заполняющей угол AMB (рис.6.4). В частности, важно отметить, что система неравенств
x1 ≥ 0; x2 ≥ 0, выражающих требование неотрицательности параметров задачи линейного программирования, изображается первым квадрантом координатной плоскости x1Ox2 (рис.6.5).
Переходя к случаю системы любого числа линейных неравенств
a11 x1 + a12 x2 ≤ b1 ; a 21 x1 + a 22 x2 ≤ b2 ; ....................... a m1 x1 + a m 2 x 2 ≤ bm , можно сказать, что она изображается на плоскости некоторой многоугольной областью, которая представляет собой замкнутый многоугольник (рис.6.6), но может оказаться и бесконечной (рис.6.7), и пустой (рис.6.8). Это значит, что система ограничений, налагаемых задачей линейного программирования на переменные, изображается некоторой многоугольной областью, которая во многих практически важных случаях оказывается многоугольником. Если же окажется, что эта область пустая, значит задача не имеет решения.
71
В теории линейного программирования доказывается, что многоугольная область, изображающая систему ограничений, всегда является выпуклой, т.е. такой, которая вместе с любыми двумя точками содержит и весь отрезок, их соединяющий (рис.6.9), а не такой, какая изображена на рис.6.10.
4.6.2.2. Геометрический смысл задачи линейного программирования Теперь рассмотрим целевую функцию Z=c1x1+c2x2. Если приравнять Z какой-нибудь постоянной величине, т.е. рассмотреть те планы x1, x2, при которых целевая функция сохраняет одно и то же значение Z=const, то получим прямую линию (l), которая называется линией уровня функции Z=c1x1+c2x2: с1x1+c2x2=const. Если значение этой константы будем увеличивать (или уменьшать), то прямая (l) будет перемещаться параллельно самой себе (и в каком-то определенном направлении), т.к. у прямых c1x1+c2x2=l1 и c1x1+c2x2=l2 один и тот же угловой коэффициент k=-c1/c2. Как узнать, в каком направлении надо передвигать прямую (l), изображающую линию уровня целевой функции, чтобы значение Z увеличивалось (или уменьшалось)? Для этого
72
достаточно зафиксировать значение константы в уравнении Z=const (c1x1+c2x2=const). Тогда получится какая-то определенная прямая (l), и, чтобы ответить на поставленный вопрос, достаточно по предыдущему правилу узнать, с какой стороны от прямой (l) значение целевой функции Z=c1x1+c2x2 больше фиксированной константы, поставленной в правую часть уравнения c1x1+c2x2=const. Например, значение целевой функции Z=2x1+x2 увеличивается при движении, показанном на рис.6.11 стрелками около прямой 2x1+x2=4. На том же рисунке показано, в какую сторону увеличивается значение целевой функции Z=x1–x2.
Теперь дадим окончательное геометрическое истолкование задачи линейного программирования и одновременно получим графический способ ее решения (для случая двух переменных). Пусть дана задача линейного программирования (например, на максимум) Z=c1x1+c2x2 → max (1) при ограничениях
a11 x1 + a12 x2 ≤ b1 ; a21 x1 + a22 x2 ≤ b2 ; ....................... a m1 x1 + a m 2 x 2 ≤ bm ,
(2)
и при требовании неотрицательности переменных
x1 ≥ 0, x2 ≥ 0.
(3) Прежде всего, можно построить многоугольник ограничений (2). Как уже отмечалось, он будет выпуклым (рис.6.12) и, в силу требований (3), расположен в первом квадранте.
73
После этого проведем какую-нибудь определенную линию уровня Z=const целевой функции, например, прямую c1x1+c2x2=l и покажем стрелками, куда ее надо двигать, чтобы целевая функция увеличивала свое значение. Очевидно, что искомый оптимум найдется, когда прямая (l), двигаясь к границе многоугольника ограничений, покинет этот многоугольник – это произойдет в некоторой вершине многоугольника ограничений. Определив координаты x1B и x2B вершины B, найдем оптимальный план: x1опт=x1В, x2опт=x2В. Вычислив затем значение целевой функции в вершине B, найдем искомый оптимум: Zmax=c1x1B+c2x2B. Если бы при тех же ограничениях была поставлена задача на минимум, то ясно, что линию уровня целевой функции – прямую (l) – надо двигать в противоположную сторону, и мы получим минимум в некоторой вершине C многоугольника ограничений. Это свойство является общим: оптимальное значение целевой функции, если оно существует, всегда достигается в некоторой вершине многоугольника ограничений. Если область, задаваемая ограничениями, бесконечна (см. рис.6.7), то один из оптимумов (максимум или минимум) может стать бесконечным, но другой по-прежнему достигается в некоторой вершине. Может, однако, случиться что линия уровня целевой функции – прямая (l) – окажется параллельной какому-то звену многоугольника ограничений (рис.6.13). В этом случае (при отыскании одного из оптимумов – максимума или минимума) прямая (l), покидая многоугольник ограничений, ляжет на параллельное ей звено, и координаты любой точки этого звена дадут оптимальный план, так что оптимальных планов будет бесконечное множество. Но для любого из них целевая функция имеет одно и то же значение (т.к. точки лежат на одной и той же линии уровня), поэтому оптимум, конечно, будет один. В этом случае говорят, что имеются альтернативные оптимальные планы.
4.6.2.3. Задачи Рассмотрим несколько задач для иллюстрации графического метода. Первая из них – численный пример, а остальные имеют экономическое содержание. Задача 1. Найти максимум функции Z=x1–5x2 при ограничениях
− x1 + 2 x2 ≤ 5; x1 + x2 ≤ 7; 2 x1 + x2 ≤ 11; x1 + 2 x2 ≥ 7; x1 ≥ 0; x 2 ≥ 0.
Решение. Построим прямые
74
(l1 ) : − x1 + 2 x 2 = 5; (l 2 ) : x1 + x2 = 7; (l3 ) : 2 x1 + x2 = 11; (l 4 ) : x1 + 2 x 2 = 7 и определим общую часть полуплоскостей, изображающих неравенства-ограничения задачи (рис.6.14). Тогда определится многоугольник ограничений ABCD.
Затем построим какую-нибудь определенную линию уровня целевой функции, например, прямую (l) и узнаем, в какую сторону ее надо параллельно перемещать, чтобы значение целевой функции Z увеличивалось (показано стрелками около прямой (l)). Очевидно, Zmax достигается в вершине C – точке пересечения прямых (l3) и (l4), соответствующих уравнениям 2x1+x2=11; x1+2x2=7. Решая эти уравнения, находим x1опт=5, x2опт=1 и, следовательно, Zтах=x1опт–5x2опт =55*1=0. Если бы при тех же ограничениях была поставлена задача на минимум (Z=x1-5x2 → min), то, двигая прямую (l) в сторону, противоположную стрелкам, мы получили бы оптимальный план в вершине A – точке пересечения сторон (l1) и (l2), соответствующих уравнениям -x1+2x2=5; x1+x2=7. Решая эти уравнения, находим оптимальный план на минимум: x’1опт=3, x’2опт=4 и, следовательно, Zmin=x’1опт–5x’2опт=3-5*4=-17. Задача 2. Для осуществления буксирно-биржевых перевозок на двух линиях А и В портовый флот располагает определенным числом барж четырех типов. По условиям эксплуатации буксирный воз для каждой линии должен состоять из определенного набора барж разных типов. Требуется распределить имеющиеся баржи по линиям А и В так, чтобы общая грузоподъемность возов была наибольшей. Исходные данные указаны в табл.1. Таблица 1 Тип баржи
Грузоподъемность
Состав буксирного воза
баржи, т
Количество имеющихся
Линия А
Линия В
барж
I
300
2
2
20
II
500
1
2
14
75
III
600
4
0
32
IV
800
0
4
24
Решение. Из условия задачи получаем, что грузоподъемность одного буксирного воза на линии А составляет 2*300+1*500+4*600+0*800=3500 т, а на линии В она равна 4800 т. Если запланировать x1 возов на линию А и x2 возов на линию В, то добьемся общей грузоподъемности Z=3500x1+4800x2 т. Это – целевая функция, которую нужно максимизировать. Но имеются ограничения по числу барж каждого типа (последний столбец табл.1), и эти ограничения записываются в виде неравенств
( I ) : 2 x1 + 2 x2 ≤ 20; ( II ) : x1 + 2 x 2 ≤ 14; ( III ) : 4 x1 + 0 x2 ≤ 32; ( IV ) : 0 x1 + 4 x2 ≤ 24. Кроме того, естественно, что x1 ≥ 0, x2 ≥ 0 . Мы получили задачу линейного программирования, которую будем решать графически. Изобразив полуплоскости, ограниченные осями координат x1, x2 и прямыми (I), (II), (III), (IV) на рис 6.15, получаем многоугольник ограничений OABCDE.
Теперь изобразим какую-нибудь линию уровня Z=const целевой функции. Полагая, например, const=24000, получаем прямую 3500x1+4800x2=24000, которая пересекает оси координат в точках Р (ОР=24000/3500=6,83) и Q (OQ=24000/4800=5). Для того чтобы значение Z увеличивалось, надо прямую PQ перемещать параллельно в сторону, указанную стрелкой. Очевидно, max Z достигается в вершине С с координатами x1опт=6, x2опт=4. Это и есть оптимальный план для числа возов на линиях А и В соответственно. Следовательно, для достижения наибольшей общей грузоподъемности надо на линию А планировать 6 возов, а на линию В – 4 воза; при этом плане достигается Z =40200 т. Использование ресурсов (имеющихся в распоряжении барж) при этом оптимальном плане характеризуется следующими числами: тип I: 2*6+2*4=20, т.е. 100%;
76
тип II: 1*6+2*4=14, т.е. 100%; тип III: 4*6+0*4=24, т.е. 75%; тип IV: 0*6+4*4=16, т.е. 66,7%. Задача 3. Автосборочный завод, выпускающий как легковые, так и грузовые автомобили, имеет в своем составе четыре цеха: кузнечно-прессовый, цех двигателей, сборочный легковых машин и сборочный грузовых машин, производительности которых (за месяц) указаны в табл. 2. Прибыль предприятия (в ден. ед.) от реализации одной грузовой машины – 250, одной легковой – 300. Таблица 2 Месячный выпуск машин, тыс. штук
Цех
грузовых
легковых
Кузнечно-прессовый
35,0
25,0
Двигателей
16,6
33,0
Сборочный грузовых машин
15,0
-
Сборочный легковых машин
-
22,0
Требуется составить месячный план выпуска легковых и грузовых машин, обеспечивающий достижение максимальной прибыли. Решение. Если планировать месячный выпуск x1 грузовых и x2 легковых машин, то предприятие получит прибыль Z=250x1+300x2. Это – целевая функция, которую нужно максимизировать. Ограниченные производственные мощности цехов приводят к неравенствам:
x1 x 2 + ≤ 1; 35 25 x x (l 2 ) : 1 + 2 ≤ 1; 16,6 33 (l3 ) : x1 ≤ 15; (l 4 ) : x2 ≤ 22,5. (l1 ) :
Первое неравенство получено из таких соображений. Если кузнечно-прессовый цех выпускает x2 легковых машин в месяц, то он на это затрачивает такую долю своей месячной производительности, которая выражается дробью x2/25. Кроме того, цех работает на выпуск x1 грузовых машин и затрачивает на это еще такую долю своей месячной производительности, которая выражается дробью x1/35; сумма этих долей, очевидно, не превышает единицы. Из тех же соображений составлено второе неравенство. Третье и четвертое неравенства непосредственно вытекают из данных о производительности сборочных цехов. К этим неравенствам необходимо присоединить условия неотрицательности: x1 ≥ 0, x2 ≥ 0 На рис.6.16 изображен многоугольник ограничений OABCDE.
77
Далее, рассмотрим прямую (l) – линию уровня Z=const целевой функции, полагая const=3000, т.е. прямую 250x1+300x2=3000 (она отсекает на осях отрезки OP=3000/250=12, OQ=3000/300=10, что соответствует месячному плану выпуска 12 тыс. грузовых или 10 тыс. легковых машин, при котором прибыль равна 3 млн. ден. ед.). Чтобы значение Z увеличивалось, надо прямую двигать в сторону, указанную стрелкой Оптимум достигается в вершине C, в которой пересекаются прямые (l1) и (l2). Из уравнений этих прямых (или из чертежа) находим координаты точки C: x2=20,5; x1=6,3. Следовательно, оптимальный план месячного выпуска будет такой: легковых машин – 20500 и грузовых – 6300. При этом достигается максимальная прибыль Zmax=7725000 ден. ед. Как легко подсчитать, использование производственных мощностей цехов при оптимальном плане следующее: кузнечно-прессовый – 100%, цех двигателей – 100%, сборочный легковых машин – 91%, сборочный грузовых машин – 42%. Задача 4. На некотором направлении пароходство должно перевезти четыре груза в количествах, нижние пределы которых указаны в табл. 3. Для осуществления этих перевозок выделено два судна. Исходя из условий наилучшего использования грузоподъемности и грузовместимости и учитывая требования совместимости и грузовой специализации, каждое из выделенных судов может принять одновременно определенное количество каждого груза, указанное в таблице. Там же указаны эксплуатационные расходы выделенных судов (за рейс). Требуется составить план, обеспечивающий перевозку предъявленных грузов с наименьшими расходами. Таблица 3 Груз
Количество груза, которое надо перевезти, т
Количество груза, перевозимое за 1 рейс, т на судне I
на судне II
А
21000
3000
3000
Б
10000
1000
2000
В
4000
-
4000
78
Г
4000
Эксплуатационные расходы за рейс, руб.
2000
-
12000
16000
Решение. Если планировать для судна I x1 рейсов, а для судна II x2 рейсов, то суммарные расходы составят (в руб.) Z=12000x1+16000x2. Это – целевая функция, которую надо минимизировать. При планируемом числе рейсов удастся перевезти (3000x1+3000x2) т груза А, (1000x1+2000x2) т груза Б, (0x1+4000x2) т груза В и (2000x1+0x2) т груза Г. Имея в виду указанные в таблице нижние пределы заданного объема перевозок по каждому грузу, получаем неравенства ограничения:
3000 x1 + 3000 x2 ≥ 21000;
1000 x1 + 2000 x2 ≥ 10000; 4000 x2 ≥ 4000; 2000 x1 ≥ 4000. По этим неравенствам строим область ограничений (рис. 6.17), которая теперь является неограниченной областью (заштрихована).
Линия уровня Z=const целевой функции Z при const=144000 – это прямая, уравнение которой 12000x1+16000x2=144000. Эта прямая отсекает на осях отрезки OP=144000/12000=12; OQ=144000/16000=9. Ее надо двигать в сторону, противоположную направлению, указанному стрелками, т.к. решается задача на минимум. Из рисунка видно, что минимум достигается в точке b, координаты которой дают оптимальный план x1опт=4; x2опт=3. Следовательно, для достижения минимальных эксплуатационных расходов надо планировать судну I 4 рейса, а судну II – 3 рейса. Расход при этом плане будет Z=12000*4+16000*3=96000 руб. Грузы будут перевезены в таких количествах (в т): груз А: 3000*4+3000*3=21000; груз Б: 1000*4+2000*3=10000; груз В: 4000*3=12000; груз Г: 2000*4=8000, т.е. грузы А и Б будут перевезены в количествах, указанных нижними пределами для них, а грузы В и Г будут перевезены в количествах, превосходящих нижние пределы на 8000 и 4000 соответственно. Задача 5. За время Т=3 ед. (например, 3 мес.) необходимо перевезти на линии 1 18000 т, а на линии 2 – 48000 т грузов. Для этих перевозок можно использовать суда двух типов, для которых известны провозные способности и эксплуатационные расходы (табл. 4).
79
Таблица 4 Тип
Провозные способности судов в
Эксплуатационные расходы судов за
судна
единицу времени, тыс. т
единицу времени, тыс. руб.
на линии 1
на линии 2
на линии 1
на линии 2
1
3
16
10
15
2
9
30
24
30
Требуется составить план работы судов, обеспечивающий выполнение заданного объема перевозок в указанное время с минимальными эксплуатационными расходами. Решение. В качестве параметров управления выберем время, назначенное судну каждого типа для работы на каждой из линий, так что намечаемый план работы судов будет состоять из следующих величин: x11 – время работы судов 1 типа на линии 1; x12 – то же, на линии 2; x21 – время работы судов 2 типа на линии 1; x22 – то же, на линии 2. При таком плане эксплуатационные расходы составят сумму (в тыс. руб.) Z=10x11+15x12+24x21+30x22, (4) которая является целевой функцией задачи; ее надо минимизировать. Ограничения задачи запишутся в виде следующих соотношений:
x11 + x12 ≤ 3; x 21 + x22 ≤ 3; 3x11 + 9 x21 = 18; 16 x12 + 30 x22 = 48,
(5)
где первые два выражают требования выполнить перевозки в заданное время, а последние два выражают требования выполнить заданный объем перевозок на каждой линии. К этим ограничениям добавляются требования неотрицательности: x11 ≥ 0, x12 ≥ 0, x 21 ≥ 0, x22 ≥ 0. (6) Полученная задача линейного программирования отличается от предыдущих тем, что в ней 4 переменных, и для того чтобы можно было получить решение графически, надо свести ее к задаче с двумя переменными. Это можно сделать, выразив, например, из двух последних ограничений-равенств (5) переменные x21 и x22 через переменные x11 и 12:
1 x21 = (6 − x11 ); 3 8 x22 = (3 − x12 ) 15
(7)
и подставив эти выражения в целевую функцию (4), во второе неравенство и в последние два неравенства (6). Тогда после простейших вычислений получим задачу:
Z = 2 x11 − x12 + 96 → min; x11 + x12 ≤ 3; 5 x11 + 8 x12 ≥ 9; x11 ≤ 6; x12 ≤ 3; x11 ≥ 0; x12 ≥ 0. Если отложим на оси абсцисс величину x11, а на оси ординат x12 (рис.6.18), то эти ограничения приведет к многоугольнику ABCD (прямые x11=6 и x12=3 не входят в звенья этого
80
многоугольника, т.к. неравенства x11 ≤ 6 и x12 ≤ 3 являются следствиями неравенства x11+x12 ≤ 3 и условия неотрицательности).
Найдем какую-нибудь линию уровня Z=const целевой функции. Положим, например, const=100; тогда получим прямую (l), уравнение которой будет 2x11-x12=4 (эта прямая отсекает на осях отрезки x11=2; x12=-4). Т.к. мы ищем минимум, то прямую надо перемещать в сторону, противоположную направлению, указанному стрелками. Теперь ясно, что минимум достигается в вершине С, для которой x11=0, x12=3. Из равенств (7) имеем далее, что x21=2; x22=0. Таким образом, оптимальным будет план x11=0; x12=3; x21=2; x22=0; для этого плана расходы составят Zmin=93 тыс. руб. Использование судов в оптимальном плане следующее: суда первого типа используются в течение всего эксплуатационного периода, суда второго типа осваивают свое задание за 2 ед. времени и в оставшееся время (1 ед. времени) могут быть использованы для других перевозок.
4.6.2.4. Обобщение геометрической интерпретации на многомерный случай В предыдущих разделах была рассмотрена интерпретации задачи линейного программирования (и основанный на ней графический способ) для случая, когда число параметров задачи равно двум (или сводится к двум). Если бы задача выражалась через три параметра x1, x2 и x3, ее геометрическое истолкование было бы подобно изложенному выше, со следующими изменениями в деталях: 1) всякое линейное уравнение a1x1+a2x2+a3x3=b изображается некоторой плоскостью в пространстве координатных осей x1, x2, x3 (рис.6.19);
81
2) всякое линейное неравенство a1x1+a2x2+a3x3 ≤ b (≥ b) изображается одним из двух полупространств, на которые все пространство разбивается плоскостью a1x1+a2x2+a3x3=b (включая ее); 3) всякая система линейных неравенств-ограничений задачи
a11 x1 + a12 x2 + a13 x3 ≤ b1 ; a 21 x1 + a 22 x2 + a 23 x3 ≤ b2 ; ............................... a m1 x1 + a m 2 x2 + a m3 x3 ≤ bm изображается множеством точек, заполняющих некоторый выпуклый многогранник (см. рис. 6.19), но которое, в частности, может оказаться пустым (тогда соответствующая задача неразрешима) либо быть бесконечным выпуклым многогранным множеством; 4) требование неотрицательности переменных x1 ≥ 0; x2 ≥ 0; x3 ≥ 0 означает, что многогранник ограничений расположен в первом октанте системы осей x1, x2, x3; 5) целевая функция Z=c1x1+c2x2+c3x3 изображается параллельно перемещающейся плоскостью c1x1+c2x2+c3x3=const (поверхность уровня целевой функции – см. рис.6.19); 6) максимум (минимум) целевой функции всегда достигается в какой-то вершине многогранника ограничений. Если же задача линейного программирования выражается большим числом параметров, чем три, можно продолжать пользоваться геометрической терминологией, несмотря на то, что уже нет реальных геометрических образов и картин, которые бы изображали соответствующие понятия (имеющие чисто алгебраическую природу). Такое «геометрическое» мышление в многомерном пространстве удобно и полезно, т.к. оно позволяет ориентироваться в громоздких алгебраических преобразованиях, используемых в задачах линейного программирования. Итак, можно сделать следующие обобщения. 1) Всякое линейное уравнение a1x1+a2x2+…+anxn=b «изображается» некоторой плоскостью (гиперплоскостью) в n-мерном пространстве осей x1, x2,…,xn. 2) Всякому линейному неравенству a1x1+a2x2+…+anxn ≤ b (≥ b) соответствует одно из двух полупространств, на которые гиперплоскость a1x1+a2x2+…+anxn=b делит все n-мерное пространство. 3) Всякой системе линейных неравенств-ограничений задачи
82
a11 x1 + a12 x 2 + ... + a1n xn ≤ b1 ; a 21 x1 + a 22 x 2 + ... + a2 n xn ≤ b2 ; ............................... a m1 x1 + a m 2 x2 + ... + a mn x n ≤ bm соответствует некоторый выпуклый гипермногогранник (в частности, это множество может быть пустым или бесконечным). 4) Неотрицательность x1 ≥ 0, x2 ≥ 0,..., xn ≥ 0 означает, что гипермногогранник ограничений лежит в первом гипероктанте осей x1, x2,…, xn. 5) Целевой функции Z=c1x1+c2x2+…+cnxn соответствует параллельно перемещающаяся гиперплоскость c1x1+c2x2+…+cnxn=const (поверхность уровня целевой функции). 6) Максимум (минимум) целевой функции всегда достигается в какой-то вершине гипермногогранника ограничений (но он может стать бесконечным, если область ограничений бесконечна).
4.6.2.5. Алгебраическая характеристика вершины многогранника ограничений Чтобы получить такую характеристику, обратимся снова к двумерной картинке. В этом случае вершина соответствующего многоугольника есть точка пересечения каких-то его двух сторон (lr) и (ls), которые изображают границу r-го и s–го ограничений, т.е. имеют своими уравнениями прямые (lr): ar1x1+ar2x2=br; (ls): as1x1+as2x2=bs. В трехмерном случае (т.к. точка трехмерного пространства определяется пересечением трех плоскостей) вершину многогранника ограничений можно охарактеризовать уравнениями тех трех граней (Пr), (Пs) и (Пt), пересечением которых она является: (Пr): ar1x1+ar2x2+ar3x3=br; (Пs): as1x1+as2x2+as3x3=bs; (Пt): at1x1+at2x2+at3x3=bt. Заметим, что некоторые вершины могут попасть на одну из координатных плоскостей или на одну из координатных осей, как, например, в задаче 5 раздела 4.6.2.3. Для такой вершины будет выполняться одно или два из уравнений x1=0, x2=0, x3=0 (и если, в частности, начало координат является вершиной, то выполняются все три уравнения). Наконец, в случае n-мерной задачи надо считать, что вершина характеризуется как пересечение соответствующих n гиперплоскостей (в том числе, возможно, и координатных гиперплоскостей). Для дальнейшего будет удобно каждое ограничение ai1x1+ai2x2+…+ainxn ≤ bi (i=1,2,…,m) записывать в виде bi- ai1x1-ai2x2-…-ainxn ≥ 0 или, что то же самое, в виде ai1(-x1)+ai2(-x2)+…+ain(-xn)+bi ≥ 0 (i=1, 2,…, m). Будем рассматривать левую часть ограничения как новую переменную yi, т.е. положим yi= ai1(-x1)+ai2(-x2)+…+ain(-xn)+bi (i=1, 2,…, m), так что совокупность ограничений теперь запишется в виде
y1 ≥ 0, y 2 ≥ 0,..., y m ≥ 0, а вместе с требованием неотрицательности получим единообразную запись для всех ограничений:
x1 ≥ 0, x2 ≥ 0,..., x n ≥ 0, y1 ≥ 0, y 2 ≥ 0,..., y m ≥ 0. Заметим, что дополнительные переменные имеют простой экономический смысл. Так как yi=bi-(ai1x1+ai2x2+…+ainxn), то yi представляет собой остаток i-го производственного ресурса (из его запаса bi) после того, как при реализации плана x1, x2,…, xn он затрачен в количестве ai1x1+ai2x2+…+ainxn.
83
После введения дополнительных переменных yi можно сказать, что каждая вершина многогранника ограничений обладает тем свойством, что в ней какие-то n из числа переменных x1, x2,…, xn, y1, y2,…, ym обращаются в нуль. Например, в задаче 1 раздела 4.6.2.3 (см. рис. 6.14) вершина А, как точка пересечения прямых (l1) и (l2), определяется тем, что в ней y1=0, y2=0, где через y1 и y2 обозначены: y1=5-(-x1+2x2), y2=7-(x1+x2), или в другой записи y1=-(-x1)+2(-x2)+5, y2=(x1)+(-x2)+7. Точно также вершина В, как точка пересечения прямых (l2) и (l3), алгебраически характеризуется тем, что в ней y2=0, y3=0, где через y2 и y3 обозначены y2=(-x1)+(-x2)+7; y3=2(x1)+9-x2)+11; вершина С (точка пересечения прямых (l3) и (l4)) характеризуется тем, что в ней y3=0, y4=0, где y3=2(-x1)+(-x2)+11; y4=-(-x1)-2(-x2)-7. В задаче 5 раздела 4.6.2.3 для вершины С (см. рис. 6.18) x11=0, y1=0, где y1=(-x11)+(-x12)+3. Итак, повторим снова, что в каждой вершине какие-то n переменных обращаются в нуль. Но обратное утверждение неверно. Если в какой-то точке n переменных из системы x1, x2,…, xn; y1, y2,…, ym обращаются в нуль, то эта точка необязательно является вершиной многогранника ограничений. Например, если многоугольник ограничений имеет вид OABCDE (рис. 6.20), то для вершины O x1=x2=0, для вершины E x2=y4=0, для вершины C y2=y3=0.
Но если рассмотреть точку К, в которой пересекаются продолжения отрезков BC и DE, то в ней будет y2=y4=0, хотя точка К не является вершиной рассматриваемого многоугольника. Точно так же набор x1=y3=0 не дает вершины, а дает точку N, в которой пересекаются несоседние стороны: x1=0 (ось x2) и y3=0 (прямая CD). Как же алгебраически отличить набор, дающий вершину, от набора, не дающего вершины? Ответ на этот вопрос опять-таки подсказывается геометрией. Дело в том, что вершина характеризуется не только тем, что в ней какие-то n переменных обращаются в нуль, но и тем, что все остальные m переменных остаются неотрицательными, т.к. вершина принадлежит многограннику ограничений. А для такой точки, как торчка К на рис.6.20, две переменные (y2 и y4) обращаются в нуль, но не все остальные переменные остаются неотрицательными; например, для точки К будет y3 ≤ 0 , т.к. точка К лежит с той стороны от прямой y3=0, которая не заштрихована. Точно так же для точки N две переменные x1 и y3 обращаются в нуль, но y1<0 и y2<0. Все это связано, конечно, с тем, что точки К и N лежат вне многоугольника OABCDE. Таким образом, всякая вершина многогранника ограничений вполне определяется тем, что в ней n переменных из числа x1, x2,…, xn; y1, y2,…, ym обращаются в нуль, а остальные m переменных остаются неотрицательными. Если в данной вершине только n переменных из числа x1, x2,…, xn; y1, y2,…, ym обращаются в нуль и, следовательно, все остальные m переменных строго положительны, то будем называть такую вершину регулярной; если же в данной вершине обращаются в нуль больше, чем n переменных из числа x1, x2,…, xn; y1, y2,…, ym, то будем ее называть нерегулярной (или говорить, что в этой вершине имеет место вырождение).
84
Например, если (в трехмерной задаче) многогранник – четырехгранная пирамида (рис. 6.21), то вершины A, B, C, D – регулярные вершины, а S – нерегулярная вершина. В многограннике же, изображенном на рис. 6.22, все вершины – регулярные.
Введем теперь важное в теории линейного программирования определение. Будем называть n переменных из числа x1, x2,…, xn; y1, y2,…, ym, которые обращаются в данной вершине многогранника ограничений в нуль, базисными переменными, остальные же m переменных – внебазисными переменными. Таким образом, понятие базисных и внебазисных переменных связывается с рассматриваемой вершиной многогранника ограничений – каждой вершине соответствует своя система базисных и внебазисных переменных, при переходе к другой вершине состав базисных и внебазисных переменных изменяется. Далее, в случае регулярной вершины базисные и внебазисные переменные определяются однозначно – те и только те m переменных, которые в регулярной вершине положительны, – это небазисные переменные, а те и только те n переменных, которые в ней обращаются в нуль, – это базисные переменные. В случае же нерегулярной вершины базисные и внебазисные переменные определяются неоднозначно, здесь переменных, обращающихся в нуль, в рассматриваемой вершине больше, чем n, но только некоторые n из их числа определяются как базисные переменные, а остальные m переменных, среди которых также имеются обращающиеся в этой вершине в нуль, определяются как внебазисные переменные. Именно это обстоятельство отмечается в задачах линейного программирования как «случай вырождения». Нужно запомнить следующее: в регулярном случае все внебазисные переменные положительны, а в случае вырождения некоторые внебазисные переменные в данной вершине равны нулю.
4.6.3. Симплексный метод 4.6.3.1. Геометрическая подготовка Пусть дана общая задача линейного программирования на максимум Z=c1x1+c2x2+…+cnxn → max (1) при ограничениях
a11 x1 + a12 x2 + ... + a1n x n ≤ b1 ; a 21 x1 + a 22 x 2 + ... + a 2 n xn ≤ b2 ; ...................................... a m1 x1 + a m 2 x2 + ... + a mn x m ≤ bm
(2)
85
и при условиях неотрицательности
x1 ≥ 0, x2 ≥ 0,..., xn ≥ 0.
(3) При помощи дополнительных переменных y1, y2,…,ym можно записать ограничения (2) в таком виде, как в предыдущем разделе:
y1 = a11 (− x1 ) + a12 (− x 2 ) + ... + a1n (− xn ) + b1 ≥ 0; y 2 = a 21 (− x1 ) + a 22 (− x2 ) + ... + a 2 n (− xn ) + b2 ≥ 0; ............................................................... y m = a m1 (− x1 ) + a m 2 (− x 2 ) + ... + a mn (− xm ) + bm ≥ 0.
(2’)
Из геометрических соображений следует, что max Z достигается в какой-то вершине многогранника ограничений, т.е. в такой точке, для которой значения n переменных из числа x1, x2,…, xn; y1, y2,…, ym становятся равными нулю (базисные переменные), а значения прочих m переменных остаются неотрицательными (внебазисные переменные). Можно поэтому наметить такой общий ход решения задачи линейного программирования: 1) исходя из какой-то определенной вершины, т.е. исходя из какого-то набора базисных и внебазисных переменных, прежде всего выясним, не достигается ли максимум целевой функции именно в этой вершине; 2) если оказалось, что максимум еще не достигнут, то перейдем от данной вершины к другой и повторим прежний анализ. Надо, однако, иметь в виду что даже при сравнительно небольших m и n (порядка 20 – 30) число вершин n–мерного гипермногогранника может быть чрезвычайно большим. Пожалуй, и современные быстродействующие ЭВМ не справятся с необходимыми вычислениями в разумное время, если стать на путь простого перебора всевозможных вершин. В связи с этим устанавливается такой порядок вычислений, который обеспечивает не простой переход от одной вершины к другой, а такой, при котором значение целевой функции «улучшается» (т.е. при задаче на максимум – увеличивается). В этом и заключается смысл так называемого метода последовательного улучшения плана в теории линейного программирования. По-видимому, проще всего будет переходить от данной вершины к какой-то соседней, причем следует иметь в виду, что в случае двумерной задачи каждая вершина имеет две соседние, а в случае пространства большего числа измерений вершина может иметь весьма много соседних. Но что такое «соседняя вершина» в случае n-мерной задачи? Для того чтобы это осмыслить, надо определить понятие «соседняя вершина» алгебраически. Нам известно, что одна вершина отличается от другой составом базисных и внебазисных переменных. Рассмотрим пример. Для вершины А многоугольника (см. рис.6.20) базисными переменными будут x1, y1, а внебазисными – x2, y2, y3, y4. Для вершины D базисными переменными будут y3, y4, а внебазисными – x1, x2, y1, y2 (и так же для остальных вершин). Возьмем теперь две соседние вершины, например, А и В. Для вершины A базисные переменные x1, y1; внебазисные – x2, y2, y3, y4. Для соседней вершины В базисные переменные y1, y2; внебазисные – x1, x2, y3, y4. Видно, что при переходе от А к В базисная переменная x1 становится внебазисной, а внебазисная переменная y2 становится базисной. То же самое имеет место в случае пространственного многогранника (см. рис.6.22). Например, если уравнения граней многогранника рис. 6.22 следующие: грань OEFC – x1=0; OADE – x2=0; OABC – x3=0; DEFG – y1=0; BGFC – y2=0; ABGD – y3=0, то для вершины С базисные переменные x1, x3, y2; внебазисные – x2, y1, y3; для соседней вершины О базисные переменные x1, x2, x3; внебазисные – y1, y2, y3. Замечаем, что при переходе от С к О переменные y2 и x2 поменялись ролями. Точно так же при переходе от А к D поменяются ролями переменные x3 и y1. Таким образом, чтобы перейти от некоторой вершины к какой-то соседней вершине, надо одну из базисных переменных сделать внебазисной и одну из внебазисных – базисной. Это значит, что при переходе от некоторой вершины к соседней надо одну из переменных, которой приписывалось значение нуль, сделать отличной от нуля и придать ей такое значение, чтобы другая переменная, значение которой ранее не было равным нулю, стало равным нулю. Это обстоятельство можно пояснить еще следующим образом. Пусть мы находимся в вершине А (см. рис. 6.22), для которой x2=0; x3=0; y3=0. Чтобы перейти в соседнюю вершину D, будем двигаться по ребру AD, для которого x2 и y3=0, но x3 ≠ 0. Это движение по ребру AD надо совершать до тех
86
пор, пока значение переменной y1, отличное от нуля в вершине А, не станет равным нулю; тогда попадем в верхнюю грань и, следовательно, в вершину D. Изложенные геометрические соображения лежат в основе той вычислительной процедуры, которая называется симплексным методом решения задачи линейного программирования. Теперь становится ясным, что для проведения необходимых вычислений при рассмотрении какой-то вершины надо иметь алгебраические зависимости, которые выражают базисные переменные через небазисные. Точно так же для того, чтобы определить, достигнуто ли значение оптимума в рассматриваемой вершине, и если нет, то в какую соседнюю вершину следует перейти, чтобы улучшить достигнутый результат, надо иметь алгебраическое выражение для целевой функции Z через внебазисные переменные. Надо также уметь переходить от выражения для целевой функции Z и для базисных переменных через какой-то набор базисных переменных (определяющих некоторую вершину) к таким же выражениям через новые базисные переменные, набор которых соответствует соседней вершине. Для всего этого существует простой алгебраический аппарат (который укладывается в удобные для вычислений таблицы), называемый жордановыми исключениями.
4.6.3.2. Жордановы исключения Начнем с примера. Пусть даны линейные зависимости, выражающие переменные y1, y2, y3, Z через переменные x1, x2:
y1 = x1 − 2 x 2 + 5; y 2 = − x1 − x2 + 7; y3 − 2 x1 − x2 + 11; Z = x1 − 5 x2 .
(4)
Можно трактовать эти соотношения как появившиеся в результате задания трех ограничений и целевой функции Z некоторой задачи линейного программирования. Считая x1 и x2 базисными переменными, y1, y2, y3 – внебазисными, можно также считать, что этими соотношениями заданы выражения внебазисных переменных и целевой функции через базисные переменные x1 и x2. Допустим, что мы хотим поменять ролями переменные x1 и y3, т.е. сделать y3 базисной, а x1 – внебазисной переменной. Как теперь будут выражаться внебазисные переменные y1, y2, x1 и целевая функция Z через новые базисные переменные y3 и x2? Для решения этой алгебраической задачи достаточно из третьего уравнения (4) y3=-2x1-x2+11 выразить x1 через y3 и x2 (что даст x1=-y3/2-x2/2+11/2) и полученное выражение для x1 подставить в выражения для остальных переменных y1, y2, Z. Сделав это, будем иметь:
1 5 21 y1 = − y3 − x2 + ; 2 2 2 1 1 3 y 2 = y3 − x2 + ; 2 2 2 1 1 11 x1 = − y3 − x2 + ; 2 2 2 1 11 11 Z = − y3 − x2 + . 2 2 2
(5)
Для удобства вычислений сделаем некоторые алгебраические преобразования. Перепишем соотношения (4) и (5) в виде зависимостей через «минус-базисные» переменные, т.е. зависимости (4) запишем не через x1, x2, а через -x1, -x2 и зависимости (5) не через y3, x2, а через -y3, -x2. Получим:
87
y1 = −(− x1 ) + 2(− x2 ) + 5; y 2 = (− x1 ) + (− x2 ) + 7; y3 = 2(− x1 ) + (− x 2 ) + 11; Z = −(− x1 ) + 5(− x 2 );
1 5 21 y1 = (− y3 ) + (− x2 ) + ; 2 2 2 3 1 1 y 2 = − ( − y3 ) + (− x 2 ) + ; 2 2 2 1 1 11 x1 = (− y3 ) + (− x2 ) + ; 2 2 2 11 11 1 Z = ( − y3 ) + ( − x2 ) + . 2 2 2
Теперь запишем эти две системы зависимостей в виде двух таблиц, в которых сбоку помещены внебазисные переменные и целевая функция, а сверху – «минус-базисные» переменные Таблица 1
-x1
-x2
1
y1=
-1
2
5
y2=
1
1
7
y3=
2
1
11
Z=
-1
5
0
-y3
-x2
1
y1=
1/2
5/2
21/2
y2=
-1/2
1/2
3/2
x1=
1/2
1/2
11/2
Z=
1/2
11/2
11/2
Таблица 2
Чем отличается табл. 1 от табл. 2? Прежде всего, следует заметить, что все элементы второй таблицы содержат в знаменателе число 2. Это не случайно. Дело в том, что число 2, выделенное в табл. 1, расположено на пересечении столбца для переменной -x1 и строки для переменной y3, т.е. на пересечении как раз того столбца и той строки, которые относятся к переменным, меняющимся ролями. Этот элемент называется ведущим при переходе от табл. 1 к табл. 2. Далее, назовем строку для y3 ведущей строкой, а столбец для x1 – ведущим столбцом (ведущий элемент стоит на пересечении ведущей строки и ведущего столбца). Обнаруживаются такие три закономерности, относящиеся к ведущему столбцу и ведущей строке и имеющие место при переходе от табл. 1 к табл. 2: 1) ведущий элемент заменяется на обратное число; 2) остальные элементы ведущей строки делятся на ведущий элемент; 3) остальные элементы ведущего столбца также делятся на ведущий элемент и меняют знак. Что касается закономерностей, которые относятся к прочим элементам (не расположенным в ведущей строке и ведущем столбце), то их обнаружить на числовом примере трудно. Поэтому проделаем необходимые преобразования в общем виде; при этом подтвердятся уже подмеченные правила и обнаружится правило для подсчета элементов, не расположенных в ведущих строке и столбце.
88
Пусть заданы линейные выражения переменных y1, y2,…, yr,…, ym, Z через -x1, -x2,…, -xs,…, -xn:
y1 = a11 (− x1 ) + a12 (− x 2 ) + ... + a1s (− x s ) + ... + a1n (− xn ) + b1 ; y 2 = a21 (− x1 ) + a 22 (− x 2 ) + ... + a 2 s (− x s ) + ... + a 2 n (− xn ) + b2 ; ............................................................................ y r = a r1 (− x1 ) + a r 2 (− x2 ) + ... + ars (− x s ) + ... + a rn (− x n ) + br ; ............................................................................. y m = a m1 (− x1 ) + a m 2 (− x2 ) + ... + a ms (− x s ) + ... + a mn (− xn ) + bm ; Z = γ 1 (− x1 ) + γ 2 (− x2 ) + ... + γ s (− x s ) + ... + γ n (− xn ) + L.
Запишем эти выражения в виде табл. 3 Таблица 3
-x1
-x2
…
-xs
…
-xn
1
y1=
a11
a12
…
a1s
…
a1n
b1
y2=
a21
a22
…
a2s
…
a2n
b2
…
…
…
…
…
…
…
…
yr=
ar1
ar2
…
ars
…
arn
br
…
…
…
…
…
…
…
…
ym=
am1
am2
…
ams
…
amn
bm
Z=
γ1
γ2
…
γs
…
γn
L
Допустим, что нужно поменять ролями переменные xs и xr. Необходимые для этого алгебраические преобразования и составляют так называемый один шаг жордановых исключений сведущим элементом ars. Предполагая, что ведущий элемент ars ≠ 0, найдем сначала из r-го равенства (yr=…) выражение для xs:
xs =
a b a a r1 1 (− x1 ) + r 2 (− x2 ) + ... + (− y r ) + ... + rn (− xn ) + r . a rs ars a rs a rs a rs
Коэффициенты полученного выражения для xs составят элементы, расположенные в новой таблице вместо элементов ведущей строки старой таблицы. Заметим, что подтверждаются закономерности, 1 и 2, указанные выше. Затем, подставив полученное выражение для xs в выражение для любого yi (i=1, 2,…, m; i ≠ r), получим: yi = ai'1 (− x1 ) + ai' 2 (− x2 ) + ... + ais' (− y r ) + ... + ain' (− xn ) + bi' , (6) где (как легко подсчитать)
89
a r1ais ; a rs a a ai' 2 = ai 2 − r 2 is ; a rs ..................... a ais' = − is a rs ..................... a a ain' = ain − rn is a rs b a bi' = bi − r is . a rs ai'1 = ai1 −
(7)
Точно так же, подставив выражение для xs в выражение для Z, получим: Z = γ 1' (− x1 ) + γ 2' (− x2 ) + ... + γ s' (− y r ) + ... + γ n' (− x n ) + L' , (8) где
a r1γ s ; a rs a γ γ 2' = γ 2 − r1 s ; a rs .....................
γ 1' = γ 1 −
γ s' = γ s −
γs
; a rs ..................... a γ γ n' = γ n − rn s ; a rs bγ L' = L − r s . a rs
(9)
Запишем преобразованные выражения в табл. 4 Таблица 4
-x1
-x2
…
-yr
…
-xn
1
y1=
a11'
a12'
…
a1s a rs
…
a1n'
b1'
y2=
' a 21
' a 22
…
a2 s a rs
…
' a 2n
b2'
…
…
…
…
…
…
…
…
ys=
a r1 a rs
ar 2 ars
…
1 ars
…
arn ars
br ars
…
…
…
…
…
…
…
…
90
1) 2) 3) 4)
ym=
a m' 1
a m' 2
…
Z=
γ 1'
γ 2'
…
−
−
a ms a rs
…
' a mn
bm'
γs
…
γ n'
L’
a rs
На основании формул (7) и (9) получаем простое правило перехода от табл. 3 к табл. 4: ведущий элемент ars заменяется на обратное число 1/ars; остальные элементы ведущей строки делятся на ведущий элемент; остальные элементы ведущего столбца меняют знак и также делятся на ведущий элемент; все прочие элементы получаются по правилу прямоугольника, которое заключается в следующем. Наметим мысленно в табл. 3 прямоугольник, у которого по диагонали расположены преобразуемый элемент, например, aij, и ведущий элемент ars (табл. 5). Преобразованный элемент aij' получится из преобразуемого элемента aij, если из него надо вычесть частное от деления произведения элементов второй диагонали намеченного прямоугольника (arj, ais) на ведущий элемент (ars). Таблица 5
-x1
-x2
-xj
-xs
-xn
1
…
…
…
…
…
…
aij
ais
…
…
…
…
arj
ars
…
…
…
…
y1= y2= … yi= …
…
…
yr= …
…
…
ym= Z= Пример. Применим изложенное правило для перехода от табл. 1 к табл. 2 уже рассмотренного в начале этого раздела примера. Что касается первых трех пунктов правила, то мы уже видели, что они подтверждаются. Рассмотрим теперь элементы, не расположенные в ведущих строке и столбце. Возьмем второй и третий элементы первой строки. Получим:
5 1(−1) = 2− ; 2 2
21 11(−1) = 5− . 2 2
Возьмем второй и третий элементы последней строки. Получим:
11 1(−1) 11 11(−1) = 5− ; = 0− . 2 2 2 2
91
Точно так же можно получить второй и третий элементы второй строки.
4.6.3.3. Опорное решение, опорный план Вернемся к общей задаче линейного программирования (на максимум): Z=c1x1+c2x2+…+cnxn → max;
y1 = a11 (− x1 ) + a12 (− x2 ) + ... + a1n (− xn ) + b1 ≥ 0; y 2 = a 21 (− x1 ) + a 22 (− x2 ) + ... + a 2 n (− xn ) + b2 ≥ 0; ............................................................. y m = a m1 (− x1 ) + am 2 (− x2 ) + ... + a mn (− xn ) + bm ≥ 0; x1 ≥ 0; x 2 ≥ 0;...; xn ≥ 0.
Введем такую терминологию. Совокупность значений основных переменных x1, x2,…, xn, соответствующих какой-нибудь вершине многогранника ограничений будем называть опорным планом задачи. Совокупность значений основных переменных x1, x2,…, xn и дополнительных переменных y1, y2,…, ym, соответствующих какой-нибудь вершине многогранника ограничений, будем называть опорным решением задачи. Опорное решение задачи, очевидно, содержит и его опорный план, но оно шире, т.к. содержит еще и значения дополнительных переменных, т.е., в экономическом толковании, оно еще содержит числовые значения всех остатков от ресурсов, которые получаются после осуществления данного опорного плана. Если в данной вершине достигается максимум целевой функции Z, то опорный план и опорное решение называются соответственно оптимальным планом и оптимальным решением. Из алгебраической характеристики вершины многогранника ограничений вытекает, что все n+m чисел, составляющих опорное решение, должны быть неотрицательными и притом не менее чем n из этих чисел должны быть равны нулю. Если пользоваться таблицами жордановых исключений и называть заключительным столбцом и заключительной строкой соответственно столбец свободных членов (помещенный в табл. 6 под 1) и строку коэффициентов целевой функции (помещенную внизу) без углового элемента (D – в нижнем правом углу), то можно легко доказать следующие две теоремы. Теорема 1 (признак опорности решения). Если на каком-то шаге жордановых исключений оказалось, что все элементы заключительного столбца неотрицательны, то, полагая верхние переменные равными нулю, а боковые переменные равными соответствующим элементам заключительного столбца, получим некоторое опорное решение. Для определенности изложения допустим, что мы имеем дело с четырехмерной задачей (основные переменные x1, x2, x3, x4) с тремя ограничениями (дополнительные переменные y1, y2, y3) и пусть на каком-то шаге жордановых исключений получилась таблица, в которой элементы заключительного столбца (см. табл. 6) β1, β2, β3 неотрицательны. Тогда, полагая верхние переменные x2=x4=y1=y3=0, получим, что боковые переменные принимают значения x1=β1, y2=β2, x3=β3, т.е. они неотрицательны. Таким образом, значения всех 4+3=7 переменных неотрицательны и не менее чем четыре из них (x2, x4, y1, y3) равны нулю. Следовательно, x2=0, x4=0, y1=0, y3=0, x1=β1, y2=β2, x3=β3 есть опорное решение. Теорема 2 (признак оптимальности решения). Если на каком-то шаге жордановых исключений оказалось, что все элементы заключительного столбца и все элементы заключительной строки неотрицательны, то это означает, что достигнут максимум целевой функции; при этом оптимальное опорное решение получится, если положить верхние переменные равными нулю, а боковые переменные равными соответствующим элементам заключительного столбца. Кроме того, значение заключительного углового элемента таблицы D равно максимальному значению целевой функции (max Z). Таблица 6
-x2
-x4
-y1
-y3
1
92
x1=
β1
y2=
β2
x3=
β3
Z=
γ1
γ2
γ3
γ4
D
Действительно, т.к. элементы заключительного столбца неотрицательны, то, согласно теореме 1, указанное в формулировке решение является опорным. Рассмотрим целевую функцию Z (снова воспользуемся табл. 6):
Z = γ 1 (− x 2 ) + γ 2 (− x4 ) + γ 3 (− y1 ) + γ 4 (− y3 ) + D
Для данного опорного решения x2=x4=y1=y2=0, поэтому для него Z=D. Но так как коэффициенты γ1, γ2, γ3, γ4 неотрицательны, то для любого другого опорного плана (в котором попрежнему все переменные неотрицательны и хотя бы одна из верхних переменных отлична от нуля) получим для целевой функции значение Z ' ≤ D; следовательно, указанное в формулировке теоремы опорное решение является оптимальным и притом заключительный угловой элемент D=max Z. Теорема доказана. Пример. Пусть в задаче с двумя основными и тремя дополнительными переменными на каком-то шаге жордановых исключений получились данные, представленные в табл. 7. Таблица 7
-y1
-x2
1
x1=
1
-1
6
y2=
-3
1
6
y3=
2
1
21
Z=
5
-1
9
Так как все элементы заключительного столбца положительны, то получаем опорное решение x1=6; y2=6; y3=21; y1=0; x2=0. Оно показывает, что опорный план будет следующим: x1=6; x2=0. Далее, первый ресурс исчерпан (y1=0), остаток второго ресурса равен 6 ед. (y2=6), остаток третьего ресурса равен 21 ед. (y3=21). Однако это опорное решение – не оптимальное, т.к. в заключительной строке имеется отрицательный элемент (-1). Сделаем еще один шаг жордановых исключений с ведущим элементом, взятым в табл. 7 в рамку, т.е. поменяем ролями x2 и y2. Тогда получим табл. 8 Таблица 8
-y1
-y2
1
x1=
-2
1
12
x2=
-3
1
6
93
y3=
5
-1
15
Z=
2
1
15
Теперь уже все элементы заключительного столбца и заключительной строки строго положительны. Следовательно, по второй теореме мы достигли максимума целевой функции Z. Оптимальное решение: x1=12; x2=6; y1=0; y2=0; y3=15; оптимальный план: x1=12; x2=6. Остался резерв третьего ресурса в количестве 15 ед., первый и второй ресурсы исчерпаны. Максимальное значение целевой функции max Z=15. Дополнение (признак оптимальности для задачи на минимум). Очевидно, что для задачи линейного программирования на минимум, полученный в теореме 2, признак оптимальности модифицируется следующим образом: если на каком-то шаге жордановых исключений получилась таблица, в которой все элементы заключительного столбца неотрицательны, а все элементы заключительной строки неположительны, то мы достигли минимума целевой функции; при этом оптимальное решение получается так же, как и в случае задачи на максимум, и заключительный угловой элемент дает минимальное значение целевой функции. Кроме того, задачу на минимум некоторой линейной функции Z всегда можно решить как задачу на максимум функции -Z.
4.6.3.4. Улучшение опорного плана Итак, оптимальный опорный план (на максимум) достигается, если при неотрицательных элементах заключительного столбца оказываются также неотрицательными все элементы заключительной строки. Легко заметить, что если среди элементов заключительной строки есть хотя бы один отрицательный, то опорный план можно улучшить. Действительно, пусть, например, в заключительной строке
Z=
γ1
γ2
γs
γn
D
элемент γs<0. Целевая функция имеет такое выражение: Z=γ1( )+γ2( )+…+γs(-xs)+…+ γn( )+D, где в незаполненных скобках стоят верхние переменные, а скобка при γs для определенности заполнена переменной -xs (хотя там могла оказаться и другая переменная, но это несущественно). Для данного опорного решения значения переменных во всех скобках равны нулю (верхние переменные!), следовательно, Z=D. Но если (для перехода из вершины A в соседнюю вершину B) двигаться по ребру, на котором xs>0, а остальные верхние переменные по-прежнему равны нулю, то целевая функция станет больше, чем в данной вершине, т.к. при γs<0, xs>0; Z=γs(-xs)+D>D, и, следовательно, план будет улучшаться. Однако при увеличении xs, т.е. при движении по ребру АВ (рис. 6.23), можно продвинуться далее соседней вершины B, следовательно, можно увеличивать xs только до такого значения, при котором станет равной нулю именно та из внебазисных переменных, которая становится базисной в вершине B, например, yr.
94
При вычислении нужно учесть следующее. То, что верхнюю переменную xs надо сделать внебазисной, означает, что ее надо поменять ролями с какой-то боковой переменной. С какой именно? Перевод верхней переменной xs в боковые можно осуществить с помощью очередного шага жордановых исключений, в котором s-й столбец должен быть ведущим. Но какую строку надо выбрать в качестве ведущей, чтобы не пройти мимо нужной вершины B? Чтобы ответить на этот вопрос, достаточно вспомнить, что соседняя вершина определяется не только тем, что какаято из внебазисных (боковых) переменных становится равной нулю и переходит в базисные (верхние), но и тем, что прочие внебазисные (боковые) переменные остаются неотрицательными. Рассмотрим все боковые переменные (табл. 9) Таблица 9
-xs
1
y1=
…
α1s
…
β1
y2=
…
α2s
…
β2
…
…
…
…
…
yr=
…
αrs
…
βr
…
…
…
…
…
ym=
…
αms
…
βm
Если сделать xs>0, оставив остальные верхние переменные равными нулю, то указанное требование приведет к неравенствам
y1 = α 1s (− x s ) + β 1 ≥ 0; y 2 = α 2 s (− x s ) + β 2 ≥ 0; ............................. y r = α rs (− x s ) + β r ≥ 0; ............................. y m = α ms (− x s ) + β m ≥ 0.
95
Заметим, что те переменные yi, для которых коэффициенты α is ≤ 0, останутся неотрицательными, каково бы ни было xs>0. Рассмотрим поэтому такое yi, для которого коэффициент αis>0. Нужно, чтобы было yi=αis(-xs)+βi ≥ 0, откуда получится, что для всех i, для которых αis>0, значение xs должно удовлетворять неравенству
xs ≤
βi (αis>0), α is
а для этого достаточно взять xs равным наименьшему из отношений βi/αis, которые составлены для всех положительных элементов s-го столбца:
βi . >0) α is
x s = min (α is
Пусть это минимальное отношение получается, когда i=r, т.е. в r-й строке, тогда следует взять
xs =
βr . α rs
При этом значении xs получится, что r-я боковая переменная обратится в нуль: yr=αrs(-xs)+βr=αrs(-βr/αrs)+βr=0. Таким образом, yr станет базисной переменной (перейдет «наверх»), и вопрос о том, с какой именно боковой переменной надо поменять ролями верхнюю переменную xs, решен. Получаем следующее правило улучшения опорного решения (плана). Если на каком-то шаге жордановых исключений среди элементов заключительной строки имеются отрицательные, то данное опорное решение можно улучшить, если сделать очередной шаг жордановых исключений, придерживаясь такой последовательности: 1) в качестве ведущего столбца выбирается любой из тех столбцов, который находится над каким-нибудь имеющим отрицательное значение элементом заключительной строки; 2) отобрав в этом столбце только элементы с положительными значениями, делим на каждый из них соответствующий элемент заключительного столбца; 3) из всех полученных отношений выбираем наименьшее и ту строку, в которой оно (наименьшее) получается, берем в качестве ведущей; на пересечении отобранных столбца и строки получаем ведущий элемент. Пример. Используем пример предыдущего раздела (см. табл. 7). Заметим, что второй элемент в заключительной строке (-1) отрицательный. Поэтому для улучшения плана берем второй столбец в качестве ведущего. Составляем отношения свободных членов к положительным элементам выбранного ведущего столбца; это будет 6/1 и 21/1. Минимальным оказалось отношение 6/1. Поэтому берем строку для переменной y2 в качестве ведущей. На пересечении выбранных столбца и строки получаем ведущий элемент (выделен). Сделав шаг жордановых исключений с этим ведущим элементом (см. табл. 8), мы улучшили опорное решение: в табл. 7 Z=9, а в табл. 8 Z=15. Чтобы исчерпать вопрос об улучшении опорного решения остановимся еще на следующих аспектах: 1) не может ли случиться, что в процессе улучшения нарушится опорность решения, т.е. что при переходе по правилу улучшения к следующей таблице в заключительном столбце появятся отрицательные элементы? 2) как поступить, если в столбце над отрицательным элементом заключительной строки (который выбирается ведущим) нет ни одного положительного элемента (все элементы оказались отрицательными или нулями)? Ответ на эти вопросы содержится в следующих двух теоремах. Теорема 1. При переходе от таблицы к таблице по правилу улучшения опорное решение остается опорным. Допустим, что по правилу улучшения осуществлен переход от табл. 10 к табл. 11 с ведущим элементом
96
Таблица 10
-xs
1
…
α1s
β1
…
α2s
β2
…
…
…
…
αrs
βr
…
…
…
…
αms
βm
Таблица 11
При
этом
………………………………………………………
1
……………………………………
β 1'
……………………………………
β '2
……………………………………
…
……………………………………
β 'r
……………………………………
…
……………………………………
β 'm
элементы
заключительного
столбца
βi
переходят
в
элементы
β i'
заключительного столбца новой таблицы 11. Надо показать, что если все β i ≥ 0 (i=1, 2,…, m), то и
β i' ≥ 0 (i=1, 2,…, m). Возьмем сначала элемент ведущей строки β r' ; он будет неотрицательным, т.к. β r' = β r / α rs ≥ 0 (числитель неотрицательный, а знаменатель
все
положительный). Возьмем теперь какой-нибудь другой элемент; он получается по правилу прямоугольника: β i' = β i − α is β r / α rs . . Возможны два случая: 1) α is ≤ 0; так как βr/αrs ≥ 0, β i ≥ 0, то β i' ≥ β i ≥ 0; 2) αis>0; тогда представим β i' иначе: β i' = α is ( β i / α is − β r / α rs ) , и так как β r / α rs = min β r / α is , то число i
в скобке неотрицательно, а множитель αis>0; значит, и в этом случае β ≥ 0. Теорема доказана. ' i
97
Теорема 2. Если на каком-то шаге жордановых исключений в столбце над отрицательным элементом заключительной строки все элементы оказались неположительными, то целевая функция может принимать сколь угодно большие значения (max Z = ∞) . Действительно, если в s-м столбце γs<0 и α is ≤ 0 (i=1, 2,…, m), то при сколь угодно большом значении xs>0 все значения yi=αis(-xs)+βi ≥ 0, так что ограничения не нарушаются, значение же целевой функции Z=γs(-xs)+D → ∞ при x s → ∞ . Таким образом, если на каком-то шаге жордановых исключений оказалась такая ситуация, как в условии теоремы 2, то вычисления обрываются, т.к. целевая функция не ограничена. Одновременно это свидетельствует о том, что область ограничений является неограниченной (а не многогранником). В заключение отметим, что процесс улучшения плана с помощью жордановых исключений всегда требует конечного числа шагов, т.к. число вершин у многогранника ограничений конечное. При этом либо на каком-то шаге достигается оптимум целевой функции, либо эта функция неограниченна. Пример. Требуется максимизировать функцию Z=3x1-x2+8x3+2x4-x5+9x6 при ограничениях
− 6 x1 + 9 x 2 + 3x3 − 2 x5 − x6 ≤ 12; − 4 x 2 + 3x3 − 3 x4 + x5 − x6 ≤ 5; − 2 x1 + 8 x2 − 5 x3 + 6 x 4 − 8 x5 + 4 x6 ≤ 20; − x1 − 3x 2 − 4 x3 − 8 x4 + 4 x6 ≤ 10; 5 x1 + x2 + 2 x3 + 4 x4 + 9 x5 + 5 x6 ≤ 24; x1 ≥ 0; x2 ≥ 0; x3 ≥ 0; x 4 ≥ 0; x5 ≥ 0; x6 ≥ 0. Введем дополнительные переменные и перепишем ограничения в виде.
y1 = −6(− x1 ) + 9(− x2 ) + 3(− x3 ) − 2(− x5 ) − (− x6 ) + 12 ≥ 0; y 2 − 4(− x2 ) + 3(− x3 ) − 3(− x 4 ) + (− x5 ) − (− x6 ) + 5 ≥ 0; y3 = −2(− x1 ) + 8(− x2 ) − 5(− x3 ) + 6(− x 4 ) − 8(− x5 ) + 4(− x6 ) + 20 ≥ 0; y 4 = −(− x1 ) − 3(− x2 ) − 4(− x3 ) − 8(− x4 ) + 4(− x6 + 10 ≥ 0; y5 = 5(− x1 ) + (− x2 ) + 2(− x3 ) + 4(− x4 ) + 9(− x5 ) + 5(− x6 ) + 24 ≥ 0. Отсюда получаем исходную таблицу (табл. 12). Таблица 12
-x1
-x2
-x3
-x4
-x5
-x6
1
y1=
-6
9
3
0
-2
-1
12
y2=
0
-4
3
-3
1
-1
5
y3=
2
8
-5
6
-8
4
20
20/4=5
y4=
-1
-3
-4
-8
0
4
10
10/4=2,5
y5=
5
1
2
4
9
5
24
24/5=4,8
Z
-3
1
-8
-2
1
-9
0
98
Дальнейшее решение показано в табл. 13 – 19. Справа от каждой таблицы записаны отношения элементов заключительного столбца к положительным элементам ведущего столбца. По минимуму этих отношений найден ведущий элемент, он во всех таблицах выделен. Таблица 13
-x1
-x2
-x3
-x4
-x5
-y4
1
y1=
-6,25
8,25
2
-2
-2
0,25
14,5
y2=
-0,25
-4,75
2
-5
1
0,25
7,5
y3=
3
11
-1
14
-8
-1
10
x6=
-0,25
-0,75
-1
-2
0
0,25
2,5
y5=
6,25
4,75
7
14
9
-1,25
11,5
Z
-5,25
-5,75
-17
-20
1
2,25
22,5
10/14=0,71
11,5/14=0,82
Таблица 14
-x1
-x2
-x3
-y3
-x5
-y4
1
y1=
-5,82
9,82
1,86
0,14
-3,14
0,11
15,93
8,56
y2=
0,82
-0,82
1,64
0,36
-1,86
-0,11
11,07
6,75
x4=
0,21
0,79
-0,07
0,07
-0,57
-0,07
0,71
x6=
0,18
0,82
-1,14
0,14
-1,14
0,11
3,93
Y5=
3,25
-6,25
8,00
-1,00
17,00
-0,25
1,50
Z
-0,96
9,96
-18,43
1,43
-10,43
0,82
36,79
-x1
-x2
-y5
-y3
-x5
-y4
1
y1=
-6,58
11,27
-0,23
0,38
-7,09
0,17
15,58
1,38
y2=
0,15
0,46
0,21
0,56
-5,35
-0,06
10,74
23,35
x4=
0,24
0,73
0,01
0,06
-0,42
-0,07
0,73
1,00
x6=
0,64
-0,07
0,14
0
1,29
0,07
4,14
x3=
0,41
-0,78
0,13
-0,13
2,13
-0,03
0,19
0,19
Таблица 15
99
Z
6,25
-4,43
2,30
-0,88
28,73
0,25
40,24
-x1
-x4
-y5
-y3
-x5
-y4
1
y1=
-10,33
-15,44
-0,37
-0,59
-0,61
1,30
4,34
y2=
0
-0,63
-0,21
0,52
-5,80
-0,01
10,30
19,81
x2=
0,33
1,37
0,01
0,09
-0,58
-0,10
1,00
11,11
x6=
0,67
0,10
0,14
0,01
1,25
0,06
4,21
421,00
x3=
0,67
1,07
0,13
-0,06
1,68
-0,11
0,97
Z
-8,00
6,07
2,36
-0,50
26,18
-0,20
44,66
-x1
-x4
-y5
-x2
-x5
-y4
1
y1=
-8,04
-6,00
-0,29
6,89
-4,57
0,61
11,21
18,38
y2=
-2,04
-9,00
-0,29
-6,11
-1,57
0,61
4,21
6,92
y3=
3,89
16,00
0,14
11,70
-6,71
-1,18
11,64
11,11
x6=
0,64
0,00
0,14
-0,07
1,29
0,07
4,14
59,14
x3=
0,89
2,00
0,14
0,68
1,29
-0,18
1,64
Z
9,93
14,00
2,43
5,79
22,86
-0,79
50,43
-x1
-x4
-y5
-x2
-x5
-y2
1
y1=
-6,00
3,00
0,00
13,00
-3,00
-1,00
7,00
y4=
-3,35
-14,82
-0,47
-10,06
-2,59
1,65
6,94
y3=
-0,06
-1,47
-0,41
-0,18
-9,77
1,94
19,82
x6=
0,88
1,06
0,18
0,65
1,47
-0,12
3,65
x3=
0,29
-0,65
0,06
-1,12
0,82
0,29
2,88
Z
7,29
2,35
2,06
-2,12
20,82
1,29
55,88
Таблица 16
Таблица 17
Таблица 18
0,54
5,62
100
Таблица 19
-x1
-x4
-y5
-y1
-x5
-y2
1
x2=
0,54
y4=
12,36
y3=
19,92
x6=
3,30
x3=
3,48
Z
0,63
2,84
2,06
0,16
20,34
1,13
57,02
В табл. 19 заполнены только клетки заключительной строки и заключительного столбца. Так как все элементы заключительной строки табл. 19 оказались положительными, то максимум достигнут, и нет нужды вычислять прочие элементы таблицы. Оптимальное решение содержится в заключительном столбце, а именно: x2=0,54; y4=12,36; y3=19,92; x6=3,30; x3=3,48. Остальные переменные (верхние) все равны нулю: x1=x4=y5=y1=x5=y2=0. Таким образом, оптимальный план будет таким: x1=0; x2=0,54; x3=3,48; x4=0; x5=0; x6=3,30. Оптимальное значение максимизируемой функции Zmax=57,02.
101
102
Глоссарий Вычислительный эксперимент – исследование проблем средствами вычислительной математики. Вычислительный алгоритм – последовательность арифметических и логических операций, при помощи которых находится приближенное численное решение математической задачи. Двухшаговый итеративный метод – метод, в котором (k+1)-я итерация yk+1 выражается через две предшествующие итерации yk и yk-1. Задача Коши – модель, описанная дифференциальным уравнением второго порядка с заданными дополнительными (начальными) условиями в двух соседних точках. Интерполирующая функция – непрерывная функция, значения которой в соответствии с принятым критерием близки значениям сеточной функции. Интерполяционная формула Ньютона – формула построения непрерывной интерполяционной функции по значениям сеточной функции, заданной в равноотстоящих точках. Интерполяционный полином Лагранжа – полином, построенный по сеточной функции, заданной в произвольно расположенных различных точках на отрезке. Итерационный метод Зейделя – метод решения системы линейных алгебраических уравнений. Итерационный метод решения системы линейных алгебраических уравнений – метод, позволяющий найти приближенное решение системы путем построения последовательности приближений (итераций), начиная с некоторого начального приближения. Квадратурные формулы Гаусса – формулы численного интегрирования с наивысшим порядком точности относительно алгебраических многочленов. Краевая задача – модель, описанная дифференциальным уравнением второго порядка с заданными дополнительными (начальными) условиями в двух разных (но не соседних) точках. Кубическая сплайн-интерполяция – сплайн-интерполяция с помощью полинома третьей степени. Ленточная матрица – матрица, все ненулевые элементы которой находятся вблизи главной диагонали. Линейный сплайн – сплайн-интерполяция с помощью линейной функции. Математическая модель – математическое описание процесса с помощью алгебраических, дифференциальных, интегральных и других уравнений. Метод деления сегмента пополам – метод решения алгебраического уравнения. Метод Ньютона (метод касательных) – метод решения алгебраических уравнений. Метод прогонки – один из методов исключения, предназначенный для решения краевой задачи. Метод пропорциональных частей (метод секущих) – метод решения алгебраических уравнений. Неустойчивый алгоритм (вычислительно неустойчивый) – алгоритм, в процессе вычислений по которому погрешности округления неограниченно нарастают. Неустранимая погрешность – погрешность численного метода, обусловленная неточным заданием входных данных. Обратное интерполирование – решение задачи отыскания xi по заданному значению y(xi). Одношаговый метод – метод, при вычислении yk+1 по которому используется только одна предыдущая итерация yk. Погрешность дискретизации (погрешность метода) – погрешность, возникающая при замене исходной задачи дискретной. Погрешность округления – погрешность, обусловленная конечной разрядностью чисел, представляемых в компьютере. Процесс квадрирования – процесс, используемый для удовлетворения условиям применимости метода Лобачевского. Прямые методы – методы, позволяющие за конечное число действий получить точное решение системы уравнений, если входная информация (правая часть уравнения f и элементы aij матрицы A) задана точно, и вычисления ведутся без округления. Разреженная матрица – матрица, в которой большинство элементов – нули.
103
Сеточная функция – функция целочисленного аргумента. Схема Горнера – схема, позволяющая удобно компоновать результаты расчетов, например, в задаче вычисления значений полинома. Узлы интерполяции – точки на вещественной оси, в которых заданы значения сеточной функции. Условно устойчивый алгоритм – алгоритм, в ходе вычислений по которому погрешность округления нарастает по степенному закону при переходе от одной операции к другой («от шага к шагу»). Формула парабол (Симпсона) – формула численного интегрирования Ньютона-Котеса замкнутого типа с тремя узлами. Формула прямоугольников – формула численного интегрирования Ньютона-Котеса открытого типа с одним узлом. Формула трапеций – формула численного интегрирования Ньютона-Котеса замкнутого типа с двумя узлами.
104
Литература 1) 2) 3) 4) 1) 2) 3) 4) 5)
Основная Березин И.С., Жидков Н.П. Методы вычислений. – М.: Наука, 1966. Бахвалов Н.С. Численные методы. – М.: Наука, 1973. Самарский А.А. Введение в численные методы. – М.: Наука, 1997. Математические методы и модели в планировании и управлении на морском транспорте. – М.: Транспорт, 1979. Дополнительная Калиткин Н.Н. Численные методы. – М.: Наука, 1978. Марчук Г.И. Методы вычислительной математики. – М.: Наука, 1980. Самарский А.А. Теория разностных схем. – М.: Наука, 1989. Арис А. Дискретное динамическое программирование. – М.: Мир, 1969. Коллатц Л. Функциональный анализ и вычислительная математика. – М.: Мир, 1969.