0 численных методах решения нелинейного уравнения. Лабораторная работа: Нахождение корня нелинейного уравнения

Уравнения, в которых содержатся неизвестные функции, произведенные в степень больше единицы, называются нелинейными.
Например, y=ax+b – линейное уравнение, х^3 – 0,2x^2 + 0,5x + 1,5 = 0 – нелинейное (в общем виде записывается как F(x)=0).

Системой нелинейных уравнений считается одновременное решение нескольких нелинейных уравнений с одной или несколькими переменными.

Существует множество методов решения нелинейных уравнений и систем нелинейных уравнений, которые принято относить в 3 группы: численные, графические и аналитические. Аналитические методы позволяют определить точные значения решения уравнений. Графические методы наименее точны, но позволяют в сложных уравнениях определить наиболее приближенные значения, с которых в дальнейшем можно начинать находить более точные решения уравнений. Численное решение нелинейных уравнений предполагает прохождения двух этапов: отделение корня и его уточнение до определенно заданной точности.
Отделение корней осуществляется различными способами: графически, при помощи различных специализированных компьютерных программ и др.

Рассмотрим несколько методов уточнения корней с определенно заданной точностью.

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

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

Суть метода половинного деления заключается в делении интервала пополам (с=(a+b)/2) и отбрасывании той части интервала, в которой отсутствует корень, т.е. условие F(a)xF(b)

Рис.1. Использование метода половинного деления при решении нелинейных уравнений.

Рассмотрим пример.


Разделим отрезок на 2 части: (a-b)/2 = (-1+0)/2=-0,5.
Если произведение F(a)*F(x)>0, то начала отрезка a переносится в x (a=x), иначе, конец отрезка b переносится в точку x (b=x). Полученный отрезок делим опять пополам и т.д. Весь произведенный расчет отражен ниже в таблице.

Рис.2. Таблица результатов вычислений

В результате вычислений получаем значение с учетом требуемой точности, равной x=-0,946

Метод хорд.

При использовании метода хорд, задается отрезок , в котором есть только один корень с установленной точностью e. Через точки в отрезке a и b, которые имеют координаты (x(F(a);y(F(b)), проводится линия (хорда). Далее определяются точки пересечения этой линии с осью абсцисс (точка z).
Если F(a)xF(z)

Рис.3. Использование метода хорд при решении нелинейных уравнений.

Рассмотрим пример. Необходимо решить уравнение х^3 – 0,2x^2 + 0,5x + 1,5 = 0 с точностью до e

В общем виде уравнение имеет вид: F(x)= х^3 – 0,2x^2 + 0,5x + 1,5

Найдем значения F(x) на концах отрезка :

F(-1) = - 0,2>0;

Определим вторую производную F’’(x) = 6x-0,4.

F’’(-1)=-6,4
F’’(0)=-0,4

На концах отрезка условие F(-1)F’’(-1)>0 соблюдается, поэтому для определения корня уравнения воспользуемся формулой:


Весь произведенный расчет отражен ниже в таблице.


Рис.4. Таблица результатов вычислений

В результате вычислений получаем значение с учетом требуемой точности, равной x=-0,946

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

Данный метод основывается на построении касательных к графику, которые проводятся на одном из концов интервала . В точке пересечения с осью X (z1) строится новая касательная. Данная процедура продолжается до тех пор, пока полученное значение не будет сравним с нужным параметром точности e (F(zi)

Рис.5. Использование метода касательных (Ньютона) при решении нелинейных уравнений.

Рассмотрим пример. Необходимо решить уравнение х^3 – 0,2x^2 + 0,5x + 1,5 = 0 с точностью до e

В общем виде уравнение имеет вид: F(x)= х^3 – 0,2x^2 + 0,5x + 1,5

Определим первую и вторую производные: F’(x)=3x^2-0,4x+0,5, F’’(x)=6x-0,4;

F’’(-1)=-6-0,4=-6,4
F’’(0)=-0,4
Условие F(-1)F’’(-1)>0 выполняется, поэтому расчеты производим по формуле:

Где x0=b, F(a)=F(-1)=-0,2

Весь произведенный расчет отражен ниже в таблице.


Рис.6. Таблица результатов вычислений

В результате вычислений получаем значение с учетом требуемой точности, равной x=-0,946

Кафедра: АСОИиУ

Лабораторная Работа

На тему: НАХОЖДЕНИЕ КОРНЯ НЕЛИНЕЙНОГО УРАВНЕНИЯ. МЕТОДЫ РЕШЕНИЯ СИСТЕМЫ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

Москва, 2008 год


НАХОЖДЕНИЕ КОРНЯ НЕЛИНЕЙНОГО УРАВНЕНИЯ

1. Постановка задачи

Пусть задана функция , непрерывная вместе со своими несколькими производными. Требуется найти все или некоторые вещественные корни уравнения

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

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


2. Методы решения задачи

2.1 Метод деления отpезка пополам

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

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

Итак, алгоритм метода дихотомии:

1. Задать отрезок и погрешность e.

2. Если f(a) и f(b) имеют одинаковые знаки, выдать сообщение о невозможности отыскания корня и остановиться.


Рис.1. Метод деления отрезка пополам для решения уравнения вида f(х)=0.

3. В противном случае вычислить c=(a+b)/2

4. Если f(a) и f(c) имеют разные знаки, положить b=c, в противном случае a=c.

5. Если длина нового отрезка , то вычислить значение корня c=(a+b)/2 и остановиться, в противном случае перейти к шагу 3.

Так как за N шагов длина отрезка сокращается в 2 N раз, то заданная погрешность отыскания корня e будет достигнута за итераций.

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

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

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

При использовании этого метода исходное нелинейное уравнение (1) необходимо переписать в виде

Обозначим корень этого уравнения C * . Пусть известно начальное приближение корня . Подставляя это значение в правую часть уравнения (2), получаем новое приближение

и т.д. Для (n+1)- шага получим следующее приближение

(3)

Таким образом, по формуле (3) получаем последовательность С 0 , С 1 ,…,С n +1 , которая стремиться к корню С * при n®¥. Итерационный процесс прекращается, если результаты двух последовательных итераций близки, т. е. выполняется условие

(4)


Исследуем условие и скорость сходимости числовой последовательности {C n } при n®¥. Напомним определение скорости сходимости. Последовательность {C n }, сходящаяся к пределу С * , имеет скорость сходимости порядка a, если при n®¥ выполняется условие

Допустим, что имеет непрерывную производную, тогда погрешность на (n+1)-м итерационном шаге e n +1 =C n +1 -C * =g(C n)-g(C *) можно представить в виде ряда

e n+1 » C n+1 – C * = g¢(C *) (C n -C *) +¼@ g¢(C *) e n +¼

Таким образом, получаем, что при выполнении условия

çg¢(C *) ç<1(6)

последовательность (3) будет сходиться к корню с линейной скоростью a=1. Условие (6) является условием сходимости метода простой итерации. Очевидно, что успех метода зависит от того, насколько удачно выбрана функция .

Например, для извлечения квадратного корня, т. е. решения уравнения вида x =a 2 , можно положить

x=g 1 (x)=a/x (7а)


x=g 2 (x)=(x+a/x)/2.(7б)

Нетрудно показать, что

½g 1 " (C)½=1,

½g 2 " (C)½<1.

Таким образом, первый процесс (7а) вообще не сходится, а второй (7б) сходится при любом начальном приближении С 0 >0.

Рис. 2. Графическая интерпретация метода простых итераций для решения уравнения вида x=g(х).

Построение нескольких последовательных приближений по формуле (3)

С 0 , С 1 , …, С n = C *

приведено на рисунке 2.

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

В литературе этот метод часто называют методом касательных, а также методом линеаризации. Выбираем начальное приближение С 0 . Допустим, что отклонение С 0 от истинного значения корня С * мало, тогда, разлагая f(C *) в ряд Тейлора в точке С 0 , получим

f(C *) = f(C 0) + f¢(C 0) (C * -C 0) +¼(8)

Если f¢(C 0) ¹ 0 , то в (8) можно ограничится линейными по DC =C-C 0 членами. Учитывая, что f(C *)=0, из (9) можно найти следующее приближение для корня

C 1 = C 0 – f (C 0) / f¢(C 0)

или для (n+1)-го приближения

C n+1 = C n – f (C n) / f ¢(C n) (9)

Для окончания итерационного процесса можно использовать одно из двух условий

çC n +1 – C n ç

çf(C n +1) ç

Исследование сходимости метода Ньютона проводится аналогично предыдущему случаю. Самостоятельно получить, что при выполнении условия

½f "" (C)/2f"(C)½<1.

метод Ньютона имеет квадратичную скорость сходимости ().

Рис. 3. Графическая интерпретация метода Ньютона для решения уравнения вида f(х)=0.

Построение нескольких последовательных приближений по формуле (9)

С 0 , С 1 , …, С n = C *

приведено на рисунке 3.

1. Для заданной функции f(x)

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

· Вычислите один из найденных корней (любой) с точностью e=0,5*10 -3 .

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

Сравните полученные результаты.

Варианты заданий

1. x 3 –3x 2 +6x – 5 = 0 2. x 3 +sinx –12x-1=0

3. x 3 –3x 2 –14x – 8 = 0 4. 3x + cos x + 1 =0

5. x 2 +4sin x –1 = 0 6. 4x –ln x = 5

7. x 6 –3x 2 +x – 1 = 0 8. x 3 – 0.1x 2 +0.3x –0.6 = 0

9.10. (x -1) 3 + 0.5e x = 0

11. 12. x 5 –3x 2 + 1 = 0

13. x 3 –4x 2 –10x –10 = 0 14.

15. 16.

19. 20.

23. 24. x 4 - 2.9x 3 +0.1x 2 + 5.8x - 4.2=0

25. x 4 +2.83x 3 - 4.5x 2 -64x-20=0 26.

МЕТОДЫ РЕШЕНИЯ СИСТЕМЫ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

1. Постановка задачи

Пусть требуется решить систему n нелинейных уравнений:

(1)

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

Систему уравнений (1) можно кратко записать в векторном виде:

. (2)

Уравнение (2) может иметь один или несколько корней в области определения D. Требуется установить существование корней уравнения и найти приближённые значения этих корней. Для нахождения корней обычно применяют итерационные методы, в которых принципиальное значение имеет выбор начального приближения. Начальное приближение иногда известно из физических соображений. В случае двух неизвестных начальное приближение можно найти графически: построить на плоскости (x 1 , x 2) кривые f 1 (x 1 , x 2)=0 и f 2 (x 1 , x 2)=0 и найти точки их пересечения. Для трех и более переменных (а также для комплексных корней) удовлетворительных способов подбора начального приближения нет.

Рассмотрим два основных итерационных метода решения системы уравнений (1), (2) - метод простой итерации и метод Ньютона.

2. Методы решения системы нелинейных уравнений

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

Представим систему (1) в виде

(3)

или в векторной форме:

(4)

Алгоритм метода простой итерации состоит в следующем. Выберем некоторое нулевое приближение

Следующее приближение находим по формулам:


или более подробно:

(5)

Итерационный процесс (5) продолжается до тех пор, пока изменения всех неизвестных в двух последовательных итерациях не станут малыми, т.е.

На практике часто вместо последнего условия используют неравенство:

(6)

где - среднеквадратичная норма n-мерного вектора , т.е.

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

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

В переводной литературе можно встретить название метод Ньютона-Рафсона. Этот метод обладает гораздо более быстрой сходимостью, чем метод простой итерации.

Пусть известно некоторое приближение к корню , так что

Тогда исходную систему (2) можно записать следующим образом:

Разлагая уравнение (7) в ряд Тейлора в окрестности точки и ограничиваясь линейными членами по отклонению , получим:

или в координатной форме:

(8)

Систему (8) можно переписать в виде:


(9)

Полученная система (9) является системой линейных алгебраических уравнений относительно приращений

Значение функций F 1 , F 2 , …, F n и их производные в (9) вычисляются при

.

Определителем системы (9) является якобиан J:

(10)

Для существования единственного решения системы уравнений (9) он должен быть отличен от нуля. Решив систему (9), например, методом Гаусса, найдём новое приближение:

.

Проверяем условие (6). Если оно не удовлетворяется, находим и якобиан (10) с новым приближением и опять решаем (9), таким образом, находим 2-е приближение и т.д.

Итерации прекращаются, как только выполнится условие (6).

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

Варианты заданий

1 2

3 4

5 6

7 8

9 10

11 12

13 14.

15. 16.

17. 18.

19. 20.

21. 22.

Постановка задачи

Отделение корней

Уточнение корней

1.2.3.2. Метод итерации

1.2.3.4. Метод хорд

Постановка задачи

Алгебраическими уравнениями

(1.2.1-1)

трансцендентным уравнением

(1.2.1-2)

Итерационное уточнение корней.

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

Этап уточнения корня имеет своей целью вычисление приближенного значения корня с заданной точностью. При этом применяются итерационные методы вычисления последовательных приближений к корню: x 0 , x 1 , ..., x n , …, в которых каждое последующее приближение x n+1 вычисляется на основании предыдущего x n . Каждый шаг называется итерацией. Если последовательность x 0 , x 1 , ..., x n , …при n ® ¥ имеет предел, равный значению корня , то говорят, что итерационный процесс сходится.

Существуют различные способы отделения и уточнения корней, которые мы рассмотрим ниже.

Отделение корней

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

Уточнение корней

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

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

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

Метод половинного деления позволяет получить последовательность вложенных друг в друга отрезков , , …,,…, , таких что f(a i).f(b i) < 0 , где i=1,2,…,n, а длина каждого последующего отрезка вдвое меньше длины предыдущего:

Последовательное сужение отрезка вокруг неизвестного значения корня обеспечивает выполнение на некотором шаге n неравенства |b n - a n | < e. Поскольку при этом для любого хÎ будет выполняться неравенство | - х| <, то с точностью любое

Может быть принято за приближенное значение корня, например его середину отрезка

В методе половинного деления от итерации к итерации происходит последовательное уменьшение длины первоначального отрезка в два раза (рис. 1.2.3-1). Поэтому на n-м шаге справедлива следующая оценка погрешности результата:

(1.2.3-1)

где - точное значение корня, х n Î – приближенное значение корня на n-м шаге.

Сравнивая полученную оценку погрешности с заданной точностью , можно оценить требуемое число шагов:

(1.2.3-2)

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

Рис. 1.2.3-2. Схема алгоритма метода половинного деления

Схема алгоритма метода половинного деления приведена на рис. 1.2.3-2. В приведенном алгоритме предполагается, что левая часть уравнения f(x)оформляется в виде программного модуля.

Пример 1.2.3-1. Уточнить корень уравнения x 3 +x-1=0 с точностью =0.1, который локализован на отрезке .

Результаты удобно представить с помощью таблицы 1.2.3-3.

Таблица 1.2.3-3

k a b f(a) f(b) (a+b)/2 f((a+b)/2) a k b k
-1 0.5 -0.375 0.5
0.5 -0.375 0.75 0.172 0.5 0.75
0.5 0.75 -0.375 0.172 0.625 -0.131 0.625 0.75
0.625 0.75 -0.131 0.172 0.688 0.0136 0.625 0.688

После четвертой итерации длина отрезка |b 4 -a 4 | = |0.688-0.625| = 0.063 стала меньше величины e , следовательно, за приближенное значение корня можно принять значение середины данного отрезка: x = (a 4 +b 4)/2 = 0.656.

Значение функции f(x) в точке x = 0.656 равно f(0.656) = -0.062.

Метод итерации

Метод итераций предполагает замену уравнения f(x)=0 равносильным уравнением x=j(x). Если корень уравнения отделен на отрезке , то исходя из начального приближения x 0 Î, можно получить последовательность приближений к корню

x 1 = j(x 0), x 2 = j(x 1), …, , (1.2.3-3)

где функция j(x) называется итерирующей функцией.

Условие сходимости метода простой итерации определяется следующей теоремой.

Пусть корень х* уравнения x=j(x) отделен на отрезке и построена последовательность приближений по правилу x n =j(x n -1). Тогда, если все члены последовательности x n =j(x n -1) Î и существует такое q (0, что для всех х Î выполняется |j’(x)| = q<1, то эта последовательность является сходящейся и пределом последовательности является значение корня x*, т.е. процесс итерации сходится к корню уравнения независимо от начального приближения.

Таким образом, если выполняется условие сходимости метода итераций, то последовательность x 0 , x 1 , x 2 , …, x n ,…, полученная с помощью формулы x n +1 = j(x n ), сходится к точному значению корня :

Условие j(x)Î при xÎ означает, что все приближения x 1 , x 2 , …, x n ,…, полученные по итерационной формуле, должны принадлежать отрезку , на котором отделен корень.


Для оценки погрешности метода итерации справедливо условие

За число q можно принимать наибольшее значение |j"(x)|, а процесс итераций следует продолжать до тех пор, пока не выполнится неравенство

(1.2.3-5)

На практике часто используется упрощенная формула оценки погрешности. Например, если 0

|x n -1 - x n | £ .

Использование итерационной формулы x n +1 = j(x n) позволяет получить значение корня уравнения f(x)=0 с любой степенью точности.

Геометрическая иллюстрация метода итераций . Построим на плоскости X0Y графики функций y=x и y=j(x). Корень уравнения х=j(x) является абсциссой точки пересечения графиков функции y = j(x) и прямой y=x. Возьмем некоторое начальное приближение x 0 Î . На кривой y = j(x) ему соответствует точка А 0 = j(x 0). Чтобы найти очередное приближение, проведем через точку А 0 прямую горизонтальную линию до пересечения с прямой y = x (точкаВ 1) и опустим перпендикуляр до пересечения с кривой (точкаА 1), то есть х 1 =j(x 0). Продолжив построение аналогичным образом, имеем ломаную линию А 0 , В 1 , А 1 , В 2 , А 2 …, для которой общие абсциссы точек представляют собой последовательное приближение х 1 , х 2 , …, х n («лестницу») к корню х*. Из рис. 1.2.3-3а видно, что процесс сходится к корню уравнения.

Рассмотрим теперь другой вид кривой y = j(x) (рис. 1.2.6b). В данном случае ломаная линия А 0 , В 1 , А 1 , В 2 , А 2 …имеет вид “спирали”. Однако, и в этом случае наблюдается сходимость.

Нетрудно видеть, что в первом случае для производной выполняется условие 0< j’(x)< 1, а во втором случае производная j’(x)<0иj’(x)>-1. Таким образом, очевидно, что если |j’(x)|<1, то процесс итераций сходится к корню.

Теперь рассмотрим случаи, когда |j’(x) |> 1. На рис. 1.2.3-4а показан случай, когда j’(x)>1, а на рис. 1.2.3-4b – когда j’(x) < -1. В обоих случаях процесс итерации расходится, то есть, полученное на очередной итерации значение х все дальше удаляется от истинного значения корня.

Способы улучшения сходимости процесса итераций . Рассмотрим два варианта представления функции j(x) при переходе от уравнения f(x)кx=j(x).

1. Пусть функция j(x) дифференцируема и монотонна в окрестностях корня и существует числоk £ |j‘(x)|, где k ³ 1 (т.е. процесс расходится). Заменим уравнение х=j(x) эквивалентным ему уравнением х=Y(х) , где Y(х) = 1/j(x) (перейдем к обратной функции). Тогда

а значит q=1/k < 1 и процесс будет сходиться.

2. Представим функцию j(x) как j(x) = х - lf(x), где l - коэффициент, не равный

нулю. Для того чтобы процесс сходился, необходимо, чтобы
0<|j¢(x)| = |1 - lf¢(x)| < 1. Возьмем l= 2/(m 1 +M 1 ), где m 1 и M 1 – минимальное и максимальное значения f’(x) (m 1 =min|f’(x)|, M 1 =max|f’(x)|) для хÎ, т.е. 0£ m 1 £ f¢(x) £ M 1 £1. Тогда

и процесс будет сходящимся, рекуррентная формула имеет вид

Если f¢(x) < 0, то в рекуррентной формуле f(x) следует умножить на -1 .

Параметр λ может быть также определен по правилу:

Если , то , а если , то , где .

Схема алгоритма метода итерации приведена на рис. 1.2.3-5.

Исходное уравнение f(x)=0преобразовано к виду, удобному для итераций: Левая часть исходного уравнения f(x) и итерирующая функция fi(x) в алгоритме оформлены в виде отдельных программных модулей.

Рис. 1.2.3-5. Схема алгоритма метода итерации

Пример 1.2.3-2. Уточнить корень уравнения 5x – 8∙ln(x) – 8 =0 с точностью 0.1, который локализован на отрезке .

Приведем уравнение к виду, удобному для итераций:

Следовательно, за приближенное значение корня уравнения принимаем значение x 3 =3.6892, обеспечивающее требуемую точность вычислений. В этой точке f(x 3)=0.0027.

Метод хорд

Геометрическая интерпретация метода хорд состоит в следующем
(рис.1.2.3-8).

Проведем отрезок прямой через точки A и B. Очередное приближение x 1 является абсциссой точки пересечения хорды с осью 0х. Построим уравнение отрезка прямой:

Положим y = 0 и найдем значение х = х 1 (очередное приближение):

Повторим процесс вычислений для получения очередного приближения к корню - х 2 :

В нашем случае (рис.1.2.11) и расчетная формула метода хорд будет иметь вид

Эта формула справедлива, когда за неподвижную точку принимается точка b, а в качестве начального приближения выступает точка a.

Рассмотрим другой случай (рис. 1.2.3-9), когда .

Уравнение прямой для этого случая имеет вид

Очередное приближение х 1 при y = 0

Тогда рекуррентная формула метода хорд для этого случая имеет вид

Следует отметить, что за неподвижную точку в методе хорд выбирают тот конец отрезка , для которого выполняется условие f (x)∙ f¢¢ (x)>0.

Таким образом, если за неподвижную точку приняли точку а, то в качестве начального приближения выступает х 0 = b, и наоборот.

Достаточные условия, которые обеспечивают вычисление корня уравнения f(x)=0 по формуле хорд, будут теми же, что и для метода касательных (метод Ньютона), только вместо начального приближения выбирается неподвижная точка. Метод хорд является модификацией метода Ньютона. Разница состоит в том, что в качестве очередного приближения в методе Ньютона выступает точка пересечения касательной с осью 0Х, а в методе хорд – точка пересечения хорды с осью 0Х – приближения сходятся к корню с разных сторон.

Оценка погрешности метода хорд определяется выражением

(1.2.3-15)

Условие окончания процесса итераций по методу хорд

(1.2.3-16)

В случае, если M 1 <2m 1 , то для оценки погрешности метода может быть использована формула | x n - x n -1 | £ e.

Пример 1.2.3-4. Уточнить корень уравнения e x – 3x = 0, отделенный на отрезке с точностью 10 -4 .

Проверим условие сходимости:

Следовательно, за неподвижную точку следует выбрать а=0, а в качестве начального приближения принять х 0 =1, поскольку f(0)=1>0 и f(0)*f"(0)>0.

Результаты расчета, полученные с использованием формулы
1.2.3-14, представлены в таблице 1.2.3-4.

Таблица 1.2.3-4

Рис. 1.2.3-10. Схема алгоритма метода хорд

Нелинейное уравнение – это

1) алгебраическое или трансцендентное уравнение

2) алгебраическое уравнение

3) тригонометрическое уравнение

4) трансцендентное уравнение

Тема 1.2. Методы решения нелинейных уравнений

Постановка задачи

Отделение корней

1.2.2.1. Графическое отделение корней

1.2.2.2. Аналитическое отделение корней

Уточнение корней

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

1.2.3.2. Метод итерации

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

1.2.3.4. Метод хорд

1.2.3.5. Сравнение методов решения нелинейных уравнений

1.2.4. Тестовые задания по теме «Методы решения нелинейных уравнений»

Постановка задачи

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

f(x) = Р(х) = a n x n + a 2 x 2 + …+ a 1 x + a 0 = 0.(1.2.1-1)

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

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

Задача нахождения корня уравнения с заданной точностью ( >0)считается решенной, если вычислено приближенное значение , которое отличается от точного значения корня не более чем на значение e

(1.2.1-2)

Процесс нахождения приближенного корня уравнения состоит из двух этапов:

1) отделение корней (локализация корней);

Рассмотрим задачу нахождения корней нелинейного уравнения

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

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

Существование на найденном отрезке , по крайней мере, одного корня уравнения (1) следует из условия Больцано:

f(a)*f(b)<0 (2)

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

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

где вещественные коэффициенты.

  • а) Уравнение степени n имеет n корней, среди которых могут быть как вещественные, так и комплексные. Комплексные корни образуют комплексно-сопряженные пары и, следовательно, уравнение имеет четное число таких корней. При нечетном значении n имеется, по меньшей мере, один вещественный корень.
  • б) Число положительных вещественных корней меньше или равно числа переменных знаков в последовательности коэффициентов. Замена х на -х в уравнении (3) позволяет таким же способом оценить число отрицательных корней. итерация Ньютон дихотомия нелинейный

