Лабораторная работа №4
Тема: «Поиск особых точек»
Цель работы: научиться применять формулы последовательного приближения (метод дихотомии и метод хорд-касательных) к особым точкам (нулям) функционально или таблично заданных рядов данных
Индивидуальный вариант №1
№ вар. |
1 |
Ao= |
9 |
A1= |
-14 |
A2= |
5 |
№ варианта |
1 |
Количество точек в исходном ряде данных |
12 |
Расчетные формулы
Метод дихотомии
Метод хорд-секущих
Пример программы
Public N As Integer
Public Method As Byte
Const Nconst = 10
Dim x(Nconst + 1), y(Nconst + 1) As Double
Function FUNC(x) As Double
A0 = Worksheets(3).Cells(3, 9).Value
A1 = Worksheets(3).Cells(4, 9).Value
A2 = Worksheets(3).Cells(5, 9).Value
FUNC = A0 + A1 * x + A2 * x ^ 2
End Function
Private Sub CommandButton1_Click()
If Worksheets(3).OptionButton1.Value = True Then Method = 1
If Worksheets(3).OptionButton2.Value = True Then Method = 2
If Worksheets(3).OptionButton3.Value = True Then Method = 3
Nct = (Method - 1) * 2 + 1
eps = Worksheets(3).Cells(16, 2).Value
Select Case Method
Case 1
xx = 0
For i = 1 To Nconst + 1
y(i) = FUNC(xx)
Worksheets(3).Cells(i + 2, Nct).Value = xx
Worksheets(3).Cells(i + 2, Nct + 1).Value = y(i)
xx = xx + 2 * 3.14159 / Nconst
Next i
Case 2
Chet = 0
'метод дихотомии
Nleft = Worksheets(3).Cells(3, 3).Value
Nright = Worksheets(3).Cells(3, 4).Value
Chet = Chet + 1
If Nleft >= Nright Then
MsgBox "неправильно задана пара точек"
Exit Sub
End If
Worksheets(3).Cells(4, 3).Value = Worksheets(3).Cells(Nleft + 2, 1).Value
Worksheets(3).Cells(4, 4).Value = Worksheets(3).Cells(Nright + 2, 1).Value
Xleft = Worksheets(3).Cells(Nleft + 2, 1).Value
Xright = Worksheets(3).Cells(Nright + 2, 1).Value
Worksheets(3).Cells(4, 3).Value = Xleft
Worksheets(3).Cells(4, 4).Value = Xright
Xpol = (Xleft + Xright) / 2
Fpol = FUNC(Xpol)
While Abs(Fpol) > eps
Xleft = Worksheets(3).Cells(4, 3).Value
Xright = Worksheets(3).Cells(4, 4).Value
Xpol = (Xleft + Xright) / 2
Fleft = FUNC(Xleft)
Fright = FUNC(Xright)
Fpol = FUNC(Xpol)
If Fleft * Fpol < 0 Then
Worksheets(3).Cells(4, 3).Value = Xleft
Worksheets(3).Cells(4, 4).Value = Xpol
Else
Worksheets(3).Cells(4, 3).Value = Xpol
Worksheets(3).Cells(4, 4).Value = Xright
End If
Wend
Worksheets(3).Cells(15, 3).Value = Xpol
Worksheets(3).Cells(15, 4).Value = Fpol
MsgBox (Chet)
Case 3
Chet = 0
'метод хорд
Nnach = Worksheets(3).Cells(3, 5).Value
Xpred = Worksheets(3).Cells(Nnach + 2, 1).Value
Xtek = Xpred + 100 * eps
Ftek = FUNC(Xtek)
Fpred = FUNC(Xpred)
Worksheets(3).Cells(4, 5).Value = Xtek
Chet = 0
While Abs(Ftek) > eps
Chet = Chet + 1
Ftek = FUNC(Xtek)
Fpred = FUNC(Xpred)
Xsled = Xtek - ((Xtek - Xpred) * Ftek) / (Ftek - Fpred)
Xpred = Xtek
Xtek = Xsled
Worksheets(3).Cells(4, 5).Value = Xtek
Wend
MsgBox Chet
Worksheets(3).Cells(15, 5).Value = Xtek
Worksheets(3).Cells(15, 6).Value = Ftek
MsgBox (Chet)
Case Else
MsgBox "Ошибка"
End Select
End Sub
Private Sub CommandButton2_Click()
'очистка
If Worksheets(3).OptionButton1.Value = True Then Method = 1
If Worksheets(3).OptionButton2.Value = True Then Method = 2
If Worksheets(3).OptionButton3.Value = True Then Method = 3
Nct = (Method - 1) * 2 + 1
For i = 1 To Nconst + 1
Worksheets(3).Cells(i + 2, Nct).Value = ""
Worksheets(3).Cells(i + 2, Nct + 1).Value = ""
Next i
Worksheets(3).Cells(15, 3).Value = ""
Worksheets(3).Cells(15, 4).Value = ""
Worksheets(3).Cells(15, 5).Value = ""
Worksheets(3).Cells(15, 6).Value = ""
End Sub
Private Sub OptionButton1_Click()
Method = 1
End Sub
Private Sub OptionButton2_Click()
Method = 2
End Sub
Private Sub OptionButton3_Click()
Method = 3
End Sub
Часть А Взяв у преподавателя номер индивидуального задания, выполнила расчеты данных методом дихотомии и методом хорд-касательных. Задала погрешность 0,001.
Часть В
Количество точек в исходном ряде данных увеличила по номеру варианта, повторила расчет и сделала вывод
Вывод:
Методы дихотомии и хорд- касательных предназначены для поиска особых точек в рядах данных. В частности: метод дихотомии – для поиска точек близких к нулю функции, а метод хорд-касательных - для поиска точек подозрительных на экстремумы функции.
Чем больше выбрана погрешность, тем ниже точность определенных координат близких к нулю точек и соответственно больше шагов производит программа для их поиска. Соответственно чем ниже погрешность, тем выше точность найдены значений и тем меньше шагов приходится совершить программе для поиска особых точек.
Скорость сходимости при одинаково заданных условиях, у метода дихотомии в 4 раза выше, чем у метода хорд.(Дихотомия число шагов 13, метод хорд 4 )