Решение задач в Excel на VBA. Применение программных средств в проектировании автомобильных конструкций. Калядин В.И. - 32 стр.

UptoLike

Составители: 

32
т.е. корень не найден, подбор параметра не сработал. Не стоит особо
удивляться этому, ведь это средство не предназначено специально для
решения уравнений. Заметим, что если (см. задачу 1 в разделе 2.2) ме-
нять x на интервале (0; 1) с шагом dx=0.1, то при x=0.7, …,1.0 подбор
параметра сработает, и корень будет найден.
Существуют надѐжные методы численного решения нелинейного
уравнения
0)( xf
, один простой метод из их числа - метод деления
отрезка пополам. Его идея состоит в том, что отрезок, на концах кото-
рого непрерывная функция имеет противоположные знаки, делится по-
полам, а затем выбирается для дальнейшего поиска та его половина, на
концах которой знаки функции различные. Процесс деления продол-
жается до тех пор, пока отрезок
],[
, содержащий корень, не станет
достаточно малым. Представим алгоритм данного метода на VBA в ви-
де функции:
Function DOP(Fch As String, Xch As String, a As Double, _
b As Double, Optional Eps As Double = 0.0001, Optional Iter As _
Integer) As Boolean
' Fch, Xch - имена ячеек с функцией и аргументом,
' a, b - левая и правая границы отрезка, содержащего корень,
' Eps - относительная погрешность корня |X* - X|/max(|a|,|b|)<Eps,
' Iter - число выполненных приближений.
Dim Alpha As Double, Beta As Double, Sfa As Integer
Dim X As Double, D As Double, Mabs As Double
'++++++++++++++++++++++++++++++++++++++++++++++++
Range(Xch) = a
Sfa = Sgn(Range(Fch))
Range(Xch) = b
Bisec = False
If Sfa * Sgn(Range(Fch)) > 0 Then Exit Function
Mabs = IIf(Abs(a) > Abs(b), Abs(a), Abs(b))
If Eps < 0.000000000000005 Then Eps = 0.000000000000005
Alpha = a: Beta = b
Iter = 0
т.е. корень не найден, подбор параметра не сработал. Не стоит особо
удивляться этому, ведь это средство не предназначено специально для
решения уравнений. Заметим, что если (см. задачу 1 в разделе 2.2) ме-
нять x на интервале (0; 1) с шагом dx=0.1, то при x=0.7, …,1.0 подбор
параметра сработает, и корень будет найден.
  Существуют надѐжные методы численного решения нелинейного
уравнения f ( x)  0 , один простой метод из их числа - метод деления
отрезка пополам. Его идея состоит в том, что отрезок, на концах кото-
рого непрерывная функция имеет противоположные знаки, делится по-
полам, а затем выбирается для дальнейшего поиска та его половина, на
концах которой знаки функции различные. Процесс деления продол-
жается до тех пор, пока отрезок [ ,  ] , содержащий корень, не станет
достаточно малым. Представим алгоритм данного метода на VBA в ви-
де функции:
Function DOP(Fch As String, Xch As String, a As Double, _
 b As Double, Optional Eps As Double = 0.0001, Optional Iter As _
                                                    Integer) As Boolean
' Fch, Xch - имена ячеек с функцией и аргументом,
' a, b - левая и правая границы отрезка, содержащего корень,
' Eps - относительная погрешность корня |X* - X|/max(|a|,|b|) 0 Then Exit Function
 Mabs = IIf(Abs(a) > Abs(b), Abs(a), Abs(b))
 If Eps < 0.000000000000005 Then Eps = 0.000000000000005
 Alpha = a: Beta = b
 Iter = 0

                                          32