Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Решение нелинейных уравнений_МУ и варианты

.pdf
Скачиваний:
21
Добавлен:
29.03.2015
Размер:
892.19 Кб
Скачать
F(x)=ax2+bx+c

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

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

В различных инженерных и исследовательских задачах часто возникает необходимость нахождения одного или нескольких решений уравнений вида

F(x)=0 ( 1 )

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

( 2 )

определяет множество многочленов второго порядка. Описание многочлена содержит одну независимую переменную – аргумент x, значения которой принадлежат диапазону [X0 , Xk] и три параметра a, b, c, не зависящие друг от друга.

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

Решениями или корнями уравнения (1), называются значения аргумента

х, обращающие равенство (1) в тождество.

Функции F(x) могут быть алгебраическими или трансцендентными [1]. Алгебраическими называются уравнения, которые путем алгебраических преобразований могут быть приведены к канонической полиномиальной форме

P ( x ) a

0

a x a

x2 a

n 1

xn 1

a

xn

( 3 )

n

1

2

 

 

n

 

 

В общем случае аналитическое решение может быть получено для алгебраических уравнений не выше четвёртого порядка [4]. Существуют аналитические формулы для решения:

-

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

a x+b=0 (или a0 + a1 x = 0);

-

квадратных уравнений a x2 + b x + c = 0 (или a0 + a1 x + a2 x2= 0);

-

кубичных уравнений

a0 + a1 x + a2 x2 + a3 x3 = 0 и

-

уравнений четвертой степени a0 + a1 x + a2 x2 + a3 x3 + a4 x4 = 0.

Так для линейного уравнения a x+b=0 существует одно очевидное решение x=b ∕ a при a ≠ 0.

Для квадратного уравнения a x2

+ b x + c = 0 в

зависимости

от значения

детерминанта D=(b2 – 4 a c)

решения

находятся

по

 

алгоритму,

определяемому соотношениями приводимыми ниже:

 

 

 

 

 

 

b

 

 

 

 

 

 

 

если D >0, то x1,2

 

D ,

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

если D=0, то

 

 

x1 x2

 

b

,

( 4 )

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

1

если D<0, то

x

 

b

i

 

D

 

.

 

 

 

 

1,2

 

2a

 

2a

 

 

 

 

Описание алгоритмов решения кубичных уравнений и уравнений четвертой степени имеется в [3] и [4].

Постановка задачи нахождения корней нелинейных уравнений

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

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

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

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

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

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

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

и нахождение решений для этой аналитической функции.

Общий подход к решению нелинейных уравнений

Численное решение нелинейного уравнения обычно осуществляется в 2 этапа:

1 этап отделение корней состоит в выделении на заданном интервале изменения аргумента [X0 , Xk] подынтервалов, содержащих только один корень. Для отделения корней обычно выполняется вычисление таблицы значений функции и (или) построение её графика;

2 этап - уточнение корней выполняется на каждом промежутке, содержащем один корень, выделенном на первом этапе исследования поведения функции. Для уточнения значения корня выбирается один из

2

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

Первый этап исследования функции предусматривает проведение анализа её поведения по графику и (или) по таблице её значений.

Исследование функции F(x) обычно выполняется в пределах ограниченного диапазона значений [X0, Xk], определяемого исходя либо из каких-то инженерных соображений, либо по имеющимся предварительным данным.

В качестве примера, рассмотрим процедуру выполнения первого шага алгоритма решения нелинейного уравнения для функции F(x), график которой приведён на рис. 1. На основании этого рассмотрения сделаем очевидные выводы для постановки задачи нахождения решений этой функции.

Рис. 1. График исследуемой функции F(x)

Из определения следует, что корень - это точка пересечения графика функции с осью абсцисс. В точках, являющихся корнями функции, происходит смена знака функции (см. рис. 1). На приведённом графике находится 4 корня функции F(x).

Корни функции находятся в пределах подынтервала [xi,xi+1], на границах которого функция меняет знак.

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

решения по значению шага h =(xi+1-xi), использованного при построении графика исследуемой функции, определяющего значение интервала неопределённости, задаваемого таблицей.

