Метод хорд, Ньютона и половиного деления - VB
Формулировка задачи:
кто в математике силен?
Нужно решить уравнение тремя способами.
НА тестовом примере (а=0,001 и b=10) все более или менее работает как надо.
Начинаешь пробовать другие варианты, вылазит всякое непотребство.
Метод хорд - выдает практически всегда - один и тот же результат.
Метод касательных - любит выкидывать переполнение.
В чем я дурак?
Листинг программы
- Dim a, b, c, c1 As Single
- Dim n As Integer
- Private Function F(ByVal x As Double) As Double
- F = x - 3 - Sin(3 * x)
- End Function
- Private Function F1(ByVal x As Double) As Double
- F1 = 9 * Sin(3 * x)
- End Function
- Private Sub Command1_Click()
- 'metod polovinogo deleniya
- a = Val(Text1.Text)
- b = Val(Text2.Text)
- e = 0.000001
- Do While Abs(b - a) > e
- c = F(a)
- c1 = F((a + b) / 2)
- If (c > 0 And c1 > 0) Or (c < 0 And c1 < 0) Then
- a = a / 2 + b / 2
- Else
- b = a / 2 + b / 2
- End If
- Loop
- Text3.Text = Round(a / 2 + b / 2, 5)
- End Sub
- Private Sub Command2_Click()
- 'metod newton
- a = Val(Text1.Text)
- b = Val(Text2.Text)
- n = 1
- Do While F(c) * F(c1) > 0
- c = a + 3 * (b - a) / n
- c1 = a + (3 + 1) * (b - a) / n
- n = n + 1
- Loop
- If F(c) * F1(c) < 0 Then Text3.Text = Round(c1, 5) Else Text3.Text = Round(c, 5)
- End Sub
- Private Sub Command3_Click()
- 'metod hord
- a = Val(Text1.Text)
- b = Val(Text2.Text)
- e = 0.000001
- Do While Abs(b - a) > e
- c = b - F(b) * (b - a) / (F(b) - F(a))
- a = b
- b = c
- Loop
- Text3.Text = Round(b, 5)
- End Sub
Решение задачи: «Метод хорд, Ньютона и половиного деления»
textual
Листинг программы
- Private Function F1(ByVal x As Double) As Double
- F1 = 9 * Sin(3 * x)
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д