Function nel_ur_1D(x)


nel_ur_1D = 2 * 3 * x ^ 2 + 2 * x - 3

End Function

 

Заполнить вторую строку таблицы:

– в ячейку E32записать арифметическое выражение, соответствующее формуле 2.2.1, =E31-F31/G31;

– выделить диапазон F31:G31 первой строки таблицы и скопировать на вторую строку таблицы;

– в ячейку H32 записать условный оператор =ЕСЛИ(ABS(E31-E32)<=$I$30;"Корень ="&ТЕКСТ(E32;"0,0000000000")&" за "&D32&" шагов";ABS(E31-E32)).

– выделить диапазон E32:H32 второй строки таблицы и скопировать вниз до тех пор, пока в столбце H не появится сообщение корень = -1.7148059167 за 4 шагов (для решаемого варианта задания).

Таким образом, нелинейное уравнение 2x3+x2-3x+2=0в среде Excel решено методом Ньютона и корень уравнения равен -1.7148059167.

При этом заданная точность решенияe = 0.00001 достигнута за 4 итерации.

Для решения заданного уравнения в среде VBA необходимо создать модуль VBA:

Function Newton(a As Double, e As Double)

x = a

x1 = x - nel_ur_1(x) / nel_ur_1D(x)

While Abs(x - x1) > e

x = x1

x1 = x - nel_ur_1(x) / nel_ur_1D(x)

Wend

Newton = Format(x1, "0.0000000000")

End Function

И, например, в ячейке J35 с помощью мастера функций fx вызвать этот модуль.

В появившемся окне Аргументы функции подставить значения ячеек E31 и I30, как показано на рис. 2.2.3 и, нажав кнопку OK, получить результат

-1.7148010254.

 

Рис. 2.2.3

Как и при реализации метода дихотомии в разделе 2.2 недостатком использования функции VBA является то, что функция возвращает только один параметр и определить количество итераций в данном случае невозможно.

К достоинствам использования функции VBA также относится то, что можно изменять значение точности вычислений без построения в данном случае таблицы несколько меньшего объёма, чем при использовании метода дихотомии.

 

Метод хорд

 

С особенностями решения нелинейных уравнений методом хорд можно ознакомиться в [3].

В настоящем пособии рассмотрено решение нелинейного уравнения в среде VBA.

Для решения заданного уравнения в среде VBA необходимо создать модуль VBA:

 

Public Function Horda(a As Double, b As Double, delta As Double)

Dim c1 As Double, c2 As Double, Fa As Double, Fb As Double, Fc As Double

Fa = nel_ur_1(a)

Fb = nel_ur_1(b)

If Fa * Fb > 0 Then

MsgBox ("Интервал [a, b] выбран неправильно")

Exit Function

End If

Do

c2 = c1

c1 = a - (b - a) / (Fb - Fa) * Fa

Fc = nel_ur_1(c)

If Fc * Fa > 0 Then b = c1: Fb = Fc Else a = c1: Fa = Fc

Loop Until Abs(c1 - c2) > delta

Horda = Format(c1, "0.0000000000")

End Function

Затем, например, в ячейке K35 с помощью мастера функций fx вызвать этот модуль.

В появившемся окне Аргументы функции подставить значения ячеек E8, F8 и G5, как показано на рис. 2.3.1 и, нажав кнопку OK, получить результат

-1.7138047138.

 

Рис. 2.3.1

Как и при реализации метода дихотомии в разделе 2.2 и метода Ньютона в разделе 2.3 недостатком использования функции VBA является то, что функция возвращает только один параметр и определить количество итераций в данном случае невозможно.

К достоинствам использования функции VBA также относится то, что можно изменять значение точности вычислений без построения достаточно объёмной таблицы.

 



Дата добавления: 2020-07-18; просмотров: 373;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.