Решение можно считать найденным, если

| F(x) | ,

( 5 )

где - некоторая положительная вещественная константа, либо, если

 

| h | = |(xi+1-xi)| .

( 6 )

- требуемое значение интервала неопределённости, в пределах которого находится точка перемены знака функцией F(x), т.е. выполняется условие

3

F(xi)* F(xi+1) 0.

( 7 )

 

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

На рис. 2 показана функция, для которой решение нельзя считать найденным, не смотря на то, что выполнено условие (5). Диапазон значений Х, в пределах которого выполняется условие (5) [0,4; 1,5]. Длина интервала неопределённости в этом случае равна (1,5-0,4)=1,1. Очевидно, что в этом случае нельзя считать корень найденным, хотя значения F(x) в этом интервале удовлетворяют условию (5).

X

F(X)

+eps

-eps

0,1

-0,5000000

0,065

-0,065

0,2

-0,3000000

0,065

-0,065

0,3

-0,1000000

0,065

-0,065

0,4

-0,0500000

0,065

-0,065

0,5

-0,0250000

0,065

-0,065

0,6

-0,0125000

0,065

-0,065

0,7

-0,0062500

0,065

-0,065

0,8

-0,0003125

0,065

-0,065

0,9

-0,0001550

0,065

-0,065

1

0,0001550

0,065

-0,065

1,1

0,0003125

0,065

-0,065

1,2

0,0062500

0,065

-0,065

1,3

0,0125000

0,065

-0,065

1,4

0,0250000

0,065

-0,065

1,5

0,0500000

0,065

-0,065

1,6

0,1000000

0,065

-0,065

1,7

0,3000000

0,065

-0,065

1,8

0,5000000

0,065

-0,065

 

