Решение нелинейных уравнений методом простых итераций - реферат. Теоретические основы решения нелинейных уравнений Найти корень уравнения можно численным методом

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

Приведенное описание функции пригодно для всех версий системы МС. Эту функцию можно вызвать с помощью кнопки f(x) на панели инструментов, выбрав в левом списке пункт Solving. В МС14 выбранная таким образом функция имеет четыре аргумента. Первые два из них − такие же, как было описано выше, а третьим и четвертым аргументами служат левая и правая границы интервала, на котором лежит искомый корень. Если задать третий и четвертый аргументы, то начальное значение переменной можно и не присваивать.

Рассмотрим использование этой функции на примере уравнения
. Сначала выполним отделение корней. Для этого построим графики функций в правой и левой части (рис.19). Из рисунка видно, что уравнение имеет два корня. Один лежит на отрезке [–2; 0], другой же – на . Воспользуемся первым вариантом формата функцииroot. Правый корень уравнения по графику приближенно равен 1. Поэтому выполним присвоение x := 1, вызовем функцию root, укажем два первых аргумента
и нажмем клавишу =. На экране получим результат 1.062. Теперь воспользуемся вторым вариантом шаблона. Снова вызовем функциюroot, укажем четыре аргумента и нажмем клавишу =. На экране получим результат

Второй корень найдем так:

Число выведенных на экран знаков вычисленного корня не совпадает с точностью нахождения результата. В памяти компьютера число хранится с пятнадцатью знаками, а на экран из этой записи выводится то количество знаков, которое установлено в меню Format. Насколько найденное значение корня отличается от точного, зависит от метода вычисления корня и от числа итераций в этом методе. Это регулируется системной переменной TOL, которая по умолчанию равна 0,001. В системе МС14 функция root ориентирована на достижение точности
, если
, и на достижение точности, задаваемое переменнойTOL, если ее значение меньше
. Значение этой переменной меньше, чем
, задавать не рекомендуется, т.к. может нарушиться сходимость вычислительного процесса.

Следует учесть, что в некоторых исключительных случаях результат может отклоняться от точного значения корня значительно больше, чем на величину TOL. Изменить значение TOL можно или простым присвоением, или с помощью меню Tools пункт Worksheet Options пункт Built-In Variables.

Для нахождения корней многочлена можно воспользоваться другой функцией, которая выдаст все корни многочлена, включая комплексные. Это функция polyroots(■), где аргументом служит вектор, координатами которого являются коэффициенты многочлена, первая координата – свободный член, вторая – коэффициент при первой степени переменного, последняя – коэффициент при старшей степени. Функция вызывается так же, как и функция root. Например, корни многочлена
можно получить так:


.

Некоторые простые уравнения можно решать и с помощью символьных преобразований. Можно найти корни многочлена второй или третьей степени, если коэффициенты являются целыми числами или обыкновенными дробями. В качестве примера возьмем многочлены, корни которых известны. Эти многочлены мы получим как произведение линейных множителей. Возьмем многочлен
. Получим его запись по степенямx . Для этого, как было описано в первом занятии, выделим в этой записи переменное x , выберем в меню Symbolics пункт Variable и в раскрывшемся окне пункт Collect:


.

В полученном результате выделим переменное x , выберем в меню Symbolics пункт Variable и в раскрывшемся окне пункт Solve. Получим


.

Как видим, корни найдены правильно. Возьмем многочлен третьей степени
. Найдем его корни тремя способами:

,


,

и символьными преобразованиями (результат на рис. 20).

Как видим, последний результат мало пригоден для использования, хотя и является «абсолютно» точным. Этот результат будет еще «хуже», если в многочлен добавить член с . Попробуйте с помощью символьных преобразований найти корни такого многочлена. Попробуйте с помощью символьных преобразований найти корни многочлена четвертой степени.

Символьные вычисления эффективны, если корни являются целыми или рациональными числами:


.

В этом примере символьные вычисления произведены с помощью панели Symbolic. Приведено также решение с помощью функции polyroots. Последние результаты менее эффектны, хотя с точки зрения вычислений ничем не хуже, так как разумный инженер округлит второй корень до числа – i .

Символьное нахождение корней можно применять и для уравнений, содержащих функции, отличные от многочленов:

.При использовании символьных вычислений следует быть осторожными. Так при нахождении нулей следующей функции МС14 выдает только одно значение: , хотя на промежутке
эта функция имеет 6 нулей:
. В более ранней версии системы (МС2000) указывались все нули.

Для полного ответа к ним нужно добавить число, кратное
.

Решим более сложную задачу. Функция y (x ) задана неявно уравнением
. Требуется построить график этой функцииy (x ) на отрезке .

Для решения этой задачи естественно воспользоваться функцией root. Однако она требует указания отрезка, на котором лежит искомый корень. Для этого найдем значение y графически при нескольких значениях x . (Графики приводятся ниже в виде отдельных рисунков, а не так как они размещены на экране MATHCAD).

Строим график (рис.21). На нем видно, что «разумные» значения y лежат в промежутке [– 5; 5]. Построим график в этом диапазоне. Изменения можно внести в шаблоны на имеющемся рисунке. Результат приведен на рис. 22. Видим, что корень лежит на отрезке . Возьмем следующее значение x . На бумаге – это новые записи, а на экране достаточно внести изменения в блоке, где x присваивается значение. При
получим рис.23. Согласно ему корень лежит на отрезке . При
получим рис. 24. Корень лежит на отрезке . В итоге можно ожидать, что корень при любыхx лежит на отрезке

Введем функцию пользователя .Построим график этой функции, считая переменным z , причем шаблоны по вертикальной оси можно не заполнять, система сама произведет масштабирование. График приведен на рис.25. По данному графику можно отследить значения функции с помощью панели X-Y Trace, как было описано выше.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ВОСТОЧНО-СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

Реферат на тему: «Решение нелинейных уравнений

методом простых итераций»

Выполнил:. Бубеев Б.М.

Проверил: Ширапов Д.Ш.

Введение

Нелинейные уравнения можно разделить на 2 класса - алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и другие) называются трансцендентными.

Методы решения нелинейных уравнений делятся на две группы:

    точные методы ;

    итерационные методы .

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

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

Пусть дано уравнение

    Функция f (x ) непрерывна на отрезке [a, b ] вместе со своими производными 1-го и 2-го порядка.

    Значения f (x ) на концах отрезка имеют разные знаки (f (a )  f (b ) < 0).

    Первая и вторая производные f" (x ) и f"" (x ) сохраняют определенный знак на всем отрезке.

Условия 1) и 2) гарантируют, что на интервале [a, b ] находится хотя бы один корень, а из 3) следует, что f (x ) на данном интервале монотонна и поэтому корень будет единственным.

Решить уравнение (1) итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью.

Всякое значение , обращающее функцию f (x ) в нуль, т.е. такое, что:

называется корнем уравнения (1) или нулем функции f (x ).

Задача нахождения корня уравнения f (x ) = 0 итерационным методом состоит из двух этапов:

    отделение корней - отыскание приближенного значения корня или содержащего его отрезка;

    уточнение приближенных корней - доведение их до заданной степени точности.

Процесс отделения корней начинается с установления знаков функции f (x ) в граничных x = a и x = b точках области ее существования.

Пример 1 . Отделить корни уравнения:

Следовательно, уравнение (2) имеет три действительных корня, лежащих в интервалах [-3, -1], и .

Приближенные значения корней (начальные приближения ) могут быть также известны из физического смысла задачи, из решения аналогичной задачи при других исходных данных, или могут быть найдены графическим способом.

В инженерной практике распространен графический способ определения приближенных корней.

Принимая во внимание, что действительные корни уравнения (1) - это точки пересечения графика функции f (x ) с осью абсцисс, достаточно построить график функции f (x ) и отметить точки пересечения f (x ) с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение (1) равносильным ему уравнением:

где функции f 1 (x ) и f 2 (x ) - более простые, чем функция f (x ). Тогда, построив графики функций у = f 1 (x ) и у = f 2 (x ), искомые корни получим как абсциссы точек пересечения этих графиков.

Рисунок 2.

Пример 2 . Графически отделить корни уравнения (Рисунок 2):

x lg x = 1.

Уравнение (4) удобно переписать в виде равенства:

Отсюда ясно, что корни уравнения (4) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = . Построив эти кривые, приближенно найдем единственный корень уравнения (4) или определим его содержащий отрезок .

Итерационный процесс состоит в последовательном уточнении начального приближения х 0 . Каждый такой шаг называется итерацией . В результате итераций находится последовательность приближенных значений корня х 1 , х 2 , ..., х n . Если эти значения с увеличением числа итераций n приближаются к истинному значению корня, то говорят, что итерационный процесс сходится .

