Решение уравнения несколькими способами - VB
Формулировка задачи:
решить уравнение sinx + x - 1 = 0 методами половинного деления, методом хорда, методом касательных(Ньютона) и методом итераций
Решение задачи: «Решение уравнения несколькими способами»
textual
Листинг программы
- Function F(x As Double) As Double
- F = Sin(x) + x - 1
- End Function
- Function DF(x As Double) As Double
- DF = Cos(x) + 1
- End Function
- Function Fi(x As Double) As Double
- Fi = 1 - Sin(x)
- End Function
- Function hord(ByVal a#, ByVal b#, ByVal eps#)
- Dim x1#, x2#, k%
- eps = 10 ^ (-eps)
- x2 = a
- k = 1
- Do
- x1 = x2
- x2 = x1 - (x1 - b) * (F(x1) / (F(x1) - F(b)))
- k = k + 1
- Loop While (Abs(x2 - x1) > eps)
- hord = x2 & " k=" & k
- End Function
- Function N(ByVal a#, ByVal b#, ByVal eps#)
- Dim x1#, x2#, k%
- eps = 10 ^ (-eps)
- x2 = (b + a) / 2
- k = 1
- Do
- x1 = x2
- x2 = x1 - (F(x1) / DF(x1))
- k = k + 1
- Loop While (Abs(x2 - x1) > 2 * eps)
- N = (x1 + x2) / 2 & " k=" & k + 1
- End Function
- Function bs(ByVal a#, ByVal b#, ByVal eps#)
- Dim c#, k%
- eps = 10 ^ (-eps)
- k = 0
- While Abs((b - a) / 2) >= eps
- c = (a + b) / 2
- If Sgn(F(a)) <> Sgn(F(c)) Then b = c Else a = c
- k = k + 1
- Wend
- bs = c & " k=" & k + 1
- End Function
- Function Iter(ByVal a#, ByVal b#, ByVal eps#)
- Dim x1#, x2#, k%
- eps = 10 ^ (-eps)
- k = 0
- x2 = a
- Do
- x1 = x2
- x2 = Fi(x1)
- k = k + 1
- Loop While Abs(x1 - x2) > eps
- Iter = x2 & " k=" & k + 1
- End Function
- Private Sub Command1_Click()
- Dim a#, b#, e#
- a = 0: b = 1: e = 15
- MsgBox "N:" & vbTab & N(a, b, e) & vbLf & _
- "hord:" & vbTab & hord(a, b, e) & vbLf & _
- "bs:" & vbTab & bs(a, b, e) & vbLf & _
- "Iter:" & vbTab & Iter(a, b, e)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д