Скачиваний:
20
Добавлен:
07.01.2014
Размер:
255.49 Кб
Скачать

Российский химико-технологический университет им. Д.И.Менделеева

Кафедра вычислительной математики

ОТЧЕТ

РЕШЕНИЕ УРАВНЕНИЯ С ОДНИМ НЕИЗВЕСТНЫМ

Вариант 4

Выполнил: Лупейко В.В. гр. И-24

Проверил: Епишкин А.П.

Москва 2008

Дано уравнение в виде , где некоторая функция переменной . Число называется корнем или решением данного уравнения, если при подстановке в уравнение последнее обращается в тождество. . Число называют также нулем функции .

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

  1. Табулированием - составлением таблицы из равноотстоящих значений независимой переменной и соответствующих значений функции и определение отрезков в которых смежные значения функции имеют различные знаки и следовательно содержат нулевые значения функции.

  2. Построением графика функции. Определение минимальных отрезков, включающих точки пересечения графика функции с осью 0x.

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

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

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

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

В этом методе на каждой итерации отрезок содержащий корень делится пополам и за новый отрезок для уточнения принимается одна из половин.

Алгоритм:

1. Задаем функцию, отрезок и точность .

2. За начальное приближение принимаем левую границу отрезка , т.е.

3. Вычисляем поправку и новое приближение

4. Если, то – корень.

5. В противном случае, определяем новый отрезок . Проверяем, если , то и , иначе , то и . Далее проверяем условие окончания, если, то за ответ принимаем значение равное и переходим на пункт 6, иначе переходим на пункт 2.

6. Выводим и .

Блок-схема:

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

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

Алгоритм:

1. Задаем функцию , отрезок и точность . За начальное приближение принимаем одну из границ заданного отрезка .

2. Вычисляем приращение значение шага , как и новое приближение, как .

3. Проверяем если , то и повторяем с пункта 2.

4. Иначе проверяем условие окончания, если , то выводим последнее значение и . Иначе перейдем на пункт 2

Блок-схема

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

Пусть задано нелинейное уравнение и отрезок , который включает корень данного уравнения, т.е. и точность , с которой требуется уточнить значения корня.

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

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

Общий подход для получения итерационной формулы : помножим обе части уравнения на множитель , получим и прибавим к обеим частям по . Окончательная итерационная формула будет иметь вид . Функция: ; ее производная: ;

;

;

.

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

Блок-схема:

Программа по методу половинного деления, методу Ньютона или касательных,

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

Private Sub ()

Dim i%, x!(21), f!(21), h!, e!, s!, a!, b!, Fa!, Fb!, k!, Fk!, R!, bet!, xn!

e = 0.01

h = 0.5

s = -5

For i = 0 To 20

x(i) = s

s = s + h

Cells(1, 1) = "i"

Cells(1, 2) = "х(i)"

Cells(i + 2, 1) = i

Cells(i + 2, 2) = x(i)

Next i

For i = 0 To 20

f(i) = x(i)^3+3.952*x(i)^2-5.690*x(i)-12.788

Cells(1, 3) = "f(i)"

Cells(i + 2, 3) = f(i)

Next i

End Sub

Function f!(x!)

f = x^3+3.952*x^2-5.690*x-12.788

End Function

‘метод половинного деления

Private Sub Half()

Dim a!, b!, e!, x!, h!

a = Cells(6, 2)

b = Cells(7, 2)

e = Cells(24, 2)

met1:

x = a

h = (b - a) / 2

x = x + h

If f(x) = 0 Then GoTo met2 Else GoTo met3

met3:

If f(a) * f(x) > 0 Then a = x Else b = x

If Abs(h) > 2 * e Then GoTo met1 Else x = (b + a) / 2

met2:

Cells(2, 5) = x

Cells(2, 6) = f(x)

End Sub

Function fp!(x!)

fp = 3*x^2–2*3.952*x-5.690

End Function

‘метод Ньютона или касательных

Private Suи Newton()

Dim a!, b!, e!, x!, h!

a = 0.3

b = Cells(13, 2)

e = Cells(24, 2)

Do

x = a

h = f(x) / fp(x)

x = x - h

If a <= x And x <= b Then GoTo met2 Else Cells(3, 5) = "Задать новое начальное приближение": GoTo met1

Loop While Abs(h) >= e

met2:

Cells(3, 5) = x

Cells(3, 6) = f(x)

met1:

End Sub

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

Private Sub Iteration()

Dim a!, b!, h!, x!, bet!

a = Cells(19, 2)

b = Cells(20, 2)

e = Cells(24, 2)

If Abs(fp(b)) > Abs(fp(a)) Then bet = -2 / fp(b): x = b Else bet = -2 / fp(a)

met1:

h = bet * f(x)

x = x + h

If a >= x And x >= b Then Cells(4, 5) = "Задать новое значение" Else

If Abs(h) <= e Then Cells(4, 5) = x: Cells(4, 6) = f(x) Else GoTo met1

End Sub