Метод простой итерации

Для использования метода итерации исходное нелинейное уравнение f (х ) = 0 заменяется равносильным уравнением

Геометрически метод итерации может быть пояснен следующим образом. Построим на плоскости хОу графики функций у = х и у = (х ). Каждый действительный корень уравнения (8) является абсциссой точки пересечения М кривой у = (х ) с прямой у = х (Рисунок 6, а ).

Рисунок 6.

Отправляясь от некоторой точки А 0 [x 0 , (x 0)], строим ломаную А 0 В 1 А 1 В 2 А 2 ... (“лестница”), звенья которой попеременно параллельны оси Ох и оси Оу , вершины А 0 , А 1 , А 2 , ... лежат на кривой у= (х ), а вершины В 1 , В 2 , В 3 , …, - на прямой у = х. Общие абсциссы точек А 1 и В 1 , А 2 и В 2 , ..., очевидно, представляют собой соответственно последовательные приближения х 1 , х 2 , ... корня .

Возможен также другой вид ломаной А 0 В 1 А 1 В 2 А 2 ... - “спираль” (Рисунок 6, б ). Решение в виде “лестницы” получается, если производная " (х ) положительна, а решение в виде “спирали”, если " (х ) отрицательна.

На Рисунке 6, а, б кривая у =  (х ) в окрестности корня - пологая, то есть <1, и процесс итерации сходится. Однако, если рассмотреть случай, где >1, то процесс итерации может быть расходящимся (Рисунок 7).

Рисунок 7.

Поэтому для практического применения метода итерации нужно выяснить достаточные условия сходимости итерационного процесса.

Теорема: Пусть функция  (х ) определена и дифференцируема на отрезке [a, b ], причем все ее значения  (х ) [a , b ].

Тогда, если существует правильная дробь q такая, что

при a < x < b, то: 1) процесс итерации

сходится независимо от начального значени я х 0  [a , b ];

2) предельное значение является единственным корнем уравнения х = (х ) на отрезке [a, b ].

Пример 5 . Уравнение

f (x ) x 3 - x - 1 = 0

имеет корень , так как f (1) = - 1 < 0 и f (2) = 5 > 0.

Уравнение (10) можно записать в виде

х = х 3 - 1.

 (х ) = х 3 - 1 и " (х ) = 3х 2 ;

" (х ) 3 при 1 х 2

и, следовательно, условия сходимости процесса итерации не выполнены.

Если записать уравнение (10) в виде

то будем иметь:

.

