Лабораторные работы / Отчеты / Решение уравнения с одним неизвестным - Епишкин - Вариант 4 - Лупейко - 2008 / Ур-я с одним неизвестным(витя)
.docРоссийский химико-технологический университет им. Д.И.Менделеева
Кафедра вычислительной математики
ОТЧЕТ
РЕШЕНИЕ УРАВНЕНИЯ С ОДНИМ НЕИЗВЕСТНЫМ
Вариант 4
Выполнил: Лупейко В.В. гр. И-24
Проверил: Епишкин А.П.
Москва 2008
Дано уравнение в виде , где некоторая функция переменной . Число называется корнем или решением данного уравнения, если при подстановке в уравнение последнее обращается в тождество. . Число называют также нулем функции .
В общем случае уравнение может иметь одно или несколько корней, как действительных, так и комплексных. Нахождение действительных корней с заданной точностью можно разбить на два этапа. Сначала корни отделяются, т.е. определяются отрезки, которые содержат по одному корню уравнения, а затем вычисляются с требуемой точностью . Отделение корней уравнения , в области определения, непрерывной функции, можно осуществлять несколькими способами:
-
Табулированием - составлением таблицы из равноотстоящих значений независимой переменной и соответствующих значений функции и определение отрезков в которых смежные значения функции имеют различные знаки и следовательно содержат нулевые значения функции.
-
Построением графика функции. Определение минимальных отрезков, включающих точки пересечения графика функции с осью 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