русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Решение нелинейных уравнений


Дата добавления: 2015-07-23; просмотров: 5425; Нарушение авторских прав


 

Цель работы

 

Ознакомиться с основными методами решения нелинейных уравнений и их реализацией в пакете MathCAD.

 

Методические указания

 

Инженеру часто приходится составлять и решать нелинейные уравнения, что может представлять собой самостоятельную задачу или являться частью более сложных задач. В обоих случаях практическая ценность метода решения определяется быстротой и эффективностью полученного решения, а выбор подходящего метода зависит от характера рассматриваемой задачи. Важно отметить, что к результатам компьютерных вычислений всегда нужно относиться критически, анализировать их на правдоподобность. Чтобы избежать "подводных камней" при использовании любого стандартного пакета, реализующего численные методы, нужно иметь хотя бы минимальное представление о том, какой именно численный метод реализован для решения той или иной задачи.

Нелинейные уравнения можно разделить на 2 класса – алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые – в частности многочлен, рациональные, иррациональные). Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и др.) называются трансцендентными. Нелинейные уравнения могут решаться точными или приближенными методами. Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). К сожалению, большинство трансцендентных уравнений, а также произвольные алгебраические уравнения степени выше четвертой не имеют аналитических решений. Кроме того, коэффициенты уравнения могут быть известны лишь приблизительно и, следовательно, сама задача о точном определении корней теряет смысл. Поэтому для решения используются итерационные методы последовательного приближения. Вначале следует вначале отделить корни (т.е. найти их приближенное значение или отрезок их содержащий), а затем методом последовательных приближений их уточнить. Отделить корни можно – установив знаки функции f(x) и ее производной в граничных точках области ее существования, оценив приближенные значения из физического смысла задачи, или из решения аналогичной задачи при других исходных данных.



Широко распространен графический способ определения приближенных значений действительных корней – строят график функции f(x) и отмечают точки пересечения его с осью ОХ. Построение графиков часто удается упростить, заменив уравнение f(x)=0 равносильным ему уравнением , где функции f1(x) и f2(x) - более простые, чем функция f(x). В этом случае следует искать точку пересечения этих графиков.

Пример 1.Графически отделить корни уравнения x lg x = 1. Перепишем его в виде равенства lg x=1/xи найдем абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = 1/x (рис. 5). Видно, что единственный корень уравнения .

 

Рис. 5. Метод графического отделения корней

Реализация классических приближенных методов решения в пакете MathCAD.

Метод половинного деления

Отрезок, на концах которого функция принимает значения разного знака, делится пополам и, если корень лежит правее центральной точки, то к центру подтягивается левый край, а если – левее, то правый край. Новый суженный отрезок снова делится пополам и процедура повторяется. Этот метод прост и надежен, всегда сходится (хотя часто медленно – расплата за простоту!). Программная реализация его в пакете MathCAD рассмотрена в лабораторной работе №7 данного пособия.

Метод хорд

В качестве последовательных приближений к корню уравнения принимаются значения х1, х2, ..., хn точек пересечения хорды АВ с осью абсцисс (рис. 6).

Уравнение хорды AB имеет вид: . Для точки пересечения ее с осью абсцисс (х=х1, y=0) имеем:

.

Пусть для определенности кривая у = f(x) будет выпукла вниз и, следовательно, расположена ниже своей хорды АВ, т.е. на отрезке [a,b] f ²(x)>0. Возможны два случая: f(а)>0 (рис. 6, а) и f(а)<0 (рис. 6, б).

 

а) б)
Рис. 6. Метод хорд решения нелинейного уравнения

В первом случае, конец а неподвижен. Последовательные итерации образуют ограниченную монотонно убывающую последовательность: и определяются согласно уравнениям:

x0 = b; . (4.1)

Во втором случае неподвижен конец b, последовательные итерации образуют ограниченную монотонно возрастающую последовательность: и определяются согласно уравнениям:

x0 = а; . (4.2)

Таким образом, неподвижным следует выбирать тот конец, для которого знак функции f(х) и ее второй производной f ²(х) совпадают, а последовательные приближения xn лежат по ту сторону корня x, где эти знаки противоположны. Итерационный процесс продолжается до тех пор, пока модуль разности двух последовательных приближений не станет меньше, чем заданная точность решения.

Пример 2.Найти положительный корень уравнения f(x) º x3–0,2x2–0,2х–1,2 = 0 с точностью e= 0,01. (Точный корень уравнения x = 1,2).

Для организации итерационных вычислений в MathCAD документе используется функция until(a, z),котораявозвращает значение величины z, пока выражение a не становится отрицательным.

 

Метод Ньютона

Отличие этого метода от предыдущего состоит в том, что вместо хорды на каждом шаге проводится касательная к кривой y=f(x)при x=хi и ищется точка пересечения ее с осью абсцисс (рис. 7):

 

Рис. 7. Метод касательных Ньютона

 

При этом не обязательно задавать отрезок [а, b], содержащий корень уравнения), а достаточно лишь задать начальное приближение корня x=х0, которое должно находиться на том же конце интервала [а, b], где знаки функции и ее второй производной совпадают.

Уравнение касательной, проведенной к кривой y = f(x) через точку В0 с координатами х0 и f(х0), имеет вид:

Отсюда найдем следующее приближение корня х1как абсциссу точки пересечения касательной с осью Ох (y = 0):