Отсюда при 1 х 2 и значит, процесс итерации для уравнения (12) быстро сойдется. уравнений методом деления отрезка пополам... в памяти в форме простых переменных. Результат этой... итерация ) типа Real; d – дискриминант типа Real; x1 –первый корень уравнения , найденный методом решения квадратных уравнений ...

  • Метод Ньютона для решения нелинейных уравнений

    Курсовая работа >> Информатика

    ... методов решения нелинейных уравнений Существует много различных методов решения нелинейных уравнений , некоторые из них представлены ниже: 1)Метод итераций . При решении нелинейного уравнения методом итераций ... формулу метода простой итерации xk+1=g(...

  • Решение нелинейных уравнений методом интераций

    Контрольная работа >> Информатика

    Описывающая правила вычисления коней нелинейного уравнения методом итераций , а также блок-схема метода . 2 Практическая реализация: ... вычисление корней уравнения методом итераций 2.4 Вычислительный эксперимент – сравнение результатов программы с решением в...

  • Уравнение типа F(x)=0 или x=f(x) называется нелинейным. Решить уравнение это значит найти такое x, при котором уравнение превращается в тождество. В общем случае уравнение может иметь 0; 1; 2; ...∞ корней. Рассмотренные ниже численные методы решения нелинейных уравнений позволяют находить один корень на заданном интервале . При этом на интервале должен существовать только один корень. Рассмотрим несколько методов решения нелинейных уравнений .

    1. Метод перебора . При решении нелинейного уравнения методом перебора задаются начальное значение аргумента x=a и шаг h, который при этом определяет и точность нахождения корней нелинейного уравнения. Пока выполняется условие F(x)*F(x+h)>0 аргумент x увеличиваем на шаг h (x=x+h). Если произведение F(x)*F(x+h) становится отрицательным, то на интервале существует решение уравнения. Структограмма метода приведена на рисунке.


    2. Метод половинного деления . При решении нелинейного уравнения методом половинного деления задаются интервал , на котором существует только одно решение, и желаемая точность ε. Затем определяется середина интервала с=(а+b)/2 и проверяется условие F(a)∙F(c)<0. Если указанное условие выполняется, то правую границу интервала b переносим в среднюю точку с (b=c). Если условие не выполняется, то в среднюю точку переносим левую границу(a=c). Деление отрезка пополам продолжается пока |b-a|>ε. Структограмма решения нелинейных уравнений методом половинного деления приведена на рисунке.

      Пока |b-a|>ε

      F(a)∙F(c)<0


      Рис. Структограмма для метода половинного деления

    3. Метод хорд . При решении нелинейного уравнения методом хорд задаются интервал , на котором существует только одно решение, и точность ε. Затем через две точки с координатами (a,F(a)) и (b,F(b)) проводим отрезок прямой линии (хорду) и определяем точку пересечения этой линии с осью абсцисс (точка c). Если при этом F(a)∙F(c)<0, то правую границу интервала переносим в точку с (b=c). Если указанное условие не выполняется, то в точку c переносится левая граница интервала (а=с). Поиск решения прекращается при достижении заданной точности |F(c)|< ε. Для определения точки пересечения хорды с осью абсцисс воспользуемся следующей формулой (попытайтесь получить формулу самостоятельно).Структограмма метода хорд показана на рисунке.

      Пока |F(c)|>ε

      F(a)∙F(c)<0


      Рис. Структограмма для метода хорд

    4. Метод касательных . При решении нелинейного уравнения методом касательных задаются начальное значение аргумента x 0 и точность ε. Затем в точке(x 0 ,F(x 0)) проводим касательную к графику F(x) и определяем точку пересечения касательной с осью абсцисс x 1 . В точке (x 1 ,F(x 1)) снова строим касательную, находим следующее приближение искомого решения x 2 и т.д. Указанную процедуру повторяем пока |F(x i)| > ε. Для определения точки пересечения (i+1) касательной с осью абсцисс воспользуемся следующей формулой (получите формулу самостоятельно). Условие сходимости метода касательных F(x 0)∙F""(x 0)>0. Структограмма решения нелинейных уравнений методом касательных показана на рис.


    5. Метод хорд-касательных . Если в методе касательных производную функции F"(x i) заменить отношением конечных приращений, то получаем расчетную формулу для метода хорд-касательных . Порядок выполнения вычислений в данном методе аналогичен рассмотренному ранее.
    6. Метод итераций . При решении нелинейного уравнения методом итераций воспользуемся записью уравнения в виде x=f(x) . Задаются начальное значение аргумента x 0 и точность ε. Первое приближение решения x 1 находим из выражения x 1 =f(x 0), второе - x 2 =f(x 1) и т.д. В общем случае i+1 приближение найдем по формуле x i +1 =f(x i). Указанную процедуру повторяем пока |f(x i)|>ε. Условие сходимости метода итераций |f"(x)|<1. Структограмма метода итераций показана на рис.


    Контрольное задание. Лабораторная работа 4.

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

    Задание . Решить нелинейное уравнениеуказанными в табл. методами, предварительно определив интервал , на котором существует решение уравнения. Сделать проверку решения.

    Варианты уравнений и методов их решения приведены в таблице.


    Варианты уравнений и методов их решения

    Уравнение

    Методы решения

    перебора и хорд

    Перебора и касательных

    Перебора и хорд-касательных

    Перебора и половинного деления

    перебора и хорд

    Перебора и касательных

    Перебора и хорд-касательных

    Перебора и половинного деления

    перебора и хорд

    Перебора и касательных

    Перебора и хорд-касательных

    Перебора и половинного деления

    перебора и хорд

    Перебора и касательных

    Перебора и хорд-касательных

    Перебора и половинного деления

    перебора и хорд

    Перебора и касательных

    x 2 =exp(-x 2)-1

    Перебора и хорд-касательных

    Перебора и половинного деления

    перебора и хорд

    Перебора и касательных

    Перебора и хорд-касательных

    Перебора и половинного деления


    1. Название, цель работы и задание.
    2. Математическое описание, алгоритм (структограмма) и текст программы.
    3. Результаты расчета, проверка и выводы по работе.

    Решение одного нелинейного уравнения

    Введение

    Данная лабораторная работа включает в себя четыре метода решения одного нелинейного уравнения.

    Использующиеся методы решения одного нелинейного уравнения:

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

    Метод простой итерации.

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

    Метод секущих.

    Также данная лабораторная работа включает в себя: описание метода, применение метода к конкретной задаче (анализ), код программы решения вышеперечисленных методов на языке программирования MicrosoftVisualC++ 6.0.

    Описание метода:

    Пусть задана функция f (x) действительного переменного. Требуется найти корни уравнения f (x) =0 (1) или нули функции f (x).

    Нули f (x) могут быть как действительными, так и комплексными. Поэтому наиболее точная задача состоит в нахождении корней уравнения (1), расположенных в заданной области комплексной плоскости. Можно рассматривать также задачу нахождения действительных корней, расположенных на заданном отрезке.

    Задача нахождения корней уравнения (1) обычно решается в 2 этапа. На первом этапе изучается расположение корней и проводится их разделение, т.е. выделяются области в комплексной области, содержащие только один корень. Тем самым находятся некоторые начальные приближения для корней уравнения (1). На втором этапе, используя заданное начальное приближение, строится итерационный процесс, позволяющий уточнить значение отыскиваемого корня.

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

    Существует множество методов решения данной задачи. Но мы рассмотрим наиболее используемые методы решения по поиску корней уравнения (1): метод половинного деления (метод бисекции), метод касательных (метод Ньютона), метод секущих и метод простой итерации.

    Теперь отдельно по каждому методу:

    1. Метод половинного деления (метод бисекции)

    Более распространенным методом нахождения корней нелинейного уравнения является метод деления пополам. Предположим, что на интервале расположен лишь один корень x уравнения (1). Тогда f (a) и f (b) имеют различные знаки. Пусть для определения f (a) >0, f (b) <0. Положим x0= (a + b) /2 и вычислим f (x0). Если f (x0) <0, то искомый корень находится на интервале , если же f (x0) >0, то x принадлежит . Далее из двух интервалов и выбираем тот на границах, которого функция f (x) имеет различные знаки, находим точку x1 - середину выбранного интервала, вычисляем f (x1) и повторяем указанный процесс. В результате получаем последовательность интервалов, содержащих искомый корень x, причем длина каждого последующего интервала вдвое меньше, чем предыдущего. Процесс заканчивается, когда длина вновь полученного интервала станет меньше приближенной точности (

    >0), и в качестве корня x, приближенного принимается середина этого интервала.

    Пусть начальное приближение x0 известно. Заменим f (x) отрезком ряда Тейлора

    f (x) ≈ H1 (x) = f (x0) + (x - x0) f " (x0) и за следующее приближение x1 возьмем корень уравнения H1 (x) = 0, т.е. x1=x0 - f (x0) / f " (x0).

    Вообще, если итерация xk известна, то следующее приближение xk+1 в методе Ньютона определяется по правилу xk+1=xk-f (xk) /f" (xk), k=0, 1, … (2)

    Метод Ньютона называют также методом касательных, так как новое приближение xk +1 является абсциссой точки пересечения касательной, проведенной в точке (xk, f (xk)) к графику функции f (x) с осью Ox.

    Особенность метода:

    во-первых, метод имеет квадратичную сходимость, т.е. в отличие от линейных задач погрешность на следующей итерации пропорциональна квадрату погрешности на предыдущей итерации: xk+1-x=O ((xk-x) ²);

    во-вторых, такая быстрая сходимость метода Ньютона гарантируется лишь при очень хороших, т.е. близких к точному решению, начальных приближениях. Если начальное приближение выбрано неудачно, то метод может сходиться медленно, либо не сойдется вообще.

    3. Метод секущих

    Этот метод получается из метода Ньютона заменой f" (xk) разделенной разностью f (xk) - f (xk-1) /xk-xk-1, вычисленной по известным значениям xk и xk-1. В результате получаем итерационный метод

    , k=1, 2, … (3), который в отличие от ранее рассмотренных методов является двухшаговым, т.е. новое приближение xk+1 определяется двумя предыдущими итерациями xk и xk-1. В методе необходимо задавать два начальных приближения x0 и x1.

    Геометрическая интерпретация метода секущих состоит в следующем. Через точки (xk-1, f (xk-1)), (xk, f (xk)) проводится прямая, абсцисса точки пересечения этой прямой с осью Ox и является новым приближением xk+1. Иначе говоря, на отрезке функция f (x) интерполируется многочленом первой степени и за очередное приближение xk+1 принимается корень этого многочлена.

    4. Метод простой итерации

    Этот метод заключается в замене уравнения (1) эквивалентным ему уравнением вида

    (4) после этого строится итерационный процесс (5). При некотором заданном значении для приведения выражения (1) к требуемому виду (4) можно воспользоваться простейшим приёмом , .

    Если в выражении (4) положить

    , можно получить стандартный вид итерационного процесса для поиска корней нелинейного уравнения: .

    Иначе можно получить уравнение (4) следующим способом: левую и правую часть уравнения (1) умножить на произвольную константу  и прибавить к левой и правой части х, т.е. получаем уравнение вида:

    (6), где .

    На заданном отрезке выберем точку х 0 - нулевое приближение - и найдем: х 1 = f (x 0), потом найдем: х 2 = f (x 1), и т.д. Таким образом, процесс нахождения корня уравнения сводится к последовательному вычислению чисел: х n = f (x n-1) n = 1,2,3… Если на отрезке выполнено условие: |f " (x) |<=q<1 то процесс итераций сходится, т.е.

    . Процесс итераций продолжается до тех пор, пока |x n - x n-1 |<=, где  - заданная абсолютная погрешность корня х. При этом будет выполняться: .

    Применение метода к конкретной задаче (анализ).

    Дано уравнение вида x² - ln (1+x) - 3 = 0 при x

    . Задача состоит в том, чтобы решить это нелинейное уравнение 4 известными способами: метод половинного деления, метод касательных, метод секущих и метод простой итерации.

    Изучив методы и применив их к данному уравнению приходим к такому выводу: при решении данного уравнения 4 известными способами результат одинаков во всех случаях. Но количество итераций при прохождении метода значительно отличается. Зададим приближенную точность

    = . Если в случае половинного деления количество итераций составляют 20, при методе простых итераций равно 6, при методе секущих они составляют 5, а при методе касательных их количество равно 4. Из полученного результата видно, что более эффективным методом является метод касательных. В свою очередь метод половинного деления является более неэффективным, затрачивающий больше времени на выполнение, но являющийся самым простым из всех перечисленных методов при исполнении. Но не всегда результат будет таковым. Подставляя другие нелинейные уравнения в программу, в результате получается, что при методе простой итерации при разных видах уравнений количество итераций колеблется. Количество итераций может быть значительно больше, чем в методе половинного деления и меньше, чем в методе касательных.

    Листинг программы:

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

    #include

    #include

    #include

    #define e 0.000001

    double func (double x)

    res=fopen ("bisekciy. txt","w");

    while (fabs (a-b) >e)

    if ((func (c) *func (a)) <0) b=c;

    printf ("Otvet:%f\n",a);

    printf ("Takge smotri otvet v file bisekciy. txt\n");

    fprintf (res,"Результат решения уравнения методом половинного деления! \n");

    2. Метод касательных (метод Ньютона)

    #include

    #include

    #include

    #define e 0.000001

    double func (double x)

    return ((((x*x) - (log (1+x))) - 3));

    double dif (double x)

    return ((2*x) - (1/ (1+x)));

    res=fopen ("kasatelnih. txt","w");

    while (fabs (a-b) >=e)

    a=a-func (a) /dif (a);

    b=b-func (b) /dif (b);

    printf ("Funkciya prinimaet znachenie na intervale: [%d,%d] \n",x1,x2);

    printf ("Otvet:%f\n",a);

    printf ("Kol-vo iteraciy:%d \n",k);

    printf ("Takge smotri otvet v file kasatelnih. txt\n");

    fprintf (res,"Результат решения уравнения методом Ньютона! \n");

    fprintf (res,"Корень уравнения x =%f\nКоличество итераций =%d",a,k);

    3. Метод секущих

    #include

    Цель работы

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

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

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

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

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

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

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

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

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

    Метод хорд

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

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

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

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

    x 0 = b ; . (4.1)

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

    x 0 = а ; . (4.2)

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

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

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

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

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

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

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

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

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

    Условием окончания итерационного процесса является неравенство ïf (x i

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

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

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

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

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

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

    Пример 4. Решитьуравнение x 3 – x – 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 )