На втором этапе решения уравнения (1), используя полученное начальное приближение, строится итерационный процесс, позволяющий уточнять значение корня с некоторой, наперед заданной точностью. Итерационный процесс состоит в последовательном уточнении начального приближения. Каждый такой шаг называется итерацией. В результате процесса итерации находится последовательность приближенных значений корней уравнения. Если эта последовательность с ростом n приближается к истинному значению корня x , то итерационный процесс сходится. Говорят, что итерационный процесс сходится, по меньшей мере, с порядком m, если выполнено условие:

где С>0 некоторая константа. Если m=1 , то говорят о сходимости первого порядка; m=2 - о квадратичной, m=3 - о кубической сходимостях.

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

или малости невязки:

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

Нахождение корней нелинейного уравнения

Курсовая

Информатика, кибернетика и программирование

Блок-схемы реализующие численные методы -для метода дихотомии: Блок-схема для метода хорд: Блок-схема для метода Ньютона: Листинг программы unit Unit1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs TeEngine Series ExtCtrls TeeProcs Chrt Menus OleCtnrs StdCtrls xCtrls OleCtrls VCF1 Mth; type TForm1 = clssTForm GroupBox1: TGroupBox; OleContiner2: TOleContiner; MinMenu1: TMinMenu; N1: TMenuItem; Chrt1: TChrt; Series1:...

РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ НЕФТИ И ГАЗА им. И.М. ГУБКИНА

Кафедра информатики

Курсовая работа

по дисциплине «Информатика».

Тема: « Нахождение корней нелинейного уравнения»

Выполнил: студентка

Манепова А. М

группы: ГИ-12-05

Проверил:

Москва, 2013


Задание на выполнение курсовой работы.


Теория нахождения корней нелинейного уравнения. Описание используемых численных методов.

1. Метод половинного деления (дихотомии)

2.Метод хорд

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

Расчеты в математическом пакете Mat lab


Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.

Результаты расчета с использованием Побора Параметра


Результаты расчета с использованием Поиска Решений


Описание приложения созданного в среде Delphi.


Блок – схемы реализующие численные методы

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


Изображение окна приложения


Анализ полученных результатов


Литература.


Задание на выполнение курсовой работы.

  1. расчет , выполненный в математическом пакете Matlab (Mathematica 5 .) (файл-функция для описания нелинейного уравнения, график, решение в символьном и численном виде).
  2. Нахождение корней нелинейного уравнения в электронных таблицах MS Excel (вид нелинейного уравнения, график нахождения корней нелинейного уравнения, найти корень нелинейного уравнения, используя средства условного анализа: «Побор параметра», «Поиск решения»).
  3. Создание приложения для нахождения корней нелинейного уравнения в среде Delphi (вид нелинейного уравнения, график на заданном интервале, для каждого метода: результаты табулирования функции на заданном интервале с заданным шагом, для каждого метода численного метода пользовательскую подпрограмму с передачей параметров). Результаты отобразить на форме в виде таблицы и в файле. Предусмотреть изменение точности значения (Е <= 0 , 001).
  4. вид уравнения


