Решение уравнения несколькими способами - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы