Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Численные методы решения прикладных задач
Учебно-методические указания к выполнению лабораторных работ по курсу Информатика
Томск 2011 г СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 1 Решение алгебраических и трансцендентных уравнений 5 1.1 Общие положения 5 1.1 Метод половинного деления 5 1.2 Метод Ньютона 7 1.3 Метод секущих 9 2 Решение систем линейных уравнений 10 2.1 Общие положения 10 2.2 Метод Гаусса 10 2.2.1 Пример 12 2.3 Метод итераций 14 2.4 Метод Зейделя 16 3 Интерполяция, полином Лагранжа 18 3.1 Общие положения 18 3.2 Интерполяционный полином 18 3.2.1 Пример 19 3.3 Интерполяционная формула Лагранжа 19 4 Численное интегрирование 21 4.1 Общие положения 21 4.2 Метод прямоугольников 22 4.3 Метод трапеции 24 4.4 Метод Симпсона 25 ЛИТЕРАТУРА 27
Часто возникает необходимость, как в самой математике, так и ее приложениях в разнообразных областях получать решения математических задач в числовой форме. (Для представления решения в графическом виде также требуется предварительно вычислять его значения.) При этом для многих задач известно только о существовании решения, но не существует конечной формулы, представляющей ее решение. Даже при наличии такой формулы ее использование для получения отдельных значений решения может оказаться неэффективным. Наконец, всегда существует необходимость решать и такие математические задачи, для которых строгие доказательства существования решения на данный момент отсутствуют. Во всех этих случаях используются методы приближенного, в первую очередь численного решения. Методы численного решения математических задач всегда составляли неотъемлемую часть математики и неизменно входили в содержание естественно-математического и инженерного образования. Как самостоятельная математическая дисциплина вычислительная математика оформилась в начала 20-го века. К этому времени в основном были разработаны разнообразные, достаточно эффективные и надежные алгоритмы приближенного решения широкого круга математических задач, включающего стандартный набор задач из алгебры, математического анализа и дифференциальных уравнений. Прогресс в развитии численных методов способствовал постоянному расширению сферы применения математики в других научных дисциплинах и прикладных разработках, откуда в свою очередь поступали запросы на решение новых проблем, стимулируя дальнейшее развитие вычислительной математики. Метод математического моделирования, основанный на построении и исследовании математических моделей различных объектов, процессов и явлений и получении информации о них из решения связанных с этими моделями математических задач, стал одним из основных способов исследования в так называемых точных науках. Современной формой метода математического моделирования, базирующейся на мощной вычислительной базе в виде ЭВМ и программного обеспечения, реализующего алгоритмы численного решения, является вычислительный эксперимент, рассматриваемый как новый теоретический метод исследования различных явлений и процессов. Этот теоретический метод включает существенные черты методологии экспериментального исследования, но эксперименты выполняются не над реальным объектом, а над его математической моделью, и экспериментальной установкой является ЭВМ. Технологическая цепочка вычислительного эксперимента включает в себя следующие этапы: 1. Построение математической модели исследуемого объекта (сюда же относится и анализ модели, выяснение корректности поставленной математической задачи). 2. Построение вычислительного алгоритма - метода приближенного решения поставленной задачи и его обоснование. 3. Программирование алгоритма на ЭВМ и его тестирование. 4. Проведение серии расчетов с варьированием определяющих параметров исходной задачи и алгоритма. 5. Анализ полученных результатов. Каждый из этих этапов допускает возврат к любому из предыдущих этапов с целью его уточнения и корректировки. В данном курсе рассматриваются вопросы, связанные со вторым этапом вычислительного эксперимента. Во многих случаях вычислительный алгоритм решения сложной задачи строится из набора базовых компонент, представляющих собой алгоритмы решения некоторых стандартных математических задач. Изучение численных методов решения этих задач - необходимый элемент овладения современной технологией математического моделирования. При этом идея модели лежит в основе того, что можно назвать методом вычислительной математики. Как правило, алгоритмы приближенного решения базируются на том, что исходная математическая задача заменяется (аппроксимируется) некоторой более простой или чаще последовательностью более простых задач. Решение этих более простых задач трактуется как приближенное решение задачи исходной. Т.е. фактически используется некоторая модель исходной задачи. 1 Решение алгебраических и трансцендентных уравнений 1.1 Общие положения Во многих научных и инженерных задачах возникает необходимость решения уравнений вида:
где F - заданная функция, x - неизвестная величина, p1, p2,..pn - параметры задачи. Решениями или корнями уравнения (1) называются такие значения х, которые при подстановке в уравнение обращают его в тождество. Только для простейших уравнений удается найти решение в аналитическом виде, т.е. записать формулу, выражающую искомую величину х в явном виде. В большинстве же случаев приходится решать уравнение вида (1) численными методами. Хотя иногда, даже при наличии аналитического решения, имеющего сложный вид, бывает проще провести численное решение по известному алгоритму, чем программировать громоздкую аналитическую формулу. Численное решение уравнения (1) обычно проводят в два этапа. На первом этапе необходимо определить интервал изменения переменной х, где расположен один корень или, что означает то же самое, определить достаточно хорошее приближение окрестности этой точки. На втором этапе тем или иным численным методом определяется величина х, соответствующая корню уравнения (1) с заданной погрешностью. Для решения второй задачи существуют многочисленные методы, из которых мы рассмотрим лишь три: - метод половинного деления; - метод Ньютона; - метод секущих.
1.1 Метод половинного деления Для применения метода половинного деления необходимо установить окрестность или отрезок[ a, b ], на котором расположен один из корней уравнения, который необходимо уточнить с погрешностью Е (рисунок 1).
Рисунок 1 – Метод половинного деления
Пусть дано уравнение Метод половинного деления, или дихотомии, заключается в следующем. Для нахождения корня уравнения, принадлежащего отрезку [ a, b ], делим отрезок пополам, т.е. выбираем начальное приближение, равное:
и вычисляем значение функции Итерационный (повторяющийся) процесс деления будет продолжаться до тех пор, пока не будет выполнено условие: . За приближенное решение принимается средняя точка последнего промежутка. Таким образом, для реализации метода дихотомии необходимо: 1. Задать в явном виде уравнение 2. Определить начальный интервал [ a, b ], внутри которого лежит корень. 3. Задать точность нахождения корня уравнения 4. Реализовать в программе итерационную процедуру, описанную выше.
1.2 Метод Ньютона Предположим, что у нас определено начальное приближение х 0 к одному из корней уравнения (1). Тогда в точке х 0 можно вычислить левую часть решаемого уравнения
Рисунок 2 – Метод Ньютона
Рассмотрение метода Ньютона начнем с его геометрического представления (рисунок 2). Возьмем точку х 0 отрезка [ a, b ]и проведем в точке P0 с координатами . Полагая y =0, находим точку пересечения касательной с осью 0х, которую обозначим через х1:
Абсциссу х 1 точки пересечения можно взять в качестве приближенного значения корня. Проведя касательную через новую точку с координатами Следующие приближения находим соответственно по формулам:
……………………
В общем случае для k -го шага итерационного процесса последнее соотношение принимает вид:
(2) Из формулы (2)вытекает необходимость вычисления значения производной функции
Таким образом, для реализации метода Ньютона необходимо: 1. Задать в явном виде уравнение 2. Определить первую производную функции 3. Определить начальное приближение х0, обеспечивающее быструю сходимость метода. 4. Задать точность нахождения корня уравнения 5. Реализовать в программе итерационную процедуру, реализующую формулу (2). 1.3 Метод секущих Далеко не всегда бывает удобно находить аналитическое выражение для производной функции, в таком случае можно использовать метод секущих. Для начала итерационного процесса необходимо задать два начальных приближения х 0 и х1. Если х 0 и x 1 расположены достаточно близко друг к другу, то производную
Таким образом, формула метода секущих может быть получена из формулы Ньютона (2) заменой производной выражением (4) и записана в виде:
Однако следует помнить, что при этом нет необходимости, чтобы значения функции Процесс нахождения корня при использовании метода секущих можно считать законченным, когда выполняется следующее условие:
Метод секущих несколько уступает методу Ньютона в скорости сходимости, однако не требует вычислений производной левой части уравнения. Таким образом, для реализации метода секущих необходимо: 1. Задать в явном виде уравнение 2. Определить начальные приближения х 0 и х 1, обеспечивающие быструю сходимость метода. 3. Задать точность нахождения корня уравнения 4. Реализовать в программе итерационную процедуру, реализующую формулу (2.5). Результатом проведения лабораторной работы является программа, реализующая один из описанных методов с решением контрольного примера согласно, полученного индивидуального задания. 2 Решение систем линейных уравнений 2.1 Общие положения При решении большого класса прикладных задач возникает необходимость в нахождении корней СЛАУ. Методы решения СЛАУ можно разделить на два больших класса: точные и итерационные. Точные методы решения, например метод Гаусса, дают, вообще говоря, точное значение корней СЛАУ, при этом при корректном составлении программы точность определяется только погрешностями, связанными с округлением и представлением чисел в ЭВМ. Итерационные методы решения СЛАУ характеризуется тем, что точное решение системы они могут, вообще говоря, давать лишь как предел некоторой бесконечной последовательности векторов. Исходное приближение при этом разыскивается каким-либо другим способом или задается произвольно. При выполнении определенных требований можно получить достаточно быстро сходящийся к решению итерационный процесс. К этому классу методов относятся: метод итераций и метод Зейделя.
2.2 Метод Гаусса Рассмотрим задачу решения системы уравнений вида:
Известно, что система (7) имеет единственное решение, если ее матрица невырожденная (т. е. определитель матрицы отличен от нуля). В случае вырожденности матрицы система может иметь бесконечное число решений (если ранг матрицы и ранг расширенной матрицы, полученной добавлением к столбца свободных членов равны) или не иметь решений вовсе (если ранг матрицы и расширенной матрицы не совпадают). Систему (3.1) можно записать в матрично-векторной форме А Х = В, где А - матрица коэффициентов системы, содержащая n строк и n столбцов; В - заданный вектор правых частей; Х - искомый вектор. Метод Гаусса основан на известном из обычного школьного курса алгебры методе исключений. Комбинируя каким-либо образом уравнения системы, добиваются того, что во всех уравнениях, кроме одного, будет исключено одно из неизвестных. Затем исключают другое неизвестное, третье и т.д. Рассмотрим систему уравнений размера
где
Применяя теперь тот же самый процесс к последним n-1 уравнениям системы (8), исключаем
где верхние индексы, вообще говоря, указывают, сколько раз изменялись соответствующие коэффициенты. Этим завершается фаза прямого исключения(или приведением к треугольной форме) алгоритма гауссова исключения. Решение треугольной системы (9) теперь легко получается на фазе обратной подстановки, в ходе которой уравнения системы (9) решаются в обратном порядке:
При этом все диагональные коэффициенты должны быть отличны от нуля.
2.2.1 Пример Существует большое количество модификаций вычислительных схем, реализующих метод Гаусса. В качестве примера рассмотрим компактную схему Гаусса. Для примера выбрана СЛАУ 3-го порядка. 4∙ x1 - 9∙ x2 + 2∙ x3 = 2 2 ∙ x1 - 4∙ x2 + 4∙ x3 = 3 1∙ x1 + 2∙ x2 + 2∙ x3 = 1, которая в матричной форме записывается в виде:
Первый основной шаг гауссова исключения состоит в исключении первой переменной x1 из второго и третьего уравнений. Если из второго уравнения системы вычесть первое, умноженное на 0.5, и из третьего уравнения вычесть первое, умноженное на –0.25, то получим эквивалентную систему уравнений:
Второй основной шаг состоит в исключении
(13) Проделанные операции называются элементарными преобразованиями строк. К этому моменту завершается первая часть алгоритма гауссова исключения, которую обычно называют прямым исключением или приведением к треугольной форме. Эта часть завершается тогда, когда все элементы последней строки системы, кроме крайне правого, обращаются в нуль. Вторая часть алгоритма заключается в решении полученной верхней треугольной системы. Это легко осуществляется с помощью процесса обратной подстановки. Последнее уравнение системы (13) имеет вид 4x3=2.5. Следовательно, x3=0.625. Подставляя теперь это значение во второе уравнение: 0.5.x2+3.0.625=2. Отсюда x2=0.25. Подстановка этих значений
результат, которого совпадает с правой частью (13). Процесс гауссова исключения можно очень компактно записать в виде алгоритма. Прямое исключение для k=1, ….., n-1, для i=k+1, ….n:
для j=k, ….., n:
Обратная подстановка для k=n, n-1, ….., 1:
При составлении программы для ЭВМ, реализующей этот алгоритм, следует обратить внимание на то, что последовательно преобразуемые в ходе этого процесса элементы При разработке алгоритма, реализующего метод Гаусса, на первом этапе рекомендуется преобразовать исходную матрицу к виду, когда на главной диагонали выстраиваются максимальные по абсолютной величине коэффициенты. При этом если хотя бы одно значение коэффициента, стоящего на главной диагонали, равно нулю, применять метод Гаусса нельзя.
2.3 Метод итераций Способ итераций дает возможность получить последовательность приближенных значений, сходящихся к точному решению системы. Рассмотрим систему из n линейных уравнений с n неизвестными:
(14) Разрешим первое уравнение относительно x1, второе относительно x2 и т.д. Тогда систему (14) можно переписать в виде:
(15) где Правые части системы (15) являются функциями переменных x1, x2,..., xn. Обозначив правы части уравнений через Li(x1, x2,...., xn), систему (15) можно представить в виде:
Итерации начинаются с задания начального приближенного решения x01, x02,..., x0n, которое может быть получено из физических или других разумных соображений. Чем ближе исходное приближение к решению, тем меньше итераций необходимо для его получения. Для заданных начальных приближений x01, x02,..., x0n после подстановки этих значений в правые части системы(16) получим первые приближения
Полученные первые приближения могут быть таким же образом использованы для получения 2-х, 3-их и т.д., так что для любого m можно получить m -ое приближение xm1, xm2,..., xmn. Итерации проводятся до получения решения с требуемой точностью, которая не должна превышать заданной погрешности вычислений, т.е. окончание итерационного процесса происходит при выполнении следующего неравенства:
где Е – заданная точность решения. Естественно возникает вопрос об условиях, выполнение которых обеспечивает сходимость полученных приближений к истинному решению системы. Достаточное условие сходимости, т.е. возможности решения СЛАУ методом итераций, формулируется следующим образом. Для того чтобы итерационный процесс сходился, достаточно, чтобы в любой строке сумма отношений коэффициентов системы к диагональным коэффициентам, взятым из той же строки была строго меньше единицы. Математически это определение может быть выражено следующим образом:
Или, что то же самое,
т.е. можно сказать, что в любой строке исходной матрицы на главной диагонали должен находиться коэффициент, по абсолютному значению превосходящий сумму модулей остальных коэффициентов. На первом этапе решения СЛАУ система приводится к виду (16), после чего происходит проверка условия сходимости итерационного процесса к решению системы. Для этого необходимо выбрать максимальные значения коэффициентов ai, i и провести проверку условия на сходимость итерационного процесса. После этого задаются начальные приближения, обычно для этого используется столбец свободных членов, и проводится расчет по формуле (17), которую можно представить в виде
до достижения окончательного решения. Здесь используется два вектора переменных: с предыдущими значениями X0 и с последующими значениями X1. В конце каждой итерации производится переприсваивание значений из последующих в предыдущие.
2.4 Метод Зейделя Метод Зейделя является модификацией метода итераций. СЛАУ задается в виде (14) и приводится к виду (15). Отличие от метода итераций заключается в вычислительной процедуре нахождения приближения на i+1 итерации. В отличии от метода простых итераций, где для отыскания i+1 приближения используется i - ое приближение неизвестных xij, в методе Зейделя используются уже вычисленные i+1 значения x. Рекуррентные соотношения используемые в методе Зейделя представляются следующим образом:
Условия сходимости метода Зейделя может быть сформулировано следующим образом: Для того чтобы итерационный процесс сходился, достаточно, чтобы сумма абсолютных значений элементов каждой строки (исключая диагональный) была меньше абсолютного значения диагонального элемента соответствующей строки. Математически это определение может быть выражено следующим образом
На первом этапе решения СЛАУ система приводится к виду (15), после чего происходит проверка условия сходимости итерационного процесса к решению системы. Для этого необходимо выбрать максимальные значения коэффициентов ai, i и провести проверку условия на сходимость итерационного процесса. После этого задаются начальные приближения, обычно для этого используется столбец свободных членов, и проводится расчет по формуле (18) до достижения окончательного решения. 3 Интерполяция, полином Лагранжа 3.1 Общие положения В вычислительной практике часто приходится иметь дело с функциями В процессе же решения задачи необходимо использовать значения При решении задачи в этом случае вместо функции
3.2 Интерполяционный полином Для каждой функции
где
Для интерполяционного полинома многочлен
Многочлен (19) и решает задачу интерполирования и называется интерполяционным полиномом Лагранжа.
3.2.1 Пример
В качестве примера рассмотрим функцию вида
Необходимо определить значение функции в точке x - 2.5. Воспользуемся для этого полином Лагранжа. Исходя из формул ((19) и (21)) запишем этот полином в явном виде:
Тогда подставляя в формулу (22) исходные значения из нашей таблицы получим
3.3 Интерполяционная формула Лагранжа Интерполяционный полином Лагранжа может быть записан в другой форме:
Запись полинома в виде (23) более удобна для программирования. При решении задачи интерполяции величина n называется порядком интерполирующего полинома. При этом, как видно из формул (19) и (23), число узлов интерполирования всегда будет равно n+1 и значение x, для которого определяется величина
В некоторых практических случаях общее известное число узлов интерполяции m может быть больше, чем порядок интерполирующего полинома n. В этом случае, прежде чем реализовывать процедуру интерполяции согласно формуле (4.5), необходимо определить те узлы интерполяции, для которых справедливо условие (24). При этом следует помнить, что наименьшая погрешность достигается при нахождении значения x в центре области интерполяции. Для обеспечения этого предлагается следующая процедура: 1. После ввода в программу значения величины х необходимо проверить условие x0 £ x £ xm, где x0 и xm – начальное и конечное значение узловых точек интерполяции. 2. При выполнения предыдущего условия начинается поиск области интерполяции, для чего находим первое xi такое, для которого выполняется условие xi > x, при этом номер i будет соответствовать середине интервала интерполяции. Для определения области интерполяции ее левая граница будет начинаться с номера 3. После выполнения пунктов 1 и 2 программируется формула (23). Основное назначение интерполяции – это вычисление значений табулированной функции для не узловых (промежуточных) значений аргумента, поэтому интерполяцию часто называют «искусством чтения таблиц между строками». 4 Численное интегрирование 4.1 Общие положения Очень часто в процессе решения конкретных задач, как в научной, так и в инженерной практике возникает необходимость вычисления определенных интегралов вида:
Подынтегральная функция 1. Задается явная формула для 2. Функция 3. Для некоторого фиксированного конечного набора точек Интегралы от функций первого типа иногда удается вычислить аналитически, либо вручную, либо с помощью машинных символьных систем. Интегралы от функций второго и третьего типа (а также первого, если не используются символьные методы) обычно находят численными методами, т.е. методами, позволяющими найти численное значение определенного интеграла приближенно с любой степенью точности. Все методы приближенного вычисления определенных интегралов основаны на геометрическом смысле интеграла Ньютона-Лейбница. Он заключается в том, что определенный интеграл численно равен площади S криволинейной трапеции, ограниченной графиком функции
Рисунок 3 Такие методы называют квадратурными формулами. Процедура численного интегрирования заключается в том, что отрезок [ а, b ] разбивается на n частичных отрезков, а затем подынтегральная функция Заменяя подынтегральную функцию на каждом шаге отрезками линий нулевого, первого и второго порядков, получаем соответственно приближенные формулы для вычисления интеграла: - метод прямоугольников; - метод трапеций; - метод Симпсона.
4.2 Метод прямоугольников Простейшим полиномом является константа. В формуле прямоугольников функция
Если значение функции берется в точке a, то формула (25) носит название формулы левых прямоугольников.
Рисунок 4 – метод средних прямоугольников Для подсчета интеграла разделим интервал интегрирования С геометрической точки зрения означает, что площадь криволинейной трапеции Для интервала
где n - число разбиений для интервала [ a, b ], и точка x0 совпадает с a.
4.3 Метод трапеции Следующим простейшим полиномом является линейная функция. Если она выбрана совпадающей с Площадь этой трапеции (интеграл от линейной функции), используемая в качестве приближения к значению интеграла от
Эта формула (27) известна как формула трапеции. Рисунок 5
– Метод трапеции
Для того чтобы найти приближенное значение площади S, разделим отрезок интегрирования [ a, b ] на n равных частей длины Тогда площадь криволинейной трапеции
Таким образом, для интервала
где n - число разбиений для интервала
4.4 Метод Симпсона Более высокая точность определения численного значения определенного интеграла получается при аппроксимации функции f (x) квадратичным интерполяционным полиномом, который совпадает с f (x) в крайних точках a и b, а также в средней точке
которая называется формулой Симпсона. Рисунок 6 – Метод Симпсона
В методе Симпсона площадь криволинейной трапеции рассчитывается как сумма площадей ряда криволинейных трапеций, у которых криволинейная сторона представляет собой участок параболы. Это можно видеть на рисунок 6. Каждая парабола может быть проведена только через три граничные точки, принадлежащие двум соседним отрезкам. Поэтому число участков разбиения отрезка [ a, b ] в отличие от предыдущих методов обязательно должно быть четным. Таким образом, вместо каждых двух элементарных прямолинейных трапеций будем рассматривать одну элементарную трапецию, ограниченную параболической дугой. Исходя из этого, определенный интеграл на случай разбиения интервала
(30)– полная формула Симпсона. Таким образом, для реализации метода прямоугольников, трапеции и Симпсона для вычисления определенного интеграла необходимо: Задать в явном виде определенный интеграл, площадь которого необходимо определить. После этого задаются пределы интегрирования, и шаг интегрирования. Затем проводится расчет по формулам (26), (28) и (30). Для метода Симпсона число разбиений n должно быть четным, что подлежит проверке при составлении программы. ЛИТЕРАТУРА 1. Чечкин А.В. Математическая информатика М: Наука, 1991. 2. Информатика. Базовый курс. Под. Ред. С.В. Симоновича –СпБ: Питер, 2000г. 3. Котлинская Г.П., Галиновский О.И. Программирование на языке Си. - Минск: Высшая школа, 1991. 4. Малышев А.Н. Введение в вычислительную линейную алгебру. - Новосибирск: Наука. Сибирское отделение, 1991. 5. Дэвенпорт Дж. Компьютерная алгебра: Системы и алгоритмы алгебраических вычислений. - М.: Мир, 1991. 6. Амосов А.А., Дубинский Ю.А. Вычислительные методы для инженеров. М: Высшая школа, 1994. 7. Малышев А.Н. Введение в вычислительную линейную алгебру. Новосибирск: Наука Сиб. отделение, 1991. 8. Мудров А.Е. Численные методы для ПЭВМ на языках бейсик, фортран, паскаль - Томск: 1991. 9. Дьяконов В.П. Справочник по MathCad 6.0 – М: СК Пресс, 1997, 328с. 10. Хемминг Р.В. Численные методы. - М.: Наука, 1968. 11. Демидович Б.П. Основы вычислительной математики. - М: Наука, 1966.
|