Теория нахождения корней нелинейного уравнения. Описание используемых численных методов.

Пусть задана функция , непрерывная вместе со своими несколькими производными. Требуется найти все или некоторые вещественные корни уравнения

.
Данная задача распадается на несколько подзадач. Во-первых, необходимо определить количество корней, исследовать их характер и расположение. Во-вторых, найти приближенные значения корней. В-третьих, выбрать из них интересующие нас корни и вычислить их с требуемой точностью e. Первая и вторая задачи решаются, как правило, аналитическими или графическими методами. В случае, когда ищутся только вещественные корни уравнения, полезно составить таблицу значений функции . Если в двух соседних узлах таблицы функция имеет разные знаки, то между этими узлами лежит нечетное число корней уравнения (по меньшей мере, один). Если эти узлы близки, то, скорее всего, корень между ними только один.
Найденные приближенные значения корней можно уточнить с помощью различных итерационных методов.

Рассмотрим три метода: 1) метод дихотомии (или деление отрезка пополам); 2) метод простой итерации и 3) метод Ньютона .

1. Метод половинного деления (дихотомии)


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

2.Метод хорд

При решении нелинейного уравнения методом хорд задаются интервалы , на котором существует только одно решение, и точность Ɛ. Затем через две точки с координатами (a,F(a)) и (b,F(b)) проводим отрезок прямой линии (хорду) и определяем точку пересечения этой линии с осью абцисс. Ели при этом F(a)*F(b) <0, то праву границу интервала пееносиим в точку x (b=x). Если указанное условие не выполняется, то в точку x переносится левая граница интервала (a=x). Поиск решения пекращается при достижении заданной точности |F(x)|>Ɛ. Вычисления ведутся до тех пор, пока не выполнится неравенство: . Итерационная формула метода хорд имеет вид:

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

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