Аналогично могут быть найдены и последующие приближения как точки пересечения с осью абсцисс касательных, проведенных в точках В1, В2 и так далее. Формула для (i +1) приближения имеет вид:

Условием окончания итерационного процесса является неравенство ïf(xi)ï<e, или условие близости двух последовательных приближений

Пример 3. Реализация итерационного метода Ньютона.

 

 

Метод простой итерации (последовательных итераций)

Заменим исходное нелинейное уравнение f(х)=0 равносильным уравнением вида x=j(x). Если известно начальное приближение корня х = х0, то новое приближение может быть получено по формуле: х1=j(х0). Далее, подставляя каждый раз новое значение корня в исходное уравнение получаем последовательность значений:

Геометрическая интерпретация метода состоит в том, что каждый действительный корень уравнения является абсциссой точки пересечения М кривой у=j(х) с прямой у=х (рис. 8). Отправляясь от произвольной т. А0[x0,j(x0)] начального приближения, строим ломаную А0В1А1В2А2.., которая имеет форму «лестницы» (рис. 8, а) если производная j’(x) положительна и форму «спирали» (рис. 8, б) в противоположном случае.

в)
Рис. 8. Метод простой итерации: а, б – сходящаяся итерация, в – расходящаяся итерация.

 

Отметим, что следует заранее проверить пологость кривой j(х), поскольку если она не является достаточно пологой ( >1), то процесс итерации может быть расходящимся (рис. 8, в).

Пример 4. Решитьуравнение x3x – 1 = 0 методом простой итерации с точностью e = 10-3. Реализация этой задачи представлена следующим MathCAD документом.

 

Реализация приближенных методов решения встроенными функциями MathCAD

 

Использование функции root

Для уравнений вида f(x) = 0 решение находится с помощью функции: root(f(х),х,a,b), которая возвращает значение х, принадлежащее отрезку [a, b], при котором выражение или функция f(х)обращается в 0. Оба аргумента этой функции x и f(x) должны быть скалярами, а аргументы a, b– являютсянеобязательными и, если используются, то должны быть вещественными числами, причем a < b. Функция позволяет находить не только вещественные, но и комплексные корни уравнения (при выборе начального приближения в комплексной форме).

Если уравнение не имеет корней, они расположены слишком далеко от начального приближения, начальное приближение было вещественным, а корни – комплексные, функция f(х)имеет разрывы (локальные экстремумы между начальными приближениями корня) то появится сообщение (отсутствует сходимость). Причину ошибки можно выяснить, исследуя график f(x). Он поможет выяснить наличие корней уравнения f(x) = 0 и, если они есть, то определить приблизительно их значения. Чем точнее выбрано начальное приближение корня, тем быстрее будет сходиться функция root.

Для выражения f(x) с известным корнем а нахождение дополнительных корней f(x) эквивалентно поиску корней уравнения h(x)=f(x)/(x‑a). Проще искать корень выражения h(x), чем пробовать искать другой корень уравнения f(x)=0, выбирая различные начальные приближения. Подобный прием полезен для нахождения корней, расположенных близко друг к другу, он реализован в приведенном ниже документе.

Пример 5. Решить алгебраическое уравнения с помощью функции root:

Примечание.Если увеличить значение системной переменной TOL (tolerance), то функция root будет сходиться быстрее, но ответ будет менее точен, а при уменьшении TOL более медленная сходимость обеспечивает более высокую точность, соответственно. Последнее необходимо, если требуется различить два близко расположенных корня, или же, если функция f(x) имеет малый наклон около искомого корня, поскольку итерационный процесс в этом случае может сходиться к результату, отстоящему от корня достаточно далеко. В последнем случае альтернативой повышения точности является замена уравнения f(x) = 0на g(x) = 0, где .

Использование функции polyroots

Если функция f(x) является полиномом степени n , то для решения уравнения f(x)=0 лучше использовать функцию polyroots(a), нежели root, поскольку она не требует начального приближения и возвращает сразу все корни, как вещественные, так и комплексные. Аргументом ее является вектор a, составленный из коэффициентов исходного полинома. Его можно сформировать вручную или с помощью команды Символы Þ Коэффициенты полинома (переменная полинома x выделяется курсором). Пример применения функции polyroots:

 

Использование функции solve и блока решений

Блок решений с ключевыми словами (Given – Find или Given – Minerr) или функция solveпозволяют найти решение произвольного нелинейного уравнения, если предварительно задано начальное приближение.

 

Отметим, что между функциями Findи rootнаблюдается своеобразная конкуренция. С одной стороны, Find позволяет искать корни, как уравнений, так и систем. С этих позиций функция rootкак бы и не нужна. Но с другой стороны, конструкцию Given-Find невозможно вставить в MathCAD программы. Поэтому в программах приходится подстановками сводить систему к одному уравнению и использовать функцию root.

Символьное решение уравнений в пакете MathCAD

Во многих случаях, MathCAD позволяет найти аналитическое решение уравнения. Для того чтобы найти решение уравнения в аналитическом виде необходимо записать выражение и выделить в нем переменную. После этого выбираем из пункта меню Symbolic подпункт Solve for Variable.

Другими вариантами нахождения решения в символьной форме являются (приводятся примеры решения того же уравнения) – использование функции solveиз палитры математических операций Символы (Symbolic).

использование блока решения (с ключевыми словами Given - Find)

 

 



<== предыдущая лекция | следующая лекция ==>
Решение систем уравнений | Задание на лабораторную работу


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.19 сек.