
Word / Ур-я с одним неизвестным
.docРоссийский химико-технологический университет им. Д.И.Менделеева
Кафедра вычислительной математики
ОТЧЕТ
РЕШЕНИЕ УРАВНЕНИЯ С ОДНИМ НЕИЗВЕСТНЫМ
Вариант 17
Выполнил: Павлов В.А.. гр. И-24
Проверил: Епишкин А.П.
Москва 2006
Дано уравнение
в виде
,
где
некоторая функция переменной
.
Число
называется
корнем или решением данного уравнения,
если при подстановке
в
уравнение последнее обращается в
тождество.
.
Число
называют
также нулем функции
.
В общем случае
уравнение может иметь одно или несколько
корней, как действительных, так и
комплексных. Нахождение действительных
корней с заданной точностью можно
разбить на два этапа. Сначала корни
отделяются, т.е. определяются отрезки,
которые содержат по одному корню
уравнения, а затем вычисляются с требуемой
точностью
.
Отделение корней уравнения
,
в области определения, непрерывной
функции
,
можно осуществлять несколькими способами:
-
Табулированием - составлением таблицы из равноотстоящих значений независимой переменной и соответствующих значений функции и определение отрезков в которых смежные значения функции имеют различные знаки и следовательно содержат нулевые значения функции.
-
Построением графика функции. Определение минимальных отрезков, включающих точки пересечения графика функции с осью 0x.
Уточнение корня
на отрезке
,
в котором локализован только один
корень, осуществляется итерационными
методами, в которых последовательно,
шаг за шагом, производится уточнение
начального приближения корня. Итерацией
называется совокупность вычислительных
операций, приводящих к новому приближенному
значению корня. Если каждое последующее
значение находится все ближе к точному
значению, говорят, что метод сходится.
В противном случае метод расходится.
Поэтому возникает необходимость
исследования сходимости итерационного
метода.
Общая итерационная формула вычисления очередного приближения имеет следующий вид
,
где
За начальное приближение
принимают
значение внутри заданного отрезка. Все
методы уточнения корней различаются
способами вычисления поправки
.
Метод половинного деления.
В этом методе на каждой итерации отрезок содержащий корень делится пополам и за новый отрезок для уточнения принимается одна из половин.
Алгоритм:
1. Задаем функцию,
отрезок
и точность
.
2. За начальное
приближение принимаем левую границу
отрезка
,
т.е.
3. Вычисляем
поправку
и
новое приближение
4. Если,
то
– корень.
5. В противном
случае, определяем новый отрезок
.
Проверяем, если
,
то
и
,
иначе
,
то
и
.
Далее проверяем условие окончания,
если
,
то за ответ принимаем значение равное
и переходим на пункт 6, иначе переходим
на пункт 2.
6. Выводим
и
.
Блок-схема:
Метод Ньютона или касательных.
В этом методе,
на каждой итерации, за новое приближение
к корню
принимается
точка пересечения касательной к графику,
построенной в точке
с осью
.
За начальное приближение к корню
принимаем
одну из границ отрезка
,
содержащего один корень. Если новое
приближение выходит за границы интервала,
то надо выбрать новое начальное
приближение и если это не помогает надо
попробовать уменьшить отрезок поиска
в два раза и повторить поиск методом
Ньютона.
Алгоритм.
1. Задаем функцию
,
отрезок
и точность
.
За начальное приближение
принимаем одну из границ заданного
отрезка
.
2. Вычисляем
приращение значение шага
,
как
и новое
приближение, как
.
3. Проверяем
если
,
то
и повторяем с пункта 2.
4. Иначе проверяем
условие окончания, если
,
то выводим последнее значение
и
.
Иначе перейдем на пункт 2
Блок-схема
Метод простых итераций.
Пусть задано
нелинейное уравнение
и отрезок
,
который включает корень данного
уравнения, т.е.
и точность
,
с которой требуется уточнить значения
корня.
Преобразуем
исходное уравнение к эквивалентному
виду
.
Последовательность
будем называть итерационной, где
выражается
через элемент
по
рекуррентной формуле
,
т.е.
,
,
за
принимают
любое число на заданном отрезке
.
Говорят, что итерационный метод сходится,
если последовательность
имеет предел при
.
Для определения условия сходимости
определим
и применим теорему о среднем, тогда
.
Необходимо чтобы модуль разности
был меньше чем
,
а это справедливо только при
,
т.е. максимальная
производная на
заданном отрезке должна быть меньше
единицы. Так для решения квадратного
уравнения
можно положить
или
и соответствующие итерационные формулы
будут иметь вид
и
.
В первом случае метод не сходится, а во
втором сходится.
Общий подход
для получения итерационной формулы
:
помножим обе части уравнения на множитель
,
получим
и прибавим к обеим частям по
.
Окончательная итерационная формула
будет иметь вид
.
Функция:
;
ее производная:
;
;
;
.
Мы должны выбрать
максимальную по модулю производную на
заданном отрезке. Тогда, если
,
то
,
иначе
.
Блок-схема:
Программа по методу половинного деления, методу Ньютона или касательных,
методу простых итераций
Private Sub CommandButton4_Click()
Dim i As Byte, 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) = "X(i)"
Cells(i + 2, 1) = i
Cells(i + 2, 2) = x(i)
Next i
For i = 0 To 20
f(i) = x(i) ^ 3 - 1.668 * x(i) ^ 2 - 9.966 * x(i) + 5.16
Cells(1, 3) = "f(i)"
Cells(i + 2, 3) = f(i)
Next i
End Sub
Function f!(x!)
f = x ^ 3 - 1.668 * x ^ 2 - 9.966 * x + 5.16
End Function
‘метод половинного деления
Private Sub CommandButton1_Click()
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 * 1.668 * x - 9.966
End Function
‘метод Ньютона или касательных
Private Sub CommandButton2_Click()
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 CommandButton3_Click()
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