Для наилучшей сходимости метода в точке очередного приближения должно выполняться условие . Решение данного уравнения ищут в виде , тогда:

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

С учётом этого функция определяется выражением:

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

Расчеты в математическом пакете Mat lab

В математическом пакете по условию задания был построен график функции и найден корень уравнения с использование символьного решения(solve ) и в численном виде используя встроенные функции: fzero и fsolve . Для описания моей функции использовала файл-функцию.

На следующем рисунке представлен графи функции:


Для записи команд использовала
M -файл:


В командном окне были получены следующие результаты:

r 1 =

r 2 =

r 3 =

r 4 =

8.0000

r5 =

7.9979 -8.0000


Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.

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

Результаты расчета с использованием Побора Параметра

x =-9 (исходя из диаграммы)

В результате использования Подбора Параметра был найден корень x =-8,01.


Результаты расчета с использованием Поиска Решений

В качестве начального приближения был выбран x =-9 (исходя из диаграммы)


После выполнения был получен следующий результат:

Поиск решения дал мне значение x = -8,00002


Описание приложения созданного в среде Delphi.

При создании приложения в среде Delphi в интерфейсе был предусмотрен вывод вида функции и графика. Нахождение корня нелинейного уравнения было реализовано с использование трех методов: Метод дихотомии, Метод Хорд и Метод Ньютона. В отличии от расчета в Excel , где корни находились с помощью подбора параметров и поиска решения, в программе предусмотрен ввод точности вычисления пользователем. Результаты расчета выводятся как в окно приложения так и в текстовый файл.


Блок – схемы реализующие численные методы

Блок-схема для метода дихотомии:


Блок-схема для метода хорд:


Блок-схема для метода Ньютона:

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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Menus, OleCtnrs,

StdCtrls, AxCtrls, OleCtrls, VCF1, Math;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

OleContainer2: TOleContainer;

MainMenu1: TMainMenu;

N1: TMenuItem;

Chart1: TChart;

Series1: TPointSeries;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