F(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0,2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0,3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

1,1

1,2

1,3

1,4

1,5

1,6

1,7

1,8

Рис. 2.

На рис. 3. показаны функции, для которых нельзя считать решение найденным, не смотря на выполнение условия (6). В частности к таким функциям относятся функции, имеющие разрывы, в которых имеется перемена знака функции.

Х

F2(X)

-3,5

2,670

-3,4

3,783

-3,3

6,260

-3,2

17,102

-3,1

-24,029

-3,0

-7,015

-2,9

-4,058

-2,8

-2,813

-2,7

-2,115

-2,6

-1,662

 

Tan(X+Pi/2)

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

-5

 

 

 

 

 

 

 

 

 

-10

 

 

 

 

 

 

 

 

 

-15

 

 

 

 

 

 

 

 

 

-20

 

 

 

 

 

 

 

 

 

-25

 

 

 

 

 

 

 

 

 

-3,5

-3,4

-3,3

-3,2

-3,1

-3,0

-2,9

-2,8

-2,7

-2,6

Рис. 3 Пример функции с разрывом в интервале [-3,2; -3,1]

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

Для оценки правильности получаемого решения вводятся критерии (5) и (6), позволяющие оценить его точность.

4

Методы уточнения корней

При проведении процедуры отделения корней на заданном интервале изменения аргумента [Xнач ; Xкон] выделяется один или несколько подынтервалов [aj, bj] (j=1,2, …, m), на границах которых исследуемая функция меняет знак.

Уточнение корней выполняется после отделения корней. На каждом, выделенном в результате проведения процедуры отделения корней, интервале [aj, bj] находится один корень, значение которого необходимо уточнить с точностью, определяемой условиями

| F(x) | ,

( 5 )

или

 

| h | = |(xi+1-xi)| .

( 6 )

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

Метод дихотомии

 

Метод

 

дихотомии

 

1

Ввод

 

параметров

 

 

a, b,δ

 

2

 

 

c:=(a+b)/2

 

3

 

да

нет

 

F(a)F(c)<0?

 

4

 

5

a:=c

 

b:=c

6

 

 

| b-a | > δ

да

 

Блок-схема алгоритма метода дихотомии может быть дополнена диаграммой последовательных шагов, выполняемых для уменьшения интервала неопределённости. Эта диаграмма приведена на рис. 5.

нет

7

с:=(a+b)/2 dx:=(b-a)/2

8 вывод

с,F(с),dx

конец

Рис. 4. Блок-схема алгоритма метода дихотомии

Рис. 5 Если значения функции в

точках х=a и x=c имеют одинаковый знак, то левая граница a переносится в точку c, как это показано на рис. 5.

5

Если длина интервала неопределённости (b-a) больше, чем заданная параметром δ точность определения корня (блок 6 рис. 4), то повторяются операции, реализуемые в блоках 2, 3, 4 или 5. Значение c определяет значение корня уравнения, а F(c) значение функции в найденном корне.

Этот цикл повторяется до тех пор, пока длина интервала [a; b] больше чем δ. Как только |b-a| становится меньше, либо равен δ (блок 6 рис. 4), корень считается найденным. Его значением считается значение х, находящееся в середине последнего интервала [a; b] (блок 8 рис. 4). На экран выводится строка, содержащая значения корня х, значение функции F(х) в этой точке и параметр dx, определяющий возможную погрешность полученного решения. Рассмотрим реализацию метода дихотомии в среде программы Microsoft Excel на примере нахождения корня функции F(x)=5*sin(x+a)-b*x2 в пределах заданной области допустимых значений аргумента х.

Интервал, в пределах которого требуется найти корень функции F(x), задан граничными значениями аргумента Х0 = 0 и Xk = 4. Точность, с которой требуется найти решение, определяется заданным значением параметра δ = 0,001.

Выполним предварительный анализ функции F(x) вычислив таблицу её значений в определённом значениями Х0, Xk. Шаг изменения аргумента dX возьмём равным 0,25. Для наглядности по полученным числовым значениям функции построим график.

Рис. 6 Таблица значений и график функции F(x)=5*sin(x+a)-b*x2 , полученные на этапе предварительного исследования функции

6

Анализируя таблицу значений функции, мы видим, что искомое решение находится в пределах интервала значений аргумента х, определяемого границами [2,00; 2,25].

Для удобства дальнейшей работы запишем на VB реализацию функции F(x):

Вменю Сервис выбираем команду Макрос ► и далее команду Редактор Visual Basic (или просто нажимаем клавиши Alt + F11).

При первом обращении к программе Microsoft Visual Basic в основном меню выполняем команду Insert. Для записи функций пользователя необходимо создать модуль, выполнив для этого в меню Insert команду Module.

После создания модуля повторно открываем меню Insert и выбираем в нём команду Procedure. В открывающемся при выполнении этой команды окне Add Procedure в поле ввода Name вводим имя создаваемой процедуры, а в групповом поле Type включаем кнопку переключателя Function.

Назовём создаваемую нами функцию Fsin.

Вокне редактора Visual Basic открывается заготовка текста создаваемой функции, которую мы дополним необходимыми операторами. Окончательно текст этой функции будет иметь следующий вид:

Public Function Fsin(a, b, x) Fsin = 5 * Sin(x + a) - b * x ^ 2 End Function

Создадим таблицу для уточнения корня уравнения F(x)=5 sin(x+a)-b x2 в выделенном интервале [2,00; 2,25]. Формат её заголовка показан на рис. 7.

Рис.7. Заголовок таблицы для реализации алгоритма метода дихотомии

Вячейки 25-й строки записываются формулы, обеспечивающие формирование первой строки таблицы, в которой будет реализован метод дихотомии. Так в ячейку А25 записывается формула "=В23" - ссылка на ячейку, в которой записано значение аргумента Х0, соответствующее левой границе выделенного интервала неопределённости. В ячейку В25 записывается формула "=D23" - ссылка на ячейку, в которую записано значение правой границы выделенного интервала неопределённости.

Вячейку С25 записывается формула, по которой вычисляется значение аргумента Х, определяющее срединную точку интервала неопределённости:

=(А25+В25)/2

Формула, по которой вычисляется значение функции F(x) в точке а, определяющей левую границу выделенного интервала неопределённости записывается в ячейку D25.

Обращение к функции Fsin выполняется через мастер функций программы Microsoft Excel. Функция Fsin выбирается из категории функций определённых пользователем.

7

На рис. 8 показано окно второго шага мастера функций, вызываемого при формировании обращения к функции Fsin.

Рис. 8. Окно второго шага мастера функций для функции Fsin()

Вполе ввода Alfa этого окна записывается абсолютная ссылка $E$22 на ячейку Е22, в которую записано значение параметра функции .

Вполе ввода Beta записывается абсолютная ссылка $H$22 на ячейку H22,

хранящую значение параметра функции . В поле ввода X записывается относительная ссылка A25 на ячейку таблицы, в которой находится текущее значение аргумента х. После нажатия кнопки ОК в ячейку D25 записывается формула

=Fsin($E$22;$H$22;A25),

обеспечивающая вычисление значения функции F(a).

Для вычисления значений функции в точках b и Хср достаточно протянуть формулу, записанную в ячейку D25, по ячейкам Е25 и F25.

В ячейку G25 запишем формулу для определения текущей длины интервала неопределённости

=ABS(B25-A25)

В ячейку H25 запишем формулу, проверки условия (6):

=ЕСЛИ(G25<$F$23;"корень="&ТЕКСТ($C25;"0,000000");"----")

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

=ЕСЛИ(D25*F25<0;A25;C25),

а в ячейку В26 формула

=ЕСЛИ(D25*F25<0;C25;B25).

Для записи формул во все остальные ячейки 26-й строки таблицы выделяем ячейки 25-й строки таблицы от ячейки С25 до ячейки Н25 и протягиваем формулы этой строки на строку 26.

8

Для завершения вычислительного процесса выделяем ячейки 26-й строки от А26 до Н26 и протягиваем вниз по строкам до достижения решения.

На рис. 9 показан фрагмент таблицы и некоторые формулы, записываемые в её ячейки.

Рис. 9.

На рис. 10 показана полная таблица решения уравнения методом дихотомии. В строке 34 этой таблицы приведены результаты решения, полученные после применения функции, в которой метод дихотомии реализован на языке Visual Basic. Текст этой функции приведён ниже.

Рис. 10. Результаты уточнения корня методом дихотомии

Текст функции VBA, реализующей алгоритм метода дихотомии.

Function Dixotomia(a As Double, b As Double, delta As Double, alfa As Double, beta As Double)

Dim i As Integer ' i - счётчик числа итераций

Dim c As Double

If Fsin(alfa, beta, a) * Fsin(alfa, beta, b) > 0 Then

MsgBox ("Интервал [a, b] выбран неправильно")

Exit Function End If

i = 0 Do

c = (a + b) / 2

If Fsin(alfa, beta, a) * Fsin(alfa, beta, c) < 0 Then b = c Else a = c i = i + 1

9

Loop Until Abs(b - a) < delta

Dixotomia = (a + b) / 2

End Function

Метод хорд

Метод хорд [5] так же, как и метод дихотомии, предназначен для уточнения корня на интервале, определённом при проведении процедуры отделения корней. На концах этого интервала [a, b] исследуемая функция имеет значения F(a) и F(b) с разными знаками. Очередное приближение, определяемое в методе хорд, находится в точке пересечения оси абсцисс прямой, соединяющей точки F(a) и F(b).

Рис. 11. Диаграмма алгоритма метода хорд

Координата этой точки определяется из уравнения прямой, соединяющей точки F(a) и F(b). Определив уравнение прямой как функцию

Y(X) = kX+D,

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

F(a)=ka+D,

F(b)=kb+D.

Решая эту систему, определим значения параметров k и D

k

F (b) F (a)

,

D F (a) ka

b a

 

 

 

При условии Y(c)= kc+D=0 определяем значение с:

 

b a

 

b a

(7)

 

 

 

 

 

 

с a F (b) F (a) F (a)

или c b F (b) F (a) F (b)

 

Результаты применения метода хорд для уточнения значения корня в выделенном интервале [2,00; 2,25] приведены на рис. 12. Решение получено после выполнения трёх итераций.

10