Файл: Определение корня одномерного уравнения методом простой итерации.doc
Добавлен: 29.10.2018
Просмотров: 316
Скачиваний: 12
Определение корня одномерного уравнения методом простой итерации
Решение нелинейного одномерного уравнения вида
F(x)=0 (1)
заключается в нахождении корня или корней этого уравнения на отрезке [a,b]. Если представить уравнение (1) в виде x=f(x), где f(x)=F(x)+x, тогда при x=xc, где xc - корень уравнения (1) - f(xс)=xс.
Формула x = f(x) – является основой метода итераций.
Алгоритм метода итераций состоит в следующем:
Задаем начальное значение корня xn.
Вычисляем по нему с помощью итерационной формулы xn+1=f(xn) следующее приближение корня.
Проверяем точность определения корня |xn+1 - xn|< e, где e – заданная точность вычисления корня. Если условие не выполняется, то выполняем вышеописанные действия.
Условие сходимости этого метода: (xn→xc при n→∞), f ‘(x)<1 при a<x<b.
Промер алгоритма нахождения корня нелинейного одномерного уравнения методом простой итерации на естественном языке:
1. Задаем точность вычисления корня по оси абсцисс и по оси ординат: ex и ey.
2. Задаем максимальное количество итераций нахождения корня – max_i.
3. Задаем начальное значение x0.
4. Начало цикла по i от 1 до max_i.
5. В цикле вычисляем следующее приближение корня: x1=f(x0)+x0.
6. В цикле вычисляем изменение значений x и f(x) на данной итерации: dx=ABS(x1-x0), df=abs(f(x1)-f(x0)).
7. Проверяем условие сходимости алгоритма. Задаем ветвление: если dx<ex и df<ey, то корень найден, вывод на экран значения xi, f(xi) и номера итерации i. Выход из программы. Конец ветвления.
8. Копируем значение x1 в x0 для следующей итерации: x0=x1.
9. Конец цикла.
10. Вывод сообщения:”Корень не найден за i итераций !!!”
11. Конец программы.
Пример реализации алгоритма нахождения корня одномерного нелинейного уравнения методом простой итерации на VFP:
CLEAR
dec=3
ex=1/(10^dec)
ey=1/(10^(dec/2))
maxi=100
x0=1
FOR i=1 TO maxi
x1=f(x0)+x0
dx=ABS(x1-x0)
df=abs(f(x1)-f(x0))
IF dx<ex AND df<ey then
?" Корень найден за "+ALLTRIM(STR(i))+" итераций"
?" x= "+STR(x1,dec*2,dec)+" f(x)= "+STR(f(x1),dec*2,dec)
?
?" Конец итераций"
RETURN
ENDIF
x0=x1
endfor
? "Решение не найдено за", maxi, "итераций"
FUNCTION f
PARAMETERS x
RETURN 3*x-EXP(x)
ENDFUNC
Пример реализации алгоритма нахождения корня одномерного нелинейного уравнения методом простой итерации на VBA:
Sub Simple_Iteration()
ex = 0.0001
ey = 0.0001
maxi = 100
x0 = 1
bfind = False
For i = 1 To maxi
x1 = f(x0) + x0
df = Abs(f(x1) - f(x0))
If Abs(x1 - x0) < ex And df < ey Then
Debug.Print " Корень найден за " & i & " итераций"
Debug.Print " x= " & x1 & " f(x)= " & f(x1)
bfind = True
Debug.Print " Конец итераций"
Exit For
End If
x0 = x1
Next i
If Not bfind Then Debug.Print "Решение не найдено за", maxi, "итераций"
End Sub
Function f(x)
f = 3 * x - Exp(x)
End Function