km - предельное количество итераций (параметр, обеспечивающий аварийный выход из подпрограммы при расходящемся итерационном процессе);
Fi и F - имена внешних подпрограмм-функций, в которых вычисляются значения функций j (x) и f(x), соответственно;
dF - имя подпрограммы-функции, в которой вычисляется значение первой производной функции f(x) (подпрограмма оформляется так же, как и подпрограмма F);
x - вычисленное значение корня уравнения;
x0 - для метода Ньютона и метода простой итерации это начальное приближение корня;
kErr - признак успешности поиска корня: kErr = 0 , если корень вычислен с заданной точностью, и kErr = 1 , если исходное уравнение неразрешимо данной подпрограммой (заданная точность не достигнута за заданное предельное количество итераций).
Предполагается, что подпрограммы Fi, F, dF оформлены в виде
Function Fun(x)
...............
Fun =...........
End
Метод половинного деления
Subroutine Polov (aa, bb, eps, F, x)
a=aa
b=bb
n=0
Do
x=(a+b)/2.
If (abs(2*(b-a)/(b+a)) .lt. eps) Exit
n=n+1
If (F(a)*F(x) .gt. 0.0) Then
a=x
Else
b=x
End if
End do
End
Метод хорд
Subroutine Horda (aa, bb, eps, F, x)
a=aa
b=bb
n=0
x1=a
f1=F(a)
f2=F(b)
Do
x=a-(b-a)*f1/(f2-f1)
If (abs(2*(x-x1)/(x+x1)) .lt. eps) Exit
n=n+1
ff=F(x)
If (ff*f1.GE.0.0) Then
a=x
f1=ff
Else
b=x
f2=ff
End if
x1=x
End do
End
Метод простой итерации
Subroutine Iter (eps, km, Fi, x0, x, kErr)
kErr = 0
n = 0
Do
x=Fi(x0)
If (abs(2*(x-x0)/(x+x0)) .lt. eps) Exit
x0=x
n=n+1
if (n .eq. km) then
kErr=1
Exit
End if
End do
End
Метод Ньютона
Subroutine Newton (eps, km, F, dF, x0, x, kErr)
kErr = 0
n=0
Do
x=x0-F(x0)/dF(x0)
n=n+1
if (abs(2*(x-x0)/(x+x0)).lt.eps) Exit
If (n.ge.km) Then
kErr=1
Exit
End if
x0=x
End do
End
В системе MATLAB вычисление корня нелинейного уравнения реализуется при помощи функции fzero, которую можно использовать следующими способами:
x = fzero(fun,x0) – вычисляет корень уравнения , левая часть которая представлена параметром fun, определяющим имя m-функции, ее вычисляющей. Аргумент x0 задает начальное приближение к корню. Если x0 = [a b] – вектор, содержащий границы интервала локализации искомого корня, то вычисляется значение корня, лежащего в интервале [a, b];
[x, fval] = fzero(fun,x0) – вычисляет корень уравнения и дополнительно значение функции на вычисленном значении x;
1 – соответствует успешному завершению вычислений,
-3 – соответствует тому, что в процессе вычислений получено значение NaN или Inf функции ,
-4 – получено комплексное значение функции ,
-5 – точка перемены знака соответствует вертикальной асимптоте графика функции , а не корню.
Точность вычисления корня при описанных способах вызова функции fzero определяется по умолчанию значением встроенной константы eps системы MATLAB, равной 2.22044604925031e-016.
Параметр fun, являющийся фактическим параметром, указывающим функцию для вычисления левой части уравнения , задается в виде: