Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-Численные методы.doc
Скачиваний:
49
Добавлен:
22.08.2019
Размер:
2.82 Mб
Скачать

Последовательность решения задачи.

Пример. Найти корень уравнения x + ln x = 0 методом итераций с точностью = 0,01 и = 0,001 для двух отрезков локализации корня: с параметром q < 0,5 и q > 0,5. Для каждого из отрезков провести расчет для 3-х начальных приближений: границ и середины отрезка локализации корня. Для каждого расчета определить приближенное значение корня x* уравнения, число итераций k до достижения заданной точности, фактическое отклонение от точного решения .

Вид листа MS Exsel для решения задачи представлен на рисунке.

1. Область определения: x > 0.

2. Находится отрезок области определения, содержащий корень уравнения. В качестве левой границы примем значение x = 0,1, которое вносим в ячейку А4. В ячейку B4 вносим формулу: "=A4+LN(A4)", позволяющую вычислить значение функции f(x) = x + ln x по заданному в ячейке B4 аргументу. Значения функции f(x) вычисляются с шагом x = 0,5 до тех пор, пока не будет найден отрезок, на концах которого функция f(x) принимает значения разных знаков. Для реализации этой процедуры можно использовать копирование формулы из ячейки В4 в ячейку В5. В рассматриваемом примере искомый отрезок x [0,1; 0,6] области определения, содержащий корень функции f(x), найден за один шаг x = 0,5 аргумента. Если требуется найти отрезок локализации корня меньшей длины, то может потребоваться несколько итераций до тех пор, пока на границах отрезка значение функции не примет значения разных знаков. В частности, если необходимо найти отрезок локализации длиной x = 0,2, то потребуется три итерации на последовательных отрезках [0,1; 0,3], [0,3; 0,5], [0,5; 0,7]. Для последнего отрезка получены значения функции на его концах, равные f(0,5) = -0,19315 и f(0,7) = 0,343325.

3. Вычисляется производная функции f(x): . Производная и является убывающей функцией. Поэтому минимум модуля производной достигается на правой границе отрезка локализации корня, а максимум – на левой границе. В ячейке D6 вычисляется минимальное значение модуля производной m, соответствующее x = 0,6, по формуле "=ABS(1+1/A5)". В ячейке D7 вычисляется максимальное значение модуля производной M, соответствующее x = 0,1, по формуле "=ABS(1+1/A4)".

4. По формуле определяется коэффициент уменьшения погрешности за одну итерацию. Для этого в ячейку В8 вводится формула "=1-D6/D7". Значение q = 0,7576 < 1 является достаточным условием сходимости итерационного алгоритма.

5. По формуле определяется корректирующий множитель. Для этого в ячейку В9 вводится формула "=-1/D7".

6. Итерационный алгоритм реализуется в соответствии с формулой:

xk+1 = g(xk), где g(xk) = xk + f(xk), k = 0, 1, 2, …

Так как q > 0,5, то оценка точности на итерации k + 1 осуществляется по формуле: dk+1 = - xk+1 10 xk - xk+1.

Оформляется строка заголовков для реализации итерационной процедуры, используя следующие обозначения: А10 = "№" (номер итерации), В10 = "х" (текущее приближение корня), С10 = "f(x)" (значение исследуемой функции), D10 = "g(x)" (значение вспомогательной функции), Е10 = "dx" (оценка точности на текущей итерации).

Программируется первая итерация: ячейка A11 = "1" (номер 1-ой итерации), B11 = "0.35" (начальное приближение корня – любое число из выделенного отрезка x [0,1; 0,6]), С11 = "=B11+LN(B11)" (значение функции f(x)), D11 = "=B11+$B$9*C11" (значение функции g(x)), ячейка Е11 = "=10*ABS(B11-D11)" (оценка точности 1-ой итерации). Используется безусловная ссылка на ячейку В9, содержащая значение неизменяемого при протяжке формул параметра .

Программируется вторая итерация: ячейка А12 = "2" (номер 2-ой итерации), B12 = "=D11" (результат 1-ой итерации x1 = g(x0 )), в диапазон C12:Е12 копируются (протягиваются) формулы из диапазона C11:Е11.

Для реализации остальных итераций в столбцы В ниже строки 12 протягиваем формулы из диапазона В12:Е12, номера итераций можно получить протяжкой диапазона А11:А12 вниз по столбцу А. В качестве решения принимается значение в столбце B из строки, в которой оценка точности текущей итерации (столбец Е) стала меньше заданной точности . Точное решение можно определить, протягивая формулы вниз до тех пор, пока значение функции f(x) не станет равным 0. В рассматриваемом примере корень уравнения равен = 0,567143.

Для расчета фактического отклонения решения от точного значения в ячейку F9 внесем найденную величину = 0,567143. Записываем заголовок столбца F10 = "Фактическое отклонение". Вносим формулу расчета отклонения: F11 = "=ABS(D11-$F$9)" ( - xk). Следующие ячейки столбца F заполняются протяжкой формулы из ячейки F11. Используется безусловная ссылка на ячейку F9, содержащая значение неизменяемого при протяжке формул точного значения корня .

Изменяя начальное приближение в ячейке В11 можно определять приближенное значение корня (столбец D), фактическое отклонение от точного решения (столбец F), число реализованных итераций (столбец А). В рассматриваемом расчете приближенное значение корня с точностью = 0,01 равно x* 0,564775, достигается за 15 итераций, фактическое отклонение - xk=0,002368. Приближенное значение корня с точностью = 0,001 равно x* 0,56691, достигается за 23 итераций, фактическое отклонение - xk=0,000234.

Если , то вспомогательная функция имеет вид g(xk) = xk - f(xk). При программировании рабочего листа для итерационной процедуры надо изменить формулу в ячейке D11 = "=B11-$B$9*C11". Остальные ячейки остаются без изменения по сравнению со случаем .