Edit1: TEdit;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

Label2: TLabel;

Label3: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label4: TLabel;

Edit5: TEdit;

Label5: TLabel;

Edit7: TEdit;

Label7: TLabel;

F1Book1: TF1Book;

F1Book2: TF1Book;

F1Book3: TF1Book;

F1Book4: TF1Book;

Procedure N1Click(Sender: TObject);

Procedure N3Click(Sender: TObject);

Procedure FormCreate(Sender: TObject);

Procedure N4Click(Sender: TObject);

Procedure N5Click(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

End;

const

xmin:real=-20;

xmax:real=20;

Form1: TForm1;

X,y,t,a,b,cor:real;

I,n:integer;

Fail:textfile;

implementation

{$R *.dfm}

function f(x:real):real;

begin

f:=(8+x)/(x*sqrt(sqr(x)-4));

end;

function f1(x:real):real;

begin

f1:=(-power(x,3)-16*x*x+32)/(x*X*sqrt(power(x*x-4,3)));

end;

procedure metoddix(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:=(ta+tb)/2;

kolvo:=kolvo+1;

Form1.F1book1.NumberRC:=xk;

Form1.F1book1.NumberRC:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodhord(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)*(ta-tb)/(f(ta)-f(tb));

kolvo:=kolvo+1;

Form1.F1book2.NumberRC:=xk;

Form1.F1book2.NumberRC:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodnyutona(ta,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)/f1(ta);

ta:=xk;

kolvo:=kolvo+1;

Form1.F1book3.NumberRC:=xk;

Form1.F1book3.NumberRC:=f(xk);

until (abs(f(xk))<=eps);

end;

procedure TForm1.N1Click(Sender: TObject);

begin

x:=xmin;

i:=0;

while x<=xmax do

begin

if abs(x)>5 then

Begin

I:=i+1;

Y:=f(x);

Series1.Addxy(x,y);

F1book4.NumberRC:=x;

F1book4.NumberRC:=y;

End;

x:=x+0.5;

end;

end;

procedure TForm1.N3Click(Sender: TObject); // Вычисление корня методом половинного деления

begin

F1book1.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit2.Text);

b:=strtofloat(Edit3.Text);

metoddix(a,b,t,cor,n);

F1book4.TextRC:=" дихотомия ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом дихотомии ");

closefile(fail);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Assignfile(fail," отчет .txt");

Rewrite(fail);

Closefile(fail);

end;

procedure TForm1.N4Click(Sender: TObject); // Вычисление корня методом хорд

begin

F1book2.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit5.Text);

b:=strtofloat(Edit4.Text);

metodhord(a,b,t,cor,n);

F1book4.TextRC:=" хорды ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Assignfile(fail," отчет .txt");

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом хорд ");

writeln(fail,"Точность расчета = ",t:10:7);

Writeln(fail,"Начальное приближение:a = ",a:8:3," b = ",b:8:3);

writeln(fail, " Найден корень : x = ",cor:8:3, " y=f(x)= ",f(cor):8:6);

writeln(fail, "Количество итераций = ",n);

closefile(fail);

end;

procedure TForm1.N5Click(Sender: TObject); // Вычисление корня методом Ньютона

begin

F1book3.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit7.Text);

metodnyutona(a,t,cor,n);

F1book4.TextRC:=" Ньютона ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Assignfile(fail," отчет .txt");

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом Ньютона ");

writeln(fail,"Точность расчета = ",t:10:7);

Writeln(fail,"Начальное приближение:a = ",a:8:3," b = ",b:8:3);

writeln(fail, " Найден корень : x = ",cor:8:3, " y=f(x)= ",f(cor):8:6);

writeln(fail, "Количество итераций = ",n);

Closefile(fail);

end;

end.


Изображение окна приложения

Первоначальный интерфейс имеет следующий вид:

После выполнения расчетов при E <= 0,001:

В качестве отчета был сформирован файл «Отчет. txt .»:


Анализ полученных результатов

В соответствии с заданием на курсовую работу в математическом пакете мною был найден корень нелинейного уравнения (x =-8) и построен график.

В электронных таблицах был найден корень уравнения с помощью двух встроенных возможностей «Подбор параметра» и «Поиск решения» , при этом «Поиск решения» все же дал более точное значение. Результаты практически совпали с результатами в Matlab .

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

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


Литература.

  1. Амосов А.А. и др. вычислительные методы для инженеров М., Высшая школа, 1994.
  2. Фаронов В.В. Delphi. Программирование на зыке высокого уровня

3 . Уокенбах Д . Microsoft Office Excel 2007. Библия пользователя

Волков В.Б. Понятный самоучитель Excel 2010