Решение второго нелинейного уравнения


Для решения второго по заданию нелинейного уравнения, например, вида 3sin(x/2) = 2x2 - 4, необходимо выполнить следующие действия:

– выделить на листе Excel диапазон ячеек, в которых решалось первое уравнение, то есть в данной адресации A1:T38;

– скопировать выделенный фрагмент, например, со строки 42, как показано на рис. 2.4.1;

Рис. 2.4.1

– создать модули VBA для нового уравнения, в данном случае, 3sin(x/2) = 2x2 – 4:

Function nel_ur_2(x)

nel_ur_2 = 3 * Sin(x / 2) - 2 * x ^ 2 + 4

End Function

Function nel_ur_2D(x)

nel_ur_2D = 3 * Cos(x / 2) + 1 / 2 - 2 * x

End Function

Function Pol_del2(a As Double, b As Double, e As Double)

Dim c As Double

10 c = (a + b) / 2

If nel_ur_2(a) * nel_ur_2(c) < 0 Then b = c Else a = c

If Abs(a - b) <= e Then Pol_del2 = Format(c, "0.0000000000") Else GoTo 10

End Function

Function Newton2(a As Double, e As Double)

x = a

x1 = x - nel_ur_2(x) / nel_ur_2D(x)

While Abs(x - x1) > e

x = x1

x1 = x - nel_ur_2(x) / nel_ur_2D(x)

Wend

Newton2 = Format(x1, "0.0000000000")

End Function

Public Function Horda2(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_2(a)

Fb = nel_ur_2(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_2(c)

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

Loop Until Abs(c1 - c2) > delta

Horda2 = Format(c1, "0.0000000000")

End Function

– заменить в диапазоне ячеек B46:B66 функцию =nel_ur_1 на функцию =nel_ur_2, рис. 2.4.1;

– подобрав значения ячеек A46и D43, выполнить этап отделения корней для второго уравнения, то есть для функции nel_ur_2, в данном случае ячейками, в которых функция nel_ur_2 меняет знак, являются ячейки A54 и A55;

– скопировать значение ячейки A54 в ячейку E49, то есть записать E49= A54;

– скопировать значение ячейки A55 в ячейку F49, то есть записать F49= A55;

– заменить в диапазоне ячеек H49:J64 функцию =nel_ur_1 на функцию =nel_ur_2, рис. 2.4.1;

– в ячейке K63 в данной адресации появится сообщение корень = -1.1000030518 за 15 шагов (для решаемого варианта задания).

Таким образом, нелинейное уравнение 3sin(x/2) = 2x2 – 4в среде Excel решено методом дихотомии и корень уравнения равен -1.1000030518.

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

Для решения заданного уравнения в среде VBA необходимо, например в ячейке K67, с помощью мастера функций fx вызвать модуль Pol_del2.

В появившемся окне Аргументы функции подставить значения ячеек E49, F49 и G46, как показано на рис. 2.4.2 и, нажав кнопку OK, получить результат -1.1021057129.

Рис. 2.4.2

Для решения второго по заданию нелинейного уравнения, вида 3sin(x/2) = 2x2 - 4, методом Ньютона необходимо выполнить следующие действия:

– скопировать значение ячейки A54 в ячейку E72, то есть записать E72= A54;

– заменить в диапазоне ячеек F72:F79 функцию =nel_ur_1 на функцию =nel_ur_2, рис. 2.4.1;

– заменить в диапазоне ячеек G72:G79 функцию =nel_ur_1D на функцию =nel_ur_2D, рис. 2.4.1;

– в ячейке H77 в данной адресации появится сообщение корень = -1.1021004844 за 5 шагов (для решаемого варианта задания).

Таким образом, нелинейное уравнение 3sin(x/2) = 2x2 – 4в среде Excel решено методом Ньютона и корень уравнения равен -1.1021004844.

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

Для решения заданного уравнения в среде VBA необходимо, например, в ячейке J76, с помощью мастера функций fx вызвать модуль Newton2.

В появившемся окне Аргументы функции подставить значения ячеек E49, F49 и G46, как показано на рис. 2.4.3 и, нажав кнопку OK, получить результат -1.1021004844.

Рис. 2.4.3

 

Для решения заданного уравнения в среде VBA методом Хорд необходимо, например, в ячейке K76, с помощью мастера функций fx вызвать модуль Horda2.

В появившемся окне Аргументы функции подставить значения ячеек E49, F49 и G46, как показано на рис. 2.4.4 и, нажав кнопку OK, получить результат -1.1020377217.

Рис. 2.4.4

 

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

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

 



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


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

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

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

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