Тема: Решение нелинейных уравнений

Задание: Методами: деления пополам, касательных, методом хорд на интервале изменения независимой переменной от 2-х до 3-х с точностью до 10­­­­­­­­-5 уточнить корень уравнения x3 – 3×2 + x – 2 = 0.

Метод деления пополам

Метод решения: Метод заключается в постоянном делении отрезка интервала функции на 2. Деление продолжается до тех пор пока функция не будет стремиться к 0. Данный метод позволяет найти корень уравнения с заранее заданной точностью.

Алгоритм:

Sub dtomial()

A = Range("B1")

B = Range("B2")

Eps = ("B3")

If f(a) * f(b) < 0 Then

i = 1

Do

x = (a + b) / 2

If f(x) * f(a) < 0 Then

b = x

ElseIf f(x) * f(a) > 0 Then

a = x

Else

Cells(i, 4) = x

Exit Do

End If

Cells(i, 4) = x

i = i + 1

Loop While Abs(a — b) > eps

Else: Range("D1") = "Корней нет"

End If

End Sub

Function f(x)

f = x ^ 3 — 3 * x ^ 2 + x — 2

End Function

Метод касательных.

Метод решения Заключается в построении касательной в точке А. Далее откладывается перпендикуляр от касательной на функцию. Из точки, полученной после проведения перпендикуляра проводим еще одну касательную.. Метод повторяется до тех пор пока будет справедливо неравенство:.

Алгоритм:

Sub Newton()

A = Range("B1")

B = Range("B2")

Eps = ("B3")

Delta = Range("b4")

I = 1

Do

If f(a) * f1(a, delta) > 0 Then

DX = f(a) / f1(a, delta)

x = a — DX

a = x

Else

DX = f(b) / f1(b, delta)

x = b — DX

b = x

End If

Cells(i, 5) = x

i = i + 1

Loop While Abs(DX) >= eps

End Sub

___________________________

Function f(x)

f = x ^ 3 — 3 * x ^ 2 + x — 2

End Function

___________________________

Function f1(x, delta)

F1 = (f(x + delta) — f(x)) / delta

End Function

___________________________

Function f2(x, delta)

F2 = (f1(x + delta) — f1(x)) / delta

End Function

Проверка решения в MathCAD.

Метки: